OSDN Git Service

2008-07-30 Thomas Quinot <quinot@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Jul 2008 15:52:47 +0000 (15:52 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 Jul 2008 15:52:47 +0000 (15:52 +0000)
* rtsfind.adb (Check_RPC): Check version consistency even when not
generating RCI stubs. Provide more detailed error message in case of
mismatch.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138321 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ada/rtsfind.adb

index a0efccc..fda3b2f 100644 (file)
@@ -914,25 +914,6 @@ package body Rtsfind is
       ---------------
 
       procedure Check_RPC is
-
-         procedure Check_RPC_Failure (Msg : String);
-         pragma No_Return (Check_RPC_Failure);
-         --  Display Msg on standard error and raise Unrecoverable_Error
-
-         -----------------------
-         -- Check_RPC_Failure --
-         -----------------------
-
-         procedure Check_RPC_Failure (Msg : String) is
-         begin
-            Set_Standard_Error;
-            Write_Str (Msg);
-            Write_Eol;
-            raise Unrecoverable_Error;
-         end Check_RPC_Failure;
-
-      --  Start of processing for Check_RPC
-
       begin
          --  Bypass this check if debug flag -gnatdR set
 
@@ -940,30 +921,44 @@ package body Rtsfind is
             return;
          end if;
 
-         --  Otherwise we need the check if we are going after one of
-         --  the critical entities in System.RPC in stubs mode.
-
-         --  ??? Should we do this for other s-parint entities too?
-
-         if (Distribution_Stub_Mode = Generate_Receiver_Stub_Body
-                      or else
-                        Distribution_Stub_Mode = Generate_Caller_Stub_Body)
-           and then (E = RE_Do_Rpc
-                       or else
-                     E = RE_Do_Apc
-                       or else
-                     E = RE_Params_Stream_Type
-                       or else
-                     E = RE_Request_Access)
+         --  Otherwise we need the check if we are going after one of the
+         --  critical entities in System.RPC / System.Partition_Interface.
+
+         if E = RE_Do_Rpc
+              or else
+            E = RE_Do_Apc
+              or else
+            E = RE_Params_Stream_Type
+              or else
+            E = RE_Request_Access
          then
-            if Get_PCS_Name = Name_No_DSA then
-               Check_RPC_Failure ("distribution feature not supported");
+            --  If generating RCI stubs, check that we have a real PCS
+
+            if (Distribution_Stub_Mode = Generate_Receiver_Stub_Body
+                  or else
+                Distribution_Stub_Mode = Generate_Caller_Stub_Body)
+              and then Get_PCS_Name = Name_No_DSA
+            then
+               Set_Standard_Error;
+               Write_Str ("distribution feature not supported");
+               Write_Eol;
+               raise Unrecoverable_Error;
+
+            --  In all cases, check Exp_Dist and System.Partition_Interface
+            --  consistency.
 
             elsif Get_PCS_Version /=
                     Exp_Dist.PCS_Version_Number (Get_PCS_Name)
             then
-               Check_RPC_Failure ("PCS version mismatch");
-
+               Set_Standard_Error;
+               Write_Str ("PCS version mismatch: expander ");
+               Write_Int (Exp_Dist.PCS_Version_Number (Get_PCS_Name));
+               Write_Str (", PCS (");
+               Write_Name (Get_PCS_Name);
+               Write_Str (") ");
+               Write_Int (Get_PCS_Version);
+               Write_Eol;
+               raise Unrecoverable_Error;
             end if;
          end if;
       end Check_RPC;