aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-12-21 13:03:53 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2011-12-21 13:03:53 +0100
commitdea1d3dcea17dfb21bf403133dcc6acd0cad6c29 (patch)
treef290fe9b936622bd1e571848a07a44ee941fb7c7 /gcc
parent88115c2a3945dd9eaf0807385e1cd27c298d3d08 (diff)
downloadgcc-dea1d3dcea17dfb21bf403133dcc6acd0cad6c29.zip
gcc-dea1d3dcea17dfb21bf403133dcc6acd0cad6c29.tar.gz
gcc-dea1d3dcea17dfb21bf403133dcc6acd0cad6c29.tar.bz2
[multiple changes]
2011-12-21 Thomas Quinot <quinot@adacore.com> * thread.c, s-oscons-tmplt.c, init.c (pthread_condattr_setclock): For AIX 5.2, define as a dummy weak symbol in init.c. (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC on all versions of AIX. 2011-12-21 Thomas Quinot <quinot@adacore.com> * snames.ads-tmpl, sem_ch8.adb: Minor reformatting. * sem_prag.adb: Minor comment clarification. 2011-12-21 Vincent Celier <celier@adacore.com> * prj-nmsc.adb (Report_No_Sources): New argument Lang for the language name as a Name_Id. Do not report no sources if language is not allowed. (Add_Source): Do not add source if language is not allowed. * prj.adb (Add_Restricted_Language): New procedure (Is_Allowed_Language): New function * prj.ads (Add_Restricted_Language): New procedure (Is_Allowed_Language): New function From-SVN: r182577
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog22
-rw-r--r--gcc/ada/init.c13
-rw-r--r--gcc/ada/prj-nmsc.adb77
-rw-r--r--gcc/ada/prj.adb55
-rw-r--r--gcc/ada/prj.ads12
-rw-r--r--gcc/ada/s-oscons-tmplt.c2
-rw-r--r--gcc/ada/sem_ch8.adb2
-rw-r--r--gcc/ada/sem_prag.adb3
-rw-r--r--gcc/ada/snames.ads-tmpl125
-rw-r--r--gcc/ada/thread.c15
10 files changed, 254 insertions, 72 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index a60b9e3..40a663f 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,25 @@
+2011-12-21 Thomas Quinot <quinot@adacore.com>
+
+ * thread.c, s-oscons-tmplt.c, init.c (pthread_condattr_setclock): For
+ AIX 5.2, define as a dummy weak symbol in init.c.
+ (CLOCK_RT_Ada): Set to CLOCK_MONOTONIC on all versions of AIX.
+
+2011-12-21 Thomas Quinot <quinot@adacore.com>
+
+ * snames.ads-tmpl, sem_ch8.adb: Minor reformatting.
+ * sem_prag.adb: Minor comment clarification.
+
+2011-12-21 Vincent Celier <celier@adacore.com>
+
+ * prj-nmsc.adb (Report_No_Sources): New argument Lang for the
+ language name as a Name_Id. Do not report no sources if language
+ is not allowed.
+ (Add_Source): Do not add source if language is not allowed.
+ * prj.adb (Add_Restricted_Language): New procedure
+ (Is_Allowed_Language): New function
+ * prj.ads (Add_Restricted_Language): New procedure
+ (Is_Allowed_Language): New function
+
2011-12-21 Robert Dewar <dewar@adacore.com>
* exp_ch5.adb, sem_dim.adb, sem_dim.ads, sem_ch12.adb, prj-conf.adb:
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index cc6c1d2..9c11d6b 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -219,6 +219,19 @@ nanosleep (struct timestruc_t *Rqtp, struct timestruc_t *Rmtp)
#endif /* _AIXVERSION_430 */
+/* Version of AIX before 5.3 don't have pthread_condattr_setclock:
+ * supply it as a weak symbol here so that if linking on a 5.3 or newer
+ * machine, we get the real one.
+ */
+
+#ifndef _AIXVERSION_530
+#pragma weak pthread_condattr_setclock
+int
+pthread_condattr_setclock (pthread_condattr_t *attr, clockid_t cl) {
+ return 0;
+}
+#endif
+
static void
__gnat_error_handler (int sig,
siginfo_t *si ATTRIBUTE_UNUSED,
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb
index 678b6e9..af725de 100644
--- a/gcc/ada/prj-nmsc.adb
+++ b/gcc/ada/prj-nmsc.adb
@@ -486,6 +486,7 @@ package body Prj.Nmsc is
procedure Report_No_Sources
(Project : Project_Id;
+ Lang : Name_Id;
Lang_Name : String;
Data : Tree_Processing_Data;
Location : Source_Ptr;
@@ -642,6 +643,13 @@ package body Prj.Nmsc is
Source_To_Replace : Source_Id := No_Source;
begin
+ -- Nothing to do if the language is not one of the restricted ones
+
+ if not Is_Allowed_Language (Lang_Id.Name) then
+ Id := No_Source;
+ return;
+ end if;
+
-- Check if the same file name or unit is used in the prj tree
Add_Src := True;
@@ -1020,6 +1028,56 @@ package body Prj.Nmsc is
(Project : Project_Id;
Data : in out Tree_Processing_Data)
is
+ procedure Check_Aggregate
+ (Project : Project_Id;
+ Data : in out Tree_Processing_Data);
+ -- Check the aggregate project attributes, reject any not supported
+ -- attributes.
+
+ ---------------------
+ -- Check_Aggregate --
+ ---------------------
+
+ procedure Check_Aggregate
+ (Project : Project_Id;
+ Data : in out Tree_Processing_Data)
+ is
+
+ procedure Check_Not_Defined (Name : Name_Id);
+ -- Report an error if Var is defined
+
+ -----------------------
+ -- Check_Not_Defined --
+ -----------------------
+
+ procedure Check_Not_Defined (Name : Name_Id) is
+ Var : constant Prj.Variable_Value :=
+ Prj.Util.Value_Of
+ (Name,
+ Project.Decl.Attributes,
+ Data.Tree.Shared);
+ begin
+ if not Var.Default then
+ Error_Msg_Name_1 := Name;
+ Error_Msg
+ (Data.Flags, "wrong attribute %% in aggregate library",
+ Var.Location, Project);
+ end if;
+ end Check_Not_Defined;
+
+ begin
+ Check_Not_Defined (Snames.Name_Library_Dir);
+ Check_Not_Defined (Snames.Name_Library_Interface);
+ Check_Not_Defined (Snames.Name_Library_Name);
+ Check_Not_Defined (Snames.Name_Library_Ali_Dir);
+ Check_Not_Defined (Snames.Name_Library_Src_Dir);
+ Check_Not_Defined (Snames.Name_Library_Options);
+ Check_Not_Defined (Snames.Name_Library_Standalone);
+ Check_Not_Defined (Snames.Name_Library_Kind);
+ Check_Not_Defined (Snames.Name_Leading_Library_Options);
+ Check_Not_Defined (Snames.Name_Library_Version);
+ end Check_Aggregate;
+
Shared : constant Shared_Project_Tree_Data_Access := Data.Tree.Shared;
Prj_Data : Project_Processing_Data;
@@ -1058,7 +1116,12 @@ package body Prj.Nmsc is
Check_Configuration (Project, Data);
- if Project.Qualifier /= Aggregate then
+ if Project.Qualifier = Aggregate then
+ -- For aggregate project checks that no library attributes are
+ -- defined.
+ Check_Aggregate (Project, Data);
+
+ else
Check_Library_Attributes (Project, Data);
Check_Package_Naming (Project, Data);
@@ -7745,6 +7808,7 @@ package body Prj.Nmsc is
if Source = No_Source then
Report_No_Sources
(Project.Project,
+ Language.Name,
Get_Name_String (Language.Display_Name),
Data,
Project.Source_List_File_Location,
@@ -8191,21 +8255,23 @@ package body Prj.Nmsc is
procedure Report_No_Sources
(Project : Project_Id;
+ Lang : Name_Id;
Lang_Name : String;
Data : Tree_Processing_Data;
Location : Source_Ptr;
Continuation : Boolean := False)
is
begin
- case Data.Flags.When_No_Sources is
+ if Is_Allowed_Language (Lang) then
+ case Data.Flags.When_No_Sources is
when Silent =>
null;
when Warning | Error =>
declare
Msg : constant String :=
- "<there are no "
- & Lang_Name & " sources in this project";
+ "<there are no "
+ & Lang_Name & " sources in this project";
begin
Error_Msg_Warn := Data.Flags.When_No_Sources = Warning;
@@ -8216,7 +8282,8 @@ package body Prj.Nmsc is
Error_Msg (Data.Flags, Msg, Location, Project);
end if;
end;
- end case;
+ end case;
+ end if;
end Report_No_Sources;
----------------------
diff --git a/gcc/ada/prj.adb b/gcc/ada/prj.adb
index 7795cc9..fc5b34c 100644
--- a/gcc/ada/prj.adb
+++ b/gcc/ada/prj.adb
@@ -42,6 +42,17 @@ with GNAT.HTable;
package body Prj is
+ type Restricted_Lang;
+ type Restricted_Lang_Access is access Restricted_Lang;
+ type Restricted_Lang is record
+ Name : Name_Id;
+ Next : Restricted_Lang_Access;
+ end record;
+
+ Restricted_Languages : Restricted_Lang_Access := null;
+ -- When null, all languages are allowed, otherwise only the languages in
+ -- the list are allowed.
+
Object_Suffix : constant String := Get_Target_Object_Suffix.all;
-- File suffix for object files
@@ -86,6 +97,20 @@ package body Prj is
function Contains_ALI_Files (Dir : Path_Name_Type) return Boolean;
-- Return True if there is at least one ALI file in the directory Dir
+ -----------------------------
+ -- Add_Restricted_Language --
+ -----------------------------
+
+ procedure Add_Restricted_Language (Name : String) is
+ N : String (1 .. Name'Length) := Name;
+ begin
+ To_Lower (N);
+ Name_Len := 0;
+ Add_Str_To_Name_Buffer (N);
+ Restricted_Languages :=
+ new Restricted_Lang'(Name => Name_Find, Next => Restricted_Languages);
+ end Add_Restricted_Language;
+
-------------------
-- Add_To_Buffer --
-------------------
@@ -360,6 +385,30 @@ package body Prj is
return Name_Find;
end Extend_Name;
+ -------------------------
+ -- Is_Allowed_Language --
+ -------------------------
+
+ function Is_Allowed_Language (Name : Name_Id) return Boolean is
+ R : Restricted_Lang_Access := Restricted_Languages;
+ Lang : constant String := Get_Name_String (Name);
+ begin
+ if R = null then
+ return True;
+
+ else
+ while R /= null loop
+ if Get_Name_String (R.Name) = Lang then
+ return True;
+ end if;
+
+ R := R.Next;
+ end loop;
+
+ return False;
+ end if;
+ end Is_Allowed_Language;
+
---------------------
-- Project_Changed --
---------------------
@@ -1549,7 +1598,9 @@ package body Prj is
procedure Debug_Output (Str : String) is
begin
if Current_Verbosity > Default then
+ Set_Standard_Error;
Write_Line ((1 .. Debug_Level * 2 => ' ') & Str);
+ Set_Standard_Output;
end if;
end Debug_Output;
@@ -1560,7 +1611,9 @@ package body Prj is
procedure Debug_Indent is
begin
if Current_Verbosity = High then
+ Set_Standard_Error;
Write_Str ((1 .. Debug_Level * 2 => ' '));
+ Set_Standard_Output;
end if;
end Debug_Indent;
@@ -1572,6 +1625,7 @@ package body Prj is
begin
if Current_Verbosity = High then
Debug_Indent;
+ Set_Standard_Error;
Write_Str (Str);
if Str2 = No_Name then
@@ -1579,6 +1633,7 @@ package body Prj is
else
Write_Line (" """ & Get_Name_String (Str2) & '"');
end if;
+ Set_Standard_Output;
end if;
end Debug_Output;
diff --git a/gcc/ada/prj.ads b/gcc/ada/prj.ads
index 7b9c0db..760e61f 100644
--- a/gcc/ada/prj.ads
+++ b/gcc/ada/prj.ads
@@ -41,6 +41,14 @@ with GNAT.OS_Lib; use GNAT.OS_Lib;
package Prj is
+ procedure Add_Restricted_Language (Name : String);
+ -- Call by gprbuild for each language specify by switch
+ -- --restricted-to-languages=.
+
+ function Is_Allowed_Language (Name : Name_Id) return Boolean;
+ -- Returns True if --restricted-to-languages= is not used or if Name
+ -- is one of the restricted languages.
+
All_Other_Names : constant Name_Id := Names_High_Bound;
-- Name used to replace others as an index of an associative array
-- attribute in situations where this is allowed.
@@ -1370,6 +1378,10 @@ package Prj is
Extended : Project_Id) return Boolean;
-- Return True if Extending is extending the Extended project
+ function Is_Ext
+ (Extending : Project_Id;
+ Extended : Project_Id) return Boolean renames Is_Extending;
+
function Has_Ada_Sources (Data : Project_Id) return Boolean;
-- Return True if the project has Ada sources
diff --git a/gcc/ada/s-oscons-tmplt.c b/gcc/ada/s-oscons-tmplt.c
index 143067c..5f67820 100644
--- a/gcc/ada/s-oscons-tmplt.c
+++ b/gcc/ada/s-oscons-tmplt.c
@@ -1379,7 +1379,7 @@ CND(CLOCK_THREAD_CPUTIME_ID, "Thread CPU clock")
/* There's no clock_gettime or clock_id's on Darwin, generate a dummy value */
# define CLOCK_RT_Ada "-1"
-#elif defined(FreeBSD) || (defined(_AIX) && defined(_AIXVERSION_530))
+#elif defined(FreeBSD) || defined(_AIX)
/** On these platforms use system provided monotonic clock instead of
** the default CLOCK_REALTIME. We then need to set up cond var attributes
** appropriately (see thread.c).
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index 8134973..28edc2f 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -8031,7 +8031,7 @@ package body Sem_Ch8 is
end if;
end Use_Class_Wide_Operations;
- -- Start of processing for Use_One_Type;
+ -- Start of processing for Use_One_Type
begin
-- It is the type determined by the subtype mark (8.4(8)) whose
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 49460d0..a36af20 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -14887,7 +14887,8 @@ package body Sem_Prag is
-----------------------------------------
-- This function makes use of the following static table which indicates
- -- whether a given pragma is significant.
+ -- whether appearance of some name in a given pragma is to be considered
+ -- as a reference for the purposes of warnings about unreferenced objects.
-- -1 indicates that references in any argument position are significant
-- 0 indicates that appearance in any argument is not significant
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index f29490f..a130784 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -35,8 +35,8 @@ package Snames is
-- This package contains definitions of standard names (i.e. entries in the
-- Names table) that are used throughout the GNAT compiler. It also contains
--- the definitions of some enumeration types whose definitions are tied to
--- the order of these preset names.
+-- the definitions of some enumeration types whose definitions are tied to the
+-- order of these preset names.
------------------
-- Preset Names --
@@ -51,13 +51,13 @@ package Snames is
-- additional pragmas or attributes are introduced which might otherwise
-- cause a duplicate, then list it only once in this table, and adjust the
-- definition of the functions for testing for pragma names and attribute
- -- names, and returning their ID values. Of course everything is simpler
- -- if no such duplications occur!
+ -- names, and returning their ID values. Of course everything is simpler if
+ -- no such duplications occur!
-- First we have the one character names used to optimize the lookup
-- process for one character identifiers (to avoid the hashing in this
- -- case) There are a full 256 of these, but only the entries for lower
- -- case and upper case letters have identifiers
+ -- case) There are a full 256 of these, but only the entries for lower case
+ -- and upper case letters have identifiers
-- The lower case letter entries are used for one character identifiers
-- appearing in the source, for example in pragma Interface (C).
@@ -90,8 +90,8 @@ package Snames is
Name_Z : constant Name_Id := First_Name_Id + Character'Pos ('z');
-- The upper case letter entries are used by expander code for local
- -- variables that do not require unique names (e.g. formal parameter
- -- names in constructed procedures)
+ -- variables that do not require unique names (e.g. formal parameter names
+ -- in constructed procedures).
Name_uA : constant Name_Id := First_Name_Id + Character'Pos ('A');
Name_uB : constant Name_Id := First_Name_Id + Character'Pos ('B');
@@ -291,9 +291,9 @@ package Snames is
Name_Obj_TypeCode : constant Name_Id := N + $;
Name_Stub : constant Name_Id := N + $;
- -- Operator Symbol entries. The actual names have an upper case O at
- -- the start in place of the Op_ prefix (e.g. the actual name that
- -- corresponds to Name_Op_Abs is "Oabs".
+ -- Operator Symbol entries. The actual names have an upper case O at the
+ -- start in place of the Op_ prefix (e.g. the actual name that corresponds
+ -- to Name_Op_Abs is "Oabs".
First_Operator_Name : constant Name_Id := N + $;
Name_Op_Abs : constant Name_Id := N + $; -- "abs"
@@ -325,21 +325,21 @@ package Snames is
-- The entries marked GNAT are pragmas that are defined by GNAT and that
-- are implemented in all modes (Ada 83, Ada 95, and Ada 2005) Complete
- -- descriptions of the syntax of these implementation dependent pragmas
- -- may be found in the appropriate section in unit Sem_Prag in file
+ -- descriptions of the syntax of these implementation dependent pragmas may
+ -- be found in the appropriate section in unit Sem_Prag in file
-- sem-prag.adb, and they are documented in the GNAT reference manual.
- -- The entries marked Ada 05 are Ada 2005 pragmas. They are implemented
- -- in Ada 83 and Ada 95 mode as well, where they are technically considered
- -- to be implementation dependent pragmas.
+ -- The entries marked Ada 05 are Ada 2005 pragmas. They are implemented in
+ -- Ada 83 and Ada 95 mode as well, where they are technically considered to
+ -- be implementation dependent pragmas.
- -- The entries marked Ada 12 are Ada 2012 pragmas. They are implemented
- -- in Ada 83, Ada 95, and Ada 2005 mode as well, where they are technically
+ -- The entries marked Ada 12 are Ada 2012 pragmas. They are implemented in
+ -- Ada 83, Ada 95, and Ada 2005 mode as well, where they are technically
-- considered to be implementation dependent pragmas.
- -- The entries marked VMS are VMS specific pragmas that are recognized
- -- only in OpenVMS versions of GNAT. They are ignored in other versions
- -- with an appropriate warning.
+ -- The entries marked VMS are VMS specific pragmas that are recognized only
+ -- in OpenVMS versions of GNAT. They are ignored in other versions with an
+ -- appropriate warning.
-- The entries marked AAMP are AAMP specific pragmas that are recognized
-- only in GNAT for the AAMP. They are ignored in other versions with
@@ -381,11 +381,11 @@ package Snames is
Name_Extensions_Allowed : constant Name_Id := N + $; -- GNAT
Name_External_Name_Casing : constant Name_Id := N + $; -- GNAT
- -- Note: Fast_Math is not in this list because its name matches -- GNAT
- -- the name of the corresponding attribute. However, it is
- -- included in the definition of the type Pragma_Id, and the
- -- functions Get_Pragma_Id, Is_[Configuration_]Pragma_Id, and
- -- correctly recognize and process Fast_Math.
+ -- Note: Fast_Math is not in this list because its name matches the name of
+ -- the corresponding attribute. However, it is included in the definition
+ -- of the type Pragma_Id, and the functions Get_Pragma_Id,
+ -- Is_[Configuration_]Pragma_Id, and correctly recognize and process
+ -- Fast_Math.
Name_Favor_Top_Level : constant Name_Id := N + $; -- GNAT
Name_Float_Representation : constant Name_Id := N + $; -- GNAT
@@ -432,11 +432,10 @@ package Snames is
Name_Abort_Defer : constant Name_Id := N + $; -- GNAT
Name_All_Calls_Remote : constant Name_Id := N + $;
- -- Note: AST_Entry is not in this list because its name matches -- VMS
- -- the name of the corresponding attribute. However, it is
- -- included in the definition of the type Pragma_Id, and the
- -- functions Get_Pragma_Id and Is_Pragma_Id correctly recognize
- -- and process Name_AST_Entry.
+ -- Note: AST_Entry is not in this list because its name matches the name of
+ -- the corresponding attribute. However, it is included in the definition
+ -- of the type Pragma_Id, and the functions Get_Pragma_Id and Is_Pragma_Id
+ -- correctly recognize and process Name_AST_Entry.
Name_Assert : constant Name_Id := N + $; -- Ada 05
Name_Asynchronous : constant Name_Id := N + $;
@@ -485,11 +484,10 @@ package Snames is
Name_Inline_Generic : constant Name_Id := N + $; -- GNAT
Name_Inspection_Point : constant Name_Id := N + $;
- -- Note: Interface is not in this list because its name -- GNAT
- -- matches an Ada 05 keyword. However it is included in
- -- the definition of the type Attribute_Id, and the functions
- -- Get_Pragma_Id and Is_Pragma_Id correctly recognize and
- -- process Name_Storage_Size.
+ -- Note: Interface is not in this list because its name matches an Ada 05
+ -- keyword. However it is included in the definition of the type
+ -- Attribute_Id, and the functions Get_Pragma_Id and Is_Pragma_Id correctly
+ -- recognize and process Name_Storage_Size.
Name_Interface_Name : constant Name_Id := N + $; -- GNAT
Name_Interrupt_Handler : constant Name_Id := N + $;
@@ -524,11 +522,11 @@ package Snames is
Name_Preelaborate : constant Name_Id := N + $;
Name_Preelaborate_05 : constant Name_Id := N + $; -- GNAT
- -- Note: Priority is not in this list because its name matches
- -- the name of the corresponding attribute. However, it is
- -- included in the definition of the type Pragma_Id, and the
- -- functions Get_Pragma_Id and Is_Pragma_Id correctly recognize
- -- and process Priority. Priority is a standard Ada 95 pragma.
+ -- Note: Priority is not in this list because its name matches the name of
+ -- the corresponding attribute. However, it is included in the definition
+ -- of the type Pragma_Id, and the functions Get_Pragma_Id and Is_Pragma_Id
+ -- correctly recognize and process Priority. Priority is a standard Ada 95
+ -- pragma.
Name_Psect_Object : constant Name_Id := N + $; -- VMS
Name_Pure : constant Name_Id := N + $;
@@ -542,14 +540,13 @@ package Snames is
Name_Shared : constant Name_Id := N + $; -- Ada 83
Name_Shared_Passive : constant Name_Id := N + $;
- -- Note: Storage_Size is not in this list because its name
- -- matches the name of the corresponding attribute. However,
- -- it is included in the definition of the type Attribute_Id,
- -- and the functions Get_Pragma_Id and Is_Pragma_Id correctly
- -- recognize and process Name_Storage_Size.
+ -- Note: Storage_Size is not in this list because its name matches the name
+ -- of the corresponding attribute. However, it is included in the
+ -- definition of the type Attribute_Id, and the functions Get_Pragma_Id and
+ -- Is_Pragma_Id correctly recognize and process Name_Storage_Size.
- -- Note: Storage_Unit is also omitted from the list because
- -- of a clash with an attribute name, and is treated similarly.
+ -- Note: Storage_Unit is also omitted from the list because of a clash with
+ -- an attribute name, and is treated similarly.
Name_Source_Reference : constant Name_Id := N + $; -- GNAT
Name_Static_Elaboration_Desired : constant Name_Id := N + $; -- GNAT
@@ -580,8 +577,8 @@ package Snames is
-- Language convention names for pragma Convention/Export/Import/Interface
-- Note that Name_C is not included in this list, since it was already
- -- declared earlier in the context of one-character identifier names
- -- (where the order is critical to the fast look up process).
+ -- declared earlier in the context of one-character identifier names (where
+ -- the order is critical to the fast look up process).
-- Note: there are no convention names corresponding to the conventions
-- Entry and Protected, this is because these conventions cannot be
@@ -721,10 +718,10 @@ package Snames is
-- are attributes that are defined in Ada 83, but not in Ada 95. These
-- attributes are implemented in both Ada 83 and Ada 95 modes in GNAT.
- -- The entries marked GNAT are attributes that are defined by GNAT
- -- and implemented in both Ada 83 and Ada 95 modes. Full descriptions
- -- of these implementation dependent attributes may be found in the
- -- appropriate section in package Sem_Attr in file sem-attr.ads.
+ -- The entries marked GNAT are attributes that are defined by GNAT and
+ -- implemented in both Ada 83 and Ada 95 modes. Full descriptions of these
+ -- implementation dependent attributes may be found in the appropriate
+ -- section in Sem_Attr.
-- The entries marked VMS are recognized only in OpenVMS implementations
-- of GNAT, and are treated as illegal in all other contexts.
@@ -900,8 +897,8 @@ package Snames is
-- Remaining attributes are ones that return entities
- -- Note that Elab_Subp_Body is not considered to be a valid attribute
- -- name unless we are operating in CodePeer mode.
+ -- Note that Elab_Subp_Body is not considered to be a valid attribute name
+ -- unless we are operating in CodePeer mode.
First_Entity_Attribute_Name : constant Name_Id := N + $;
Name_Elab_Body : constant Name_Id := N + $; -- GNAT
@@ -929,9 +926,9 @@ package Snames is
-- Names of recognized queuing policy identifiers
- -- Note: policies are identified by the first character of the
- -- name (e.g. F for FIFO_Queuing). If new policy names are added,
- -- the first character must be distinct.
+ -- Note: policies are identified by the first character of the name (e.g. F
+ -- for FIFO_Queuing). If new policy names are added, the first character
+ -- must be distinct.
First_Queuing_Policy_Name : constant Name_Id := N + $;
Name_FIFO_Queuing : constant Name_Id := N + $;
@@ -940,9 +937,9 @@ package Snames is
-- Names of recognized task dispatching policy identifiers
- -- Note: policies are identified by the first character of the
- -- name (e.g. F for FIFO_Within_Priorities). If new policy names
- -- are added, the first character must be distinct.
+ -- Note: policies are identified by the first character of the name (e.g. F
+ -- for FIFO_Within_Priorities). If new policy names are added, the first
+ -- character must be distinct.
First_Task_Dispatching_Policy_Name : constant Name_Id := N + $;
Name_EDF_Across_Priorities : constant Name_Id := N + $;
@@ -1088,8 +1085,8 @@ package Snames is
Name_Raise_Exception : constant Name_Id := N + $;
-- Additional reserved words and identifiers used in GNAT Project Files
- -- Note that Name_External is already previously declared
- -- The names with the -- GB annotation are only used in gprbuild
+ -- Note that Name_External is already previously declared.
+ -- The names with the -- GB annotation are only used in gprbuild.
Name_Aggregate : constant Name_Id := N + $;
Name_Archive_Builder : constant Name_Id := N + $;
diff --git a/gcc/ada/thread.c b/gcc/ada/thread.c
index a55acce..87d7603 100644
--- a/gcc/ada/thread.c
+++ b/gcc/ada/thread.c
@@ -37,6 +37,21 @@
# include <pthread.h>
# include <time.h>
+#ifndef _AIXVERSION_530
+/* We use the same runtime library for AIX 5.2 and 5.3, but pthread_condattr_
+ * setclock exists only on the latter, so for the former provide a dummy
+ * implementation (declared below, weak symbol defined in init.c).
+ *
+ * Note: this means that under AIX 5.2 we'll be using CLOCK_MONOTONIC
+ * timestamps from clock_gettime() as arguments to pthread_cond_timedwait,
+ * which expects a CLOCK_REALTIME value, which is technically wrong, but
+ * inocuous in practice on that particular platform since both clocks happen
+ * to use close epochs.
+ */
+
+extern int pthread_condattr_setclock (pthread_condattr_t *attr, clockid_t cl);
+#endif
+
int
__gnat_pthread_condattr_setup(pthread_condattr_t *attr) {
/*