diff --git a/gcc/ada/mlib-tgt-vms-alpha.adb b/gcc/ada/mlib-tgt-vms-alpha.adb
index ca7596b22f9b79a641f8b21723aef32a8b63d28b..ed713ca39845a16f89163f3c162e6d3be8dee2c7 100644
--- a/gcc/ada/mlib-tgt-vms-alpha.adb
+++ b/gcc/ada/mlib-tgt-vms-alpha.adb
@@ -160,8 +160,10 @@ package body MLib.Tgt is
       --  Returns Symbol_File, if not empty. Otherwise, returns "symvec.opt"
 
       function Version_String return String;
-      --  Returns Lib_Version if not empty, otherwise returns "1".
-      --  Fails gnatmake if Lib_Version is not the image of a positive number.
+      --  Returns Lib_Version if not empty and if Symbol_Data.Symbol_Policy is
+      --  not Autonomous, otherwise returns "".
+      --  When Symbol_Data.Symbol_Policy is Autonomous, fails gnatmake if
+      --  Lib_Version is not the image of a positive number.
 
       ------------------
       -- Is_Interface --
@@ -215,8 +217,10 @@ package body MLib.Tgt is
       function Version_String return String is
          Version : Integer := 0;
       begin
-         if Lib_Version = "" then
-            return "1";
+         if Lib_Version = ""
+           or else Symbol_Data.Symbol_Policy /= Autonomous
+         then
+            return "";
 
          else
             begin
diff --git a/gcc/ada/mlib-tgt-vms-ia64.adb b/gcc/ada/mlib-tgt-vms-ia64.adb
index d3fba7e708f4ea77e28866b8f56322776b23442e..8dfbcc2ed80df78a0c9a03e0d5f0bb4e3f24b639 100644
--- a/gcc/ada/mlib-tgt-vms-ia64.adb
+++ b/gcc/ada/mlib-tgt-vms-ia64.adb
@@ -160,8 +160,10 @@ package body MLib.Tgt is
       --  Returns Symbol_File, if not empty. Otherwise, returns "symvec.opt"
 
       function Version_String return String;
-      --  Returns Lib_Version if not empty, otherwise returns "1".
-      --  Fails gnatmake if Lib_Version is not the image of a positive number.
+      --  Returns Lib_Version if not empty and if Symbol_Data.Symbol_Policy is
+      --  not Autonomous, otherwise returns "".
+      --  When Symbol_Data.Symbol_Policy is Autonomous, fails gnatmake if
+      --  Lib_Version is not the image of a positive number.
 
       ------------------
       -- Is_Interface --
@@ -215,8 +217,10 @@ package body MLib.Tgt is
       function Version_String return String is
          Version : Integer := 0;
       begin
-         if Lib_Version = "" then
-            return "1";
+         if Lib_Version = ""
+           or else Symbol_Data.Symbol_Policy /= Autonomous
+         then
+            return "";
 
          else
             begin
diff --git a/gcc/ada/symbols-vms-alpha.adb b/gcc/ada/symbols-vms-alpha.adb
index 2151706bc432ff7daff881be3c0a63d03ca8f676..4fb68318f9914eaa3616226ca6174c9eebff3ee8 100644
--- a/gcc/ada/symbols-vms-alpha.adb
+++ b/gcc/ada/symbols-vms-alpha.adb
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2003-2004 Free Software Foundation, Inc.          --
+--          Copyright (C) 2003-2005 Free Software Foundation, Inc.          --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
@@ -36,7 +36,7 @@ package body Symbols is
    Symbol_Vector   : constant String := "SYMBOL_VECTOR=(";
    Equal_Data      : constant String := "=DATA)";
    Equal_Procedure : constant String := "=PROCEDURE)";
-   Gsmatch         : constant String := "gsmatch=equal,";
+   Gsmatch         : constant String := "gsmatch=lequal,";
 
    Symbol_File_Name : String_Access := null;
    --  Name of the symbol file
@@ -668,18 +668,15 @@ package body Symbols is
                   Success := False;
                   return;
 
-               elsif Soft_Minor_ID then
-                  Minor_ID := Minor_ID + 1;
+               elsif Soft_Major_ID then
+                  Major_ID := Major_ID + 1;
+                  Minor_ID := 0;
+                  Soft_Major_ID := False;
                   Soft_Minor_ID := False;
                end if;
 
                Original_Symbols.Table (Index_1).Present := False;
                Free (Original_Symbols.Table (Index_1).Name);
-
-               if Soft_Minor_ID then
-                  Minor_ID := Minor_ID + 1;
-                  Soft_Minor_ID := False;
-               end if;
             end if;
          end loop;