diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/i386/djgpp.h | 4 | ||||
-rw-r--r-- | gcc/gcc.c | 26 |
3 files changed, 29 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f92afc0..eae2a27 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2002-03-31 Alexandre Oliva <aoliva@redhat.com> + + * gcc.c (LIBGCC_SPEC): Folded %L and duplicate %G here... + (LINK_COMMAND_SPEC): ... from here. + (init_gcc_specs): Duplicate it here too, omitting + shared_name in the second copy. + (init_spec): Test for duplicate + * config/i386/djgpp.h (LINK_COMMAND_SPEC): Remove `%L %G'. + 2002-03-30 David S. Miller <davem@redhat.com> * config/sparc/linux.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define. diff --git a/gcc/config/i386/djgpp.h b/gcc/config/i386/djgpp.h index 600a11e..ba30600 100644 --- a/gcc/config/i386/djgpp.h +++ b/gcc/config/i386/djgpp.h @@ -1,5 +1,5 @@ /* Configuration for an i386 running MS-DOS with DJGPP. - Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is part of GNU CC. @@ -106,7 +106,7 @@ Boston, MA 02111-1307, USA. */ \t%{r} %{s} %{t} %{u*} %{x} %{z} %{Z}\ \t%{!A:%{!nostdlib:%{!nostartfiles:%S}}}\ \t%{static:} %{L*} %D %o\ -\t%{!nostdlib:%{!nodefaultlibs:%G %L %G}}\ +\t%{!nostdlib:%{!nodefaultlibs:%G}}\ \t%{!A:%{!nostdlib:%{!nostartfiles:%E}}}\ \t-Tdjgpp.djl %{T*}}}}}}}\n\ %{!c:%{!M:%{!MM:%{!E:%{!S:stubify %{v} %{o*:%*} %{!o*:a.out} }}}}}" @@ -558,9 +558,9 @@ proper position among the other output files. */ #ifndef LIBGCC_SPEC #if defined(LINK_LIBGCC_SPECIAL) || defined(LINK_LIBGCC_SPECIAL_1) /* Have gcc do the search for libgcc.a. */ -#define LIBGCC_SPEC "libgcc.a%s" +#define LIBGCC_SPEC "libgcc.a%s %L libgcc.a%s" #else -#define LIBGCC_SPEC "-lgcc" +#define LIBGCC_SPEC "-lgcc %L -lgcc" #endif #endif @@ -620,7 +620,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:%G}}\ %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}" #endif @@ -1426,7 +1426,16 @@ init_gcc_specs (obstack, shared_name, static_name, eh_name) #else shared_name, #endif - "}}}", NULL); + "}}} %L ", + "%{static|static-libgcc:", static_name, " ", eh_name, + "}%{!static:%{!static-libgcc:", + "%{!shared:%{!shared-libgcc:", static_name, " ", + eh_name, "}%{shared-libgcc:", + static_name, "}}", +#ifdef LINK_EH_SPEC + "%{shared:%{!shared-libgcc:", static_name, "}}", +#endif + "}}", NULL); obstack_grow (obstack, buf, strlen (buf)); free (buf); @@ -1507,7 +1516,7 @@ init_spec () when given the proper command line arguments. */ while (*p) { - if (in_sep && *p == '-' && strncmp (p, "-lgcc", 5) == 0) + if (in_sep && *p == '-' && strncmp (p, "-lgcc %L -lgcc", 14) == 0) { init_gcc_specs (&obstack, #ifdef NO_SHARED_LIBGCC_MULTILIB @@ -1518,10 +1527,11 @@ init_spec () , "-lgcc", "-lgcc_eh"); - p += 5; + p += 14; in_sep = 0; } - else if (in_sep && *p == 'l' && strncmp (p, "libgcc.a%s", 10) == 0) + else if (in_sep && *p == 'l' + && strncmp (p, "libgcc.a%s %L libgcc.a%s", 24) == 0) { /* Ug. We don't know shared library extensions. Hope that systems that use this form don't do shared libraries. */ @@ -1534,7 +1544,7 @@ init_spec () , "libgcc.a%s", "libgcc_eh.a%s"); - p += 10; + p += 24; in_sep = 0; } else |