summaryrefslogtreecommitdiff
path: root/gcc/gcc.c
diff options
context:
space:
mode:
authordavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>2002-04-04 01:15:40 +0000
committerdavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>2002-04-04 01:15:40 +0000
commitda98d11427d8b9e9f602bc3ceb97749447d8553e (patch)
treedadbe364c517553bccee685542958c5b2aa45f23 /gcc/gcc.c
parentd6507fb32a53cdc0042bea7a6c247c53f5593253 (diff)
downloadgcc-da98d11427d8b9e9f602bc3ceb97749447d8553e.tar.gz
2002-04-03 David S. Miller <davem@redhat.com>
* gcc.c (LINK_GCC_C_SEQUENCE_SPEC): New spec to override the gcc/c library sequence passed to the linker. (LINK_COMMAND_SPEC): Use it. * doc/tm.texi: Document it, and mention from LINK_COMMAND_SPEC as a macro a target can use to avoid overriding LINK_COMMAND_SPEC. * config/sparc/sparc.h (LINK_GCC_C_SEQUENCE_SPEC): Define. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51834 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gcc.c')
-rw-r--r--gcc/gcc.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/gcc/gcc.c b/gcc/gcc.c
index c9098acfc26..9bb1abd0a3f 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -448,6 +448,7 @@ or with constant text in a single argument.
%C process CPP_SPEC as a spec.
%1 process CC1_SPEC as a spec.
%2 process CC1PLUS_SPEC as a spec.
+ %3 process LINK_GCC_C_SEQUENCE_SPEC as a spec.
%| output "-" if the input for the current command is coming from a pipe.
%* substitute the variable part of a matched option. (See below.)
Note that each comma in the substituted string is replaced by
@@ -609,6 +610,13 @@ proper position among the other output files. */
/* Here is the spec for running the linker, after compiling all files. */
+/* This is overridable by the target in case they need to specify the
+ -lgcc and -lc order specially, yet not require them to override all
+ of LINK_COMMAND_SPEC. */
+#ifndef LINK_GCC_C_SEQUENCE_SPEC
+#define LINK_GCC_C_SEQUENCE_SPEC "%G %L %G"
+#endif
+
/* -u* was put back because both BSD and SysV seem to support it. */
/* %{static:} simply prevents an error message if the target machine
doesn't handle -static. */
@@ -620,7 +628,7 @@ proper position among the other output files. */
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
%(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t}\
%{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}\
- %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%G %L %G}}\
+ %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%3}}\
%{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}"
#endif
@@ -639,6 +647,7 @@ static const char *cpp_spec = CPP_SPEC;
static const char *cpp_predefines = CPP_PREDEFINES;
static const char *cc1_spec = CC1_SPEC;
static const char *cc1plus_spec = CC1PLUS_SPEC;
+static const char *link_gcc_c_sequence_spec = LINK_GCC_C_SEQUENCE_SPEC;
static const char *asm_spec = ASM_SPEC;
static const char *asm_final_spec = ASM_FINAL_SPEC;
static const char *link_spec = LINK_SPEC;
@@ -1364,6 +1373,7 @@ static struct spec_list static_specs[] =
INIT_STATIC_SPEC ("cc1", &cc1_spec),
INIT_STATIC_SPEC ("cc1_options", &cc1_options),
INIT_STATIC_SPEC ("cc1plus", &cc1plus_spec),
+ INIT_STATIC_SPEC ("link_gcc_c_sequence", &link_gcc_c_sequence_spec),
INIT_STATIC_SPEC ("endfile", &endfile_spec),
INIT_STATIC_SPEC ("link", &link_spec),
INIT_STATIC_SPEC ("lib", &lib_spec),
@@ -4749,6 +4759,12 @@ do_spec_1 (spec, inswitch, soft_matched_part)
return value;
break;
+ case '3':
+ value = do_spec_1 (link_gcc_c_sequence_spec, 0, NULL);
+ if (value != 0)
+ return value;
+ break;
+
case 'a':
value = do_spec_1 (asm_spec, 0, NULL);
if (value != 0)