vms-cc.c: Deleted.
authorDouglas B Rupp <rupp@gnat.com>
Thu, 30 Jul 2009 00:15:35 +0000 (00:15 +0000)
committerDouglas Rupp <rupp@gcc.gnu.org>
Thu, 30 Jul 2009 00:15:35 +0000 (00:15 +0000)
* config/alpha/vms-cc.c: Deleted.
* config/alpha/vms-ld.c: Deleted.
* config/alpha/t-vms64: Moved to config/vms
* config/alpha/vms-crt0-64.c: Moved to config/vms
* config/alpha/vms-crt0.c: Moved to config/vms
* config/alpha/vms-psxcrt0-64.c: Moved to config/vms
* config/alpha/vms-psxcrt0.c: Moved to config/vms
* config/alpha/xm-vms.h: Moved to config/vms
* config/alpha/x-vms: Moved to config/vms
* config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
config/vms/t-vms.
* config/vms/t-vms: Moved here from config/alpha. Alpha specific
parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
(version): Set.
* config/vms/t-vms64: Moved here from config/alpha
* config/vms/vms-crt0-64.c: Moved here from config/alpha.
(argc,argv,envp): Enforce 32bit malloc'ing.
* config/vms/vms-psxcrt0-64.c: Likewise.
* config/vms/vms-crt0.c: Moved here from config/alpha.
* config/vms/vms-psxcrt0.c: Likewise.
* config/vms/vms-crtl-64.h: New file.
* config/vms/vms-crtl.h: New file.
* config/vms/vms.opt: New file.
* config/vms/xm-vms64.h: New file.
* config/vms/xm-vms.h: Moved here from config/alpha.
(STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
Set.
* config/vms/x-vms: Moved here from config/alpha.
(version, VMS_EXTRA_PARTS): Moved to t-vms.
(vms-ld.o, vms-cc.o): Removed.
(LN, LN_S, USE_COLLECT2, POD2MAN): Set.

From-SVN: r150230

18 files changed:
gcc/ChangeLog
gcc/config/alpha/t-vms
gcc/config/alpha/t-vms64 [deleted file]
gcc/config/alpha/vms-cc.c [deleted file]
gcc/config/alpha/vms-crt0.c [deleted file]
gcc/config/alpha/vms-ld.c [deleted file]
gcc/config/vms/t-vms [moved from gcc/config/alpha/x-vms with 51% similarity]
gcc/config/vms/t-vms64 [new file with mode: 0644]
gcc/config/vms/vms-crt0-64.c [moved from gcc/config/alpha/vms-crt0-64.c with 50% similarity]
gcc/config/vms/vms-crt0.c [new file with mode: 0644]
gcc/config/vms/vms-crtl-64.h [new file with mode: 0644]
gcc/config/vms/vms-crtl.h [new file with mode: 0644]
gcc/config/vms/vms-psxcrt0-64.c [moved from gcc/config/alpha/vms-psxcrt0-64.c with 60% similarity]
gcc/config/vms/vms-psxcrt0.c [moved from gcc/config/alpha/vms-psxcrt0.c with 63% similarity]
gcc/config/vms/vms.opt [new file with mode: 0644]
gcc/config/vms/x-vms [new file with mode: 0644]
gcc/config/vms/xm-vms.h [moved from gcc/config/alpha/xm-vms.h with 81% similarity]
gcc/config/vms/xm-vms64.h [new file with mode: 0644]

index 90db5bf..43e94c1 100644 (file)
@@ -1,5 +1,39 @@
 2009-07-29  Douglas B Rupp  <rupp@gnat.com>
 
+       * config/alpha/vms-cc.c: Deleted.
+       * config/alpha/vms-ld.c: Deleted.
+       * config/alpha/t-vms64: Moved to config/vms
+       * config/alpha/vms-crt0-64.c: Moved to config/vms
+       * config/alpha/vms-crt0.c: Moved to config/vms
+       * config/alpha/vms-psxcrt0-64.c: Moved to config/vms
+       * config/alpha/vms-psxcrt0.c: Moved to config/vms
+       * config/alpha/xm-vms.h: Moved to config/vms
+       * config/alpha/x-vms: Moved to config/vms
+       * config/alpha/t-vms (vcrt0.o, pcrt0.o): Move rules to new file
+       config/vms/t-vms.
+       * config/vms/t-vms: Moved here from config/alpha. Alpha specific
+       parts removed. (STMP_FIXPROTO, STMP_FIXINC, LIMITS_H_TEST): Set.
+       (version): Set.
+       * config/vms/t-vms64: Moved here from config/alpha
+       * config/vms/vms-crt0-64.c: Moved here from config/alpha.
+       (argc,argv,envp): Enforce 32bit malloc'ing.
+       * config/vms/vms-psxcrt0-64.c: Likewise.
+       * config/vms/vms-crt0.c: Moved here from config/alpha.
+       * config/vms/vms-psxcrt0.c: Likewise.
+       * config/vms/vms-crtl-64.h: New file.
+       * config/vms/vms-crtl.h: New file.
+       * config/vms/vms.opt: New file.
+       * config/vms/xm-vms64.h: New file.
+       * config/vms/xm-vms.h: Moved here from config/alpha.
+       (STANARD_EXEC_PREFIX, STANDARD_STARTFILE_PREFIX, STANDARD_INCLUDE_DIR):
+       Set.
+       * config/vms/x-vms: Moved here from config/alpha.
+       (version, VMS_EXTRA_PARTS): Moved to t-vms.
+       (vms-ld.o, vms-cc.o): Removed.
+       (LN, LN_S, USE_COLLECT2, POD2MAN): Set.
+
+2009-07-29  Douglas B Rupp  <rupp@gnat.com>
+
        * dwarf2out.c (add_name_and_src_coords_attributes): Push on the
        correct stack (obvious VMS fix).
 
index 5b81528..5e86f14 100644 (file)
@@ -1,5 +1,5 @@
 # Copyright (C) 1996, 1997, 1998, 2001, 2002,
-# 2007 Free Software Foundation, Inc.
+# 2007, 2009 Free Software Foundation, Inc.
 #
 # This file is part of GCC.
 #
@@ -32,13 +32,6 @@ $(T)vms-dwarf2.o : $(srcdir)/config/alpha/vms-dwarf2.asm
 $(T)vms-dwarf2eh.o : $(srcdir)/config/alpha/vms-dwarf2eh.asm
        gcc -c -x assembler $< -o $@
 
-# Assemble startup files.
-$(T)vcrt0.o: $(CRT0_S) $(GCC_PASSES)
-       decc -c /names=as_is $(srcdir)/config/alpha/vms-crt0.c -o $(T)vcrt0.o
-
-$(T)pcrt0.o: $(CRT0_S) $(GCC_PASSES)
-       decc -c /names=as_is $(srcdir)/config/alpha/vms-psxcrt0.c -o $(T)pcrt0.o
-
 MULTILIB_OPTIONS = mcpu=ev6
 MULTILIB_DIRNAMES = ev6
 LIBGCC = stmp-multilib
diff --git a/gcc/config/alpha/t-vms64 b/gcc/config/alpha/t-vms64
deleted file mode 100644 (file)
index 38503a9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-# Assemble startup files.
-$(T)vcrt0.o: $(CRT0_S) $(GCC_PASSES)
-       decc -c /names=as_is /pointer_size=64  \
-            $(srcdir)/config/alpha/vms-crt0-64.c -o $(T)vcrt0.o
-
-$(T)pcrt0.o: $(CRT0_S) $(GCC_PASSES)
-       decc -c /names=as_is /pointer_size=64 \
-            $(srcdir)/config/alpha/vms-psxcrt0-64.c -o $(T)pcrt0.o
diff --git a/gcc/config/alpha/vms-cc.c b/gcc/config/alpha/vms-cc.c
deleted file mode 100644 (file)
index 9ba2707..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-/* VMS DEC C wrapper.
-   Copyright (C) 2001, 2003, 2007 Free Software Foundation, Inc.
-   Contributed by Douglas B. Rupp (rupp@gnat.com).
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* This program is a wrapper around the VMS DEC C compiler.
-   It translates Unix style command line options into corresponding
-   VMS style qualifiers and then spawns the DEC C compiler.  */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-
-#undef PATH_SEPARATOR
-#undef PATH_SEPARATOR_STR
-#define PATH_SEPARATOR ','
-#define PATH_SEPARATOR_STR ","
-
-/* These can be set by command line arguments */
-static int verbose = 0;
-static int save_temps = 0;
-
-static int comp_arg_max = -1;
-static const char **comp_args = 0;
-static int comp_arg_index = -1;
-static char *objfilename = 0;
-
-static char *system_search_dirs = (char *) "";
-static char *search_dirs;
-
-static char *default_defines = (char *) "";
-static char *defines;
-
-/* Translate a Unix syntax directory specification into VMS syntax.
-   If indicators of VMS syntax found, return input string.  */
-static char *to_host_dir_spec (char *);
-
-/* Translate a Unix syntax file specification into VMS syntax.
-   If indicators of VMS syntax found, return input string.  */
-static char *to_host_file_spec (char *);
-
-/* Add a translated arg to the list to be passed to DEC CC.  */
-static void addarg (const char *);
-
-/* Preprocess the number of args in P_ARGC and contained in ARGV.
-   Look for special flags, etc. that must be handled first.  */
-static void preprocess_args (int *, char **);
-
-/* Process the number of args in P_ARGC and contained in ARGV. Look
-   for special flags, etc. that must be handled for the VMS compiler.  */
-static void process_args (int *, char **);
-
-/* Action routine called by decc$to_vms */
-static int translate_unix (char *, int);
-\f
-/* Add the argument contained in STR to the list of arguments to pass to the
-   compiler.  */
-
-static void
-addarg (const char *str)
-{
-  int i;
-
-  if (++comp_arg_index >= comp_arg_max)
-    {
-      const char **new_comp_args
-       = (const char **) xcalloc (comp_arg_max + 1000, sizeof (char *));
-
-      for (i = 0; i <= comp_arg_max; i++)
-       new_comp_args [i] = comp_args [i];
-
-      if (comp_args)
-       free (comp_args);
-
-      comp_arg_max += 1000;
-      comp_args = new_comp_args;
-    }
-
-  comp_args [comp_arg_index] = str;
-}
-
-static void
-preprocess_args (int *p_argc, char *argv[])
-{
-  int i;
-
-  for (i = 1; i < *p_argc; i++)
-    {
-      if (strcmp (argv[i], "-o") == 0)
-       {
-         char *buff, *ptr;
-
-         i++;
-         ptr = to_host_file_spec (argv[i]);
-         objfilename = xstrdup (ptr);
-         buff = concat ("/obj=", ptr, NULL);
-         addarg (buff);
-       }
-    }
-}
-
-static void
-process_args (int *p_argc, char *argv[])
-{
-  int i;
-
-  for (i = 1; i < *p_argc; i++)
-    {
-      if (strlen (argv[i]) < 2)
-       continue;
-
-      if (strncmp (argv[i], "-I", 2) == 0)
-       {
-         char *ptr;
-         int new_len, search_dirs_len;
-
-         ptr = to_host_dir_spec (&argv[i][2]);
-         new_len = strlen (ptr);
-         search_dirs_len = strlen (search_dirs);
-
-         search_dirs = xrealloc (search_dirs, search_dirs_len + new_len + 2);
-         if (search_dirs_len > 0)
-           strcat (search_dirs, PATH_SEPARATOR_STR);
-         strcat (search_dirs, ptr);
-       }
-      else if (strncmp (argv[i], "-D", 2) == 0)
-       {
-         char *ptr;
-         int new_len, defines_len;
-
-         ptr = &argv[i][2];
-         new_len = strlen (ptr);
-         defines_len = strlen (defines);
-
-         defines = xrealloc (defines, defines_len + new_len + 4);
-         if (defines_len > 0)
-           strcat (defines, ",");
-
-         strcat (defines, "\"");
-         strcat (defines, ptr);
-         strcat (defines, "\"");
-       }
-      else if (strcmp (argv[i], "-v") == 0)
-       verbose = 1;
-      else if (strcmp (argv[i], "-g0") == 0)
-       addarg ("/nodebug");
-      else if (strcmp (argv[i], "-O0") == 0)
-       addarg ("/noopt");
-      else if (strncmp (argv[i], "-g", 2) == 0)
-       addarg ("/debug");
-      else if (strcmp (argv[i], "-E") == 0)
-       addarg ("/preprocess");
-      else if (strcmp (argv[i], "-save-temps") == 0)
-       save_temps = 1;
-    }
-}
-
-/* The main program.  Spawn the VMS DEC C compiler after fixing up the
-   Unix-like flags and args to be what VMS DEC C wants.  */
-
-typedef struct dsc {unsigned short len, mbz; char *adr; } Descr;
-
-int
-main (int argc, char **argv)
-{
-  int i;
-  char cwdev [128], *devptr;
-  int devlen;
-  char *cwd = getcwd (0, 1024);
-
-  devptr = strchr (cwd, ':');
-  devlen = (devptr - cwd) + 1;
-  strncpy (cwdev, cwd, devlen);
-  cwdev [devlen] = '\0';
-
-  search_dirs = xstrdup (system_search_dirs);
-  defines = xstrdup (default_defines);
-
-  addarg ("cc");
-  preprocess_args (&argc , argv);
-  process_args (&argc , argv);
-
-  if (strlen (search_dirs) > 0)
-    {
-      addarg ("/include=(");
-      addarg (search_dirs);
-      addarg (")");
-    }
-
-  if (strlen (defines) > 0)
-    {
-      addarg ("/define=(");
-      addarg (defines);
-      addarg (")");
-    }
-
-  for (i = 1; i < argc; i++)
-    {
-      int arg_len = strlen (argv[i]);
-
-      if (strcmp (argv[i], "-o") == 0)
-       i++;
-      else if (strcmp (argv[i], "-v" ) == 0
-              || strcmp (argv[i], "-E") == 0
-              || strcmp (argv[i], "-c") == 0
-              || strncmp (argv[i], "-g", 2 ) == 0
-              || strncmp (argv[i], "-O", 2 ) == 0
-              || strcmp (argv[i], "-save-temps") == 0
-              || (arg_len > 2 && strncmp (argv[i], "-I", 2) == 0)
-              || (arg_len > 2 && strncmp (argv[i], "-D", 2) == 0))
-       ;
-
-      /* Unix style file specs and VMS style switches look alike, so assume
-        an arg consisting of one and only one slash, and that being first, is
-        really a switch.  */
-      else if ((argv[i][0] == '/') && (strchr (&argv[i][1], '/') == 0))
-       addarg (argv[i]);
-      else
-       {
-         /* Assume filename arg */
-         char buff [256], *ptr;
-
-         ptr = to_host_file_spec (argv[i]);
-         arg_len = strlen (ptr);
-
-         if (ptr[0] == '[')
-           sprintf (buff, "%s%s", cwdev, ptr);
-         else if (strchr (ptr, ':'))
-           sprintf (buff, "%s", ptr);
-         else
-           sprintf (buff, "%s%s", cwd, ptr);
-
-         ptr = xstrdup (buff);
-         addarg (ptr);
-       }
-    }
-
-  addarg (NULL);
-
-  if (verbose)
-    {
-      int i;
-
-      for (i = 0; i < comp_arg_index; i++)
-       printf ("%s ", comp_args [i]);
-
-      putchar ('\n');
-    }
-
-  {
-    int i;
-    int len = 0;
-
-    for (i = 0; comp_args[i]; i++)
-      len = len + strlen (comp_args[i]) + 1;
-
-    {
-      char *allargs = (char *) alloca (len + 1);
-      Descr cmd;
-      int status;
-      int status1 = 1;
-
-      for (i = 0; i < len + 1; i++)
-       allargs [i] = 0;
-
-      for (i = 0; comp_args [i]; i++)
-       {
-         strcat (allargs, comp_args [i]);
-         strcat (allargs, " ");
-       }
-
-      cmd.adr = allargs;
-      cmd.len = len;
-      cmd.mbz = 0;
-
-      i = LIB$SPAWN (&cmd, 0, 0, 0, 0, 0, &status);
-
-      if ((i & 1) != 1)
-       {
-         LIB$SIGNAL (i);
-         exit (1);
-       }
-
-      if ((status & 1) == 1 && (status1 & 1) == 1)
-       exit (0);
-
-      exit (1);
-    }
-  }
-}
-
-static char new_host_filespec [255];
-static char new_host_dirspec [255];
-static char filename_buff [256];
-
-static int
-translate_unix (char *name, int type ATTRIBUTE_UNUSED)
-{
-  strcpy (filename_buff, name);
-  return 0;
-}
-
-static char *
-to_host_dir_spec (char *dirspec)
-{
-  int len = strlen (dirspec);
-
-  strcpy (new_host_dirspec, dirspec);
-
-  if (strchr (new_host_dirspec, ']') || strchr (new_host_dirspec, ':'))
-    return new_host_dirspec;
-
-  while (len > 1 && new_host_dirspec [len-1] == '/')
-    {
-      new_host_dirspec [len-1] = 0;
-      len--;
-    }
-
-  decc$to_vms (new_host_dirspec, translate_unix, 1, 2);
-  strcpy (new_host_dirspec, filename_buff);
-
-  return new_host_dirspec;
-
-}
-
-static char *
-to_host_file_spec (char *filespec)
-{
-  strcpy (new_host_filespec, "");
-  if (strchr (filespec, ']') || strchr (filespec, ':'))
-    strcpy (new_host_filespec, filespec);
-  else
-    {
-      decc$to_vms (filespec, translate_unix, 1, 1);
-      strcpy (new_host_filespec, filename_buff);
-    }
-
-  return new_host_filespec;
-}
diff --git a/gcc/config/alpha/vms-crt0.c b/gcc/config/alpha/vms-crt0.c
deleted file mode 100644 (file)
index affe0e8..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/* VMS crt0 returning VMS style condition codes .
-   Copyright (C) 2001, 2009 Free Software Foundation, Inc.
-   Contributed by Douglas B. Rupp (rupp@gnat.com).
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-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/>.  */
-
-#if !defined(__DECC)
-You Lose! This file can only be compiled with DEC C.
-#else
-
-/* This file can only be compiled with DEC C, due to the call to
-   lib$establish.  */
-
-#include <stdlib.h>
-#include <string.h>
-#include <ssdef.h>
-
-extern void decc$main ();
-
-extern int main ();
-
-static int
-handler (sigargs, mechargs)
-     void *sigargs;
-     void *mechargs;
-{
-  return SS$_RESIGNAL;
-}
-
-int
-__main (arg1, arg2, arg3, image_file_desc, arg5, arg6)
-     void *arg1, *arg2, *arg3;
-     void *image_file_desc;
-     void *arg5, *arg6;
-{
-  int argc;
-  char **argv;
-  char **envp;
-
-  lib$establish (handler);
-
-  decc$main(arg1, arg2, arg3, image_file_desc, arg5, arg6,
-           &argc, &argv, &envp);
-
-  return main (argc, argv, envp);
-}
-#endif
diff --git a/gcc/config/alpha/vms-ld.c b/gcc/config/alpha/vms-ld.c
deleted file mode 100644 (file)
index d3b4af2..0000000
+++ /dev/null
@@ -1,763 +0,0 @@
-/* VMS linker wrapper.
-   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2007
-   Free Software Foundation, Inc.
-   Contributed by Douglas B. Rupp (rupp@gnat.com).
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3.  If not see
-<http://www.gnu.org/licenses/>.  */
-
-/* This program is a wrapper around the VMS linker.
-   It translates Unix style command line options into corresponding
-   VMS style qualifiers and then spawns the VMS linker.  */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-
-typedef struct dsc {unsigned short len, mbz; char *adr; } Descr;
-
-#undef PATH_SEPARATOR
-#undef PATH_SEPARATOR_STR
-#define PATH_SEPARATOR ','
-#define PATH_SEPARATOR_STR ","
-
-/* Local variable declarations.  */
-
-/* File specification for vms-dwarf2.o.  */
-static char *vmsdwarf2spec = 0;
-
-/* File specification for vms-dwarf2eh.o.  */
-static char *vmsdwarf2ehspec = 0;
-
-/* verbose = 1 if -v passed.  */
-static int verbose = 0;
-
-/* save_temps = 1 if -save-temps passed.  */
-static int save_temps = 0;
-
-/* By default don't generate executable file if there are errors
-   in the link. Override with --noinhibit-exec.  */
-static int inhibit_exec = 1;
-
-/* debug = 1 if -g passed.  */
-static int debug = 0;
-
-/* By default prefer to link with shareable image libraries.
-   Override with -static.  */
-static int staticp = 0;
-
-/* By default generate an executable, not a shareable image library.
-   Override with -shared.  */
-static int share = 0;
-
-/* Remember if IDENTIFICATION given on command line.  */
-static int ident = 0;
-
-/* Keep track of arg translations.  */
-static int link_arg_max = -1;
-static const char **link_args = 0;
-static int link_arg_index = -1;
-
-/* Keep track of filenames */
-static char optfilefullname [267];
-static char *sharefilename = 0;
-static char *exefilename = 0;
-
-/* System search dir list. Leave blank since link handles this
-   internally.  */
-static char *system_search_dirs = "";
-
-/* Search dir list passed on command line (with -L).  */
-static char *search_dirs;
-
-/* Local function declarations.  */
-
-/* Add STR to the list of arguments to pass to the linker. Expand the list as
-   necessary to accommodate.  */
-static void addarg (const char *);
-
-/* Check to see if NAME is a regular file, i.e. not a directory */
-static int is_regular_file (char *);
-
-/* Translate a Unix syntax file specification FILESPEC into VMS syntax.
-   If indicators of VMS syntax found, return input string.  */
-static char *to_host_file_spec (char *);
-
-/* Locate the library named LIB_NAME in the set of paths PATH_VAL.  */
-static char *locate_lib (char *, char *);
-
-/* Given a library name NAME, i.e. foo,  Look for libfoo.lib and then
-   libfoo.a in the set of directories we are allowed to search in.  */
-static const char *expand_lib (char *);
-
-/* Preprocess the number of args P_ARGC in ARGV.
-   Look for special flags, etc. that must be handled first.  */
-static void preprocess_args (int *, char **);
-
-/* Preprocess the number of args P_ARGC in ARGV.  Look for
-   special flags, etc. that must be handled for the VMS linker.  */
-static void process_args (int *, char **);
-
-/* Action routine called by decc$to_vms. NAME is a file name or
-   directory name. TYPE is unused.  */
-static int translate_unix (char *, int);
-
-int main (int, char **);
-\f
-static void
-addarg (const char *str)
-{
-  int i;
-
-  if (++link_arg_index >= link_arg_max)
-    {
-      const char **new_link_args
-       = (const char **) xcalloc (link_arg_max + 1000, sizeof (char *));
-
-      for (i = 0; i <= link_arg_max; i++)
-       new_link_args [i] = link_args [i];
-
-      if (link_args)
-       free (link_args);
-
-      link_arg_max += 1000;
-      link_args = new_link_args;
-    }
-
-  link_args [link_arg_index] = str;
-}
-
-static char *
-locate_lib (char *lib_name, char *path_val)
-{
-  int lib_len = strlen (lib_name);
-  char *eptr, *sptr;
-
-  for (sptr = path_val; *sptr; sptr = eptr)
-    {
-      char *buf, *ptr;
-
-      while (*sptr == PATH_SEPARATOR)
-       sptr ++;
-
-      eptr = strchr (sptr, PATH_SEPARATOR);
-      if (eptr == 0)
-       eptr = strchr (sptr, 0);
-
-      buf = alloca ((eptr-sptr) + lib_len + 4 + 2);
-      strncpy (buf, sptr, eptr-sptr);
-      buf [eptr-sptr] = 0;
-      strcat (buf, "/");
-      strcat (buf, lib_name);
-      ptr = strchr (buf, 0);
-
-      if (debug || staticp)
-       {
-         /* For debug or static links, look for shareable image libraries
-            last.  */
-         strcpy (ptr, ".a");
-         if (is_regular_file (buf))
-           return xstrdup (to_host_file_spec (buf));
-
-         strcpy (ptr, ".olb");
-         if (is_regular_file (buf))
-           return xstrdup (to_host_file_spec (buf));
-
-         strcpy (ptr, ".exe");
-         if (is_regular_file (buf))
-           return xstrdup (to_host_file_spec (buf));
-       }
-      else
-       {
-         /* Otherwise look for shareable image libraries first.  */
-         strcpy (ptr, ".exe");
-         if (is_regular_file (buf))
-           return xstrdup (to_host_file_spec (buf));
-
-         strcpy (ptr, ".a");
-         if (is_regular_file (buf))
-           return xstrdup (to_host_file_spec (buf));
-
-         strcpy (ptr, ".olb");
-         if (is_regular_file (buf))
-           return xstrdup (to_host_file_spec (buf));
-       }
-    }
-
-  return 0;
-}
-
-static const char *
-expand_lib (char *name)
-{
-  char *lib, *lib_path;
-
-  if (strcmp (name, "c") == 0)
-    /* IEEE VAX C compatible library for non-prefixed (e.g. no DECC$)
-       C RTL functions.  */
-    return "sys$library:vaxcrtltx.olb";
-
-  else if (strcmp (name, "m") == 0)
-    /* No separate library for math functions */
-    return "";
-
-  else
-    {
-      lib = xmalloc (strlen (name) + 14);
-
-      strcpy (lib, "lib");
-      strcat (lib, name);
-      lib_path = locate_lib (lib, search_dirs);
-
-      if (lib_path)
-       return lib_path;
-    }
-
-  fprintf (stderr,
-          "Couldn't locate library: lib%s.exe, lib%s.a or lib%s.olb\n",
-          name, name, name);
-
-  exit (1);
-}
-
-static int
-is_regular_file (char *name)
-{
-  int ret;
-  struct stat statbuf;
-
-  ret = stat (name, &statbuf);
-  return !ret && S_ISREG (statbuf.st_mode);
-}
-
-static void
-preprocess_args (int *p_argc, char **argv)
-{
-  int i;
-
-  for (i = 1; i < *p_argc; i++)
-    if (strlen (argv[i]) >= 6 && strncmp (argv[i], "-shared", 7) == 0)
-      share = 1;
-
-  for (i = 1; i < *p_argc; i++)
-    if (strcmp (argv[i], "-o") == 0)
-      {
-       char *buff, *ptr;
-       int out_len;
-       int len;
-
-       i++;
-       ptr = to_host_file_spec (argv[i]);
-       exefilename = xstrdup (ptr);
-       out_len = strlen (ptr);
-       buff = xmalloc (out_len + 18);
-
-       if (share)
-         strcpy (buff, "/share=");
-       else
-         strcpy (buff, "/exe=");
-
-       strcat (buff, ptr);
-       addarg (buff);
-
-       if (share)
-         {
-           sharefilename = xmalloc (out_len+5);
-           if (ptr == strchr (argv[i], ']'))
-             strcpy (sharefilename, ++ptr);
-           else if (ptr == strchr (argv[i], ':'))
-             strcpy (sharefilename, ++ptr);
-           else if (ptr == strrchr (argv[i], '/'))
-             strcpy (sharefilename, ++ptr);
-           else
-             strcpy (sharefilename, argv[i]);
-
-           len = strlen (sharefilename);
-           if (strncasecmp (&sharefilename[len-4], ".exe", 4) == 0)
-             sharefilename[len-4] = 0;
-
-           for (ptr = sharefilename; *ptr; ptr++)
-             *ptr = TOUPPER (*ptr);
-         }
-      }
-}
-
-static void
-process_args (int *p_argc, char **argv)
-{
-  int i;
-
-  for (i = 1; i < *p_argc; i++)
-    {
-      if (strlen (argv[i]) < 2)
-       continue;
-
-      if (strncmp (argv[i], "-L", 2) == 0)
-       {
-         char *nbuff, *ptr;
-         int new_len, search_dirs_len;
-
-         ptr = &argv[i][2];
-         new_len = strlen (ptr);
-         search_dirs_len = strlen (search_dirs);
-
-         nbuff = xmalloc (new_len + 1);
-         strcpy (nbuff, ptr);
-
-         /* Remove trailing slashes.  */
-         while (new_len > 1 && nbuff [new_len - 1] == '/')
-           {
-             nbuff [new_len - 1] = 0;
-             new_len--;
-           }
-
-         search_dirs = xrealloc (search_dirs, search_dirs_len + new_len + 2);
-         if (search_dirs_len > 0)
-           strcat (search_dirs, PATH_SEPARATOR_STR);
-
-         strcat (search_dirs, nbuff);
-         free (nbuff);
-       }
-
-      /* -v turns on verbose option here and is passed on to gcc.  */
-      else if (strcmp (argv[i], "-v") == 0)
-       verbose = 1;
-      else if (strcmp (argv[i], "-g0") == 0)
-       addarg ("/notraceback");
-      else if (strncmp (argv[i], "-g", 2) == 0)
-       {
-         addarg ("/debug");
-         debug = 1;
-       }
-      else if (strcmp (argv[i], "-static") == 0)
-       staticp = 1;
-      else if (strcmp (argv[i], "-map") == 0)
-       {
-         char *buff, *ptr;
-
-         buff = xmalloc (strlen (exefilename) + 5);
-         strcpy (buff, exefilename);
-         ptr = strchr (buff, '.');
-         if (ptr)
-           *ptr = 0;
-
-         strcat (buff, ".map");
-         addarg ("/map=");
-         addarg (buff);
-         addarg ("/full");
-       }
-      else if (strcmp (argv[i], "-save-temps") == 0)
-       save_temps = 1;
-      else if (strcmp (argv[i], "--noinhibit-exec") == 0)
-       inhibit_exec = 0;
-    }
-}
-
-/* The main program.  Spawn the VMS linker after fixing up the Unix-like flags
-   and args to be what the VMS linker wants.  */
-
-int
-main (int argc, char **argv)
-{
-  int i;
-  char cwdev [128], *devptr;
-  int devlen;
-  int optfd;
-  FILE *optfile;
-  char *cwd = getcwd (0, 1024);
-  char *optfilename;
-
-  devptr = strchr (cwd, ':');
-  devlen = (devptr - cwd) + 1;
-  strncpy (cwdev, cwd, devlen);
-  cwdev [devlen] = '\0';
-
-  search_dirs = xstrdup (system_search_dirs);
-
-  addarg ("link");
-
-  /* Pass to find args that have to be append first.  */
-  preprocess_args (&argc , argv);
-
-  /* Pass to find the rest of the args.  */
-  process_args (&argc , argv);
-
-  /* Create a temp file to hold args, otherwise we can easily exceed the VMS
-     command line length limits.  */
-  optfilename = alloca (strlen ("LDXXXXXX") + 1);
-  strcpy (optfilename, "LDXXXXXX");
-  optfd = mkstemp (optfilename);
-  getcwd (optfilefullname, 256, 1); /* VMS style cwd.  */
-  strcat (optfilefullname, optfilename);
-  strcat (optfilefullname, ".");
-  optfile = fdopen (optfd, "w");
-
-  /* Write out the IDENTIFICATION argument first so that it can be overridden
-     by an options file.  */
-  for (i = 1; i < argc; i++)
-    {
-      int arg_len = strlen (argv[i]);
-
-      if (arg_len > 6 && strncasecmp (argv[i], "IDENT=", 6) == 0)
-       {
-         /* Comes from command line. If present will always appear before
-            IDENTIFICATION=... and will override.  */
-
-         if (!ident)
-           ident = 1;
-       }
-      else if (arg_len > 15
-              && strncasecmp (argv[i], "IDENTIFICATION=", 15) == 0)
-       {
-         /* Comes from pragma Ident ().  */
-
-         if (!ident)
-           {
-             fprintf (optfile, "case_sensitive=yes\n");
-             fprintf (optfile, "IDENTIFICATION=\"%15.15s\"\n", &argv[i][15]);
-             fprintf (optfile, "case_sensitive=NO\n");
-             ident = 1;
-           }
-       }
-    }
-
-  for (i = 1; i < argc; i++)
-    {
-      int arg_len = strlen (argv[i]);
-
-      if (strcmp (argv[i], "-o") == 0)
-       i++;
-      else if (arg_len > 2 && strncmp (argv[i], "-l", 2) == 0)
-       {
-         const char *libname = expand_lib (&argv[i][2]);
-         const char *ext;
-         int len;
-
-         if ((len = strlen (libname)) > 0)
-           {
-             char buff [256];
-
-             if (len > 4 && strcasecmp (&libname [len-4], ".exe") == 0)
-               ext = "/shareable";
-             else
-               ext = "/library";
-
-             if (libname[0] == '[')
-               sprintf (buff, "%s%s", cwdev, libname);
-             else
-               sprintf (buff, "%s", libname);
-
-             fprintf (optfile, "%s%s\n", buff, ext);
-           }
-       }
-
-      else if (strcmp (argv[i], "-v" ) == 0
-              || strncmp (argv[i], "-g", 2 ) == 0
-              || strcmp (argv[i], "-static" ) == 0
-              || strcmp (argv[i], "-map" ) == 0
-              || strcmp (argv[i], "-save-temps") == 0
-              || strcmp (argv[i], "--noinhibit-exec") == 0
-              || (arg_len > 2 && strncmp (argv[i], "-L", 2) == 0)
-              || (arg_len >= 6 && strncmp (argv[i], "-share", 6) == 0))
-       ;
-      else if (arg_len > 1 && argv[i][0] == '@')
-       {
-         FILE *atfile;
-         char *ptr, *ptr1;
-         struct stat statbuf;
-         char *buff;
-         int len;
-
-         if (stat (&argv[i][1], &statbuf))
-           {
-             fprintf (stderr, "Couldn't open linker response file: %s\n",
-                      &argv[i][1]);
-             exit (1);
-           }
-
-         buff = xmalloc (statbuf.st_size + 1);
-         atfile = fopen (&argv[i][1], "r");
-         fgets (buff, statbuf.st_size + 1, atfile);
-         fclose (atfile);
-
-         len = strlen (buff);
-         if (buff [len - 1] == '\n')
-           {
-             buff [len - 1] = 0;
-             len--;
-           }
-
-         ptr = buff;
-
-         do
-         {
-            ptr1 = strchr (ptr, ' ');
-            if (ptr1)
-              *ptr1 = 0;
-            ptr = to_host_file_spec (ptr);
-            if (ptr[0] == '[')
-              fprintf (optfile, "%s%s\n", cwdev, ptr);
-            else
-              fprintf (optfile, "%s\n", ptr);
-            ptr = ptr1 + 1;
-         } while (ptr1);
-       }
-
-      /* Unix style file specs and VMS style switches look alike, so assume an
-        arg consisting of one and only one slash, and that being first, is
-        really a switch.  */
-      else if ((argv[i][0] == '/') && (strchr (&argv[i][1], '/') == 0))
-       addarg (argv[i]);
-      else if (arg_len > 4
-              && strncasecmp (&argv[i][arg_len-4], ".OPT", 4) == 0)
-       {
-         FILE *optfile1;
-         char buff [256];
-
-         optfile1 = fopen (argv[i], "r");
-         while (fgets (buff, 256, optfile1))
-           fputs (buff, optfile);
-
-         fclose (optfile1);
-       }
-      else if (arg_len > 7 && strncasecmp (argv[i], "GSMATCH", 7) == 0)
-       fprintf (optfile, "%s\n", argv[i]);
-      else if (arg_len > 6 && strncasecmp (argv[i], "IDENT=", 6) == 0)
-       {
-         /* Comes from command line and will override pragma.  */
-         fprintf (optfile, "case_sensitive=yes\n");
-         fprintf (optfile, "IDENT=\"%15.15s\"\n", &argv[i][6]);
-         fprintf (optfile, "case_sensitive=NO\n");
-         ident = 1;
-       }
-      else if (arg_len > 15
-              && strncasecmp (argv[i], "IDENTIFICATION=", 15) == 0)
-       ;
-      else
-       {
-         /* Assume filename arg.  */
-         const char *addswitch = "";
-         char buff [256];
-         int buff_len;
-         int is_cld = 0;
-
-         argv[i] = to_host_file_spec (argv[i]);
-         arg_len = strlen (argv[i]);
-
-         if (arg_len > 4 && strcasecmp (&argv[i][arg_len-4], ".exe") == 0)
-           addswitch = "/shareable";
-
-         if (arg_len > 4 && strcasecmp (&argv[i][arg_len-4], ".cld") == 0)
-           {
-             addswitch = "/shareable";
-             is_cld = 1;
-           }
-
-         if (arg_len > 2 && strcasecmp (&argv[i][arg_len-2], ".a") == 0)
-           addswitch = "/lib";
-
-         if (arg_len > 4 && strcasecmp (&argv[i][arg_len-4], ".olb") == 0)
-           addswitch = "/lib";
-
-         if (argv[i][0] == '[')
-           sprintf (buff, "%s%s%s\n", cwdev, argv[i], addswitch);
-         else if (strchr (argv[i], ':'))
-           sprintf (buff, "%s%s\n", argv[i], addswitch);
-         else
-           sprintf (buff, "%s%s%s\n", cwd, argv[i], addswitch);
-
-         buff_len = strlen (buff);
-
-         if (buff_len >= 15
-             && strcasecmp (&buff[buff_len - 15], "vms-dwarf2eh.o\n") == 0)
-           vmsdwarf2ehspec = xstrdup (buff);
-         else if (buff_len >= 13
-             && strcasecmp (&buff[buff_len - 13],"vms-dwarf2.o\n") == 0)
-           vmsdwarf2spec = xstrdup (buff);
-         else if (is_cld)
-           {
-             addarg (buff);
-             addarg (",");
-           }
-         else
-           fprintf (optfile, buff);
-       }
-    }
-
-#if 0
-  if (share)
-    fprintf (optfile, "symbol_vector=(main=procedure)\n");
-#endif
-
-  if (vmsdwarf2ehspec)
-    {
-      fprintf (optfile, "case_sensitive=yes\n");
-      fprintf (optfile, "cluster=DWARF2eh,,,%s", vmsdwarf2ehspec);
-      fprintf (optfile, "collect=DWARF2eh,eh_frame\n");
-      fprintf (optfile, "case_sensitive=NO\n");
-    }
-
-  if (debug && vmsdwarf2spec)
-    {
-      fprintf (optfile, "case_sensitive=yes\n");
-      fprintf (optfile, "cluster=DWARF2debug,,,%s", vmsdwarf2spec);
-      fprintf (optfile, "collect=DWARF2debug,debug_abbrev,debug_aranges,-\n");
-      fprintf (optfile, " debug_frame,debug_info,debug_line,debug_loc,-\n");
-      fprintf (optfile, " debug_macinfo,debug_pubnames,debug_str,-\n");
-      fprintf (optfile, " debug_zzzzzz\n");
-      fprintf (optfile, "case_sensitive=NO\n");
-    }
-
-  if (debug && share)
-    {
-      fprintf (optfile, "case_sensitive=yes\n");
-      fprintf (optfile, "symbol_vector=(-\n");
-      fprintf (optfile,
-              "%s$DWARF2.DEBUG_ABBREV/$dwarf2.debug_abbrev=DATA,-\n",
-              sharefilename);
-      fprintf (optfile,
-              "%s$DWARF2.DEBUG_ARANGES/$dwarf2.debug_aranges=DATA,-\n",
-              sharefilename);
-      fprintf (optfile, "%s$DWARF2.DEBUG_FRAME/$dwarf2.debug_frame=DATA,-\n",
-              sharefilename);
-      fprintf (optfile, "%s$DWARF2.DEBUG_INFO/$dwarf2.debug_info=DATA,-\n",
-              sharefilename);
-      fprintf (optfile, "%s$DWARF2.DEBUG_LINE/$dwarf2.debug_line=DATA,-\n",
-              sharefilename);
-      fprintf (optfile, "%s$DWARF2.DEBUG_LOC/$dwarf2.debug_loc=DATA,-\n",
-              sharefilename);
-      fprintf (optfile,
-              "%s$DWARF2.DEBUG_MACINFO/$dwarf2.debug_macinfo=DATA,-\n",
-              sharefilename);
-      fprintf (optfile,
-              "%s$DWARF2.DEBUG_PUBNAMES/$dwarf2.debug_pubnames=DATA,-\n",
-              sharefilename);
-      fprintf (optfile, "%s$DWARF2.DEBUG_STR/$dwarf2.debug_str=DATA,-\n",
-              sharefilename);
-      fprintf (optfile, "%s$DWARF2.DEBUG_ZZZZZZ/$dwarf2.debug_zzzzzz=DATA)\n",
-              sharefilename);
-      fprintf (optfile, "case_sensitive=NO\n");
-    }
-
-  fclose (optfile);
-  addarg (optfilefullname);
-  addarg ("/opt");
-
-  addarg (NULL);
-
-  if (verbose)
-    {
-      int i;
-
-      for (i = 0; i < link_arg_index; i++)
-       printf ("%s ", link_args [i]);
-      putchar ('\n');
-    }
-
-  {
-    int i;
-    int len = 0;
-
-    for (i = 0; link_args[i]; i++)
-      len = len + strlen (link_args[i]) + 1;
-
-    {
-      char *allargs = (char *) alloca (len + 1);
-      Descr cmd;
-      int status;
-      int status1 = 1;
-
-      for (i = 0; i < len + 1; i++)
-       allargs [i] = 0;
-
-      for (i = 0; link_args [i]; i++)
-       {
-         strcat (allargs, link_args [i]);
-         strcat (allargs, " ");
-       }
-
-      cmd.adr = allargs;
-      cmd.len = len;
-      cmd.mbz = 0;
-
-      i = LIB$SPAWN (&cmd, 0, 0, 0, 0, 0, &status);
-      if ((i & 1) != 1)
-       {
-         LIB$SIGNAL (i);
-         exit (1);
-       }
-
-      if (debug && !share)
-       {
-         strcpy (allargs, "@gnu:[bin]set_exe ");
-         strcat (allargs, exefilename);
-         strcat (allargs, " /nodebug /silent");
-         len = strlen (allargs);
-         cmd.adr = allargs;
-         cmd.len = len;
-         cmd.mbz = 0;
-
-         if (verbose)
-           printf (allargs);
-
-         i = LIB$SPAWN (&cmd, 0, 0, 0, 0, 0, &status1);
-
-         if ((i & 1) != 1)
-           {
-             LIB$SIGNAL (i);
-             exit (1);
-           }
-       }
-
-      if (!save_temps)
-       remove (optfilefullname);
-
-      if ((status & 1) == 1 && (status1 & 1) == 1)
-       exit (0);
-
-      if (exefilename && inhibit_exec == 1)
-       remove (exefilename);
-
-      exit (1);
-    }
-  }
-}
-
-static char new_host_filespec [255];
-static char filename_buff [256];
-
-static int
-translate_unix (char *name, int type ATTRIBUTE_UNUSED)
-{
-  strcpy (filename_buff, name);
-  return 0;
-}
-
-static char *
-to_host_file_spec (char *filespec)
-{
-  strcpy (new_host_filespec, "");
-  if (strchr (filespec, ']') || strchr (filespec, ':'))
-    strcpy (new_host_filespec, filespec);
-  else
-    {
-      decc$to_vms (filespec, translate_unix, 1, 1);
-      strcpy (new_host_filespec, filename_buff);
-    }
-
-  return new_host_filespec;
-}
similarity index 51%
rename from gcc/config/alpha/x-vms
rename to gcc/config/vms/t-vms
index 23f960f..132a53b 100644 (file)
@@ -1,4 +1,5 @@
-# Copyright (C) 2001, 2002, 2004, 2005, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2009
+# Free Software Foundation, Inc.
 #
 # This file is part of GCC.
 #
 # You should have received a copy of the GNU General Public License
 # along with GCC; see the file COPYING3.  If not see
 # <http://www.gnu.org/licenses/>.
-#
+
+STMP_FIXPROTO =
+STMP_FIXINC =
+LIMITS_H_TEST = false
+
 # Under VMS, directory names cannot contain dots.
 version:=$(shell echo $(BASEVER_c) | sed -e 's/\./_/g')
 
-libsubdir=$(libdir)/gcc-lib
+# Temporary restriction: VMS_EXTRA_PARTS must be compiled by DEC C.
+#VMS_EXTRA_PARTS=vcrt0.o pcrt0.o
+VMS_EXTRA_PARTS=
 
-# Rules for linker and compiler wrappers.  These are only useful on
-# a VMS host.
-vms-ld.o : $(srcdir)/config/alpha/vms-ld.c
-       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
-ld.exe : vms-ld.o
-       $(CC) -o $@ vms-ld.o ../libiberty/libiberty.a
+DECC=`echo $(CC) | sed -e 's/xgcc -B.*/decc$(exeext)/' -e 's/^gcc/decc/' -e 's/^decc/.\/decc/' -e 's/\(.*\)-gcc/\1-decc/'`
 
-vms-cc.o : $(srcdir)/config/alpha/vms-cc.c
-       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
-decc.exe : vms-cc.o
-       $(CC) -o $@ vms-cc.o ../libiberty/libiberty.a
+# Assemble startup files.
+$(T)vcrt0.o: $(CRT0_S) $(GCC_PASSES)
+       $(DECC) -c /names=as_is $(srcdir)/config/vms/vms-crt0.c -o $(T)vcrt0.o
 
-# These extra parts can only be compiled on a VMS host and are only needed
-# on a VMS target.  The rules are in t-vms.
-VMS_EXTRA_PARTS=vcrt0.o pcrt0.o
+$(T)pcrt0.o: $(CRT0_S) $(GCC_PASSES)
+       $(DECC) -c /names=as_is $(srcdir)/config/vms/vms-psxcrt0.c -o $(T)pcrt0.o
diff --git a/gcc/config/vms/t-vms64 b/gcc/config/vms/t-vms64
new file mode 100644 (file)
index 0000000..2fe0069
--- /dev/null
@@ -0,0 +1,27 @@
+# Copyright (C) 2009
+# Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+# Assemble startup files.
+$(T)vcrt0.o: $(CRT0_S) $(GCC_PASSES)
+       $(DECC) -c /names=as_is /pointer_size=64  \
+            $(srcdir)/config/vms/vms-crt0-64.c -o $(T)vcrt0.o
+
+$(T)pcrt0.o: $(CRT0_S) $(GCC_PASSES)
+       $(DECC) -c /names=as_is /pointer_size=64 \
+            $(srcdir)/config/vms/vms-psxcrt0-64.c -o $(T)pcrt0.o
similarity index 50%
rename from gcc/config/alpha/vms-crt0-64.c
rename to gcc/config/vms/vms-crt0-64.c
index 283e8be..ec59d81 100644 (file)
@@ -2,26 +2,26 @@
    Copyright (C) 2001, 2009 Free Software Foundation, Inc.
    Contributed by Douglas B. Rupp (rupp@gnat.com).
 
-This file is part of GCC.
+   This file is part of GCC.
 
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
 
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-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.
+   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/>.  */
+   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/>.  */
 
 #if !defined(__DECC)
 You Lose! This file can only be compiled with DEC C.
@@ -72,18 +72,19 @@ __main (arg1, arg2, arg3, image_file_desc, arg5, arg6)
 
 #pragma __pointer_size long
 
-  /* Reallocate argv with 64-bit pointers.  */
-  long_argv = (char **) malloc (sizeof (char *) * (argc + 1));
+  /* Reallocate argv with 64 bit pointers.  */
+  long_argv = (char **) _malloc32 (sizeof (char *) * (argc + 1));
 
   for (i = 0; i < argc; i++)
-    long_argv[i] = strdup (argv[i]);
+    long_argv[i] = (char *) _strdup32 (argv[i]);
 
   long_argv[argc] = (char *) 0;
 
-  long_envp = (char **) malloc (sizeof (char *) * 5);
+  for (i = 0; envp[i]; i++);
+  long_envp = (char **) _malloc32 (sizeof (char *) * (i + 1));
 
   for (i = 0; envp[i]; i++)
-    long_envp[i] = strdup (envp[i]);
+    long_envp[i] = (char *) _strdup32 (envp[i]);
 
   long_envp[i] = (char *) 0;
 
diff --git a/gcc/config/vms/vms-crt0.c b/gcc/config/vms/vms-crt0.c
new file mode 100644 (file)
index 0000000..c0fdaaf
--- /dev/null
@@ -0,0 +1,66 @@
+/* VMS crt0 returning VMS style condition codes .
+   Copyright (C) 2001, 2009 Free Software Foundation, Inc.
+   Contributed by Douglas B. Rupp (rupp@gnat.com).
+
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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/>.  */
+
+#if !defined(__DECC)
+You Lose! This file can only be compiled with DEC C.
+#else
+
+/* This file can only be compiled with DEC C, due to the call to
+   lib$establish.  */
+
+#include <stdlib.h>
+#include <string.h>
+#include <ssdef.h>
+
+extern void decc$main ();
+
+extern int main ();
+
+static int
+handler (sigargs, mechargs)
+     void *sigargs;
+     void *mechargs;
+{
+  return SS$_RESIGNAL;
+}
+
+int
+__main (arg1, arg2, arg3, image_file_desc, arg5, arg6)
+     void *arg1, *arg2, *arg3;
+     void *image_file_desc;
+     void *arg5, *arg6;
+{
+  int argc;
+  char **argv;
+  char **envp;
+
+  lib$establish (handler);
+
+  decc$main(arg1, arg2, arg3, image_file_desc, arg5, arg6,
+           &argc, &argv, &envp);
+
+  return main (argc, argv, envp);
+}
+#endif
diff --git a/gcc/config/vms/vms-crtl-64.h b/gcc/config/vms/vms-crtl-64.h
new file mode 100644 (file)
index 0000000..6b91f31
--- /dev/null
@@ -0,0 +1,190 @@
+/* Definitions of target machine GNU compiler. 64bit VMS version.
+   Copyright (C) 2009 Free Software Foundation, Inc.
+   Contributed by Douglas B Rupp (rupp@gnat.com).
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* 
+   Correlation array of 64bit standard CRTL names with DECCRTL
+   function names. Currently contains only a partial list,
+   e.g. those functions use in GNAT and GCC. Memory allocation
+   routines are 32bit but this can be overridden by -mmalloc
+   subtarget switch.
+
+   Note: Please keep in alphabetical order.
+*/
+
+#undef CRTL_NAMES
+#define CRTL_NAMES                          \
+{                                           \
+{"_calloc32",    "decc$calloc",       0},   \
+{"_malloc32",    "decc$malloc",       0},   \
+{"_realloc32",   "decc$realloc",      0},   \
+{"_strdup32",    "decc$strdup",       0},   \
+{"abs",          "decc$abs",          0},   \
+{"abort",        "decc$abort",        0},   \
+{"access",       "decc$access",       0},   \
+{"accept",       "decc$accept",       0},   \
+{"acos",         "decc$tacos",        0},   \
+{"alarm",        "decc$alarm",        0},   \
+{"asin",         "decc$tasin",        0},   \
+{"atan",         "decc$tatan",        0},   \
+{"atan2",        "decc$tatan2",       0},   \
+{"atexit",       "decc$atexit",       0},   \
+{"atoi",         "decc$atoi",         0},   \
+{"atoll",        "decc$atoll",        0},   \
+{"atoq",         "decc$atoq",         0},   \
+{"basename",     "decc$_basename64",  0},   \
+{"bcmp",         "decc$bcmp",         0},   \
+{"bcopy",        "decc$bcopy",        0},   \
+{"bsearch",      "decc$_bsearch64",   0},   \
+{"bzero",        "decc$bzero",        0},   \
+{"calloc",       "decc$calloc",       0},   \
+{"ceil",         "decc$tceil",        0},   \
+{"chdir",        "decc$chdir",        0},   \
+{"chown",        "decc$chown",        0},   \
+{"clearerr",     "decc$clearerr",     0},   \
+{"clock",        "decc$clock",        0},   \
+{"close",        "decc$close",        0},   \
+{"cos",          "decc$tcos",         0},   \
+{"connect",      "decc$connect",      0},   \
+{"ctime",        "decc$ctime",        0},   \
+{"dup",          "decc$dup",          0},   \
+{"dup2",         "decc$dup2",         0},   \
+{"exit",         "decc$exit",         0},   \
+{"exp",          "decc$texp",         0},   \
+{"fabs",         "decc$tfabs",        0},   \
+{"fclose",       "decc$fclose",       0},   \
+{"fdopen",       "decc$fdopen",       0},   \
+{"fgetc",        "decc$fgetc",        0},   \
+{"fgets",        "decc$_fgets64",     0},   \
+{"fflush",       "decc$fflush",       0},   \
+{"ffs",          "decc$ffs",          0},   \
+{"floor",        "decc$tfloor",       0},   \
+{"fopen",        "decc$fopen",        0},   \
+{"fputc",        "decc$fputc",        0},   \
+{"fputs",        "decc$fputs",        0},   \
+{"free",         "decc$free",         0},   \
+{"fread",        "decc$fread",        0},   \
+{"freopen",      "decc$freopen",      0},   \
+{"fseek",        "decc$fseek",        0},   \
+{"ftell",        "decc$ftell",        0},   \
+{"fwrite",       "decc$fwrite",       0},   \
+{"getcwd",       "decc$_getcwd64",    0},   \
+{"getegid",      "decc$getegid",      0},   \
+{"getenv",       "decc$getenv",       0},   \
+{"geteuid",      "decc$geteuid",      0},   \
+{"getgid",       "decc$getgid",       0},   \
+{"gethostbyname","decc$gethostbyname",0},   \
+{"getpagesize",  "decc$getpagesize",  0},   \
+{"getpid",       "decc$getpid",       0},   \
+{"getservbyname","decc$getservbyname",0},   \
+{"gettimeofday", "decc$gettimeofday", 0},   \
+{"getuid",       "decc$getuid",       0},   \
+{"htons",        "decc$htons",        0},   \
+{"iconv",        "decc$iconv",        0},   \
+{"index",        "decc$_index64",     0},   \
+{"isatty",       "decc$isatty",       0},   \
+{"isdigit",      "decc$isdigit",      0},   \
+{"kill",         "decc$kill",         0},   \
+{"log",          "decc$tlog",         0},   \
+{"log10",        "decc$tlog10",       0},   \
+{"lseek",        "decc$lseek",        0},   \
+{"ioctl",        "decc$ioctl",        0},   \
+{"malloc",       "decc$malloc",       0},   \
+{"mbstowcs",     "decc$_mbstowcs64",  0},   \
+{"memchr",       "decc$_memchr64",    0},   \
+{"memcmp",       "decc$memcmp",       0},   \
+{"memcpy",       "decc$_memcpy64",    0},   \
+{"memmove",      "decc$_memmove64",   0},   \
+{"memset",       "decc$_memset64",    0},   \
+{"mkstemp",      "decc$mkstemp",      0},   \
+{"mktemp",       "decc$_mktemp64",    0},   \
+{"mmap",         "decc$_mmap64",      0},   \
+{"munmap",       "decc$munmap",       0},   \
+{"nl_langinfo",  "decc$nl_langinfo",  0},   \
+{"pclose",       "decc$pclose",       0},   \
+{"popen",        "decc$popen",        0},   \
+{"pow",          "decc$tpow",         0},   \
+{"printf",       "decc$txprintf",     0},   \
+{"putenv",       "decc$putenv",       0},   \
+{"puts",         "decc$puts",         0},   \
+{"random",       "decc$random",       0},   \
+{"read",         "decc$read",         0},   \
+{"realloc",      "decc$realloc",      0},   \
+{"recv",         "decc$recv",         0},   \
+{"recvfrom",     "decc$recvfrom",     0},   \
+{"rename",       "decc$rename",       0},   \
+{"rewind",       "decc$rewind",       0},   \
+{"rindex",       "decc$_rindex64",    0},   \
+{"rmdir",        "decc$rmdir",        0},   \
+{"send",         "decc$send",         0},   \
+{"sendto",       "decc$sendto",       0},   \
+{"setenv",       "decc$setenv",       0},   \
+{"setlocale",    "decc$setlocale",    0},   \
+{"setvbuf",      "decc$setvbuf",      0},   \
+{"signal",       "decc$signal",       0},   \
+{"sigsetmask",   "decc$sigsetmask",   0},   \
+{"sin",          "decc$tsin",         0},   \
+{"snprintf",     "decc$txsnprintf",   0},   \
+{"socket",       "decc$socket",       0},   \
+{"sqrt",         "decc$tsqrt",        0},   \
+{"strcasecmp",   "decc$strcasecmp",   0},   \
+{"strchr",       "decc$_strchr64",    0},   \
+{"strcpy",       "decc$_strcpy64",    0},   \
+{"strdup",       "decc$strdup",       0},   \
+{"strerror",     "decc$strerror",     0},   \
+{"strlen",       "decc$strlen",       0},   \
+{"strncasecmp",  "decc$strncasecmp",  0},   \
+{"strncmp",      "decc$strncmp",      0},   \
+{"strncpy",      "decc$_strncpy64",   0},   \
+{"strrchr",      "decc$_strrchr64",   0},   \
+{"strstr",       "decc$_strstr64",    0},   \
+{"strtod",       "decc$t_strtod64",   0},   \
+{"strtol",       "decc$_strtoll64",   0},   \
+{"strtoul",      "decc$_strtoull64",  0},   \
+{"sysconf",      "decc$sysconf",      0},   \
+{"system",       "decc$system",       0},   \
+{"tan",          "decc$ttan",         0},   \
+{"time",         "decc$time",         0},   \
+{"times",        "decc$times",        0},   \
+{"tmpfile",      "decc$tmpfile",      0},   \
+{"tmpnam",       "decc$_tmpnam64",    0},   \
+{"ungetc",       "decc$ungetc",       0},   \
+{"unlink",       "decc$unlink",       0},   \
+{"umask",        "decc$umask",        0},   \
+{"utime",        "decc$utime",        0},   \
+{"wait",         "decc$wait",         0},   \
+{"waitpid",      "decc$waitpid",      0},   \
+{"wcswidth",     "decc$wcswidth",     0},   \
+{"write",        "decc$write",        0},   \
+{"vfprintf",     "decc$txvfprintf",   0},   \
+{"vprintf",      "decc$txvprintf",    0},   \
+{"vsprintf",     "decc$txvsprintf",   0},   \
+{"vsnprintf",    "decc$txvsnprintf",  0},   \
+{NULL, NULL, 0}                             \
+}
+
+/* Initialize of libfuncs that are 32/64 bit memory specific.  */
+
+#undef MEM_LIBFUNCS_INIT
+#define MEM_LIBFUNCS_INIT                                 \
+do {                                                      \
+  memcpy_libfunc = init_one_libfunc ("decc$_memcpy64");   \
+  memmove_libfunc = init_one_libfunc ("decc$_memmove64"); \
+  memset_libfunc = init_one_libfunc ("decc$_memset64");   \
+} while (0)
diff --git a/gcc/config/vms/vms-crtl.h b/gcc/config/vms/vms-crtl.h
new file mode 100644 (file)
index 0000000..39e647a
--- /dev/null
@@ -0,0 +1,186 @@
+/* Definitions of target machine GNU compiler. 32bit VMS version.
+   Copyright (C) 2009 Free Software Foundation, Inc.
+   Contributed by Douglas B Rupp (rupp@gnat.com).
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+/* 
+   Correlation array of standard CRTL names with DECCRTL
+   function names. Currently contains only a partial list,
+   e.g. those functions use in GNAT and GCC
+
+   Note: Please keep in alphabetical order.
+*/
+
+#define CRTL_NAMES                          \
+{                                           \
+{"_calloc32",    "decc$calloc",       0},   \
+{"_malloc32",    "decc$malloc",       0},   \
+{"_realloc32",   "decc$realloc",      0},   \
+{"_strdup32",    "decc$strdup",       0},   \
+{"abs",          "decc$abs",          0},   \
+{"abort",        "decc$abort",        0},   \
+{"access",       "decc$access",       0},   \
+{"accept",       "decc$accept",       0},   \
+{"acos",         "decc$tacos",        0},   \
+{"alarm",        "decc$alarm",        0},   \
+{"asin",         "decc$tasin",        0},   \
+{"atan",         "decc$tatan",        0},   \
+{"atan2",        "decc$tatan2",       0},   \
+{"atexit",       "decc$atexit",       0},   \
+{"atoi",         "decc$atoi",         0},   \
+{"atoll",        "decc$atoll",        0},   \
+{"atoq",         "decc$atoq",         0},   \
+{"basename",     "decc$basename",     0},   \
+{"bcmp",         "decc$bcmp",         0},   \
+{"bcopy",        "decc$bcopy",        0},   \
+{"bsearch",      "decc$bsearch",      0},   \
+{"bzero",        "decc$bzero",        0},   \
+{"calloc",       "decc$calloc",       0},   \
+{"ceil",         "decc$tceil",        0},   \
+{"chdir",        "decc$chdir",        0},   \
+{"chown",        "decc$chown",        0},   \
+{"clearerr",     "decc$clearerr",     0},   \
+{"clock",        "decc$clock",        0},   \
+{"close",        "decc$close",        0},   \
+{"cos",          "decc$tcos",         0},   \
+{"connect",      "decc$connect",      0},   \
+{"ctime",        "decc$ctime",        0},   \
+{"dup",          "decc$dup",          0},   \
+{"dup2",         "decc$dup2",         0},   \
+{"exit",         "decc$exit",         0},   \
+{"exp",          "decc$texp",         0},   \
+{"fabs",         "decc$tfabs",        0},   \
+{"fclose",       "decc$fclose",       0},   \
+{"fdopen",       "decc$fdopen",       0},   \
+{"fgetc",        "decc$fgetc",        0},   \
+{"fgets",        "decc$fgets",        0},   \
+{"fflush",       "decc$fflush",       0},   \
+{"ffs",          "decc$ffs",          0},   \
+{"floor",        "decc$tfloor",       0},   \
+{"fopen",        "decc$fopen",        0},   \
+{"fputc",        "decc$fputc",        0},   \
+{"fputs",        "decc$fputs",        0},   \
+{"free",         "decc$free",         0},   \
+{"fread",        "decc$fread",        0},   \
+{"freopen",      "decc$freopen",      0},   \
+{"fseek",        "decc$fseek",        0},   \
+{"ftell",        "decc$ftell",        0},   \
+{"fwrite",       "decc$fwrite",       0},   \
+{"getcwd",       "decc$getcwd",       0},   \
+{"getegid",      "decc$getegid",      0},   \
+{"getenv",       "decc$getenv",       0},   \
+{"geteuid",      "decc$geteuid",      0},   \
+{"getgid",       "decc$getgid",       0},   \
+{"gethostbyname","decc$gethostbyname",0},   \
+{"getpagesize",  "decc$getpagesize",  0},   \
+{"getpid",       "decc$getpid",       0},   \
+{"getservbyname","decc$getservbyname",0},   \
+{"gettimeofday", "decc$gettimeofday", 0},   \
+{"getuid",       "decc$getuid",       0},   \
+{"htons",        "decc$htons",        0},   \
+{"iconv",        "decc$iconv",        0},   \
+{"index",        "decc$index",        0},   \
+{"isatty",       "decc$isatty",       0},   \
+{"isdigit",      "decc$isdigit",      0},   \
+{"kill",         "decc$kill",         0},   \
+{"log",          "decc$tlog",         0},   \
+{"log10",        "decc$tlog10",       0},   \
+{"lseek",        "decc$lseek",        0},   \
+{"ioctl",        "decc$ioctl",        0},   \
+{"malloc",       "decc$malloc",       0},   \
+{"mbstowcs",     "decc$mbstowcs",     0},   \
+{"memchr",       "decc$memchr",       0},   \
+{"memcmp",       "decc$memcmp",       0},   \
+{"memcpy",       "decc$memcpy",       0},   \
+{"memmove",      "decc$memmove",      0},   \
+{"memset",       "decc$memset",       0},   \
+{"mkstemp",      "decc$mkstemp",      0},   \
+{"mktemp",       "decc$mktemp",       0},   \
+{"mmap",         "decc$mmap",         0},   \
+{"munmap",       "decc$munmap",       0},   \
+{"nl_langinfo",  "decc$nl_langinfo",  0},   \
+{"pclose",       "decc$pclose",       0},   \
+{"popen",        "decc$popen",        0},   \
+{"pow",          "decc$tpow",         0},   \
+{"printf",       "decc$txprintf",     0},   \
+{"putenv",       "decc$putenv",       0},   \
+{"puts",         "decc$puts",         0},   \
+{"random",       "decc$random",       0},   \
+{"read",         "decc$read",         0},   \
+{"realloc",      "decc$realloc",      0},   \
+{"recv",         "decc$recv",         0},   \
+{"recvfrom",     "decc$recvfrom",     0},   \
+{"rename",       "decc$rename",       0},   \
+{"rewind",       "decc$rewind",       0},   \
+{"rindex",       "decc$rindex",       0},   \
+{"rmdir",        "decc$rmdir",        0},   \
+{"send",         "decc$send",         0},   \
+{"sendto",       "decc$sendto",       0},   \
+{"setenv",       "decc$setenv",       0},   \
+{"setlocale",    "decc$setlocale",    0},   \
+{"setvbuf",      "decc$setvbuf",      0},   \
+{"signal",       "decc$signal",       0},   \
+{"sigsetmask",   "decc$sigsetmask",   0},   \
+{"sin",          "decc$tsin",         0},   \
+{"snprintf",     "decc$txsnprintf",   0},   \
+{"socket",       "decc$socket",       0},   \
+{"sqrt",         "decc$tsqrt",        0},   \
+{"strcasecmp",   "decc$strcasecmp",   0},   \
+{"strchr",       "decc$strchr",       0},   \
+{"strcpy",       "decc$strcpy",       0},   \
+{"strdup",       "decc$strdup",       0},   \
+{"strerror",     "decc$strerror",     0},   \
+{"strlen",       "decc$strlen",       0},   \
+{"strncasecmp",  "decc$strncasecmp",  0},   \
+{"strncmp",      "decc$strncmp",      0},   \
+{"strncpy",      "decc$strncpy",      0},   \
+{"strrchr",      "decc$strrchr",      0},   \
+{"strstr",       "decc$strstr",       0},   \
+{"strtod",       "decc$tstrtod",      0},   \
+{"strtol",       "decc$strtoll",      0},   \
+{"strtoul",      "decc$strtoull",     0},   \
+{"sysconf",      "decc$sysconf",      0},   \
+{"system",       "decc$system",       0},   \
+{"tan",          "decc$ttan",         0},   \
+{"time",         "decc$time",         0},   \
+{"times",        "decc$times",        0},   \
+{"tmpfile",      "decc$tmpfile",      0},   \
+{"tmpnam",       "decc$tmpnam",       0},   \
+{"ungetc",       "decc$ungetc",       0},   \
+{"unlink",       "decc$unlink",       0},   \
+{"umask",        "decc$umask",        0},   \
+{"utime",        "decc$utime",        0},   \
+{"wait",         "decc$wait",         0},   \
+{"waitpid",      "decc$waitpid",      0},   \
+{"wcswidth",     "decc$wcswidth",     0},   \
+{"write",        "decc$write",        0},   \
+{"vfprintf",     "decc$txvfprintf",   0},   \
+{"vprintf",      "decc$txvprintf",    0},   \
+{"vsprintf",     "decc$txvsprintf",   0},   \
+{"vsnprintf",    "decc$txvsnprintf",  0},   \
+{NULL, NULL, 0}                             \
+}
+
+/* Initialize of libfuncs that are 32/64 bit memory specific.  */
+
+#define MEM_LIBFUNCS_INIT                              \
+do {                                                   \
+  memcpy_libfunc = init_one_libfunc ("decc$memcpy");   \
+  memmove_libfunc = init_one_libfunc ("decc$memmove"); \
+  memset_libfunc = init_one_libfunc ("decc$memset");   \
+} while (0)
similarity index 60%
rename from gcc/config/alpha/vms-psxcrt0-64.c
rename to gcc/config/vms/vms-psxcrt0-64.c
index 1b74b6d..45afbc9 100644 (file)
@@ -2,26 +2,26 @@
    Copyright (C) 2001, 2009 Free Software Foundation, Inc.
    Contributed by Douglas B. Rupp (rupp@gnat.com).
 
-This file is part of GCC.
+   This file is part of GCC.
 
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
 
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-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.
+   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/>.  */
+   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/>.  */
 
 #if !defined(__DECC)
 You Lose! This file can only be compiled with DEC C.
@@ -53,7 +53,7 @@ int
 __main (arg1, arg2, arg3, image_file_desc, arg5, arg6)
      void *arg1, *arg2, *arg3;
      void *image_file_desc;
-     void *arg5, *arg6)
+     void *arg5, *arg6;
 {
   int argc;
   char **argv;
@@ -74,18 +74,19 @@ __main (arg1, arg2, arg3, image_file_desc, arg5, arg6)
 
 #pragma __pointer_size long
 
-  /* Reallocate argv with 64-bit pointers.  */
-  long_argv = (char **) malloc (sizeof (char *) * (argc + 1));
+  /* Reallocate argv with 64 bit pointers.  */
+  long_argv = (char **) _malloc32 (sizeof (char *) * (argc + 1));
 
   for (i = 0; i < argc; i++)
-    long_argv[i] = strdup (argv[i]);
+    long_argv[i] = (char *) _strdup32 (argv[i]);
 
   long_argv[argc] = (char *) 0;
 
-  long_envp = (char **) malloc (sizeof (char *) * 5);
+  for (i = 0; envp[i]; i++);
+  long_envp = (char **) _malloc32 (sizeof (char *) * (i + 1));
 
   for (i = 0; envp[i]; i++)
-    long_envp[i] = strdup (envp[i]);
+    long_envp[i] = (char *) _strdup32 (envp[i]);
 
   long_envp[i] = (char *) 0;
 
similarity index 63%
rename from gcc/config/alpha/vms-psxcrt0.c
rename to gcc/config/vms/vms-psxcrt0.c
index 69d97ec..5ad5ddb 100644 (file)
@@ -2,26 +2,26 @@
    Copyright (C) 2001, 2009 Free Software Foundation, Inc.
    Contributed by Douglas B. Rupp (rupp@gnat.com).
 
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-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/>.  */
+   This file is part of GCC.
+
+   GCC is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   GCC is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   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/>.  */
 
 #if !defined(__DECC)
 You Lose! This file can only be compiled with DEC C.
diff --git a/gcc/config/vms/vms.opt b/gcc/config/vms/vms.opt
new file mode 100644 (file)
index 0000000..dd4b46b
--- /dev/null
@@ -0,0 +1,25 @@
+; Copyright (C) 2009 Free Software Foundation, Inc.
+;
+; This file is part of GCC.
+;
+; GCC is free software; you can redistribute it and/or modify it under
+; the terms of the GNU General Public License as published by the Free
+; Software Foundation; either version 3, or (at your option) any later
+; version.
+;
+; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+; WARRANTY; without even the implied warranty of MERCHANTABILITY or
+; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+; for more details.
+;
+; You should have received a copy of the GNU General Public License
+; along with GCC; see the file COPYING3.  If not see
+; <http://www.gnu.org/licenses/>.
+
+mmalloc64
+Target Report Mask(MALLOC64)
+Malloc data into P2 space
+
+mdebug-main=
+Target RejectNegative Joined Var(vms_debug_main)
+Set name of main routine for the debugger
diff --git a/gcc/config/vms/x-vms b/gcc/config/vms/x-vms
new file mode 100644 (file)
index 0000000..b232c8e
--- /dev/null
@@ -0,0 +1,27 @@
+# Copyright (C) 2001, 2002, 2004, 2005, 2008, 2009
+# Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GCC is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+LN = cp -p
+LN_S = cp -p
+
+# Doesn't work on VMS
+USE_COLLECT2=
+
+# There are no man pages on VMS
+POD2MAN = false
similarity index 81%
rename from gcc/config/alpha/xm-vms.h
rename to gcc/config/vms/xm-vms.h
index ea95bcf..7907f92 100644 (file)
@@ -1,6 +1,7 @@
-/* Configuration for GNU C-compiler for openVMS/Alpha.
-   Copyright (C) 1996, 1997, 2001, 2004, 2007 Free Software Foundation, Inc.
-   Contributed by Klaus Kaempf (kkaempf@progis.de).
+/* Configuration for GCC for hosting on VMS
+   using a Unix style C library.
+   Copyright (C) 1996, 1997, 2001, 2004, 2007, 2009
+   Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -23,17 +24,14 @@ along with GCC; see the file COPYING3.  If not see
 #define VMS
 #endif
 
-/* Define a local equivalent (sort of) for unlink */
-#define unlink remove
-
 /* Causes exit() to be redefined to __posix_exit() and
-   Posix compatible failure and success codes to be used */
+   Posix compatible failure and success codes to be used */
 #define _POSIX_EXIT 1
 
-/* Open files in stream mode if not otherwise explicitly specified */
+/* Open files in stream mode if not otherwise explicitly specified */
 #define __UNIX_FOPEN 1
 
-/* Write to stdout using fputc to avoid record terminators in pipes */
+/* Write to stdout using fputc to avoid record terminators in pipes */
 #define __UNIX_FWRITE 1
 
 #define STDC_HEADERS 1
@@ -54,3 +52,7 @@ do                                                         \
          break;                                           \
        }                                                  \
   } while (0)
+
+#define STANDARD_EXEC_PREFIX "/gnu/libexec/gcc/"
+#define STANDARD_STARTFILE_PREFIX "/gnu/lib/"
+#define STANDARD_INCLUDE_DIR "/gnu/include"
diff --git a/gcc/config/vms/xm-vms64.h b/gcc/config/vms/xm-vms64.h
new file mode 100644 (file)
index 0000000..9e77f89
--- /dev/null
@@ -0,0 +1,23 @@
+/* Configuration for GCC for hosting on 64bit VMS
+   using a Unix style C library.
+   Copyright (C) 2009
+   Free Software Foundation, Inc.
+
+This file is part of GCC.
+
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GCC; see the file COPYING3.  If not see
+<http://www.gnu.org/licenses/>.  */
+
+#define HOST_LONG_FORMAT "ll"
+#define HOST_PTR_PRINTF "%llp"