public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Eric Botcazou <ebotcazou@adacore.com>
To: gcc-patches@gcc.gnu.org, svante.signell@gmail.com
Cc: Arnaud Charlet <charlet@adacore.com>,
	Samuel Thibault <samuel.thibault@gnu.org>,
	Matthias Klose <doko@debian.org>
Subject: Re: Please include ada-hurd.diff upstream (try2)
Date: Wed, 27 Apr 2016 07:41:00 -0000	[thread overview]
Message-ID: <3112260.f0kR4riLZQ@polaris> (raw)
In-Reply-To: <1461580096.8664.262.camel@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 458 bytes --]

> 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

[-- Attachment #2: ada-hurd2.diff --]
[-- Type: text/x-patch, Size: 8242 bytes --]

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;

  parent reply	other threads:[~2016-04-27  7:41 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-01 23:42 Svante Signell
2016-03-07  5:22 ` Matthias Klose
2016-03-16 10:08 ` Eric Botcazou
2016-03-16 10:41   ` Svante Signell
2016-03-16 10:54     ` Eric Botcazou
2016-03-16 11:15       ` Svante Signell
2016-03-16 11:19         ` Arnaud Charlet
2016-03-16 21:55       ` Svante Signell
2016-03-17  7:51         ` Arnaud Charlet
2016-03-31  9:52           ` Svante Signell
2016-04-19  6:49             ` Svante Signell
2016-04-19  8:30               ` Arnaud Charlet
2016-04-25  9:22                 ` Svante Signell
2016-04-25  9:50                   ` Arnaud Charlet
2016-04-25 10:28                     ` Svante Signell
2016-04-25 10:31                       ` Arnaud Charlet
2016-04-27  7:41                       ` Eric Botcazou [this message]
2016-04-27  8:06                         ` Svante Signell
2016-05-04 15:29                           ` Samuel Thibault
2016-05-04 15:34                             ` Samuel Thibault
2016-05-04 16:02                               ` Arnaud Charlet
2016-05-04 16:43                               ` Svante Signell
2016-05-04 17:43                                 ` Svante Signell
2016-05-04 21:06                                   ` Samuel Thibault
2016-05-04 21:25                                     ` Svante Signell
2016-05-04 21:28                                       ` Samuel Thibault
2016-05-04 19:17                               ` Eric Botcazou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3112260.f0kR4riLZQ@polaris \
    --to=ebotcazou@adacore.com \
    --cc=charlet@adacore.com \
    --cc=doko@debian.org \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=samuel.thibault@gnu.org \
    --cc=svante.signell@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).