aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndris Pavenis <andris.pavenis@iki.fi>2016-10-11 21:12:52 +0300
committerAndris Pavenis <andris@gcc.gnu.org>2016-10-11 21:12:52 +0300
commit4f100fd7dbccf6d55fc0821038b97f54ff97524f (patch)
tree2cb06a0014c552f6834280a5627431cb6c2877ca
parenta32fc2165b93b4ff31fb35d17afd6701de35721e (diff)
downloadgcc-4f100fd7dbccf6d55fc0821038b97f54ff97524f.zip
gcc-4f100fd7dbccf6d55fc0821038b97f54ff97524f.tar.gz
gcc-4f100fd7dbccf6d55fc0821038b97f54ff97524f.tar.bz2
ctrl_c.c: Do not use macro SA_RESTART for DJGPP.
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
-rw-r--r--gcc/ada/ChangeLog12
-rw-r--r--gcc/ada/ctrl_c.c4
-rw-r--r--gcc/ada/env.c2
-rw-r--r--gcc/ada/gsocket.h2
-rw-r--r--gcc/ada/init.c8
-rw-r--r--gcc/ada/sysdep.c35
-rw-r--r--gcc/ada/terminals.c2
7 files changed, 58 insertions, 7 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 06a14d8..96da7bf 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -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.
diff --git a/gcc/ada/ctrl_c.c b/gcc/ada/ctrl_c.c
index 7f8d177..b1bd085 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 and DJGPP do not support SA_RESTART. */
act.sa_flags = 0;
#else
act.sa_flags = SA_RESTART;
diff --git a/gcc/ada/env.c b/gcc/ada/env.c
index 8469876..da6b7b0 100644
--- a/gcc/ada/env.c
+++ b/gcc/ada/env.c
@@ -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 */
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..5390209 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__
@@ -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;
diff --git a/gcc/ada/terminals.c b/gcc/ada/terminals.c
index 31f21f7..675ac35 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))