aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSvante Signell <svante.signell@gmail.com>2016-04-27 07:38:41 +0000
committerEric Botcazou <ebotcazou@gcc.gnu.org>2016-04-27 07:38:41 +0000
commit1ee806d8d759be9c7326ce55b472f326089b47f0 (patch)
tree56feb5162cf8eb96567b69a67d02eaa90ec07bd4 /gcc
parentc47194d2ab2e3ce6c760ea44de3ec00bf18976ee (diff)
downloadgcc-1ee806d8d759be9c7326ce55b472f326089b47f0.zip
gcc-1ee806d8d759be9c7326ce55b472f326089b47f0.tar.gz
gcc-1ee806d8d759be9c7326ce55b472f326089b47f0.tar.bz2
Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb.
* gcc-interface/Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb. * s-osinte-gnu.ads: Small tweaks. * s-osinte-gnu.adb: New file. From-SVN: r235467
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog6
-rw-r--r--gcc/ada/gcc-interface/Makefile.in2
-rw-r--r--gcc/ada/s-osinte-gnu.adb144
-rw-r--r--gcc/ada/s-osinte-gnu.ads14
4 files changed, 158 insertions, 8 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 0051dbd..1c41831 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,9 @@
+2016-04-27 Svante Signell <svante.signell@gmail.com>
+
+ * gcc-interface/Makefile.in (x86 GNU/Hurd): Use s-osinte-gnu.adb.
+ * s-osinte-gnu.ads: Small tweaks.
+ * s-osinte-gnu.adb: New file.
+
2016-04-21 Hristian Kirtchev <kirtchev@adacore.com>
* sem_prag.adb (Match_Constituent): Treat a constant as a legal
diff --git a/gcc/ada/gcc-interface/Makefile.in b/gcc/ada/gcc-interface/Makefile.in
index bfc718b..d9ede9f 100644
--- a/gcc/ada/gcc-interface/Makefile.in
+++ b/gcc/ada/gcc-interface/Makefile.in
@@ -1426,7 +1426,7 @@ ifeq ($(strip $(filter-out %86 pc gnu,$(target_cpu) $(target_vendor) $(target_os
a-intnam.ads<a-intnam-freebsd.ads \
s-inmaop.adb<s-inmaop-posix.adb \
s-intman.adb<s-intman-posix.adb \
- s-osinte.adb<s-osinte-posix.adb \
+ s-osinte.adb<s-osinte-gnu.adb \
s-osinte.ads<s-osinte-gnu.ads \
s-osprim.adb<s-osprim-posix.adb \
s-taprop.adb<s-taprop-posix.adb \
diff --git a/gcc/ada/s-osinte-gnu.adb b/gcc/ada/s-osinte-gnu.adb
new file mode 100644
index 0000000..fb099ac
--- /dev/null
+++ b/gcc/ada/s-osinte-gnu.adb
@@ -0,0 +1,144 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS --
+-- --
+-- S Y S T E M . O S _ I N T E R F A C E --
+-- --
+-- B o d y --
+-- --
+-- Copyright (C) 2015-2016, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNARL was developed by the GNARL team at Florida State University. --
+-- Extensive contributions were provided by Ada Core Technologies, Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This is the GNU/Hurd version of this package.
+
+pragma Polling (Off);
+-- Turn off polling, we do not want ATC polling to take place during
+-- tasking operations. It causes infinite loops and other problems.
+
+-- This package encapsulates all direct interfaces to OS services
+-- that are needed by children of System.
+
+package body System.OS_Interface is
+
+ --------------------
+ -- Get_Stack_Base --
+ --------------------
+
+ function Get_Stack_Base (thread : pthread_t) return Address is
+ pragma Warnings (Off, thread);
+
+ begin
+ return Null_Address;
+ end Get_Stack_Base;
+
+ ------------------
+ -- pthread_init --
+ ------------------
+
+ procedure pthread_init is
+ begin
+ null;
+ end pthread_init;
+
+ --------------------------------------
+ -- pthread_mutexattr_setprioceiling --
+ --------------------------------------
+
+ function pthread_mutexattr_setprioceiling
+ (attr : access pthread_mutexattr_t;
+ prioceiling : int) return int is
+ pragma Unreferenced (attr, prioceiling);
+ begin
+ return 0;
+ end pthread_mutexattr_setprioceiling;
+
+ --------------------------------------
+ -- pthread_mutexattr_getprioceiling --
+ --------------------------------------
+
+ function pthread_mutexattr_getprioceiling
+ (attr : access pthread_mutexattr_t;
+ prioceiling : access int) return int is
+ pragma Unreferenced (attr, prioceiling);
+ begin
+ return 0;
+ end pthread_mutexattr_getprioceiling;
+
+ ---------------------------
+ -- pthread_setschedparam --
+ ---------------------------
+
+ function pthread_setschedparam
+ (thread : pthread_t;
+ policy : int;
+ param : access struct_sched_param) return int is
+ pragma Unreferenced (thread, policy, param);
+ begin
+ return 0;
+ end pthread_setschedparam;
+
+ -----------------
+ -- To_Duration --
+ -----------------
+
+ function To_Duration (TS : timespec) return Duration is
+ begin
+ return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9;
+ end To_Duration;
+
+ ------------------------
+ -- To_Target_Priority --
+ ------------------------
+
+ function To_Target_Priority
+ (Prio : System.Any_Priority) return Interfaces.C.int
+ is
+ begin
+ return Interfaces.C.int (Prio);
+ end To_Target_Priority;
+
+ -----------------
+ -- To_Timespec --
+ -----------------
+
+ function To_Timespec (D : Duration) return timespec is
+ S : time_t;
+ F : Duration;
+
+ begin
+ S := time_t (Long_Long_Integer (D));
+ F := D - Duration (S);
+
+ -- If F has negative value due to a round-up, adjust for positive F
+ -- value.
+
+ if F < 0.0 then
+ S := S - 1;
+ F := F + 1.0;
+ end if;
+
+ return timespec'(tv_sec => S,
+ tv_nsec => long (Long_Long_Integer (F * 10#1#E9)));
+ end To_Timespec;
+
+end System.OS_Interface;
diff --git a/gcc/ada/s-osinte-gnu.ads b/gcc/ada/s-osinte-gnu.ads
index b3397c1..6cac9b9 100644
--- a/gcc/ada/s-osinte-gnu.ads
+++ b/gcc/ada/s-osinte-gnu.ads
@@ -344,8 +344,9 @@ package System.OS_Interface is
-- returns the stack base of the specified thread. Only call this function
-- when Stack_Base_Available is True.
- -- From: /usr/include/unistd.h __getpagesize or getpagesize??
- function Get_Page_Size return int;
+ -- From: /usr/include/i386-gnu/bits/shm.h __getpagesize or getpagesize??
+ 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
@@ -498,7 +499,11 @@ package System.OS_Interface is
PTHREAD_PRIO_PROTECT : constant := 2;
PTHREAD_PRIO_INHERIT : constant := 1;
+ -- GNU/Hurd does not support Thread Priority Protection or Thread
+ -- Priority Inheritance and lacks some pthread_mutexattr_* functions.
+ -- Replace them with dummy versions.
-- From: /usr/include/pthread/pthread.h
+
function pthread_mutexattr_setprotocol
(attr : access pthread_mutexattr_t;
protocol : int) return int;
@@ -514,14 +519,10 @@ package System.OS_Interface is
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
@@ -532,7 +533,6 @@ package System.OS_Interface is
(thread : pthread_t;
policy : int;
param : access struct_sched_param) return int;
- pragma Import (C, pthread_setschedparam, "pthread_setschedparam");
function pthread_attr_setscope
(attr : access pthread_attr_t;