From c33ad45cabb27512ec7f4e8f7e40cf448f4db59d Mon Sep 17 00:00:00 2001 From: Ariadne Conill Date: Fri, 21 Aug 2020 07:06:30 +0000 Subject: [PATCH 25/33] ada: libgnarl compatibility for musl --- gcc/ada/libgnarl/s-osinte__linux.ads | 11 ------ gcc/ada/libgnarl/s-taprop__linux.adb | 53 ++-------------------------- 2 files changed, 3 insertions(+), 61 deletions(-) diff --git a/gcc/ada/libgnarl/s-osinte__linux.ads b/gcc/ada/libgnarl/s-osinte__linux.ads index a5e645d334d..32165347071 100644 --- a/gcc/ada/libgnarl/s-osinte__linux.ads +++ b/gcc/ada/libgnarl/s-osinte__linux.ads @@ -403,12 +403,6 @@ package System.OS_Interface is PTHREAD_RWLOCK_PREFER_WRITER_NP : constant := 1; PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP : constant := 2; - function pthread_rwlockattr_setkind_np - (attr : access pthread_rwlockattr_t; - pref : int) return int; - pragma Import - (C, pthread_rwlockattr_setkind_np, "pthread_rwlockattr_setkind_np"); - function pthread_rwlock_init (mutex : access pthread_rwlock_t; attr : access pthread_rwlockattr_t) return int; @@ -470,11 +464,6 @@ package System.OS_Interface is protocol : int) return int; pragma Import (C, pthread_mutexattr_setprotocol); - function pthread_mutexattr_setprioceiling - (attr : access pthread_mutexattr_t; - prioceiling : int) return int; - pragma Import (C, pthread_mutexattr_setprioceiling); - type struct_sched_param is record sched_priority : int; -- scheduling priority end record; diff --git a/gcc/ada/libgnarl/s-taprop__linux.adb b/gcc/ada/libgnarl/s-taprop__linux.adb index 821ceef30e4..ae95b58e01e 100644 --- a/gcc/ada/libgnarl/s-taprop__linux.adb +++ b/gcc/ada/libgnarl/s-taprop__linux.adb @@ -198,9 +198,6 @@ package body System.Task_Primitives.Operations is pragma Import (C, GNAT_pthread_condattr_setup, "__gnat_pthread_condattr_setup"); - function GNAT_has_cap_sys_nice return C.int; - pragma Import - (C, GNAT_has_cap_sys_nice, "__gnat_has_cap_sys_nice"); -- We do not have pragma Linker_Options ("-lcap"); here, because this -- library is not present on many Linux systems. 'libcap' is the Linux -- "capabilities" library, called by __gnat_has_cap_sys_nice. @@ -210,38 +207,6 @@ package body System.Task_Primitives.Operations is -- Convert Ada priority to Linux priority. Priorities are 1 .. 99 on -- GNU/Linux, so we map 0 .. 98 to 1 .. 99. - function Get_Ceiling_Support return Boolean; - -- Get the value of the Ceiling_Support constant (see below). - -- Note well: If this function or related code is modified, it should be - -- tested by hand, because automated testing doesn't exercise it. - - ------------------------- - -- Get_Ceiling_Support -- - ------------------------- - - function Get_Ceiling_Support return Boolean is - Ceiling_Support : Boolean := False; - begin - if Locking_Policy /= 'C' then - return False; - end if; - - declare - function geteuid return Integer; - pragma Import (C, geteuid, "geteuid"); - Superuser : constant Boolean := geteuid = 0; - Has_Cap : constant C.int := GNAT_has_cap_sys_nice; - pragma Assert (Has_Cap in 0 | 1); - begin - Ceiling_Support := Superuser or else Has_Cap = 1; - end; - - return Ceiling_Support; - end Get_Ceiling_Support; - - pragma Warnings (Off, "non-preelaborable call not allowed*"); - Ceiling_Support : constant Boolean := Get_Ceiling_Support; - pragma Warnings (On, "non-preelaborable call not allowed*"); -- True if the locking policy is Ceiling_Locking, and the current process -- has permission to use this policy. The process has permission if it is -- running as 'root', or if the capability was set by the setcap command, @@ -344,7 +309,9 @@ package body System.Task_Primitives.Operations is -- Init_Mutex -- ---------------- + pragma Warnings (Off, "formal parameter * is not referenced"); function Init_Mutex (L : RTS_Lock_Ptr; Prio : Any_Priority) return C.int is + pragma Warnings (On, "formal parameter * is not referenced"); Mutex_Attr : aliased pthread_mutexattr_t; Result, Result_2 : C.int; @@ -356,16 +323,7 @@ package body System.Task_Primitives.Operations is return Result; end if; - if Ceiling_Support then - Result := pthread_mutexattr_setprotocol - (Mutex_Attr'Access, PTHREAD_PRIO_PROTECT); - pragma Assert (Result = 0); - - Result := pthread_mutexattr_setprioceiling - (Mutex_Attr'Access, Prio_To_Linux_Prio (Prio)); - pragma Assert (Result = 0); - - elsif Locking_Policy = 'I' then + if Locking_Policy = 'I' then Result := pthread_mutexattr_setprotocol (Mutex_Attr'Access, PTHREAD_PRIO_INHERIT); pragma Assert (Result = 0); @@ -405,11 +363,6 @@ package body System.Task_Primitives.Operations is Result := pthread_rwlockattr_init (RWlock_Attr'Access); pragma Assert (Result = 0); - Result := pthread_rwlockattr_setkind_np - (RWlock_Attr'Access, - PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP); - pragma Assert (Result = 0); - Result := pthread_rwlock_init (L.RW'Access, RWlock_Attr'Access); pragma Assert (Result in 0 | ENOMEM); -- 2.40.1