From dea1d3dcea17dfb21bf403133dcc6acd0cad6c29 Mon Sep 17 00:00:00 2001 From: Arnaud Charlet Date: Wed, 21 Dec 2011 13:03:53 +0100 Subject: [PATCH] [multiple changes] 2011-12-21 Thomas Quinot * 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 * snames.ads-tmpl, sem_ch8.adb: Minor reformatting. * sem_prag.adb: Minor comment clarification. 2011-12-21 Vincent Celier * 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 --- gcc/ada/ChangeLog | 22 +++++++ gcc/ada/init.c | 13 ++++ gcc/ada/prj-nmsc.adb | 77 ++++++++++++++++++++++-- gcc/ada/prj.adb | 55 +++++++++++++++++ gcc/ada/prj.ads | 12 ++++ gcc/ada/s-oscons-tmplt.c | 2 +- gcc/ada/sem_ch8.adb | 2 +- gcc/ada/sem_prag.adb | 3 +- gcc/ada/snames.ads-tmpl | 125 +++++++++++++++++++-------------------- gcc/ada/thread.c | 15 +++++ 10 files changed, 254 insertions(+), 72 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index a60b9e33957..40a663ffdb3 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,25 @@ +2011-12-21 Thomas Quinot + + * 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 + + * snames.ads-tmpl, sem_ch8.adb: Minor reformatting. + * sem_prag.adb: Minor comment clarification. + +2011-12-21 Vincent Celier + + * 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 * 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 cc6c1d2c50b..9c11d6b3d9e 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 678b6e9f991..af725de81e6 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 := - " 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 7b9c0db7d94..760e61f0a22 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 143067c9926..5f678205426 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 8134973d800..28edc2f8578 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 49460d00b96..a36af20cab3 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 f29490f2632..a130784b7cb 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 a55accefef0..87d7603cfa0 100644 --- a/gcc/ada/thread.c +++ b/gcc/ada/thread.c @@ -37,6 +37,21 @@ # include # include +#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) { /* -- 2.30.2