This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Please include ada-hurd.diff upstream (try2)


> Attaching the modified ada-hurd.diff. Maybe it is ready for inclusion in
> upstream now?

Upstream already contains the first set of changes though.  Here's what I have 
installed on mainline and 6 branch (not sure it will be in the 6.1 release).


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.

-- 
Eric Botcazou
Index: gcc-interface/Makefile.in
===================================================================
--- gcc-interface/Makefile.in	(revision 235394)
+++ gcc-interface/Makefile.in	(working copy)
@@ -1426,7 +1426,7 @@ ifeq ($(strip $(filter-out %86 pc gnu,$(
   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 \
Index: s-osinte-gnu.adb
===================================================================
--- s-osinte-gnu.adb	(revision 0)
+++ s-osinte-gnu.adb	(working copy)
@@ -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;
Index: s-osinte-gnu.ads
===================================================================
--- s-osinte-gnu.ads	(revision 235394)
+++ s-osinte-gnu.ads	(working copy)
@@ -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;

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]