Makefile.rtl, [...]: Introduce a "STANDALONE" mode where C runtime files do not have...
authorArnaud Charlet <charlet@adacore.com>
Thu, 18 Jul 2019 16:37:40 +0000 (16:37 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Thu, 18 Jul 2019 16:37:40 +0000 (18:37 +0200)
* Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c,
cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c,
argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c,
seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C
runtime files do not have any dependency on GCC include files.
Remove unnecessary includes.
Remove remaining references to VMS in runtime C file.
* runtime.h: new File.

From-SVN: r273576

24 files changed:
gcc/ada/ChangeLog
gcc/ada/Makefile.rtl
gcc/ada/adadecode.c
gcc/ada/adaint.c
gcc/ada/adaint.h
gcc/ada/argv.c
gcc/ada/aux-io.c
gcc/ada/cio.c
gcc/ada/cstreams.c
gcc/ada/ctrl_c.c
gcc/ada/env.c
gcc/ada/exit.c
gcc/ada/expect.c
gcc/ada/init.c
gcc/ada/initialize.c
gcc/ada/mkdir.c
gcc/ada/raise-gcc.c
gcc/ada/raise.c
gcc/ada/rtinit.c
gcc/ada/runtime.h [new file with mode: 0644]
gcc/ada/seh_init.c
gcc/ada/sysdep.c
gcc/ada/targext.c
gcc/ada/tracebak.c

index efd9d2fb37134e7e47c94f85855f640317316322..ff3582f6837808f05f1cd844a04aaa816b3180cd 100644 (file)
@@ -1,3 +1,14 @@
+2019-07-18  Arnaud Charlet  <charlet@adacore.com>
+
+       * Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c,
+       cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c,
+       argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c,
+       seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C
+       runtime files do not have any dependency on GCC include files.
+       Remove unnecessary includes.
+       Remove remaining references to VMS in runtime C file.
+       * runtime.h: new File.
+
 2019-07-13  Andreas Schwab  <schwab@linux-m68k.org>
 
        * Makefile.rtl: Use g-sercom__linux.adb for all linuxes.
index daee19a4ba56971f4f0f613d8c39466f2332acd1..6528df8114cc7c7eddd1a8eaab5467163d09fb1e 100644 (file)
@@ -2610,7 +2610,7 @@ LIBGNAT_OBJS = adadecode.o adaint.o argv.o aux-io.o                       \
 
 LIBGNAT_SRCS = $(patsubst %.o,%.c,$(LIBGNAT_OBJS))                     \
   adadecode.h adaint.h env.h gsocket.h raise.h standard.ads.h          \
-  tb-gcc.c libgnarl/thread.c $(EXTRA_LIBGNAT_SRCS)
+  tb-gcc.c runtime.h libgnarl/thread.c $(EXTRA_LIBGNAT_SRCS)
 
 # memtrack.o is special as not put into libgnat.
 GNATRTL_OBJS = $(GNATRTL_NONTASKING_OBJS) $(GNATRTL_TASKING_OBJS) \
index a574f3cf4a6cc358ad797856a6818d2b1e9007e5..f87d421224f22c378bbb7b7397cb0bbda41f659f 100644 (file)
  *                                                                          *
  ****************************************************************************/
 
-
-#if defined(IN_RTS)
-#include "tconfig.h"
-#include "tsystem.h"
-#elif defined(IN_GCC)
-#include "config.h"
-#include "system.h"
-#endif
-
+#include "runtime.h"
 #include <string.h>
 #include <stdio.h>
 #include <ctype.h>
index 4a75b590911340606e983429e22d6484ed806576..fe8d9552d9bd8b9857315831df954dbbc18395ea 100644 (file)
 #endif
 
 #ifdef IN_RTS
+
+#ifdef STANDALONE
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* for CPU_SET/CPU_ZERO */
+#define _GNU_SOURCE
+#define __USE_GNU
+
+#include "runtime.h"
+
+#else
 #include "tconfig.h"
 #include "tsystem.h"
+#endif
+
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <time.h>
index 2ae87669918e45010ac8bc1955055be7a598a31d..311e240dfcce4ed86b5e42032b045ad71937fc59 100644 (file)
@@ -51,7 +51,7 @@ extern "C" {
    determine at compile time what support the system offers for large files.
    For now we just list the platforms we have manually tested. */
 
-#if defined (__GLIBC__) || defined (__sun__) || defined (__QNX__)
+#if (defined (__GLIBC__) && !defined(STANDALONE)) || defined (__sun__) || defined (__QNX__)
 #define GNAT_FOPEN fopen64
 #define GNAT_OPEN open64
 #define GNAT_STAT stat64
index 3249c32cf31402ace2f888bbe853fffb6f0c4de0..ca82ed596e9d59dfa74e3d9880789af0ef548614 100644 (file)
@@ -43,9 +43,8 @@
    Ada.Command_Line.Environment package.  */
 
 #ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
-#include <sys/stat.h>
+#include "runtime.h"
+#include <string.h>
 #else
 #include "config.h"
 #include "system.h"
index b55a6f984aa32307f3efa4081dba84785b6d7a06..e022b65770c562eba5d7e45a409d6c89b3e7e149 100644 (file)
 
 #include <stdio.h>
 
-#ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
-#else
+#ifndef IN_RTS
 #include "config.h"
 #include "system.h"
 #endif
index dd91a3e1d6943fabdddabd76ce3ec3f17c077627..7fca41285c0d9afe1b07db746435c3b05a322220 100644 (file)
@@ -30,8 +30,7 @@
  ****************************************************************************/
 
 #ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
+#include "runtime.h"
 #include <sys/stat.h>
 #else
 #include "config.h"
index e37070ddb78edfb524e42d0ac853ff0708ce90c7..92392fcbd1c50354e5deb3295ed4f5358ee36a32 100644 (file)
@@ -53,9 +53,7 @@
 #endif
 
 #ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
-#include <sys/stat.h>
+#include <string.h>
 #else
 #include "config.h"
 #include "system.h"
index 546faa708812c7d18b7b9a434049d71dc9a4fd1b..0e427ea5d2688cf38c6c1a88237aab4126bfb473 100644 (file)
  *                                                                          *
  ****************************************************************************/
 
-#ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
-#include <sys/stat.h>
-#else
+#ifndef IN_RTS
 #include "config.h"
 #include "system.h"
 #endif
index 04e861e19e9d26d550a08469450fd477cf40e85e..698b17708e132767c436ee992887117571073fb5 100644 (file)
  ****************************************************************************/
 
 #ifdef IN_RTS
-# include "tconfig.h"
-# include "tsystem.h"
+# include "runtime.h"
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
 
-# include <sys/stat.h>
-# include <fcntl.h>
-# include <time.h>
-# ifdef VMS
-#  include <unixio.h>
-# endif
 /* We don't have libiberty, so use malloc.  */
 # define xmalloc(S) malloc (S)
 #else /* IN_RTS */
@@ -109,89 +105,10 @@ __gnat_getenv (char *name, int *len, char **value)
   return;
 }
 
-/* VMS specific declarations for set_env_value.  */
-
-#ifdef VMS
-
-typedef struct _ile3
-{
-  unsigned short len, code;
-  __char_ptr32 adr;
-  __char_ptr32 retlen_adr;
-} ile_s;
-
-#endif
-
 void
 __gnat_setenv (char *name, char *value)
 {
-#if defined (VMS)
-  struct dsc$descriptor_s name_desc;
-  $DESCRIPTOR (table_desc, "LNM$PROCESS");
-  char *host_pathspec = value;
-  char *copy_pathspec;
-  int num_dirs_in_pathspec = 1;
-  char *ptr;
-  long status;
-
-  name_desc.dsc$w_length = strlen (name);
-  name_desc.dsc$b_dtype = DSC$K_DTYPE_T;
-  name_desc.dsc$b_class = DSC$K_CLASS_S;
-  name_desc.dsc$a_pointer = name; /* ??? Danger, not 64bit safe.  */
-
-  if (*host_pathspec == 0)
-    /* deassign */
-    {
-      status = LIB$DELETE_LOGICAL (&name_desc, &table_desc);
-      /* no need to check status; if the logical name is not
-         defined, that's fine. */
-      return;
-    }
-
-  ptr = host_pathspec;
-  while (*ptr++)
-    if (*ptr == ',')
-      num_dirs_in_pathspec++;
-
-  {
-    int i, status;
-    /* Alloca is guaranteed to be 32bit.  */
-    ile_s *ile_array = alloca (sizeof (ile_s) * (num_dirs_in_pathspec + 1));
-    char *copy_pathspec = alloca (strlen (host_pathspec) + 1);
-    char *curr, *next;
-
-    strcpy (copy_pathspec, host_pathspec);
-    curr = copy_pathspec;
-    for (i = 0; i < num_dirs_in_pathspec; i++)
-      {
-       next = strchr (curr, ',');
-       if (next == 0)
-         next = strchr (curr, 0);
-
-       *next = 0;
-       ile_array[i].len = strlen (curr);
-
-       /* Code 2 from lnmdef.h means it's a string.  */
-       ile_array[i].code = 2;
-       ile_array[i].adr = curr;
-
-       /* retlen_adr is ignored.  */
-       ile_array[i].retlen_adr = 0;
-       curr = next + 1;
-      }
-
-    /* Terminating item must be zero.  */
-    ile_array[i].len = 0;
-    ile_array[i].code = 0;
-    ile_array[i].adr = 0;
-    ile_array[i].retlen_adr = 0;
-
-    status = LIB$SET_LOGICAL (&name_desc, 0, &table_desc, 0, ile_array);
-    if ((status & 1) != 1)
-      LIB$SIGNAL (status);
-  }
-
-#elif (defined (__vxworks) && defined (__RTP__)) || defined (__APPLE__)
+#if (defined (__vxworks) && defined (__RTP__)) || defined (__APPLE__)
   setenv (name, value, 1);
 
 #else
@@ -213,10 +130,7 @@ __gnat_setenv (char *name, char *value)
 char **
 __gnat_environ (void)
 {
-#if defined (VMS) || defined (RTX)
-  /* Not implemented */
-  return NULL;
-#elif defined (__MINGW32__)
+#if defined (__MINGW32__)
   return _environ;
 #elif defined (__sun__)
   extern char **_environ;
@@ -247,10 +161,7 @@ __gnat_environ (void)
 
 void __gnat_unsetenv (char *name)
 {
-#if defined (VMS)
-  /* Not implemented */
-  return;
-#elif defined (__hpux__) || defined (__sun__) \
+#if defined (__hpux__) || defined (__sun__) \
      || (defined (__vxworks) && ! defined (__RTP__)) \
      || defined (_AIX) || defined (__Lynx__)
 
@@ -306,10 +217,7 @@ void __gnat_unsetenv (char *name)
 
 void __gnat_clearenv (void)
 {
-#if defined (VMS)
-  /* not implemented */
-  return;
-#elif defined (__sun__) \
+#if defined (__sun__) \
   || (defined (__vxworks) && ! defined (__RTP__)) || defined (__Lynx__) \
   || defined (__PikeOS__)
   /* On Solaris, VxWorks (not RTPs), and Lynx there is no system
index 3ac35968946c55f3e9e72346ca5fd4c137f83ff0..3f6ef210e2fd2b95872278586d0ce36d2eb270cc 100644 (file)
  *                                                                          *
  ****************************************************************************/
 
-#ifdef __alpha_vxworks
-#include "vxWorks.h"
-#endif
-
-#ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
-#include <sys/stat.h>
-#else
-#include "config.h"
-#include "system.h"
-#endif
-
-#include "adaint.h"
-
 #ifdef __cplusplus
 extern "C" {
 #endif
index 76fce788fc91e39bf4ccd9adcbda5ef9e99d4973..349af3f789df64293050dc8660e0414abe9b69d0 100644 (file)
  *                                                                          *
  ****************************************************************************/
 
-#ifdef __alpha_vxworks
-#include "vxWorks.h"
-#endif
-
 #ifdef IN_RTS
 #define POSIX
-#include "tconfig.h"
-#include "tsystem.h"
+#include "runtime.h"
+#include <unistd.h>
+
 #else
 #include "config.h"
 #include "system.h"
index 300a7e1c1ddf382bcb94279e885944a4ca59fc9a..f7e830e9259bd20d2cbdef7e35552bfa5e25a749 100644 (file)
 #endif
 
 #ifdef IN_RTS
+
+#ifdef STANDALONE
+#include "runtime.h"
+#else
 #include "tconfig.h"
 #include "tsystem.h"
+#endif
+
 #include <sys/stat.h>
 
 /* We don't have libiberty, so use malloc.  */
@@ -463,6 +469,7 @@ void fake_linux_sigemptyset (sigset_t *set)
 void
 __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext)
 {
+#ifndef STANDALONE
   mcontext_t *mcontext = &((ucontext_t *) ucontext)->uc_mcontext;
 
   /* On the i386 and x86-64 architectures, stack checking is performed by
@@ -513,6 +520,7 @@ __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext)
     mcontext->arm_pc+=1;
 #endif
 #endif
+#endif
 }
 
 #endif
index ab6d81d651ea3b009e3dd34cee6b5405fc051f0c..0e52feb1340f8cdf40ee40f369655dc08195367e 100644 (file)
@@ -41,8 +41,7 @@
 #endif
 
 #ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
+#include "runtime.h"
 /* We don't have libiberty, so use malloc.  */
 #define xmalloc(S) malloc (S)
 #define xrealloc(V,S) realloc (V,S)
index d06147673f698361232cc781d609595d76da03b1..e0efccec36f7d602e0a3945e9f21caf7659b8973 100644 (file)
@@ -35,8 +35,7 @@
 #endif /* __vxworks */
 
 #ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
+#include "runtime.h"
 #include <sys/stat.h>
 #else
 #include "config.h"
index 6092a87b881b4b36d5542ad003f41134d6aaad81..c15547dbc95ad2db1fbd6efb0a2a251870ade025 100644 (file)
   /* Don't use fancy_abort.  */
 # undef abort
 #else
-# ifndef CERT
+# if !defined(CERT) && !defined(STANDALONE)
 #  include "tconfig.h"
 #  include "tsystem.h"
 # else
-#  define ATTRIBUTE_UNUSED __attribute__((unused))
+#  include "runtime.h"
 #  define HAVE_GETIPINFO 1
 # endif
 #endif
@@ -115,6 +115,10 @@ extern void __gnat_unhandled_except_handler (_Unwind_Exception *);
 /* Called in case of error during propagation.  */
 extern void __gnat_raise_abort (void) __attribute__ ((noreturn));
 #define abort() __gnat_raise_abort()
+
+#elif defined(STANDALONE)
+#include <stdlib.h>
+#define inhibit_libc
 #endif
 
 #include "unwind-pe.h"
index 480a0eabca535d19c1aa08188a3ed772615a6c33..bf8a8797afc7083ae39f03f61695e713db45f80f 100644 (file)
@@ -33,8 +33,7 @@
    is shared between all exception handling mechanisms.  */
 
 #ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
+#include "runtime.h"
 #else
 #include "config.h"
 #include "system.h"
@@ -56,16 +55,6 @@ extern "C" {
 void
 __gnat_unhandled_terminate (void)
 {
-#ifdef VMS
-  /* Special termination handling for VMS */
-  long prvhnd;
-
-  /* Remove the exception vector so it won't intercept any errors
-     in the call to exit, and go into and endless loop */
-
-  SYS$SETEXV (1, 0, 3, &prvhnd);
-#endif
-
   /* Default termination handling */
   __gnat_os_exit (1);
 }
index 1df98f81cf288d4d6c0e4e208708d7791efe775e..5c9c5ecc80e5d6f73836f22720b4f0f5b982c264 100644 (file)
@@ -41,8 +41,6 @@
 #endif
 
 #ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
 /* We don't have libiberty, so use malloc.  */
 #define xmalloc(S) malloc (S)
 #define xrealloc(V,S) realloc (V,S)
diff --git a/gcc/ada/runtime.h b/gcc/ada/runtime.h
new file mode 100644 (file)
index 0000000..df42730
--- /dev/null
@@ -0,0 +1,44 @@
+/****************************************************************************
+ *                                                                          *
+ *                         GNAT COMPILER COMPONENTS                         *
+ *                                                                          *
+ *                                 RUNTIME                                  *
+ *                                                                          *
+ *                              C Header File                               *
+ *                                                                          *
+ *          Copyright (C) 2019, 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/>.                                          *
+ *                                                                          *
+ * GNAT was originally developed  by the GNAT team at  New York University. *
+ * Extensive contributions were provided by Ada Core Technologies Inc.      *
+ *                                                                          *
+ ****************************************************************************/
+
+/* This file provides common definitions used by GNAT C runtime files.  */
+
+#ifdef __vxworks
+#include "vxWorks.h"
+#endif /* __vxworks */
+
+#ifndef ATTRIBUTE_UNUSED
+#define ATTRIBUTE_UNUSED __attribute__((unused))
+#endif
+
+#ifndef ATTRIBUTE_NORETURN
+#define ATTRIBUTE_NORETURN __attribute__((noreturn))
+#endif
index fa9a69346f60025855e5a99d2657394710742304..2926605caa9850b3716f97ddd96202b5fd5cc5b0 100644 (file)
@@ -39,8 +39,8 @@
 #endif
 
 #ifdef IN_RTS
-#include "tconfig.h"
-#include "tsystem.h"
+
+#include "runtime.h"
 
 /* We don't have libiberty, so use malloc.  */
 #define xmalloc(S) malloc (S)
index 66c29d3718a6003dcd33d6a76e5d34e2bdd1b667..1e1f5eeb5e6e0af489fcb5fe2d43f64b5d10f614 100644 (file)
 
 #ifdef IN_RTS
 #define POSIX
-#include "tconfig.h"
-#include "tsystem.h"
+#include "runtime.h"
+#include <string.h>
+#include <unistd.h>
+
 #include <fcntl.h>
 #include <sys/stat.h>
 #else
index 39d75d16e9469c7307d6d53b2e7058f8a4aad5fc..d761b2a5a56636be9bd4dd223dda0d05c417c86e 100644 (file)
     the file must be compiled with IN_GCC defined, even for the library.  */
 
 #ifdef IN_RTS
+
+#ifndef STANDALONE
 #include "tconfig.h"
 #include "tsystem.h"
+#endif
+
 #else
 #include "config.h"
 #include "system.h"
 #endif
+
+#ifndef STANDALONE
 #include "coretypes.h"
 #include "tm.h"
+#endif
 
 #ifndef TARGET_OBJECT_SUFFIX
 #define TARGET_OBJECT_SUFFIX ".o"
index a43dc4dc4611b848a6739acb2063dfca01acb747..9e74282e11fd359400e6c6a74686118e10da2761 100644 (file)
 extern "C" {
 #endif
 
-#ifdef __alpha_vxworks
-#include "vxWorks.h"
-#endif
-
 #ifdef IN_RTS
 #define POSIX
-#include "tconfig.h"
-#include "tsystem.h"
+#include "runtime.h"
+#include <stddef.h>
 #else
 #include "config.h"
 #include "system.h"