+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
-- 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
-- --
-- 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- --
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.
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;
-- --
-- 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- --
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.
-------------------
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;
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
-------------------
-------------------
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;
-- --
-- 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- --
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.
-------------------------------------
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;
-- --
-- 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- --
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
---------
---------
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);
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
---------
---------
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
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.
-----------
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");
-- 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)
---------------------
-------------
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;
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
-----------------
-----------------
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
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
-----------------
-----------------
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;
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.
-------------------
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;
-- --
-- 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- --
-- 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
-----------
---------------------
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
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;
-- --
-- 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- --
-- 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;
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.
-----------------------------
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);
-- 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.
---------------------
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;
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;
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;
-- 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;
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;
-- 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;
-----------------
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
----------------------
----------------------
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
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
end if;
else
- Look_For_Sources (No_Project, In_Tree, False, Result);
+ Look_For_Sources (No_Project, In_Tree, Result);
end if;
return Result;
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.
-------------------
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;
-- --
-- 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- --
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;
-- 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;
Fore : Field := Default_Fore;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp;
- Symbols : String := "");
+ Symbols : String := "");
procedure Put
(Item : Num_Dim_Float;
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);
-- 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 --
private
+ pragma Linker_Options ("-crtbe");
+ -- Required by ZCX on VxWorks kernel
+
type Address is mod Memory_Size;
Null_Address : constant Address := 0;