aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouglas B Rupp <rupp@gnat.com>2004-04-29 15:28:42 +0000
committerDouglas Rupp <rupp@gcc.gnu.org>2004-04-29 15:28:42 +0000
commit8fd583973e51d76536f33d0d57120bf69e43f408 (patch)
tree7cc52a06db61f0e92a9c98a34aa14fcf0072b299
parentd935a36e27c5a15e05cabdc6b6e9b6d68538a14f (diff)
downloadgcc-8fd583973e51d76536f33d0d57120bf69e43f408.zip
gcc-8fd583973e51d76536f33d0d57120bf69e43f408.tar.gz
gcc-8fd583973e51d76536f33d0d57120bf69e43f408.tar.bz2
gcc.c (DELETE_IF_ORDINARY): New macro default definition.
* gcc.c (DELETE_IF_ORDINARY): New macro default definition. (delete_if_ordinary): Use above macro. * config/alpha/xm-vms.h (DELETE_IF_ORDINARY): New macro VMS definition. Update copyright. * doc/hostconfig.texi (DELETE_IF_ORDINARY): Document new macro. * libiberty/mkstemps.c (mkstemps) [VMS]: Remove special open option. Update copyright. From-SVN: r81290
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/alpha/xm-vms.h14
-rw-r--r--gcc/doc/hostconfig.texi9
-rw-r--r--gcc/gcc.c16
-rw-r--r--libiberty/ChangeLog5
-rw-r--r--libiberty/mkstemps.c6
6 files changed, 48 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9630090..68ee9a5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2004-04-29 Douglas B Rupp <rupp@gnat.com>
+
+ * gcc.c (DELETE_IF_ORDINARY): New macro default definition.
+ (delete_if_ordinary): Use above macro.
+ * config/alpha/xm-vms.h (DELETE_IF_ORDINARY): New macro VMS definition.
+ Update copyright.
+ * doc/hostconfig.texi (DELETE_IF_ORDINARY): Document new macro.
+
2004-04-29 Richard Earnshaw <rearnsha@arm.com>
* c-decl.c (get_parm_info): Use the correct tag keywords when
diff --git a/gcc/config/alpha/xm-vms.h b/gcc/config/alpha/xm-vms.h
index bdac52e..cf18b2f 100644
--- a/gcc/config/alpha/xm-vms.h
+++ b/gcc/config/alpha/xm-vms.h
@@ -1,5 +1,5 @@
/* Configuration for GNU C-compiler for openVMS/Alpha.
- Copyright (C) 1996, 1997, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2001, 2004 Free Software Foundation, Inc.
Contributed by Klaus Kaempf (kkaempf@progis.de).
This file is part of GCC.
@@ -43,3 +43,15 @@ Boston, MA 02111-1307, USA. */
#define HOST_OBJECT_SUFFIX ".obj"
#define DUMPFILE_FORMAT "_%02d_"
+
+#define DELETE_IF_ORDINARY(NAME,ST,VERBOSE_FLAG) \
+do \
+ { \
+ while (stat (NAME, &ST) >= 0 && S_ISREG (ST.st_mode)) \
+ if (unlink (NAME) < 0) \
+ { \
+ if (VERBOSE_FLAG) \
+ perror_with_name (NAME); \
+ break; \
+ } \
+ } while (0)
diff --git a/gcc/doc/hostconfig.texi b/gcc/doc/hostconfig.texi
index e5387e1..c97b41b 100644
--- a/gcc/doc/hostconfig.texi
+++ b/gcc/doc/hostconfig.texi
@@ -147,6 +147,15 @@ unique to each dump file kind, e.g. @samp{rtl}.
If you do not define this macro, GCC will use @samp{.%02d.}. You should
define this macro if using the default will create an invalid file name.
+
+@item DELETE_IF_ORDINARY
+Define this macro to be a C statement (sans semicolon) that performs
+host-dependent removal of ordinary temp files in the compilation driver.
+
+If you do not define this macro, GCC will use the default version. You
+should define this macro if the default version does not reliably remove
+the temp file as, for example, on VMS which allows multiple versions
+of a file.
@end ftable
@node Host Misc
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 4e4f93b..4434e79 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -2245,6 +2245,17 @@ record_temp_file (const char *filename, int always_delete, int fail_delete)
/* Delete all the temporary files whose names we previously recorded. */
+#ifndef DELETE_IF_ORDINARY
+#define DELETE_IF_ORDINARY(NAME,ST,VERBOSE_FLAG) \
+do \
+ { \
+ if (stat (NAME, &ST) >= 0 && S_ISREG (ST.st_mode)) \
+ if (unlink (NAME) < 0) \
+ if (VERBOSE_FLAG) \
+ perror_with_name (NAME); \
+ } while (0)
+#endif
+
static void
delete_if_ordinary (const char *name)
{
@@ -2261,10 +2272,7 @@ delete_if_ordinary (const char *name)
if (i == 'y' || i == 'Y')
#endif /* DEBUG */
- if (stat (name, &st) >= 0 && S_ISREG (st.st_mode))
- if (unlink (name) < 0)
- if (verbose_flag)
- perror_with_name (name);
+ DELETE_IF_ORDINARY (name, st, verbose_flag);
}
static void
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 553d17c..82547e2 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2004-04-29 Douglas B Rupp <rupp@gnat.com>
+
+ * mkstemps.c (mkstemps) [VMS]: Remove special open option. Update
+ copyright.
+
2004-04-26 Maciej W. Rozycki <macro@ds2.pg.gda.pl>
* configure.ac (UNSIGNED_64BIT_TYPE): Unquote the definition.
diff --git a/libiberty/mkstemps.c b/libiberty/mkstemps.c
index 1f6600a..94edf78 100644
--- a/libiberty/mkstemps.c
+++ b/libiberty/mkstemps.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996, 1998 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1996, 1998, 2004 Free Software Foundation, Inc.
This file is derived from mkstemp.c from the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -121,11 +121,7 @@ mkstemps (template, suffix_len)
v /= 62;
XXXXXX[5] = letters[v % 62];
-#ifdef VMS
- fd = open (template, O_RDWR|O_CREAT|O_EXCL, 0600, "fop=tmd");
-#else
fd = open (template, O_RDWR|O_CREAT|O_EXCL, 0600);
-#endif
if (fd >= 0)
/* The file does not exist. */
return fd;