diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6aec4942f73..57077d08b54 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,10 @@ +2012-12-01 John David Anglin + + PR ada/52110 + * s-osinte-hpux-dce.ads: Declare pthread_rwlockattr_t and + pthread_rwlock_t subtypes. Delete duplicate declaration of clockid_t. + * s-taspri-hpux-dce.ads: Change "pragma Atomic (Thread)" to comment. + 2012-11-28 Eric Botcazou * gcc-interface/decl.c (gnat_to_gnu_entity) : Use diff --git a/gcc/ada/s-osinte-hpux-dce.ads b/gcc/ada/s-osinte-hpux-dce.ads index 3b156a26597..e6ee0ed5e8f 100644 --- a/gcc/ada/s-osinte-hpux-dce.ads +++ b/gcc/ada/s-osinte-hpux-dce.ads @@ -244,6 +244,14 @@ package System.OS_Interface is type pthread_condattr_t is limited private; type pthread_key_t is private; + -- Read/Write lock not supported on HPUX. To add support both types + -- pthread_rwlock_t and pthread_rwlockattr_t must properly be defined + -- with the associated routines pthread_rwlock_[init/destroy] and + -- pthread_rwlock_[rdlock/wrlock/unlock]. + + subtype pthread_rwlock_t is pthread_mutex_t; + subtype pthread_rwlockattr_t is pthread_mutexattr_t; + ----------- -- Stack -- ----------- @@ -444,7 +452,6 @@ private end record; pragma Convention (C, timespec); - type clockid_t is new int; CLOCK_REALTIME : constant clockid_t := 1; type cma_t_address is new System.Address; diff --git a/gcc/ada/s-taspri-hpux-dce.ads b/gcc/ada/s-taspri-hpux-dce.ads index 9d51d5c4517..6cde3474699 100644 --- a/gcc/ada/s-taspri-hpux-dce.ads +++ b/gcc/ada/s-taspri-hpux-dce.ads @@ -102,7 +102,9 @@ private type Private_Data is record Thread : aliased System.OS_Interface.pthread_t; - pragma Atomic (Thread); + -- pragma Atomic (Thread); + -- Unfortunately, the above fails because Thread is 64 bits. + -- Thread field may be updated by two different threads of control. -- (See, Enter_Task and Create_Task in s-taprop.adb). They put the -- same value (thr_self value). We do not want to use lock on those