summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
authorrupp <rupp@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-30 00:15:35 +0000
committerrupp <rupp@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-30 00:15:35 +0000
commite783950f98bbbd276269a5435c9ce56de8e55608 (patch)
treea6efcbf8d498d4de1827d47e5e05d63da73aa6f0 /gcc
parente70ad86ac565c31afaf95898838ae887e3b386d4 (diff)
downloadppe42-gcc-e783950f98bbbd276269a5435c9ce56de8e55608.tar.gz
ppe42-gcc-e783950f98bbbd276269a5435c9ce56de8e55608.zip
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@150230 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog34
-rw-r--r--gcc/config/alpha/t-vms9
-rw-r--r--gcc/config/alpha/t-vms648
-rw-r--r--gcc/config/alpha/vms-cc.c355
-rw-r--r--gcc/config/alpha/vms-crt0.c66
-rw-r--r--gcc/config/alpha/vms-ld.c763
-rw-r--r--gcc/config/vms/t-vms (renamed from gcc/config/alpha/x-vms)32
-rw-r--r--gcc/config/vms/t-vms6427
-rw-r--r--gcc/config/vms/vms-crt0-64.c (renamed from gcc/config/alpha/vms-crt0-64.c)43
-rw-r--r--gcc/config/vms/vms-crt0.c66
-rw-r--r--gcc/config/vms/vms-crtl-64.h190
-rw-r--r--gcc/config/vms/vms-crtl.h186
-rw-r--r--gcc/config/vms/vms-psxcrt0-64.c (renamed from gcc/config/alpha/vms-psxcrt0-64.c)45
-rw-r--r--gcc/config/vms/vms-psxcrt0.c (renamed from gcc/config/alpha/vms-psxcrt0.c)40
-rw-r--r--gcc/config/vms/vms.opt25
-rw-r--r--gcc/config/vms/x-vms27
-rw-r--r--gcc/config/vms/xm-vms.h (renamed from gcc/config/alpha/xm-vms.h)20
-rw-r--r--gcc/config/vms/xm-vms64.h23
18 files changed, 671 insertions, 1288 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 90db5bfbcc2..43e94c13461 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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).
diff --git a/gcc/config/alpha/t-vms b/gcc/config/alpha/t-vms
index 5b815288aa3..5e86f14e14b 100644
--- a/gcc/config/alpha/t-vms
+++ b/gcc/config/alpha/t-vms
@@ -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
index 38503a96429..00000000000
--- a/gcc/config/alpha/t-vms64
+++ /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
index 9ba2707240f..00000000000
--- a/gcc/config/alpha/vms-cc.c
+++ /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);
-
-/* 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
index affe0e8ac3e..00000000000
--- a/gcc/config/alpha/vms-crt0.c
+++ /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
index d3b4af27385..00000000000
--- a/gcc/config/alpha/vms-ld.c
+++ /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 **);
-
-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;
-}
diff --git a/gcc/config/alpha/x-vms b/gcc/config/vms/t-vms
index 23f960f283c..132a53b205c 100644
--- a/gcc/config/alpha/x-vms
+++ b/gcc/config/vms/t-vms
@@ -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.
#
@@ -15,24 +16,23 @@
# 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
index 00000000000..2fe00692fb5
--- /dev/null
+++ b/gcc/config/vms/t-vms64
@@ -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
diff --git a/gcc/config/alpha/vms-crt0-64.c b/gcc/config/vms/vms-crt0-64.c
index 283e8bee964..ec59d81d6af 100644
--- a/gcc/config/alpha/vms-crt0-64.c
+++ b/gcc/config/vms/vms-crt0-64.c
@@ -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
index 00000000000..c0fdaaf16c6
--- /dev/null
+++ b/gcc/config/vms/vms-crt0.c
@@ -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
index 00000000000..6b91f31558a
--- /dev/null
+++ b/gcc/config/vms/vms-crtl-64.h
@@ -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
index 00000000000..39e647ac436
--- /dev/null
+++ b/gcc/config/vms/vms-crtl.h
@@ -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)
diff --git a/gcc/config/alpha/vms-psxcrt0-64.c b/gcc/config/vms/vms-psxcrt0-64.c
index 1b74b6d18d2..45afbc9a03d 100644
--- a/gcc/config/alpha/vms-psxcrt0-64.c
+++ b/gcc/config/vms/vms-psxcrt0-64.c
@@ -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;
diff --git a/gcc/config/alpha/vms-psxcrt0.c b/gcc/config/vms/vms-psxcrt0.c
index 69d97ec75d3..5ad5ddb0fd8 100644
--- a/gcc/config/alpha/vms-psxcrt0.c
+++ b/gcc/config/vms/vms-psxcrt0.c
@@ -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
index 00000000000..dd4b46b333e
--- /dev/null
+++ b/gcc/config/vms/vms.opt
@@ -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
index 00000000000..b232c8e6804
--- /dev/null
+++ b/gcc/config/vms/x-vms
@@ -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
diff --git a/gcc/config/alpha/xm-vms.h b/gcc/config/vms/xm-vms.h
index ea95bcfbaed..7907f9263cf 100644
--- a/gcc/config/alpha/xm-vms.h
+++ b/gcc/config/vms/xm-vms.h
@@ -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
index 00000000000..9e77f890aaa
--- /dev/null
+++ b/gcc/config/vms/xm-vms64.h
@@ -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"
OpenPOWER on IntegriCloud