Commit 241bea26 by Arnaud Charlet

[multiple changes]

2009-08-17  Vasiliy Fofanov  <fofanov@adacore.com>

	* a-calend-vms.adb: Fix typo.

2009-08-17  Tristan Gingold  <gingold@adacore.com>

	* s-taprop-posix.adb: Round up the stack size to avoid failure on
	Darwin.

2009-08-17  Gary Dismukes  <dismukes@adacore.com>

	* sem_cat.adb (Validate_Static_Object_Name): Update comment.

2009-08-17  Vincent Celier  <celier@adacore.com>

	* make.adb (Arguments_Collected): Unneeded, removed
	(Change_To_Object_Directory): Use Project directly. Add pragma Assert to
	ensure caller does not pass in No_Project.
	(Compile): Add new parameter Project. Let procedure
	Collect_Arguments_And_Compile provide the proper value.

	* switch-c.adb: Add documentation for -gnatea and -gnatez

2009-08-17  Ben Brosgol  <brosgol@adacore.com>

	* gnat_ugn.texi: Changed name of package in SAL example, to avoid
	clash with Ada 2005 reserved word (interface).

From-SVN: r150838
parent 5f2d216d
2009-08-17 Vasiliy Fofanov <fofanov@adacore.com>
* a-calend-vms.adb: Fix typo.
2009-08-17 Tristan Gingold <gingold@adacore.com>
* s-taprop-posix.adb: Round up the stack size to avoid failure on
Darwin.
2009-08-17 Gary Dismukes <dismukes@adacore.com>
* sem_cat.adb (Validate_Static_Object_Name): Update comment.
2009-08-17 Vincent Celier <celier@adacore.com>
* make.adb (Arguments_Collected): Unneeded, removed
(Change_To_Object_Directory): Use Project directly. Add pragma Assert to
ensure caller does not pass in No_Project.
(Compile): Add new parameter Project. Let procedure
Collect_Arguments_And_Compile provide the proper value.
* switch-c.adb: Add documentation for -gnatea and -gnatez
2009-08-17 Ben Brosgol <brosgol@adacore.com>
* gnat_ugn.texi: Changed name of package in SAL example, to avoid
clash with Ada 2005 reserved word (interface).
2009-08-17 Robert Dewar <dewar@adacore.com>
* a-crbtgk.adb, a-crdlli.adb, a-direct.adb, a-caldel-vms.adb,
......
......@@ -921,7 +921,7 @@ package body Ada.Calendar is
-- Step 3: Handle leap second occurrences
tm_Sec := (if Leap_Sec then 60 else Second);
tm_sec := (if Leap_Sec then 60 else Second);
end To_Struct_Tm;
------------------
......
......@@ -19433,7 +19433,7 @@ or @code{pragma Convention}.
Here is an example of simple library interface for use with C main program:
@smallexample @c ada
package Interface is
package My_Package is
procedure Do_Something;
pragma Export (C, Do_Something, "do_something");
......@@ -19441,7 +19441,7 @@ package Interface is
procedure Do_Something_Else;
pragma Export (C, Do_Something_Else, "do_something_else");
end Interface;
end My_Package;
@end smallexample
@noindent
......@@ -519,10 +519,6 @@ package body Make is
Last_Argument : Natural := 0;
-- Last index of arguments in Arguments above
Arguments_Collected : Boolean := False;
-- Set to True when the arguments for the next invocation of the compiler
-- have been collected.
Arguments_Project : Project_Id;
-- Project id, if any, of the source to be compiled
......@@ -1359,32 +1355,24 @@ package body Make is
--------------------------------
procedure Change_To_Object_Directory (Project : Project_Id) is
Actual_Project : Project_Id;
Object_Directory : Path_Name_Type;
begin
-- For sources outside of any project, compilation occurs in the object
-- directory of the main project, otherwise we use the project given.
if Project = No_Project then
Actual_Project := Main_Project;
else
Actual_Project := Project;
end if;
pragma Assert (Project /= No_Project);
-- Nothing to do if the current working directory is already the correct
-- object directory.
if Project_Of_Current_Object_Directory /= Actual_Project then
Project_Of_Current_Object_Directory := Actual_Project;
Object_Directory := Actual_Project.Object_Directory.Name;
if Project_Of_Current_Object_Directory /= Project then
Project_Of_Current_Object_Directory := Project;
Object_Directory := Project.Object_Directory.Name;
-- Set the working directory to the object directory of the actual
-- project.
if Verbose_Mode then
Write_Str ("Changing to object directory of """);
Write_Name (Actual_Project.Display_Name);
Write_Name (Project.Display_Name);
Write_Str (""": """);
Write_Name (Object_Directory);
Write_Line ("""");
......@@ -1399,9 +1387,9 @@ package body Make is
when Directory_Error =>
Make_Failed ("unable to change to object directory """ &
Path_Or_File_Name
(Actual_Project.Object_Directory.Name) &
(Project.Object_Directory.Name) &
""" of project " &
Get_Name_String (Actual_Project.Display_Name));
Get_Name_String (Project.Display_Name));
end Change_To_Object_Directory;
-----------
......@@ -2201,7 +2189,6 @@ package body Make is
Args : Argument_List)
is
begin
Arguments_Collected := True;
Arguments_Project := No_Project;
Last_Argument := 0;
Add_Arguments (Args);
......@@ -2502,13 +2489,12 @@ package body Make is
procedure Check_Standard_Library;
-- Check if s-stalib.adb needs to be compiled
procedure Collect_Arguments_And_Compile
(Source_File : File_Name_Type;
Source_Index : Int);
procedure Collect_Arguments_And_Compile (Source_Index : Int);
-- Collect arguments from project file (if any) and compile
function Compile
(S : File_Name_Type;
(Project : Project_Id;
S : File_Name_Type;
L : File_Name_Type;
Source_Index : Int;
Args : Argument_List) return Process_Id;
......@@ -2709,23 +2695,13 @@ package body Make is
-- Collect_Arguments_And_Compile --
-----------------------------------
procedure Collect_Arguments_And_Compile
(Source_File : File_Name_Type;
Source_Index : Int)
is
procedure Collect_Arguments_And_Compile (Source_Index : Int) is
begin
-- Process_Created will be set True if an attempt is made to compile
-- the source, that is if it is not in an externally built project.
Process_Created := False;
-- If arguments not yet collected (in Check), collect them now
if not Arguments_Collected then
Collect_Arguments
(Source_File, Source_Index, Source_File = Main_Source, Args);
end if;
-- If we use mapping file (-P or -C switches), then get one
if Create_Mapping_File then
......@@ -2769,13 +2745,10 @@ package body Make is
end;
end if;
-- Change to object directory of the project file, if necessary
Change_To_Object_Directory (Arguments_Project);
Pid :=
Compile
(File_Name_Type (Arguments_Path_Name),
(Arguments_Project,
File_Name_Type (Arguments_Path_Name),
Lib_File,
Source_Index,
Arguments (1 .. Last_Argument));
......@@ -2786,12 +2759,13 @@ package body Make is
-- If this is a source outside of any project file, make sure it
-- will be compiled in object directory of the main project file.
if Main_Project /= No_Project then
Change_To_Object_Directory (Arguments_Project);
end if;
Pid := Compile (Full_Source_File, Lib_File, Source_Index,
Arguments (1 .. Last_Argument));
Pid :=
Compile
(Main_Project,
Full_Source_File,
Lib_File,
Source_Index,
Arguments (1 .. Last_Argument));
Process_Created := True;
end if;
end Collect_Arguments_And_Compile;
......@@ -2801,7 +2775,8 @@ package body Make is
-------------
function Compile
(S : File_Name_Type;
(Project : Project_Id;
S : File_Name_Type;
L : File_Name_Type;
Source_Index : Int;
Args : Argument_List) return Process_Id
......@@ -2985,6 +2960,12 @@ package body Make is
Comp_Last := Comp_Last + 1;
Comp_Args (Comp_Last) := new String'(Name_Buffer (1 .. Name_Len));
-- Change to object directory of the project file, if necessary
if Project /= No_Project then
Change_To_Object_Directory (Project);
end if;
GNAT.OS_Lib.Normalize_Arguments (Comp_Args (Args'First .. Comp_Last));
Comp_Last := Comp_Last + 1;
......@@ -3225,8 +3206,6 @@ package body Make is
-- The source file that we are checking can be located
else
Arguments_Collected := False;
Collect_Arguments (Source_File, Source_Index,
Source_File = Main_Source, Args);
......@@ -3314,8 +3293,7 @@ package body Make is
-- Start the compilation and record it. We can do
-- this because there is at least one free process.
Collect_Arguments_And_Compile
(Source_File, Source_Index);
Collect_Arguments_And_Compile (Source_Index);
-- Make sure we could successfully start
-- the Compilation.
......
......@@ -926,6 +926,7 @@ package body System.Task_Primitives.Operations is
is
Attributes : aliased pthread_attr_t;
Adjusted_Stack_Size : Interfaces.C.size_t;
Page_Size : constant Interfaces.C.size_t := Get_Page_Size;
Result : Interfaces.C.int;
function Thread_Body_Access is new
......@@ -946,9 +947,15 @@ package body System.Task_Primitives.Operations is
-- to be sure the effective stack size is greater than what
-- has been asked.
Adjusted_Stack_Size := Adjusted_Stack_Size + 2 * Get_Page_Size;
Adjusted_Stack_Size := Adjusted_Stack_Size + 2 * Page_Size;
end if;
-- Round stack size as this is required by some OSes (Darwin)
Adjusted_Stack_Size := Adjusted_Stack_Size + Page_Size - 1;
Adjusted_Stack_Size :=
Adjusted_Stack_Size - Adjusted_Stack_Size mod Page_Size;
Result := pthread_attr_init (Attributes'Access);
pragma Assert (Result = 0 or else Result = ENOMEM);
......
......@@ -2191,10 +2191,8 @@ package body Sem_Cat is
Flag_Non_Static_Expr
("non-static object name in preelaborated unit", N);
-- We take the view that a constant defined in another preelaborated
-- unit is preelaborable, even though it may have a private type and
-- thus appear non-static in a client. This must be the intent of
-- the language, but currently is an RM gap ???
-- Give an error for a reference to a nonstatic constant, unless the
-- constant is in another GNAT library unit that is preelaborable.
elsif Ekind (Entity (N)) = E_Constant
and then not Is_Static_Expression (N)
......
......@@ -309,6 +309,11 @@ package body Switch.C is
case Switch_Chars (Ptr) is
-- -gnatea (initial delimiter of explicit switches)
-- All switches that come before -gnatea have been added by
-- the GCC driver and are not stored in the ALI file.
-- See also -gnatez below.
when 'a' =>
Store_Switch := False;
Enable_Switch_Storing;
......@@ -462,14 +467,20 @@ package body Switch.C is
Ptr := Max + 1;
-- -gnatez ???
-- -gnatez (final delimiter of explicit switches)
-- All switches that come after -gnatez have been added by
-- the GCC driver and are not stored in the ALI file.
-- See also -gnatea above.
when 'z' =>
Store_Switch := False;
Disable_Switch_Storing;
Ptr := Ptr + 1;
-- -gnateS (Store SCO information)
-- -gnateS (generate SCO information)
-- Include Source Coverage Obligation information in ALI
-- files for the benefit of source coverage analysis tools
-- (xcov).
when 'S' =>
Generate_SCO := True;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment