This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: gcc 2.8.0 is broken on linux/x86 and more bug
- To: hjl at lucon dot org (H.J. Lu)
- Subject: Re: gcc 2.8.0 is broken on linux/x86 and more bug
- From: Jeffrey A Law <law at cygnus dot com>
- Date: Fri, 12 Dec 1997 00:58:53 -0700
- cc: kenner at vlsi1 dot ultra dot nyu dot edu (Richard Kenner), gcc2 at cygnus dot com, egcs at cygnus dot com
- Reply-To: egcs at cygnus dot com
In message <m0xgM3M-0004ecC@ocean.lucon.org>you write:
> __register_frame () change in gcc 2.8.0 causes a big problem.
> Since __register_frame () called in crtbegin.o is in libgcc2.c and
> gcc -shared includes crtbegin.o and -lgcc, any libc.so built by
> previous gcc has __register_frame () in libc.so. Now the ABI for
> __register_frame () is changed, that is a big mess for Linux since
> shared libraries are used a lot. When the ABI of a function in
> shared library is changed like this, it doesn't work too well.
It seems to me that we need two interfaces one with the old way one
with the new way.
Furthermore, we must avoid calling "free" on any of the objects which
come from static storage instead of malloc. Thus, we have to keep track
of which interface was used for each object so that we know whether or
not its memory should be free'd.
The compiler should always emit calls to the new interfaces; the old
interfaces would be for existing copies of ld.so which use the old
interfaces.
jeff