public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Andris Pavenis <andris.pavenis@iki.fi>
To: Arnaud Charlet <charlet@adacore.com>
Cc: GCC Patches <gcc-patches@gcc.gnu.org>, DJ Delorie <dj@delorie.com>
Subject: Re: [PATCH 2/4][Ada,DJGPP] Ada support for DJGPP
Date: Mon, 22 Aug 2016 04:01:00 -0000	[thread overview]
Message-ID: <89aaa9c5-ede8-e673-30b6-a7718dfcb5e8@iki.fi> (raw)
In-Reply-To: <20160818094013.GA1929@adacore.com>

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

On 08/18/2016 12:40 PM, Arnaud Charlet wrote:
>> This patch (2nd of 4) includes various changes to Ada related C files
>> required for DJGPP support
>>
>> ChangeLog entry:
>>
>> 2016-07-30 Andris Pavenis <andris.pavenis@iki.fi>
>>
>>      * ada/ctrl_c.c: Do not use macro SA_RESTART for DJGPP.
>>
>>      * ada/gsocket.h: Do not support sockets for DJGPP.
>>
>>      * ada/init.c (timestruct_t): Define for DJGPP.
>>        (nanosleep): Implement for DJGPP using usleep().
> Why do you need to define nanosleep() here? I suspect this is no longer
> needed. If it is, would be good to know why.
>
> Arno

Thanks for notice. It is really no more needed.

Updated patch is in attachment. New changelog entry is also there

Andris





[-- Attachment #2: 0002-DJGPP-Ada-DJGPP-support.patch --]
[-- Type: text/x-patch, Size: 5151 bytes --]

From 6cf25bcc18b4c0b8945af55bb1d9d0719f7ee8a8 Mon Sep 17 00:00:00 2001
From: Andris Pavenis <andris.pavenis@iki.fi>
Date: Sun, 21 Aug 2016 11:15:11 +0300
Subject: [PATCH 2/4] [DJGPP, Ada] DJGPP support

* ada/ctrl_c.c: Do not use macro SA_RESTART for DJGPP.

* ada/gsocket.h: Do not support sockets for DJGPP.

* ada/init.c (__gnat_install_handler): Implement for DJGPP

* ada/sysdep.c: Include <io.h> for DJGPP
  (_setmode): Define to setmode for DJGPP
  (__gnat_set_mode): Add implementation for DJGPP
  (__gnat_localtime_tzoff): Add implementation for DJGPP

* ada/terminals.c: Add DJGPP to list of unsupported platforms.
---
 gcc/ada/ctrl_c.c    |  4 ++--
 gcc/ada/gsocket.h   |  2 +-
 gcc/ada/init.c      |  8 ++++++++
 gcc/ada/sysdep.c    | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++--
 gcc/ada/terminals.c |  2 +-
 5 files changed, 66 insertions(+), 6 deletions(-)

diff --git a/gcc/ada/ctrl_c.c b/gcc/ada/ctrl_c.c
index 7f8d177..d4fc551 100644
--- a/gcc/ada/ctrl_c.c
+++ b/gcc/ada/ctrl_c.c
@@ -92,8 +92,8 @@ __gnat_install_int_handler (void (*proc) (void))
   if (sigint_intercepted == 0)
     {
       act.sa_handler = __gnat_int_handler;
-#if defined (__Lynx__) || defined (VMS)
-      /* LynxOS and VMS do not support SA_RESTART. */
+#if defined (__Lynx__) || defined (VMS) || defined(__DJGPP__)
+      /* LynxOS, VMS or DJGPP do not support SA_RESTART. */
       act.sa_flags = 0;
 #else
       act.sa_flags = SA_RESTART;
diff --git a/gcc/ada/gsocket.h b/gcc/ada/gsocket.h
index 31a3ccf..a979d3a 100644
--- a/gcc/ada/gsocket.h
+++ b/gcc/ada/gsocket.h
@@ -29,7 +29,7 @@
  *                                                                          *
  ****************************************************************************/
 
-#if defined(VTHREADS) || defined(__PikeOS__)
+#if defined(VTHREADS) || defined(__PikeOS__) || defined(__DJGPP__)
 
 /* Sockets not supported on these platforms.  */
 #undef HAVE_SOCKETS
diff --git a/gcc/ada/init.c b/gcc/ada/init.c
index 6d51896..cec968b 100644
--- a/gcc/ada/init.c
+++ b/gcc/ada/init.c
@@ -2516,6 +2516,14 @@ __gnat_install_handler (void)
   __gnat_handler_installed = 1;
 }
 
+#elif defined (__DJGPP__)
+
+void
+__gnat_install_handler ()
+{
+  __gnat_handler_installed = 1;
+}
+
 #elif defined(__ANDROID__)
 
 /*******************/
diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c
index 465007e..bfabf30 100644
--- a/gcc/ada/sysdep.c
+++ b/gcc/ada/sysdep.c
@@ -126,7 +126,7 @@ extern struct tm *localtime_r(const time_t *, struct tm *);
 
 */
 
-#if defined (WINNT) || defined (__CYGWIN__)
+#if defined (WINNT) || defined (__CYGWIN__) || defined(__DJGPP__)
 
 const char __gnat_text_translation_required = 1;
 
@@ -137,6 +137,11 @@ const char __gnat_text_translation_required = 1;
 #define WIN_SETMODE _setmode
 #endif
 
+#if defined(__DJGPP__)
+#include <io.h>
+#define _setmode setmode
+#endif /* __DJGPP__ */
+
 void
 __gnat_set_binary_mode (int handle)
 {
@@ -149,6 +154,30 @@ __gnat_set_text_mode (int handle)
   WIN_SETMODE (handle, O_TEXT);
 }
 
+#ifdef __DJGPP__
+void
+__gnat_set_mode (int handle, int mode)
+{
+  /*  the values here must be synchronized with
+      System.File_Control_Block.Content_Encodding:
+
+      None         = 0
+      Default_Text = 1
+      Text         = 2
+      U8text       = 3
+      Wtext        = 4
+      U16text      = 5  */
+
+ switch (mode) {
+    case 0 : setmode(handle, O_BINARY);          break;
+    case 1 : setmode(handle, O_TEXT);            break;
+    case 2 : setmode(handle, O_TEXT);            break;
+    case 3 : setmode(handle, O_TEXT);            break;
+    case 4 : setmode(handle, O_BINARY);          break;
+    case 5 : setmode(handle, O_BINARY);          break;
+ }
+}
+#else
 void
 __gnat_set_mode (int handle, int mode)
 {
@@ -171,6 +200,7 @@ __gnat_set_mode (int handle, int mode)
     case 5 : WIN_SETMODE (handle, _O_U16TEXT);         break;
  }
 }
+#endif
 
 #ifdef __CYGWIN__
 
@@ -603,7 +633,29 @@ long __gnat_invalid_tzoff = 259273;
 
 /* Definition of __gnat_localtime_r used by a-calend.adb */
 
-#if defined (__MINGW32__)
+#if defined (__DJGPP__)
+
+/* FIXME: this is draft version only. Fix me if that is not correct  */
+/*        or not complete (AP)                                       */
+
+extern void
+__gnat_localtime_tzoff (const time_t *, long *);
+
+void
+__gnat_localtime_tzoff (const time_t *timer, long *off)
+{
+  struct tm *tmp;
+
+  tmp = localtime (timer);
+  *off = (long) -tmp->tm_gmtoff;
+
+  /* Correct the offset if Daylight Saving Time is in effect */
+
+  if (tmp->tm_isdst > 0)
+    *off = *off + 3600;
+}
+
+#elif defined (__MINGW32__)
 
 /* Reentrant localtime for Windows. */
 
diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c
index d72eb09..7b14997 100644
--- a/gcc/ada/terminals.c
+++ b/gcc/ada/terminals.c
@@ -32,7 +32,7 @@
 /* First all usupported platforms. Add stubs for exported routines. */
 
 #if defined (VMS) || defined (__vxworks) || defined (__Lynx__) \
-  || defined (__ANDROID__) || defined (__PikeOS__)
+  || defined (__ANDROID__) || defined (__PikeOS__) || defined(__DJGPP__)
 
 #define ATTRIBUTE_UNUSED __attribute__((unused))
 
-- 
2.7.4


  reply	other threads:[~2016-08-22  4:01 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-30  5:45 Andris Pavenis
2016-08-18  9:40 ` Arnaud Charlet
2016-08-22  4:01   ` Andris Pavenis [this message]
2016-08-25  9:17     ` Arnaud Charlet
2016-09-04 17:02       ` Andris Pavenis
2016-09-04 19:49         ` Arnaud Charlet

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=89aaa9c5-ede8-e673-30b6-a7718dfcb5e8@iki.fi \
    --to=andris.pavenis@iki.fi \
    --cc=charlet@adacore.com \
    --cc=dj@delorie.com \
    --cc=gcc-patches@gcc.gnu.org \
    /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).