From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeffrey A Law To: hjl@lucon.org (H.J. Lu) Cc: kenner@vlsi1.ultra.nyu.edu (Richard Kenner), gcc2@cygnus.com, egcs@cygnus.com Subject: Re: gcc 2.8.0 is broken on linux/x86 and more bug Date: Thu, 11 Dec 1997 23:56:00 -0000 Message-id: <17146.881913533@hurl.cygnus.com> References: X-SW-Source: 1997-12/msg00705.html 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