aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorLudovic Brenta <ludovic@ludovic-brenta.org>2015-12-06 14:11:17 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2015-12-06 14:11:17 +0000
commit928b5b523bc386006e2ac5691faf7afff6fbce33 (patch)
tree540371fbfb35177f86b0fbaa73f384717f8067ef /gcc
parentf1b7620802b03045c0833de64f793624212545c8 (diff)
downloadgcc-928b5b523bc386006e2ac5691faf7afff6fbce33.zip
gcc-928b5b523bc386006e2ac5691faf7afff6fbce33.tar.gz
gcc-928b5b523bc386006e2ac5691faf7afff6fbce33.tar.bz2
re PR ada/49944 (Bootstrapping on x86_64-pc-kfreebsd-gnu fails with "s-taprop.adb:856:10: "pthread_attr_setaffinity_np" is undefined (more references follow)")
PR ada/49944 * s-osinte-freebsd.ads: Minor reformatting. (Stack_Base_Available): Correct comments. * s-osinte-kfreebsd-gnu.ads (Time_Slice_Supported, nanosleep, clock_id_t, clock_gettime, Stack_Base_Available, Get_Page_Size, mprotect, pthread_mutexattr_setprotocol,pthread_mutexattr_getprotocol pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling, pthread_attr_setscope, pthread_attr_getscope, pthread_attr_setinheritsched, pthread_attr_getinheritsched, Time_Slice_Supported): Copy from s-osinte-freebsd.ads. * gcc-interface/Makefile.in (x86/kfreebsd): Use the POSIX version of the System.Task_Primitives.Operations package. From-SVN: r231333
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog15
-rw-r--r--gcc/ada/gcc-interface/Makefile.in8
-rw-r--r--gcc/ada/s-osinte-freebsd.ads9
-rw-r--r--gcc/ada/s-osinte-kfreebsd-gnu.ads99
4 files changed, 117 insertions, 14 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 2370222..a238a438 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,20 @@
2015-12-06 Ludovic Brenta <ludovic@ludovic-brenta.org>
+ PR ada/49944
+ * s-osinte-freebsd.ads: Minor reformatting.
+ (Stack_Base_Available): Correct comments.
+ * s-osinte-kfreebsd-gnu.ads (Time_Slice_Supported, nanosleep,
+ clock_id_t, clock_gettime, Stack_Base_Available, Get_Page_Size,
+ mprotect, pthread_mutexattr_setprotocol,pthread_mutexattr_getprotocol
+ pthread_mutexattr_setprioceiling, pthread_mutexattr_getprioceiling,
+ pthread_attr_setscope, pthread_attr_getscope,
+ pthread_attr_setinheritsched, pthread_attr_getinheritsched,
+ Time_Slice_Supported): Copy from s-osinte-freebsd.ads.
+ * gcc-interface/Makefile.in (x86/kfreebsd): Use the POSIX version of
+ the System.Task_Primitives.Operations package.
+
+2015-12-06 Ludovic Brenta <ludovic@ludovic-brenta.org>
+
PR ada/49940
* s-osinte-kfreebsd-gnu.ads (lwp_self): New imported function.
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index 9269048..c5e6b30 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1398,9 +1398,7 @@ ifeq ($(strip $(filter-out %86 kfreebsd%,$(target_cpu) $(target_os))),)
s-osinte.adb<s-osinte-posix.adb \
s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
s-osprim.adb<s-osprim-posix.adb \
- s-taprop.adb<s-taprop-linux.adb \
- s-tasinf.ads<s-tasinf-linux.ads \
- s-tasinf.adb<s-tasinf-linux.adb \
+ s-taprop.adb<s-taprop-posix.adb \
s-taspri.ads<s-taspri-posix.ads \
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
$(ATOMICS_TARGET_PAIRS) \
@@ -1431,9 +1429,7 @@ ifeq ($(strip $(filter-out x86_64 kfreebsd%,$(target_cpu) $(target_os))),)
s-osinte.adb<s-osinte-posix.adb \
s-osinte.ads<s-osinte-kfreebsd-gnu.ads \
s-osprim.adb<s-osprim-posix.adb \
- s-taprop.adb<s-taprop-linux.adb \
- s-tasinf.ads<s-tasinf-linux.ads \
- s-tasinf.adb<s-tasinf-linux.adb \
+ s-taprop.adb<s-taprop-posix.adb \
s-taspri.ads<s-taspri-posix.ads \
s-tpopsp.adb<s-tpopsp-posix-foreign.adb \
system.ads<system-freebsd-x86_64.ads
diff --git a/gcc/ada/s-osinte-freebsd.ads b/gcc/ada/s-osinte-freebsd.ads
index 8a0eec6..a5ba5f1 100644
--- a/gcc/ada/s-osinte-freebsd.ads
+++ b/gcc/ada/s-osinte-freebsd.ads
@@ -31,7 +31,7 @@
-- --
------------------------------------------------------------------------------
--- This is the FreeBSD PTHREADS version of this package
+-- This is the FreeBSD (POSIX Threads) version of this package
-- This package encapsulates all direct interfaces to OS services
-- that are needed by the tasking run-time (libgnarl).
@@ -197,7 +197,7 @@ package System.OS_Interface is
type timespec is private;
- function nanosleep (rqtp, rmtp : access timespec) return int;
+ function nanosleep (rqtp, rmtp : access timespec) return int;
pragma Import (C, nanosleep, "nanosleep");
type clockid_t is new int;
@@ -322,10 +322,7 @@ package System.OS_Interface is
-- No alternate signal stack is used on this platform
Stack_Base_Available : constant Boolean := False;
- -- Indicates whether the stack base is available on this target. This
- -- allows us to share s-osinte.adb between all the FSU run time. Note that
- -- this value can only be true if pthread_t has a complete definition that
- -- corresponds exactly to the C header files.
+ -- Indicates whether the stack base is available on this target
function Get_Stack_Base (thread : pthread_t) return Address;
pragma Inline (Get_Stack_Base);
diff --git a/gcc/ada/s-osinte-kfreebsd-gnu.ads b/gcc/ada/s-osinte-kfreebsd-gnu.ads
index e4c7bd0..a11cc6b 100644
--- a/gcc/ada/s-osinte-kfreebsd-gnu.ads
+++ b/gcc/ada/s-osinte-kfreebsd-gnu.ads
@@ -30,7 +30,7 @@
-- --
------------------------------------------------------------------------------
--- This is the GNU/kFreeBSD (GNU/LinuxThreads) version of this package
+-- This is the GNU/kFreeBSD (POSIX Threads) version of this package
-- This package encapsulates all direct interfaces to OS services
-- that are needed by children of System.
@@ -198,8 +198,24 @@ package System.OS_Interface is
-- Time --
----------
+ Time_Slice_Supported : constant Boolean := True;
+ -- Indicates whether time slicing is supported (i.e SCHED_RR is supported)
+
type timespec is private;
+ function nanosleep (rqtp, rmtp : access timespec) return int;
+ pragma Import (C, nanosleep, "nanosleep");
+
+ type clockid_t is private;
+
+ CLOCK_REALTIME : constant clockid_t;
+
+ function clock_gettime
+ (clock_id : clockid_t;
+ tp : access timespec)
+ return int;
+ pragma Import (C, clock_gettime, "clock_gettime");
+
function To_Duration (TS : timespec) return Duration;
pragma Inline (To_Duration);
@@ -271,6 +287,10 @@ package System.OS_Interface is
type pthread_key_t is private;
PTHREAD_CREATE_DETACHED : constant := 1;
+ PTHREAD_CREATE_JOINABLE : constant := 0;
+
+ PTHREAD_SCOPE_PROCESS : constant := 0;
+ PTHREAD_SCOPE_SYSTEM : constant := 2;
-----------
-- Stack --
@@ -294,9 +314,29 @@ package System.OS_Interface is
Alternate_Stack_Size : constant := 0;
-- No alternate signal stack is used on this platform
+ Stack_Base_Available : constant Boolean := False;
+ -- Indicates whether the stack base is available on this target
+
function Get_Stack_Base (thread : pthread_t) return Address;
pragma Inline (Get_Stack_Base);
- -- This is a dummy procedure to share some GNULLI files
+ -- returns the stack base of the specified thread. Only call this function
+ -- when Stack_Base_Available is True.
+
+ function Get_Page_Size return size_t;
+ function Get_Page_Size return Address;
+ pragma Import (C, Get_Page_Size, "getpagesize");
+ -- Returns the size of a page
+
+ PROT_NONE : constant := 0;
+ PROT_READ : constant := 1;
+ PROT_WRITE : constant := 2;
+ PROT_EXEC : constant := 4;
+ PROT_ALL : constant := PROT_READ + PROT_WRITE + PROT_EXEC;
+ PROT_ON : constant := PROT_NONE;
+ PROT_OFF : constant := PROT_ALL;
+
+ function mprotect (addr : Address; len : size_t; prot : int) return int;
+ pragma Import (C, mprotect);
---------------------------------------
-- Nonstandard Thread Initialization --
@@ -385,6 +425,36 @@ package System.OS_Interface is
-- POSIX.1c Section 13 --
--------------------------
+ PTHREAD_PRIO_NONE : constant := 0;
+ PTHREAD_PRIO_PROTECT : constant := 2;
+ PTHREAD_PRIO_INHERIT : constant := 1;
+
+ function pthread_mutexattr_setprotocol
+ (attr : access pthread_mutexattr_t;
+ protocol : int) return int;
+ pragma Import
+ (C, pthread_mutexattr_setprotocol, "pthread_mutexattr_setprotocol");
+
+ function pthread_mutexattr_getprotocol
+ (attr : access pthread_mutexattr_t;
+ protocol : access int) return int;
+ pragma Import
+ (C, pthread_mutexattr_getprotocol, "pthread_mutexattr_getprotocol");
+
+ function pthread_mutexattr_setprioceiling
+ (attr : access pthread_mutexattr_t;
+ prioceiling : int) return int;
+ pragma Import
+ (C, pthread_mutexattr_setprioceiling,
+ "pthread_mutexattr_setprioceiling");
+
+ function pthread_mutexattr_getprioceiling
+ (attr : access pthread_mutexattr_t;
+ prioceiling : access int) return int;
+ pragma Import
+ (C, pthread_mutexattr_getprioceiling,
+ "pthread_mutexattr_getprioceiling");
+
type struct_sched_param is record
sched_priority : int; -- scheduling priority
end record;
@@ -396,6 +466,28 @@ package System.OS_Interface is
param : access struct_sched_param) return int;
pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
+ function pthread_attr_setscope
+ (attr : access pthread_attr_t;
+ contentionscope : int) return int;
+ pragma Import (C, pthread_attr_setscope, "pthread_attr_setscope");
+
+ function pthread_attr_getscope
+ (attr : access pthread_attr_t;
+ contentionscope : access int) return int;
+ pragma Import (C, pthread_attr_getscope, "pthread_attr_getscope");
+
+ function pthread_attr_setinheritsched
+ (attr : access pthread_attr_t;
+ inheritsched : int) return int;
+ pragma Import
+ (C, pthread_attr_setinheritsched, "pthread_attr_setinheritsched");
+
+ function pthread_attr_getinheritsched
+ (attr : access pthread_attr_t;
+ inheritsched : access int) return int;
+ pragma Import
+ (C, pthread_attr_getinheritsched, "pthread_attr_getinheritsched");
+
function pthread_attr_setschedpolicy
(attr : access pthread_attr_t;
policy : int) return int;
@@ -506,6 +598,9 @@ private
end record;
pragma Convention (C, timespec);
+ type clockid_t is new int;
+ CLOCK_REALTIME : constant clockid_t := 0;
+
type pthread_attr_t is record
detachstate : int;
schedpolicy : int;