OSDN Git Service

2012-01-30 Vincent Pucci <pucci@adacore.com>
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jan 2012 10:32:44 +0000 (10:32 +0000)
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 30 Jan 2012 10:32:44 +0000 (10:32 +0000)
* sem_dim.adb (Expand_Put_Call_With_Dimension_Symbol): Minor
code clean up.
* s-diflio.ads: Minor change.

2012-01-30  Javier Miranda  <miranda@adacore.com>

* exp_ch9.adb (Build_Dispatching_Requeue): Add missing call
to Get_Entry_Index.  Required to generate code which provides
the correct value of Entry_Index in the target entry.

2012-01-30  Nicolas Roche  <roche@adacore.com>

* system-vxworks-ppc.ads: Add pragma Linker_Options -crtbe to
fix issue with zcx on VxWorks5.

2012-01-30  Pascal Obry  <obry@adacore.com>

* prj.ads, prj.adb (For_Every_Project_Imported): Remove
In_Aggregate_Lib.
(For_Every_Project_Imported_Context): New generic routine with
a context parameter.
* prj-nmsc.adb: Revert to use For_Every_Project_Imported Avoid
distributed complexity.
* prj-env.adb, prj-conf.adb, makeutl.adb, gnatcmd.adb: Ditto.

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

12 files changed:
gcc/ada/ChangeLog
gcc/ada/exp_ch9.adb
gcc/ada/gnatcmd.adb
gcc/ada/makeutl.adb
gcc/ada/prj-conf.adb
gcc/ada/prj-env.adb
gcc/ada/prj-nmsc.adb
gcc/ada/prj.adb
gcc/ada/prj.ads
gcc/ada/s-diflio.ads
gcc/ada/sem_dim.adb
gcc/ada/system-vxworks-ppc.ads

index 704ff4b..efd983c 100644 (file)
@@ -1,3 +1,30 @@
+2012-01-30  Vincent Pucci  <pucci@adacore.com>
+
+       * sem_dim.adb (Expand_Put_Call_With_Dimension_Symbol): Minor
+       code clean up.
+       * s-diflio.ads: Minor change.
+
+2012-01-30  Javier Miranda  <miranda@adacore.com>
+
+       * exp_ch9.adb (Build_Dispatching_Requeue): Add missing call
+       to Get_Entry_Index.  Required to generate code which provides
+       the correct value of Entry_Index in the target entry.
+
+2012-01-30  Nicolas Roche  <roche@adacore.com>
+
+       * system-vxworks-ppc.ads: Add pragma Linker_Options -crtbe to
+       fix issue with zcx on VxWorks5.
+
+2012-01-30  Pascal Obry  <obry@adacore.com>
+
+       * prj.ads, prj.adb (For_Every_Project_Imported): Remove
+       In_Aggregate_Lib.
+       (For_Every_Project_Imported_Context): New generic routine with
+       a context parameter.
+       * prj-nmsc.adb: Revert to use For_Every_Project_Imported Avoid
+       distributed complexity.
+       * prj-env.adb, prj-conf.adb, makeutl.adb, gnatcmd.adb: Ditto.
+
 2012-01-30  Thomas Quinot  <quinot@adacore.com>
 
        * exp_aggr.adb (Expand_Record_Aggregate): After creating the
index a20254b..e61ba13 100644 (file)
@@ -9022,42 +9022,68 @@ package body Exp_Ch9 is
          --  Process the entry wrapper's position in the primary dispatch
          --  table parameter. Generate:
 
-         --    Ada.Tags.Get_Offset_Index
-         --      (Ada.Tags.Tag (Concval),
-         --       <interface dispatch table position of Ename>)
+         --    Ada.Tags.Get_Entry_Index
+         --      (T => To_Tag_Ptr (Obj'Address).all,
+         --       Position => Ada.Tags.Get_Offset_Index
+         --                    (Ada.Tags.Tag (Concval),
+         --         i           <interface dispatch table position of Ename>));
+
+         --  Note that Obj'Address is recursively expanded into a call to
+         --  Base_Address (Obj)
 
          if Tagged_Type_Expansion then
             Prepend_To (Params,
               Make_Function_Call (Loc,
-                Name => New_Reference_To (RTE (RE_Get_Offset_Index), Loc),
+                Name => New_Reference_To (RTE (RE_Get_Entry_Index), Loc),
                 Parameter_Associations => New_List (
-                  Unchecked_Convert_To (RTE (RE_Tag), Concval),
-                  Make_Integer_Literal (Loc, DT_Position (Entity (Ename))))));
+
+                  Make_Explicit_Dereference (Loc,
+                    Unchecked_Convert_To (RTE (RE_Tag_Ptr),
+                      Make_Attribute_Reference (Loc,
+                        Prefix => New_Copy_Tree (Concval),
+                        Attribute_Name => Name_Address))),
+
+                  Make_Function_Call (Loc,
+                    Name => New_Reference_To (RTE (RE_Get_Offset_Index), Loc),
+                    Parameter_Associations => New_List (
+                      Unchecked_Convert_To (RTE (RE_Tag), Concval),
+                      Make_Integer_Literal (Loc,
+                        DT_Position (Entity (Ename))))))));
 
          --  VM targets
 
          else
             Prepend_To (Params,
-              Make_Function_Call (Loc,
-                Name => New_Reference_To (RTE (RE_Get_Offset_Index), Loc),
 
+              Make_Function_Call (Loc,
+                Name => New_Reference_To (RTE (RE_Get_Entry_Index), Loc),
                 Parameter_Associations => New_List (
 
-                  --  Obj_Typ
-
                   Make_Attribute_Reference (Loc,
                     Prefix         => Concval,
                     Attribute_Name => Name_Tag),
 
-                  --  Tag_Typ
+                  Make_Function_Call (Loc,
+                    Name => New_Reference_To (RTE (RE_Get_Offset_Index), Loc),
 
-                  Make_Attribute_Reference (Loc,
-                    Prefix         => New_Reference_To (Etype (Concval), Loc),
-                    Attribute_Name => Name_Tag),
+                    Parameter_Associations => New_List (
+
+                      --  Obj_Tag
+
+                      Make_Attribute_Reference (Loc,
+                        Prefix => Concval,
+                        Attribute_Name => Name_Tag),
+
+                      --  Tag_Typ
+
+                      Make_Attribute_Reference (Loc,
+                        Prefix => New_Reference_To (Etype (Concval), Loc),
+                        Attribute_Name => Name_Tag),
 
-                  --  Position
+                      --  Position
 
-                  Make_Integer_Literal (Loc, DT_Position (Entity (Ename))))));
+                      Make_Integer_Literal (Loc,
+                        DT_Position (Entity (Ename))))))));
          end if;
 
          --  Specific actuals for protected to XXX requeue
index 361840c..8798399 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 1996-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1996-2012, 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- --
@@ -264,7 +264,6 @@ procedure GNATCmd is
    procedure Set_Library_For
      (Project           : Project_Id;
       Tree              : Project_Tree_Ref;
-      In_Aggregate_Lib  : Boolean;
       Libraries_Present : in out Boolean);
    --  If Project is a library project, add the correct -L and -l switches to
    --  the linker invocation.
@@ -1265,10 +1264,9 @@ procedure GNATCmd is
    procedure Set_Library_For
      (Project           : Project_Id;
       Tree              : Project_Tree_Ref;
-      In_Aggregate_Lib  : Boolean;
       Libraries_Present : in out Boolean)
    is
-      pragma Unreferenced (Tree, In_Aggregate_Lib);
+      pragma Unreferenced (Tree);
 
       Path_Option : constant String_Access :=
                       MLib.Linker_Library_Path_Option;
index df4bd2c..413fb6a 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2004-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 2004-2012, 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- --
@@ -692,10 +692,9 @@ package body Makeutl is
    is
 
       procedure Recursive_Add
-        (Project          : Project_Id;
-         Tree             : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Extended         : in out Boolean);
+        (Project  : Project_Id;
+         Tree     : Project_Tree_Ref;
+         Extended : in out Boolean);
       --  Add all the source directories of a project to the path only if
       --  this project has not been visited. Calls itself recursively for
       --  projects being extended, and imported projects.
@@ -732,13 +731,10 @@ package body Makeutl is
       -------------------
 
       procedure Recursive_Add
-        (Project          : Project_Id;
-         Tree             : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Extended         : in out Boolean)
+        (Project  : Project_Id;
+         Tree     : Project_Tree_Ref;
+         Extended : in out Boolean)
       is
-         pragma Unreferenced (In_Aggregate_Lib);
-
          Current   : String_List_Id;
          Dir       : String_Element;
          OK        : Boolean := False;
@@ -1234,10 +1230,9 @@ package body Makeutl is
       In_Tree  : Project_Tree_Ref) return String_List
    is
       procedure Recursive_Add
-        (Proj             : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Boolean);
+        (Proj    : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Boolean);
       --  The recursive routine used to add linker options
 
       -------------------
@@ -1245,12 +1240,11 @@ package body Makeutl is
       -------------------
 
       procedure Recursive_Add
-        (Proj             : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Boolean)
+        (Proj    : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Boolean)
       is
-         pragma Unreferenced (Dummy, In_Aggregate_Lib);
+         pragma Unreferenced (Dummy);
 
          Linker_Package : Package_Id;
          Options        : Variable_Value;
index 1018781..b0ea741 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---            Copyright (C) 2006-2011, Free Software Foundation, Inc.       --
+--            Copyright (C) 2006-2012, 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- --
@@ -728,10 +728,9 @@ package body Prj.Conf is
                  Value_Of (Name_Ide, Project.Decl.Packages, Shared);
 
          procedure Add_Config_Switches_For_Project
-           (Project          : Project_Id;
-            Tree             : Project_Tree_Ref;
-            In_Aggregate_Lib : Boolean;
-            With_State       : in out Integer);
+           (Project    : Project_Id;
+            Tree       : Project_Tree_Ref;
+            With_State : in out Integer);
          --  Add all --config switches for this project. This is also called
          --  for aggregate projects.
 
@@ -740,12 +739,11 @@ package body Prj.Conf is
          -------------------------------------
 
          procedure Add_Config_Switches_For_Project
-           (Project          : Project_Id;
-            Tree             : Project_Tree_Ref;
-            In_Aggregate_Lib : Boolean;
-            With_State       : in out Integer)
+           (Project    : Project_Id;
+            Tree       : Project_Tree_Ref;
+            With_State : in out Integer)
          is
-            pragma Unreferenced (With_State, In_Aggregate_Lib);
+            pragma Unreferenced (With_State);
 
             Shared : constant Shared_Project_Tree_Data_Access := Tree.Shared;
 
index 1ff9a5c..23d2cbf 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2001-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 2001-2012, 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- --
@@ -115,10 +115,9 @@ package body Prj.Env is
       Buffer_Last : Natural := 0;
 
       procedure Add
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Boolean);
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Boolean);
       --  Add source dirs of Project to the path
 
       ---------
@@ -126,12 +125,11 @@ package body Prj.Env is
       ---------
 
       procedure Add
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Boolean)
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Boolean)
       is
-         pragma Unreferenced (Dummy, In_Aggregate_Lib);
+         pragma Unreferenced (Dummy);
       begin
          Add_To_Path
            (Project.Source_Dirs, In_Tree.Shared, Buffer, Buffer_Last);
@@ -187,10 +185,9 @@ package body Prj.Env is
       Buffer_Last : Natural := 0;
 
       procedure Add
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Boolean);
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Boolean);
       --  Add all the object directories of a project to the path
 
       ---------
@@ -198,12 +195,11 @@ package body Prj.Env is
       ---------
 
       procedure Add
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Boolean)
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Boolean)
       is
-         pragma Unreferenced (Dummy, In_Tree, In_Aggregate_Lib);
+         pragma Unreferenced (Dummy, In_Tree);
 
          Path : constant Path_Name_Type :=
                   Get_Object_Directory
@@ -476,10 +472,9 @@ package body Prj.Env is
       Current_Naming : Naming_Id;
 
       procedure Check
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         State            : in out Integer);
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         State   : in out Integer);
       --  Recursive procedure that put in the config pragmas file any non
       --  standard naming schemes, if it is not already in the file, then call
       --  itself for any imported project.
@@ -501,12 +496,11 @@ package body Prj.Env is
       -----------
 
       procedure Check
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         State            : in out Integer)
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         State   : in out Integer)
       is
-         pragma Unreferenced (State, In_Aggregate_Lib);
+         pragma Unreferenced (State);
 
          Lang   : constant Language_Ptr :=
                     Get_Language_From_Name (Project, "ada");
@@ -792,10 +786,9 @@ package body Prj.Env is
       --  Put the line contained in the Name_Buffer in the global buffer
 
       procedure Process
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         State            : in out Integer);
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         State   : in out Integer);
       --  Generate the mapping file for Project (not recursively)
 
       ---------------------
@@ -818,12 +811,11 @@ package body Prj.Env is
       -------------
 
       procedure Process
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         State            : in out Integer)
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         State   : in out Integer)
       is
-         pragma Unreferenced (State, In_Aggregate_Lib);
+         pragma Unreferenced (State);
 
          Source : Source_Id;
          Suffix : File_Name_Type;
@@ -1233,10 +1225,9 @@ package body Prj.Env is
       Tree    : Project_Tree_Ref)
    is
       procedure For_Project
-        (Prj              : Project_Id;
-         Tree             : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Integer);
+        (Prj   : Project_Id;
+         Tree  : Project_Tree_Ref;
+         Dummy : in out Integer);
       --  Get all object directories of Prj
 
       -----------------
@@ -1244,12 +1235,11 @@ package body Prj.Env is
       -----------------
 
       procedure For_Project
-        (Prj              : Project_Id;
-         Tree             : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Integer)
+        (Prj   : Project_Id;
+         Tree  : Project_Tree_Ref;
+         Dummy : in out Integer)
       is
-         pragma Unreferenced (Dummy, Tree, In_Aggregate_Lib);
+         pragma Unreferenced (Dummy, Tree);
 
       begin
          --  ??? Set_Ada_Paths has a different behavior for library project
@@ -1280,10 +1270,9 @@ package body Prj.Env is
       In_Tree : Project_Tree_Ref)
    is
       procedure For_Project
-        (Prj              : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Integer);
+        (Prj     : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Integer);
       --  Get all object directories of Prj
 
       -----------------
@@ -1291,12 +1280,11 @@ package body Prj.Env is
       -----------------
 
       procedure For_Project
-        (Prj              : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Integer)
+        (Prj     : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Integer)
       is
-         pragma Unreferenced (Dummy, In_Aggregate_Lib);
+         pragma Unreferenced (Dummy);
 
          Current    : String_List_Id := Prj.Source_Dirs;
          The_String : String_Element;
@@ -1654,10 +1642,9 @@ package body Prj.Env is
       Buffer_Last : Natural := 0;
 
       procedure Recursive_Add
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Boolean);
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Boolean);
       --  Recursive procedure to add the source/object paths of extended/
       --  imported projects.
 
@@ -1666,12 +1653,11 @@ package body Prj.Env is
       -------------------
 
       procedure Recursive_Add
-        (Project          : Project_Id;
-         In_Tree          : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Dummy            : in out Boolean)
+        (Project : Project_Id;
+         In_Tree : Project_Tree_Ref;
+         Dummy   : in out Boolean)
       is
-         pragma Unreferenced (Dummy, In_Tree, In_Aggregate_Lib);
+         pragma Unreferenced (Dummy, In_Tree);
 
          Path : Path_Name_Type;
 
index dac3047..06450b1 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2000-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 2000-2012, 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- --
@@ -8201,10 +8201,10 @@ package body Prj.Nmsc is
       --  Process the naming scheme for a single project
 
       procedure Recursive_Check
-        (Project          : Project_Id;
-         Prj_Tree         : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Data             : in out Tree_Processing_Data);
+        (Project  : Project_Id;
+         Prj_Tree : Project_Tree_Ref;
+         Context  : Project_Context;
+         Data     : in out Tree_Processing_Data);
       --  Check_Naming_Scheme for the project
 
       -----------
@@ -8345,10 +8345,10 @@ package body Prj.Nmsc is
       ---------------------
 
       procedure Recursive_Check
-        (Project          : Project_Id;
-         Prj_Tree         : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         Data             : in out Tree_Processing_Data)
+        (Project  : Project_Id;
+         Prj_Tree : Project_Tree_Ref;
+         Context  : Project_Context;
+         Data     : in out Tree_Processing_Data)
       is
       begin
          if Current_Verbosity = High then
@@ -8357,17 +8357,17 @@ package body Prj.Nmsc is
          end if;
 
          Data.Tree := Prj_Tree;
-         Data.In_Aggregate_Lib := In_Aggregate_Lib;
+         Data.In_Aggregate_Lib := Context.In_Aggregate_Lib;
 
-         Check (Project, In_Aggregate_Lib, Data);
+         Check (Project, Context.In_Aggregate_Lib, Data);
 
          if Current_Verbosity = High then
             Debug_Decrease_Indent ("done Processing_Naming_Scheme");
          end if;
       end Recursive_Check;
 
-      procedure Check_All_Projects is new
-        For_Every_Project_Imported (Tree_Processing_Data, Recursive_Check);
+      procedure Check_All_Projects is new For_Every_Project_Imported_Context
+        (Tree_Processing_Data, Recursive_Check);
 
       Data : Tree_Processing_Data;
 
index 32fa2a1..ed2c857 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 B o d y                                  --
 --                                                                          --
---          Copyright (C) 2001-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 2001-2012, 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- --
@@ -517,7 +517,7 @@ package body Prj is
    -- For_Every_Project_Imported --
    --------------------------------
 
-   procedure For_Every_Project_Imported
+   procedure For_Every_Project_Imported_Context
      (By                 : Project_Id;
       Tree               : Project_Tree_Ref;
       With_State         : in out State;
@@ -527,9 +527,10 @@ package body Prj is
       use Project_Boolean_Htable;
 
       procedure Recursive_Check_Context
-        (Project          : Project_Id;
-         Tree             : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean);
+        (Project               : Project_Id;
+         Tree                  : Project_Tree_Ref;
+         In_Aggregate_Lib      : Boolean;
+         From_Encapsulated_Lib : Boolean);
       --  Recursively handle the project tree creating a new context for
       --  keeping track about already handled projects.
 
@@ -538,9 +539,10 @@ package body Prj is
       -----------------------------
 
       procedure Recursive_Check_Context
-        (Project          : Project_Id;
-         Tree             : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean)
+        (Project               : Project_Id;
+         Tree                  : Project_Tree_Ref;
+         In_Aggregate_Lib      : Boolean;
+         From_Encapsulated_Lib : Boolean)
       is
          package Name_Id_Set is
            new Ada.Containers.Ordered_Sets (Element_Type => Name_Id);
@@ -550,9 +552,10 @@ package body Prj is
          --  project twice in the context of aggregate libraries.
 
          procedure Recursive_Check
-           (Project          : Project_Id;
-            Tree             : Project_Tree_Ref;
-            In_Aggregate_Lib : Boolean);
+           (Project               : Project_Id;
+            Tree                  : Project_Tree_Ref;
+            In_Aggregate_Lib      : Boolean;
+            From_Encapsulated_Lib : Boolean);
          --  Check if project has already been seen. If not, mark it as Seen,
          --  Call Action, and check all its imported and aggregated projects.
 
@@ -561,9 +564,10 @@ package body Prj is
          ---------------------
 
          procedure Recursive_Check
-           (Project          : Project_Id;
-            Tree             : Project_Tree_Ref;
-            In_Aggregate_Lib : Boolean)
+           (Project               : Project_Id;
+            Tree                  : Project_Tree_Ref;
+            In_Aggregate_Lib      : Boolean;
+            From_Encapsulated_Lib : Boolean)
          is
             List : Project_List;
             T    : Project_Tree_Ref;
@@ -577,20 +581,30 @@ package body Prj is
                Seen_Name.Include (Project.Name);
 
                if not Imported_First then
-                  Action (Project, Tree, In_Aggregate_Lib, With_State);
+                  Action
+                    (Project,
+                     Tree,
+                     Project_Context'(In_Aggregate_Lib, From_Encapsulated_Lib),
+                     With_State);
                end if;
 
                --  Visit all extended projects
 
                if Project.Extends /= No_Project then
-                  Recursive_Check (Project.Extends, Tree, In_Aggregate_Lib);
+                  Recursive_Check
+                    (Project.Extends, Tree,
+                     In_Aggregate_Lib, From_Encapsulated_Lib);
                end if;
 
                --  Visit all imported projects
 
                List := Project.Imported_Projects;
                while List /= null loop
-                  Recursive_Check (List.Project, Tree, In_Aggregate_Lib);
+                  Recursive_Check
+                    (List.Project, Tree,
+                     In_Aggregate_Lib,
+                     From_Encapsulated_Lib
+                       or (Project.Standalone_Library = Encapsulated));
                   List := List.Next;
                end loop;
 
@@ -612,7 +626,11 @@ package body Prj is
 
                         if Project.Qualifier = Aggregate_Library then
                            T := Tree;
-                           Recursive_Check (Agg.Project, T, True);
+                           Recursive_Check
+                             (Agg.Project, T,
+                              True,
+                              From_Encapsulated_Lib or
+                                Project.Standalone_Library = Encapsulated);
 
                         else
                            T := Agg.Tree;
@@ -621,7 +639,8 @@ package body Prj is
                            --  project in different project tree for aggregated
                            --  projects.
 
-                           Recursive_Check_Context (Agg.Project, T, False);
+                           Recursive_Check_Context
+                             (Agg.Project, T, False, False);
                         end if;
 
                         Agg := Agg.Next;
@@ -630,7 +649,11 @@ package body Prj is
                end if;
 
                if Imported_First then
-                  Action (Project, Tree, In_Aggregate_Lib, With_State);
+                  Action
+                    (Project,
+                     Tree,
+                     Project_Context'(In_Aggregate_Lib, From_Encapsulated_Lib),
+                     With_State);
                end if;
             end if;
          end Recursive_Check;
@@ -638,14 +661,54 @@ package body Prj is
       --  Start of processing for Recursive_Check_Context
 
       begin
-         Recursive_Check (Project, Tree, In_Aggregate_Lib);
+         Recursive_Check
+           (Project, Tree, In_Aggregate_Lib, From_Encapsulated_Lib);
       end Recursive_Check_Context;
 
    --  Start of processing for For_Every_Project_Imported
 
    begin
       Recursive_Check_Context
-        (Project => By, Tree => Tree, In_Aggregate_Lib => False);
+        (Project               => By,
+         Tree                  => Tree,
+         In_Aggregate_Lib      => False,
+         From_Encapsulated_Lib => False);
+   end For_Every_Project_Imported_Context;
+
+   procedure For_Every_Project_Imported
+     (By                 : Project_Id;
+      Tree               : Project_Tree_Ref;
+      With_State         : in out State;
+      Include_Aggregated : Boolean := True;
+      Imported_First     : Boolean := False)
+   is
+      procedure Internal
+        (Project    : Project_Id;
+         Tree       : Project_Tree_Ref;
+         Context    : Project_Context;
+         With_State : in out State);
+      --  Action wrapper for handling the context
+
+      --------------
+      -- Internal --
+      --------------
+
+      procedure Internal
+        (Project    : Project_Id;
+         Tree       : Project_Tree_Ref;
+         Context    : Project_Context;
+         With_State : in out State)
+      is
+         pragma Unreferenced (Context);
+      begin
+         Action (Project, Tree, With_State);
+      end Internal;
+
+      procedure For_Projects is
+        new For_Every_Project_Imported_Context (State, Internal);
+
+   begin
+      For_Projects (By, Tree, With_State, Include_Aggregated, Imported_First);
    end For_Every_Project_Imported;
 
    -----------------
@@ -663,10 +726,9 @@ package body Prj is
       Result : Source_Id  := No_Source;
 
       procedure Look_For_Sources
-        (Proj         : Project_Id;
-         Tree         : Project_Tree_Ref;
-         In_Aggregate : Boolean;
-         Src          : in out Source_Id);
+        (Proj : Project_Id;
+         Tree : Project_Tree_Ref;
+         Src  : in out Source_Id);
       --  Look for Base_Name in the sources of Proj
 
       ----------------------
@@ -674,13 +736,10 @@ package body Prj is
       ----------------------
 
       procedure Look_For_Sources
-        (Proj         : Project_Id;
-         Tree         : Project_Tree_Ref;
-         In_Aggregate : Boolean;
-         Src          : in out Source_Id)
+        (Proj : Project_Id;
+         Tree : Project_Tree_Ref;
+         Src  : in out Source_Id)
       is
-         pragma Unreferenced (In_Aggregate);
-
          Iterator : Source_Iterator;
 
       begin
@@ -715,14 +774,14 @@ package body Prj is
       if In_Extended_Only then
          Proj := Project;
          while Proj /= No_Project loop
-            Look_For_Sources (Proj, In_Tree, False, Result);
+            Look_For_Sources (Proj, In_Tree, Result);
             exit when Result /= No_Source;
 
             Proj := Proj.Extends;
          end loop;
 
       elsif In_Imported_Only then
-         Look_For_Sources (Project, In_Tree, False, Result);
+         Look_For_Sources (Project, In_Tree, Result);
 
          if Result = No_Source then
             For_Imported_Projects
@@ -733,7 +792,7 @@ package body Prj is
          end if;
 
       else
-         Look_For_Sources (No_Project, In_Tree, False, Result);
+         Look_For_Sources (No_Project, In_Tree, Result);
       end if;
 
       return Result;
@@ -1418,10 +1477,9 @@ package body Prj is
          Project : Project_Id;
 
          procedure Recursive_Add
-           (Prj              : Project_Id;
-            Tree             : Project_Tree_Ref;
-            In_Aggregate_Lib : Boolean;
-            Dummy            : in out Boolean);
+           (Prj   : Project_Id;
+            Tree  : Project_Tree_Ref;
+            Dummy : in out Boolean);
          --  Recursively add the projects imported by project Project, but not
          --  those that are extended.
 
@@ -1430,12 +1488,11 @@ package body Prj is
          -------------------
 
          procedure Recursive_Add
-           (Prj              : Project_Id;
-            Tree             : Project_Tree_Ref;
-            In_Aggregate_Lib : Boolean;
-            Dummy            : in out Boolean)
+           (Prj   : Project_Id;
+            Tree  : Project_Tree_Ref;
+            Dummy : in out Boolean)
          is
-            pragma Unreferenced (Dummy, Tree, In_Aggregate_Lib);
+            pragma Unreferenced (Dummy, Tree);
 
             List : Project_List;
             Prj2 : Project_Id;
index 2f1ca71..93e25df 100644 (file)
@@ -6,7 +6,7 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---          Copyright (C) 2001-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 2001-2012, 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- --
@@ -1562,10 +1562,9 @@ package Prj is
    generic
       type State is limited private;
       with procedure Action
-        (Project          : Project_Id;
-         Tree             : Project_Tree_Ref;
-         In_Aggregate_Lib : Boolean;
-         With_State       : in out State);
+        (Project    : Project_Id;
+         Tree       : Project_Tree_Ref;
+         With_State : in out State);
    procedure For_Every_Project_Imported
      (By                 : Project_Id;
       Tree               : Project_Tree_Ref;
@@ -1597,6 +1596,27 @@ package Prj is
    --  The Tree argument passed to the callback is required in the case of
    --  aggregated projects, since they might not be using the same tree as 'By'
 
+   type Project_Context is record
+      In_Aggregate_Lib      : Boolean;
+      --  True if the project is part of an aggregate library
+      From_Encapsulated_Lib : Boolean;
+      --  True if the project is imported from an encapsulated library
+   end record;
+
+   generic
+      type State is limited private;
+      with procedure Action
+        (Project    : Project_Id;
+         Tree       : Project_Tree_Ref;
+         Context    : Project_Context;
+         With_State : in out State);
+   procedure For_Every_Project_Imported_Context
+     (By                 : Project_Id;
+      Tree               : Project_Tree_Ref;
+      With_State         : in out State;
+      Include_Aggregated : Boolean := True;
+      Imported_First     : Boolean := False);
+
    function Extend_Name
      (File        : File_Name_Type;
       With_Suffix : String) return File_Name_Type;
index 2eee802..7e705f5 100644 (file)
@@ -53,7 +53,7 @@ package System.Dim_Float_IO is
       Fore    : Field  := Default_Fore;
       Aft     : Field  := Default_Aft;
       Exp     : Field  := Default_Exp;
-      Symbols : String      := "");
+      Symbols : String := "");
 
    procedure Put
      (Item    : Num_Dim_Float;
index 16cbf8c..b5502de 100644 (file)
@@ -2331,19 +2331,21 @@ package body Sem_Dim is
             Actual := First (Actuals);
 
             while Present (Actual) loop
-               --  Copy every comes from source actuals in New_Actuals
-
-               if Comes_From_Source (Actual) then
-                  if Nkind (Actual) = N_Parameter_Association then
-                     Append (
-                        Make_Parameter_Association (Loc,
-                           Selector_Name => New_Copy (Selector_Name (Actual)),
-                           Explicit_Actual_Parameter =>
-                              New_Copy (Explicit_Actual_Parameter (Actual))),
-                        New_Actuals);
-                  else
-                     Append (New_Copy (Actual), New_Actuals);
-                  end if;
+               --  Copy every actuals in New_Actuals except the Symbols
+               --  parameter association.
+
+               if Nkind (Actual) = N_Parameter_Association
+                 and then Chars (Selector_Name (Actual)) /= Name_Symbols
+               then
+                  Append (
+                     Make_Parameter_Association (Loc,
+                        Selector_Name => New_Copy (Selector_Name (Actual)),
+                        Explicit_Actual_Parameter =>
+                           New_Copy (Explicit_Actual_Parameter (Actual))),
+                     New_Actuals);
+
+               elsif Nkind (Actual) /= N_Parameter_Association then
+                  Append (New_Copy (Actual), New_Actuals);
                end if;
 
                Next (Actual);
index 220d1f8..6c24b97 100644 (file)
@@ -5,9 +5,9 @@
 --                               S Y S T E M                                --
 --                                                                          --
 --                                 S p e c                                  --
---                    (VxWorks 5 and MILS Version PPC)                      --
+--                         (VxWorks 5 Version PPC)                          --
 --                                                                          --
---          Copyright (C) 1992-2011, Free Software Foundation, Inc.         --
+--          Copyright (C) 1992-2012, Free Software Foundation, Inc.         --
 --                                                                          --
 -- This specification is derived from the Ada Reference Manual for use with --
 -- GNAT. The copyright notice above, and the license provisions that follow --
@@ -115,6 +115,9 @@ package System is
 
 private
 
+   pragma Linker_Options ("-crtbe");
+   --  Required by ZCX on VxWorks kernel
+
    type Address is mod Memory_Size;
    Null_Address : constant Address := 0;