[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: printing exceptions?
From: |
Alexandre Oliva |
Subject: |
Re: printing exceptions? |
Date: |
30 Mar 2002 06:18:19 -0300 |
User-agent: |
Gnus/5.0805 (Gnus v5.8.5) Emacs/20.7 |
On Mar 15, 2002, Alexandre Oliva <address@hidden> wrote:
> On Mar 15, 2002, Richard Henderson <address@hidden> wrote:
>> On Fri, Mar 15, 2002 at 07:43:43PM -0300, Alexandre Oliva wrote:
>>> Another possibility that occurred to me, that would further alleviate
>>> the problem of duplicate shared libraries, would be to get GCC to no
>>> longer issue the `-lgcc_s -lc -lgcc_s' sequence, but instead, to use
>>> just `-lgcc_s -lc'.
>> Seems ok.
> Yay! I'll try to implement this in the next few days.
Err... For large values of `few' :-(
Here's the patch I came up with, that I've already done some testing
with, and that's undergoing bootstrapping now. Ok to install?
Perhaps even in 3.1? Can anybody think of further libraries that
could be removed from the former second expansion of %G?
Index: gcc/ChangeLog
from Alexandre Oliva <address@hidden>
* 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'.
Index: gcc/gcc.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/gcc.c,v
retrieving revision 1.304
diff -u -p -r1.304 gcc.c
--- gcc/gcc.c 2002/03/26 21:38:40 1.304
+++ gcc/gcc.c 2002/03/30 09:07:56
@@ -558,9 +558,9 @@ proper position among the other output f
#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 f
%{!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, st
#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
Index: gcc/config/i386/djgpp.h
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/i386/djgpp.h,v
retrieving revision 1.33
diff -u -p -r1.33 djgpp.h
--- gcc/config/i386/djgpp.h 2002/01/28 18:11:13 1.33
+++ gcc/config/i386/djgpp.h 2002/03/30 09:07:56
@@ -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} }}}}}"
--
Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer address@hidden, redhat.com}
CS PhD student at IC-Unicamp address@hidden, gnu.org}
Free Software Evangelist Professional serial bug killer