This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
libgcc_s.so.1 ASIS won't work with glibc.
On Mon, Jul 02, 2001 at 12:57:40PM -0700, H . J . Lu wrote:
> > >
> > > Here is an UNTESTED patch. I don't believe it is even correct. It
> > > only compiles. I think unwind-dw2.c is the best place to add
> > > __frame_state_for. Any comments?
> >
> > Richard explicitely said he does not want to put this old cruft into
> > libgcc_s, so we need to hack this in glibc for platforms which need that.
>
> Same here. See
>
> /* This provides the backward compatibility for existing binaries
> compiled against g++ v2 dwarf 2 frame based exception.
>
> FIXME: We really need this in libgcc.a only. */
>
> It should be in libgcc.a only, not in libgcc_s.so. I will found a way
> to do it after we get it to work first.
>
I think we have a serious problem with glibc. The current glibc has
# objdump --dynamic-sym /lib/libc.so.6 | grep frame
0000000000112c70 g DF .text 000000000000002d GLIBC_2.0 __register_frame
00000000001138a0 g DF .text 000000000000024b GLIBC_2.0 __frame_state_for
0000000000112d20 g DF .text 000000000000002d GLIBC_2.0 __register_frame_table
0000000000112d50 g DF .text 00000000000000ac GLIBC_2.0 __deregister_frame_info
0000000000112e00 g DF .text 000000000000002a GLIBC_2.0 __deregister_frame
0000000000112ca0 g DF .text 000000000000007d GLIBC_2.0 __register_frame_info_table
0000000000112be0 g DF .text 0000000000000081 GLIBC_2.0 __register_frame_info
and gcc 3.0 has
# objdump --dynamic-sym libgcc_s.so.1 | grep __register_frame
0000000000004e90 g DF .text 000000000000002c GLIBC_2.0 __register_frame
0000000000004f80 g DF .text 000000000000002c GLIBC_2.0 __register_frame_table
0000000000004dd0 g DF .text 000000000000008c GCC_3.0 __register_frame_info_bases
0000000000004ec0 g DF .text 0000000000000090 GCC_3.0 __register_frame_info_table_bases
0000000000004f50 g DF .text 000000000000002a GLIBC_2.0 __register_frame_info_table
0000000000004e60 g DF .text 000000000000002a GLIBC_2.0 __register_frame_info
I don't believe it will ever work since __register_frame,
__register_frame_table, __register_frame_info_table and
__register_frame_info have different ABIs in libgcc_s.so.1 and
libc.so.6. You cannot use the same version, GLIBC_2.0, in
libgcc_s.so.1. libgcc_s.so.1 should use GCC_3.0 for its verion of
those functions since the ones in libgcc_s.so.1 won't work with
the existing binaries compiled with g++ v2 dwarf2 frame based EH.
glibc somehow has to provide the GLIBC_2.0 version of those functions
if we want to support them in glibc compiled with gcc 3.0. One
way to get it to work is we provide the backward compatible g++ v2
dwarf2 frame based EH in libc.so.6 and let libgcc_s.so.1 provide the
g++ v3 dwarf2 frame based EH. Did I miss something?
H.J.