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
next prev parent 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).