diff options
author | davem <davem@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-04 01:15:40 +0000 |
---|---|---|
committer | davem <davem@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-04-04 01:15:40 +0000 |
commit | da98d11427d8b9e9f602bc3ceb97749447d8553e (patch) | |
tree | dadbe364c517553bccee685542958c5b2aa45f23 /gcc/gcc.c | |
parent | d6507fb32a53cdc0042bea7a6c247c53f5593253 (diff) | |
download | gcc-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.c | 18 |
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) |