summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2000-11-28 14:58:08 +0000
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>2000-11-28 14:58:08 +0000
commit7d3bd8c09e25f815213b50e8869134d7d52de2cc (patch)
tree5f103e128799a70a1832432704583e13f433de18
parent46a79a8f352c4eddd7166b3e0c5700376b8b8b86 (diff)
downloadgcc-7d3bd8c09e25f815213b50e8869134d7d52de2cc.tar.gz
* system.h (IS_DIR_SEPARATOR): Use uppercase macro name.
(IS_ABSOLUTE_PATHNAME): New macro. * gcc.c (find_a_file, process_command, do_spec_1, main): Use it. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37818 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/gcc.c26
-rw-r--r--gcc/system.h19
3 files changed, 30 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 90bb2352267..506fae68faf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Tue Nov 28 09:53:50 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * system.h (IS_DIR_SEPARATOR): Use uppercase macro name.
+ (IS_ABSOLUTE_PATHNAME): New macro.
+ * gcc.c (find_a_file, process_command, do_spec_1, main): Use it.
+
2000-11-28 Jakub Jelinek <jakub@redhat.com>
* config/i386/i386.md (truncxfsf2_2): Fix predicate.
diff --git a/gcc/gcc.c b/gcc/gcc.c
index d95b1c4cae2..aaf46b962bb 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -2242,7 +2242,7 @@ find_a_file (pprefix, name, mode)
int len = pprefix->max_len + strlen (name) + strlen (file_suffix) + 1;
#ifdef DEFAULT_ASSEMBLER
- if (! strcmp(name, "as") && access (DEFAULT_ASSEMBLER, mode) == 0)
+ if (! strcmp (name, "as") && access (DEFAULT_ASSEMBLER, mode) == 0)
return xstrdup (DEFAULT_ASSEMBLER);
#endif
@@ -2258,12 +2258,7 @@ find_a_file (pprefix, name, mode)
/* Determine the filename to execute (special case for absolute paths). */
- if (IS_DIR_SEPARATOR (*name)
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
- /* Check for disk name on MS-DOS-based systems. */
- || (name[0] && name[1] == ':' && IS_DIR_SEPARATOR (name[2]))
-#endif
- )
+ if (IS_ABSOLUTE_PATHNAME (name))
{
if (access (name, mode) == 0)
{
@@ -2918,6 +2913,7 @@ process_command (argc, argv)
if (gcc_exec_prefix)
{
int len = strlen (gcc_exec_prefix);
+
if (len > (int) sizeof ("/lib/gcc-lib/") - 1
&& (IS_DIR_SEPARATOR (gcc_exec_prefix[len-1])))
{
@@ -3460,7 +3456,7 @@ process_command (argc, argv)
directories, so that we can search both the user specified directory
and the standard place. */
- if (!IS_DIR_SEPARATOR (*tooldir_prefix))
+ if (!IS_ABSOLUTE_PATHNAME (tooldir_prefix))
{
if (gcc_exec_prefix)
{
@@ -3957,7 +3953,7 @@ do_spec_1 (spec, inswitch, soft_matched_part)
/* Relative directories always come from -B,
and it is better not to use them for searching
at run time. In particular, stage1 loses. */
- if (!IS_DIR_SEPARATOR (pl->prefix[0]))
+ if (!IS_ABSOLUTE_PATHNAME (pl->prefix))
continue;
#endif
/* Try subdirectory if there is one. */
@@ -5405,14 +5401,7 @@ main (argc, argv)
standard_exec_prefix. This lets us move the installed tree
as a unit. If GCC_EXEC_PREFIX is defined, base
standard_startfile_prefix on that as well. */
- if (IS_DIR_SEPARATOR (*standard_startfile_prefix)
- || *standard_startfile_prefix == '$'
-#ifdef HAVE_DOS_BASED_FILE_SYSTEM
- /* Check for disk name on MS-DOS-based systems. */
- || (standard_startfile_prefix[1] == ':'
- && (IS_DIR_SEPARATOR (standard_startfile_prefix[2])))
-#endif
- )
+ if (IS_ABSOLUTE_PATHNAME (standard_startfile_prefix))
add_prefix (&startfile_prefixes, standard_startfile_prefix, "BINUTILS",
PREFIX_PRIORITY_LAST, 0, NULL_PTR);
else
@@ -5440,7 +5429,8 @@ main (argc, argv)
}
else
{
- if (!IS_DIR_SEPARATOR (*standard_startfile_prefix) && gcc_exec_prefix)
+ if (!IS_ABSOLUTE_PATHNAME (standard_startfile_prefix)
+ && gcc_exec_prefix)
add_prefix (&startfile_prefixes,
concat (gcc_exec_prefix, machine_suffix,
standard_startfile_prefix, NULL_PTR),
diff --git a/gcc/system.h b/gcc/system.h
index 20531ddb4e5..59caf48f0e5 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -538,12 +538,25 @@ extern void abort PARAMS ((void));
/* Define IS_DIR_SEPARATOR. */
#ifndef DIR_SEPARATOR_2
-# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR)
+# define IS_DIR_SEPARATOR(CH) ((CH) == DIR_SEPARATOR)
#else /* DIR_SEPARATOR_2 */
-# define IS_DIR_SEPARATOR(ch) \
- (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
+# define IS_DIR_SEPARATOR(CH) \
+ (((CH) == DIR_SEPARATOR) || ((CH) == DIR_SEPARATOR_2))
#endif /* DIR_SEPARATOR_2 */
+/* Say how to test for an absolute pathname. On Unix systems, this is if
+ it starts with a leading slash or a '$', the latter meaning the value of
+ an environment variable is to be used. On machien with DOS-based
+ file systems, it is also absolute if it starts with a drive identifier. */
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+#define IS_ABSOLUTE_PATHNAME(STR) \
+ (IS_DIR_SEPARATOR ((STR)[0]) || (STR)[0] == '$' \
+ || ((STR)[0] != '\0' && (STR)[1] == ':' && IS_DIR_SEPARATOR ((STR)[2])))
+#else
+#define IS_ABSOLUTE_PATHNAME(STR) \
+ (IS_DIR_SEPARATOR ((STR)[0]) || (STR)[0] == '$')
+#endif
+
/* Get libiberty declarations. */
#include "libiberty.h"