+2010-09-10 Emmanuel Briot <briot@adacore.com>
+
+ * prj-util.adb (Executable_Of): Fix CE when the project does not
+ contain a Builder package.
+
+2010-09-10 Vincent Celier <celier@adacore.com>
+
+ * prj-ext.adb (Initialize_Project_Path): Add <prefix>/lib/gpr/<target>
+ to the project path, if Prefix and Target_Name are defined.
+ * prj-tree.ads (Project_Node_Tree_Data): New component Target_Name
+
+2010-09-10 Ed Schonberg <schonberg@adacore.com>
+
+ * checks.adb (Ensure_Valid): If the expression is a boolean expression
+ or short-circuit operation, do no emit a validity check: only the
+ elementary operands of the expression need checking.
+
+2010-09-10 Ben Brosgol <brosgol@adacore.com>
+
+ * gnat_rm.texi: Document Short_Descriptors.
+
+2010-09-10 Arnaud Charlet <charlet@adacore.com>
+
+ * s-taprop-linux.adb, s-taskin.ads (Task_Alternate_Stack): Default
+ initialize to Null_Address.
+ (Enter_Task): Do not set up an alternate stack for foreign threads.
+
2010-09-10 Robert Dewar <dewar@adacore.com>
* opt.adb (Short_Descriptors): New flag
end if;
end if;
+ -- If this is a boolean expression, only its elementary consituents
+ -- need checking: if they are valid, a boolean or short-circuit
+ -- operation with them will be valid as well.
+
+ if Base_Type (Typ) = Standard_Boolean
+ and then
+ (Nkind (Expr) in N_Op or else Nkind (Expr) in N_Short_Circuit)
+ then
+ return;
+ end if;
+
-- If we fall through, a validity check is required
Insert_Valid_Check (Expr);
* Pragma Restriction_Warnings::
* Pragma Shared::
* Pragma Short_Circuit_And_Or::
+* Pragma Short_Descriptors::
* Pragma Source_File_Name::
* Pragma Source_File_Name_Project::
* Pragma Source_Reference::
* Pragma Restriction_Warnings::
* Pragma Shared::
* Pragma Short_Circuit_And_Or::
+* Pragma Short_Descriptors::
* Pragma Source_File_Name::
* Pragma Source_File_Name_Project::
* Pragma Source_Reference::
definition. Note that such a package is a child of @code{System}
and thus is considered part of the implementation. To compile
it you will have to use the appropriate switch for compiling
-system units. @xref{Top, @value{EDITION} User's Guide, About This
-Guide,, gnat_ugn, @value{EDITION} User's Guide}, for details.
+system units.
+@xref{Top, @value{EDITION} User's Guide, About This Guide, gnat_ugn, @value{EDITION} User's Guide},
+for details.
@node Pragma Extensions_Allowed
@unnumberedsec Pragma Extensions_Allowed
@end smallexample
@noindent
-then the ordering imposed by the language is reasonable, and
+then the ordering imposed by the language is reasonable, and
clients can depend on it, writing for example:
@smallexample @c ada
within the file being compiled, it applies only to the file being compiled.
There is no requirement that all units in a partition use this option.
-semantics are identical to pragma Atomic.
+@node Pragma Short_Descriptors
+@unnumberedsec Pragma Short_Descriptors
+@findex Short_Descriptors
+@noindent
+Syntax:
+
+@smallexample @c ada
+pragma Short_Descriptors
+@end smallexample
+
+@noindent
+In VMS versions of the compiler, this configuration pragma causes all
+occurrences of the mechanism types Descriptor[_xxx] to be treated as
+Short_Descriptor[_xxx]. This is helpful in porting legacy applications from a
+32-bit environment to a 64-bit environment. This pragma is ignored for non-VMS
+versions.
+
@node Pragma Source_File_Name
@unnumberedsec Pragma Source_File_Name
@findex Source_File_Name
Prefix := new String'(Executable_Prefix_Path);
if Prefix.all /= "" then
+ if Tree.Target_Name /= null and then
+ Tree.Target_Name.all /= ""
+ then
+ Add_Str_To_Name_Buffer
+ (Path_Separator & Prefix.all &
+ "lib" & Directory_Separator & "gpr" &
+ Directory_Separator & Tree.Target_Name.all);
+ end if;
+
Add_Str_To_Name_Buffer
(Path_Separator & Prefix.all &
"share" & Directory_Separator & "gpr");
Add_Str_To_Name_Buffer
(Path_Separator & Prefix.all &
- Directory_Separator & "lib" &
- Directory_Separator & "gnat");
+ "lib" & Directory_Separator & "gnat");
end if;
else
-- --
-- S p e c --
-- --
--- Copyright (C) 2001-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 2001-2010, 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- --
-- project-tree specific so that one can load the same tree twice but
-- have two views of it, for instance.
- Project_Path : String_Access;
+ Target_Name : String_Access := null;
+ -- The target name, if any, specified with the gprbuild or gprclean
+ -- switch --target=.
+
+ Project_Path : String_Access := null;
-- The project path, manipulated through subprograms in prj-ext.ads.
-- As a special case, if the first character is '#:" or this variable is
-- unset, this means that the PATH has not been fully initialized yet
Executable_Extension_On_Target := Saved_EEOT;
return Result;
- else
+ elsif Builder_Package /= No_Package then
-- We still want to take into account cases where the suffix is
-- specified in the project itself, as opposed to the config file.
-- Unfortunately, when the project was processed, they are both
Result := Executable_Name (File);
Executable_Extension_On_Target := Saved_EEOT;
return Result;
-
- else
- return File;
end if;
end if;
+
+ return File;
end Add_Suffix;
-- Start of processing for Executable_Of
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2009, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2010, Free Software Foundation, Inc. --
-- --
-- GNARL 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- --
Specific.Set (Self_ID);
- if Use_Alternate_Stack then
+ if Use_Alternate_Stack
+ and then Self_ID.Common.Task_Alternate_Stack /= Null_Address
+ then
declare
Stack : aliased stack_t;
Result : Interfaces.C.int;
-- Activator writes it, once, before Self starts executing. Thereafter,
-- Self only reads it.
- Task_Alternate_Stack : System.Address;
+ Task_Alternate_Stack : System.Address := System.Null_Address;
-- The address of the alternate signal stack for this task, if any
--
-- Protection: Only accessed by Self