ctrl_c.c: Do not use macro SA_RESTART for DJGPP.
authorAndris Pavenis <andris.pavenis@iki.fi>
Tue, 11 Oct 2016 18:12:52 +0000 (21:12 +0300)
committerAndris Pavenis <andris@gcc.gnu.org>
Tue, 11 Oct 2016 18:12:52 +0000 (21:12 +0300)
2016-10-11  Andris Pavenis  <andris.pavenis@iki.fi>

* ctrl_c.c: Do not use macro SA_RESTART for DJGPP.
* gsocket.h: Do not support sockets for DJGPP.
* init.c (__gnat_install_handler): Implememt for DJGPP
* sysdep.c: Include <io.h> for DJGPP
(_setmode): Define to setmode for DJGPP
(__gnat_set_mode): Add implementation for DJGPP
(__gnat_localtime_tzoff): Use localtime_r for DJGPP
* terminals.c: Add DJGPP to list of unsupported platforms.
* env.c (__gnat_clearenv): use _gnat_unsetenv on all entries for DJGPP

From-SVN: r240997

gcc/ada/ChangeLog
gcc/ada/ctrl_c.c
gcc/ada/env.c
gcc/ada/gsocket.h
gcc/ada/init.c
gcc/ada/sysdep.c
gcc/ada/terminals.c

index 06a14d8f91d2411d53ee54d7e42bbcf458cf51b4..96da7bfdc4c880f183bdf649343ddb098cd124c0 100644 (file)
@@ -1,3 +1,15 @@
+2016-10-11  Andris Pavenis  <andris.pavenis@iki.fi>
+
+       * ctrl_c.c: Do not use macro SA_RESTART for DJGPP.
+       * gsocket.h: Do not support sockets for DJGPP.
+       * init.c (__gnat_install_handler): Implememt for DJGPP
+       * sysdep.c: Include <io.h> for DJGPP
+       (_setmode): Define to setmode for DJGPP
+       (__gnat_set_mode): Add implementation for DJGPP
+       (__gnat_localtime_tzoff): Use localtime_r for DJGPP
+       * terminals.c: Add DJGPP to list of unsupported platforms.
+       * env.c (__gnat_clearenv): use _gnat_unsetenv on all entries for DJGPP
+
 2016-10-11  Pierre-Marie de Rodat  <derodat@adacore.com>
 
        * exp_dbug.adb (Debug_Renaming_Declaration): Process underlying types.
index 7f8d177d17c08533dc6793783e2c5cb1d51b00b7..b1bd08527a78bbbeb03aa6e21a22eb76103c1365 100644 (file)
@@ -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 and DJGPP do not support SA_RESTART. */
       act.sa_flags = 0;
 #else
       act.sa_flags = SA_RESTART;
index 84698766797a3fb06f1991ace8484654ddd76006..da6b7b0ad736edcbb1291aa8c59b79d7b3308583 100644 (file)
@@ -302,7 +302,7 @@ void __gnat_clearenv (void)
 #elif defined (__MINGW32__) || defined (__FreeBSD__) || defined (__APPLE__) \
    || (defined (__vxworks) && defined (__RTP__)) || defined (__CYGWIN__) \
    || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__rtems__) \
-   || defined (__DragonFly__)
+   || defined (__DragonFly__) || defined (__DJGPP__)
   /* On Windows, FreeBSD and MacOS there is no function to clean all the
      environment but there is a "clean" way to unset a variable. So go
      through the environ table and call __gnat_unsetenv on all entries */
index 31a3ccff188045a6ac453002cf0d4779cc8d60de..a979d3a0c1de0c0d70fd2d9ab47c890159bf7f61 100644 (file)
@@ -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
index 6d51896d13721bebb7501e014a6d0010bc4b7508..cec968b9ae7fc9faae151869d8c046055f473b36 100644 (file)
@@ -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__)
 
 /*******************/
index 465007eb15df437103bef085c794ae63cb904cfa..5390209fd168798deb274c4df7eeaa89de4748af 100644 (file)
@@ -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__
 
@@ -795,7 +825,8 @@ __gnat_localtime_tzoff (const time_t *timer ATTRIBUTE_UNUSED,
    struct tm */
 
 #elif defined (__APPLE__) || defined (__FreeBSD__) || defined (__linux__) \
-  || defined (__GLIBC__) || defined (__DragonFly__) || defined (__OpenBSD__)
+  || defined (__GLIBC__) || defined (__DragonFly__) || defined (__OpenBSD__) \
+  || defined(__DJGPP__)
 {
   localtime_r (timer, &tp);
   *off = tp.tm_gmtoff;
index 31f21f7a6fda74ed665f4d969ba5b8336add03d3..675ac35c49a76d0ed4ae5993886f229f643751e0 100644 (file)
@@ -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))