summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-19 13:04:24 +0000
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2003-01-19 13:04:24 +0000
commitd0faeb9de68a22b42cf5e0f2d362bf1b6991760c (patch)
tree1c9527057e11cd9aeab8e1192678a236184395a6
parent3fa952a4d5ef29ee0a5ce7322be1f83665b91299 (diff)
downloadgcc-d0faeb9de68a22b42cf5e0f2d362bf1b6991760c.tar.gz
* config.gcc (mips64*-*-linux*): Added.
* config/mips/linux64.h, config/mips/t-linux64: New file. * config/mips/iris6.h (MIPS_TFMODE_FORMAT): Define. * config/mips/mips.c (override_options): Use it. * config/mips/mips.h (TARGET_SWITCHES): Added... (SUBTARGET_TARGET_SWITCHES): New, empty by default. * Makefile.in (SPECS): New. (STAGESTUFF, specs, mostlyclean, install-common): Use it. * gcc.c (process_command): Move self-spec processing past spec file loading. * doc/tm.texi (DRIVER_SELF_SPECS): Document the change. * doc/fragments.texi (MULTILIB_EXTRA_OPTS): Document need for CRTSTUFF_T_CFLAGS. (SPECS): Document. * doc/invoke.texi (-mabi-fake-default): Document. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61481 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog18
-rw-r--r--gcc/Makefile.in17
-rw-r--r--gcc/config.gcc21
-rw-r--r--gcc/config/mips/iris6.h4
-rw-r--r--gcc/config/mips/linux64.h99
-rw-r--r--gcc/config/mips/mips.c4
-rw-r--r--gcc/config/mips/mips.h2
-rw-r--r--gcc/config/mips/t-linux6441
-rw-r--r--gcc/doc/fragments.texi21
-rw-r--r--gcc/doc/invoke.texi33
-rw-r--r--gcc/doc/tm.texi11
-rw-r--r--gcc/gcc.c12
12 files changed, 262 insertions, 21 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d0f96adbbc4..f300181d287 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,21 @@
+2003-01-19 Alexandre Oliva <aoliva@redhat.com>
+
+ * config.gcc (mips64*-*-linux*): Added.
+ * config/mips/linux64.h, config/mips/t-linux64: New file.
+ * config/mips/iris6.h (MIPS_TFMODE_FORMAT): Define.
+ * config/mips/mips.c (override_options): Use it.
+ * config/mips/mips.h (TARGET_SWITCHES): Added...
+ (SUBTARGET_TARGET_SWITCHES): New, empty by default.
+ * Makefile.in (SPECS): New.
+ (STAGESTUFF, specs, mostlyclean, install-common): Use it.
+ * gcc.c (process_command): Move self-spec processing past spec
+ file loading.
+ * doc/tm.texi (DRIVER_SELF_SPECS): Document the change.
+ * doc/fragments.texi (MULTILIB_EXTRA_OPTS): Document need for
+ CRTSTUFF_T_CFLAGS.
+ (SPECS): Document.
+ * doc/invoke.texi (-mabi-fake-default): Document.
+
2003-01-19 Stephane Carrez <stcarrez@nerim.fr>
* config/m68hc11/m68hc11.c (stack_push_word, stack_pop_word,
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index dbd6a688ca2..7ae08fca892 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -549,6 +549,13 @@ T =
T_TARGET =
T_TARGET : $(T_TARGET)
+# This should name the specs file that we're going to install. Target
+# Makefiles may override it and name another file to be generated from
+# the built-in specs and installed as the default spec, as long as
+# they also introduce a rule to generate a file name specs, to be used
+# at build time.
+SPECS = specs
+
# End of variables for you to override.
# Definition of `all' is here so that new rules inserted by sed
@@ -788,7 +795,7 @@ STAGESTUFF = *$(objext) insn-flags.h insn-config.h insn-codes.h \
xgcc$(exeext) cpp$(exeext) cc1$(exeext) $(EXTRA_PASSES) \
$(EXTRA_PARTS) $(EXTRA_PROGRAMS) gcc-cross$(exeext) cc1obj$(exeext) \
protoize$(exeext) unprotoize$(exeext) \
- specs collect2$(exeext) $(USE_COLLECT2) \
+ $(SPECS) collect2$(exeext) $(USE_COLLECT2) \
gcov-iov$(build_exeext) gcov$(exeext) gcov-dump$(exeext) \
*.[0-9][0-9].* *.[si] libcpp.a libbackend.a libgcc.mk \
$(LANG_STAGESTUFF)
@@ -994,9 +1001,9 @@ cpp$(exeext): gcc.o cppspec.o version.o intl.o prefix.o \
prefix.o version.o $(EXTRA_GCC_OBJS) $(LIBS)
# Dump a specs file to make -B./ read these specs over installed ones.
-specs: xgcc$(exeext)
+$(SPECS): xgcc$(exeext)
$(GCC_FOR_TARGET) -dumpspecs > tmp-specs
- mv tmp-specs specs
+ mv tmp-specs $(SPECS)
# We do want to create an executable named `xgcc', so we can use it to
# compile libgcc2.a.
@@ -2668,7 +2675,7 @@ mostlyclean: $(INTL_MOSTLYCLEAN) lang.mostlyclean
# Delete debugging dump files.
-rm -f *.[0-9][0-9].* */*.[0-9][0-9].*
# Delete some files made during installation.
- -rm -f specs SYSCALLS.c.X SYSCALLS.c
+ -rm -f specs $(SPECS) SYSCALLS.c.X SYSCALLS.c
-rm -f collect collect2 mips-tfile mips-tdump
# Delete files generated for fixproto
-rm -rf fix-header$(build_exeext) xsys-protos.h deduced.h tmp-deduced.h \
@@ -2841,7 +2848,7 @@ install-common: native $(EXTRA_PARTS) lang.install-common
# Don't mess with specs if it doesn't exist yet.
-if [ -f specs ] ; then \
rm -f $(DESTDIR)$(libsubdir)/specs; \
- $(INSTALL_DATA) specs $(DESTDIR)$(libsubdir)/specs; \
+ $(INSTALL_DATA) $(SPECS) $(DESTDIR)$(libsubdir)/specs; \
chmod a-x $(DESTDIR)$(libsubdir)/specs; \
fi
# Install protoize if it was compiled.
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 6a71f638671..9f74569872f 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -1,5 +1,6 @@
# GCC build-, host- and target-specific configuration file.
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+# Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
#This file is part of GCC.
@@ -1802,6 +1803,24 @@ mips*-*-netbsd*) # NetBSD/mips, either endian.
tm_file="elfos.h ${tm_file} mips/netbsd.h"
tmake_file="${tmake_file}"
;;
+mips64*-*-linux*)
+ tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h mips/linux64.h"
+ tmake_file="t-slibgcc-elf-ver t-linux mips/t-linux mips/t-linux64"
+
+ # This default ABI is a partial lie: t-linux64 overrides the
+ # DRIVER_SELF_SPEC that sets the default abi, in the spec file
+ # that is installed. What GCC thinks of as the default must
+ # remain as ABI_32 such that the SONAMEs of the libgcc shared
+ # libraries remain compatible with those of mips-linux-gnu.
+ tm_defines="MIPS_ISA_DEFAULT=1 MIPS_ABI_DEFAULT=ABI_32"
+ target_cpu_default="MASK_ABICALLS|MASK_FLOAT64|MASK_64BIT"
+ extra_parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o"
+ gnu_ld=yes
+ gas=yes
+ if test x$enable_threads = xyes; then
+ thread_file='posix'
+ fi
+ ;;
mips*-*-linux*) # Linux MIPS, either endian.
tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
case $machine in
diff --git a/gcc/config/mips/iris6.h b/gcc/config/mips/iris6.h
index ddfea8f1473..314f98ca43c 100644
--- a/gcc/config/mips/iris6.h
+++ b/gcc/config/mips/iris6.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GNU compiler. Iris version 6.
- Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002
+ Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003
Free Software Foundation, Inc.
This file is part of GNU CC.
@@ -509,3 +509,5 @@ do { \
%{shared:-hidden_symbol __do_global_ctors,__do_global_ctors_1,__do_global_dtors} \
-_SYSTYPE_SVR4 -woff 131 \
%{mabi=32: -32}%{mabi=n32: -n32}%{mabi=64: -64}%{!mabi*: -n32}"
+
+#define MIPS_TFMODE_FORMAT ibm_extended_format
diff --git a/gcc/config/mips/linux64.h b/gcc/config/mips/linux64.h
new file mode 100644
index 00000000000..ef30146c988
--- /dev/null
+++ b/gcc/config/mips/linux64.h
@@ -0,0 +1,99 @@
+/* Definitions for MIPS running Linux-based GNU systems with ELF format
+ using n32/64 abi.
+ Copyright 2002, 2003 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 2, 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 COPYING. If not, write to
+the Free Software Foundation, 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA. */
+
+/* This sets the post-install default ABI to n32. This must NOT be
+ kept in sync with the default ABI in gcc/config.gcc; it's actually
+ meant to override that. However, for correct behavior at build
+ time, we also need t-linux64 to get the build-time specs in line
+ with the setting in config.gcc. */
+#define DRIVER_DEFAULT_ABI_SELF_SPEC "%{!mabi=*:-mabi=n32}"
+#define SUBTARGET_EXTRA_SPECS \
+ { "driver_default_abi_self_spec", DRIVER_DEFAULT_ABI_SELF_SPEC },
+#define DRIVER_SELF_SPECS \
+"%{mabi-fake-default:%{!mabi=*:-mabi=32}}", \
+"%(driver_default_abi_self_spec)", \
+"%{!mips*:%{mabi=32:-mips1}%{mabi=n32:-mips3}%{mabi=64:-mips4}}"
+#undef SUBTARGET_TARGET_SWITCHES
+#define SUBTARGET_TARGET_SWITCHES \
+ { "abi-fake-default", 0, N_("Same as -mabi=32, just trickier") },
+
+#undef SUBTARGET_ASM_SPEC
+#define SUBTARGET_ASM_SPEC "\
+%{!fno-PIC:%{!fno-pic:-KPIC}} \
+%{fno-PIC:-non_shared} %{fno-pic:-non_shared} \
+%{mabi=64:-64} %{mabi=n32:-n32} \
+%{!mips*: %{mabi=n32|mabi=32:-mips3} %{mabi=64:-mips4}}"
+
+#undef LIB_SPEC
+#define LIB_SPEC "\
+%{!static: \
+ %{mabi=n32:-rpath-link %R/lib32:%R/usr/lib32} \
+ %{mabi=64:-rpath-link %R/lib64:%R/usr/lib64} \
+ %{mabi=32:-rpath-link %R/lib:%R/usr/lib}} \
+%{!shared: %{pthread:-lthread} %{profile:-lc_p} %{!profile: -lc}}"
+
+#undef LINK_SPEC
+#define LINK_SPEC "\
+%{G*} %{EB} %{EL} %{mips1} %{mips2} %{mips3} %{mips4} \
+%{bestGnum} %{shared} %{non_shared} \
+%{call_shared} %{no_archive} %{exact_version} \
+ %(endian_spec) \
+ %{!shared: \
+ %{!ibcs: \
+ %{!static: \
+ %{rdynamic:-export-dynamic} \
+ %{!dynamic-linker: \
+ %{mabi=n32: -dynamic-linker /lib32/ld.so.1} \
+ %{mabi=64: -dynamic-linker /lib64/ld.so.1} \
+ %{mabi=32: -dynamic-linker /lib/ld.so.1}}} \
+ %{static:-static}}} \
+%{mabi=n32: -melf32btsmipn32} \
+%{mabi=64: -melf64btsmip} \
+%{mabi=32: -melf32btsmip}"
+
+#undef STARTFILE_PREFIX_SPEC
+#define STARTFILE_PREFIX_SPEC "\
+%{mabi=n32: /lib32/ /usr/lib32/} \
+%{mabi=64: /lib64/ /usr/lib64/} \
+%{mabi=32: /lib/ /usr/lib/}"
+
+#undef LOCAL_LABEL_PREFIX
+#define LOCAL_LABEL_PREFIX ((mips_abi == ABI_32 || mips_abi == ABI_O64) \
+ ? "$" : ".")
+
+/* The size in bytes of a DWARF field indicating an offset or length
+ relative to a debug info section, specified to be 4 bytes in the DWARF-2
+ specification. The SGI/MIPS ABI defines it to be the same as PTR_SIZE. */
+#define DWARF_OFFSET_SIZE PTR_SIZE
+
+#undef ASM_PREFERRED_EH_DATA_FORMAT
+#if 0 /* We can't use relative addressing modes on NEWABI :-( */
+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
+ (flag_pic \
+ ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_sdata4 \
+ : DW_EH_PE_absptr)
+#endif
+
+/* GNU/Linux doesn't use the same floating-point format that IRIX uses
+ for long double. There's no need to override this here, since
+ ieee_quad_format is the default, but let's put this here to make
+ sure nobody thinks we just forgot to set it to something else. */
+#define MIPS_TFMODE_FORMAT ieee_quad_format
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 5c0b78af698..c0133fafdb2 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -5359,6 +5359,10 @@ override_options ()
else
mips16 = 0;
+#ifdef MIPS_TFMODE_FORMAT
+ real_format_for_mode[TFmode - QFmode] = &MIPS_TFMODE_FORMAT;
+#endif
+
mips_print_operand_punct['?'] = 1;
mips_print_operand_punct['#'] = 1;
mips_print_operand_punct['&'] = 1;
diff --git a/gcc/config/mips/mips.h b/gcc/config/mips/mips.h
index 2514006d181..09d46632fe3 100644
--- a/gcc/config/mips/mips.h
+++ b/gcc/config/mips/mips.h
@@ -534,6 +534,7 @@ extern void sbss_section PARAMS ((void));
#define TARGET_SWITCHES \
{ \
+ SUBTARGET_TARGET_SWITCHES \
{"no-crt0", 0, \
N_("No default crt0.o") }, \
{"int64", MASK_INT64 | MASK_LONG64, \
@@ -993,6 +994,7 @@ extern void sbss_section PARAMS ((void));
#define GAS_ASM_SPEC "%{mtune=*} %{v}"
+#define SUBTARGET_TARGET_SWITCHES
extern int mips_abi;
diff --git a/gcc/config/mips/t-linux64 b/gcc/config/mips/t-linux64
new file mode 100644
index 00000000000..cf639287770
--- /dev/null
+++ b/gcc/config/mips/t-linux64
@@ -0,0 +1,41 @@
+MULTILIB_OPTIONS = mabi=32/mabi=n32/mabi=64
+MULTILIB_DIRNAMES = o32 32 64
+MULTILIB_OSDIRNAMES = ../lib ../lib32 ../lib64
+
+EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
+
+LIB2FUNCS_EXTRA = $(srcdir)/config/mips/_tilib.c
+
+TPBIT = tp-bit.c
+
+tp-bit.c: $(srcdir)/config/fp-bit.c
+ echo '#ifdef __MIPSEL__' > tp-bit.c
+ echo '# define FLOAT_BIT_ORDER_MISMATCH' >> tp-bit.c
+ echo '#endif' >> tp-bit.c
+ echo '#if __LDBL_MANT_DIG__ == 113' >> tp-bit.c
+ echo '# define TFLOAT' >> tp-bit.c
+ cat $(srcdir)/config/fp-bit.c >> tp-bit.c
+ echo '#endif' >> tp-bit.c
+
+# This arranges for us to extract the built-in specs of the compiler
+# into specs.install. It's this file that we're going to install as
+# specs. Howver, at toolchain build time, we must use specs that
+# enforce the defaults that the compiler expects, namely, the o32 ABI,
+# instead of n32, that we want to use as the default post install.
+SPECS = specs.install
+specs: specs.install
+ # Changing the build-time default ABI from n32 to o32
+ # The post-install default ABI will remain n32
+ @if test "x`grep '!mabi=\*:-mabi=n32' specs.install`" = \
+ "x%{!mabi=*:-mabi=n32}"; then \
+ sed 's,\(!mabi=\*:-mabi\)=n32,\1=32,' < specs.install > $@ ; \
+ else \
+ echo failed, gcc/config/mips/t-linux64 needs updating >&2; \
+ false; \
+ fi
+
+# This arranges for anyone who uses gcc -print-multi-lib post
+# installation to get lists of options for each multilib to get
+# options that actually work.
+MULTILIB_EXTRA_OPTS = mabi-fake-default
+CRTSTUFF_T_CFLAGS = -mabi-fake-default
diff --git a/gcc/doc/fragments.texi b/gcc/doc/fragments.texi
index f9ef3d22b82..798745584cd 100644
--- a/gcc/doc/fragments.texi
+++ b/gcc/doc/fragments.texi
@@ -1,5 +1,5 @@
@c Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-@c 1999, 2000, 2001 Free Software Foundation, Inc.
+@c 1999, 2000, 2001, 2003 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.
@@ -147,7 +147,24 @@ at the same time. Therefore @code{MULTILIB_EXCEPTIONS} is set to
Sometimes it is desirable that when building multiple versions of
@file{libgcc.a} certain options should always be passed on to the
compiler. In that case, set @code{MULTILIB_EXTRA_OPTS} to be the list
-of options to be used for all builds.
+of options to be used for all builds. If you set this, you should
+probably set @code{CRTSTUFF_T_CFLAGS} to a dash followed by it.
+
+@findex SPECS
+@item SPECS
+Unfortunately, setting @code{MULTILIB_EXTRA_OPTS} is not enough, since
+it does not affect the build of target libraries, at least not the
+build of the default multilib. One possible work-around is to use
+@code{DRIVER_SELF_SPECS} to bring options from the @file{specs} file
+as if they had been passed in the compiler driver command line.
+However, you don't want to be adding these options after the toolchain
+is installed, so you can instead tweak the @file{specs} file that will
+be used during the toolchain build, while you still install the
+original, built-in @file{specs}. The trick is to set @code{SPECS} to
+some other filename (say @file{specs.install}), that will then be
+created out of the built-in specs, and introduce a @file{Makefile}
+rule to generate the @file{specs} file that's going to be used at
+build time out of your @file{specs.install}.
@end table
@node Host Fragment
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 34b597a0925..ebf340793ce 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -491,7 +491,7 @@ in the following sections.
-mrnames -msoft-float @gol
-m4650 -msingle-float -mmad @gol
-mstats -EL -EB -G @var{num} -nocpp @gol
--mabi=32 -mabi=n32 -mabi=64 -mabi=eabi @gol
+-mabi=32 -mabi=n32 -mabi=64 -mabi=eabi -mabi-fake-default @gol
-mfix7000 -mno-crt0 -mflush-func=@var{func} -mno-flush-func @gol
-mbranch-likely -mno-branch-likely}
@@ -7465,6 +7465,37 @@ selects the one defined by MIPS@. Both these ABIs have
64-bit code when you select a 64-bit architecture, but you
can use @option{-mgp32} to get 32-bit code instead.
+@item -mabi-fake-default
+@opindex mabi-fake-default
+You don't want to know what this option does. No, really. I mean
+it. Move on to the next option.
+
+What? You're still here? Oh, well@enddots{} Ok, here's the deal. GCC
+wants the default set of options to get the root of the multilib tree,
+and the shared library SONAMEs without any multilib-indicating
+suffixes. This is not convenience for @samp{mips64-linux-gnu}, since
+we want to default to the N32 ABI, while still being binary-compatible
+with @samp{mips-linux-gnu} if you stick to the O32 ABI@. Being
+binary-compatible means shared libraries should have the same SONAMEs,
+and libraries should live in the same location. Having O32 libraries
+in a sub-directory named say @file{o32} is not acceptable.
+
+So we trick GCC into believing that O32 is the default ABI, except
+that we override the default with some internal command-line
+processing magic. Problem is, if we stopped at that, and you then
+created a multilib-aware package that used the output of @command{gcc
+-print-multi-lib} to decide which multilibs to build, and how, and
+you'd find yourself in an awkward situation when you found out that
+some of the options listed ended up mapping to the same multilib, and
+none of your libraries was actually built for the multilib that
+@option{-print-multi-lib} claims to be the default. So we added this
+option that disables the default switcher, falling back to GCC's
+original notion of the default library. Confused yet?
+
+For short: don't ever use this option, unless you find it in the list
+of additional options to be used when building for multilibs, in the
+output of @option{gcc -print-multi-lib}.
+
@item -mmips-as
@opindex mmips-as
Generate code for the MIPS assembler, and invoke @file{mips-tfile} to
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index 45f38f0f921..bc883331f95 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -168,11 +168,12 @@ multilibs. Example nonsensical definition, where @code{-malt-abi},
A list of specs for the driver itself. It should be a suitable
initializer for an array of strings, with no surrounding braces.
-The driver applies these specs to its own command line before choosing
-the multilib directory or running any subcommands. It applies them in
-the order given, so each spec can depend on the options added by
-earlier ones. It is also possible to remove options using
-@samp{%<@var{option}} in the usual way.
+The driver applies these specs to its own command line between loading
+default @file{specs} files (but not command-line specified ones) and
+choosing the multilib directory or running any subcommands. It
+applies them in the order given, so each spec can depend on the
+options added by earlier ones. It is also possible to remove options
+using @samp{%<@var{option}} in the usual way.
This macro can be useful when a port has several interdependent target
options. It provides a way of standardizing the command line so
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 7c22f925bf8..ca3a51337f6 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -6198,12 +6198,6 @@ main (argc, argv)
process_command (argc, argv);
- /* Process DRIVER_SELF_SPECS, adding any new options to the end
- of the command line. */
-
- for (i = 0; i < ARRAY_SIZE (driver_self_specs); i++)
- do_self_spec (driver_self_specs[i]);
-
/* Initialize the vector of specs to just the default.
This means one element containing 0s, as a terminator. */
@@ -6237,6 +6231,12 @@ main (argc, argv)
if (access (specs_file, R_OK) == 0)
read_specs (specs_file, TRUE);
+ /* Process DRIVER_SELF_SPECS, adding any new options to the end
+ of the command line. */
+
+ for (i = 0; i < ARRAY_SIZE (driver_self_specs); i++)
+ do_self_spec (driver_self_specs[i]);
+
/* If not cross-compiling, look for executables in the standard
places. */
if (*cross_compile == '0')