https://sourceware.org/bugzilla/show_bug.cgi?id=18703
--- Comment #17 from Sriraman Tallam <tmsriram at google dot com> --- On Wed, Jul 22, 2015 at 11:24 AM, hjl.tools at gmail dot com <sourceware-bugzi...@sourceware.org> wrote: > https://sourceware.org/bugzilla/show_bug.cgi?id=18703 > > --- Comment #16 from H.J. Lu <hjl.tools at gmail dot com> --- > (In reply to Sriraman Tallam from comment #15) >> >> H.J. : Can we use Cary's idea to fix libgcc/config/i386/cpuinfo.c to >> make libgcc_s.so.1 do the right thing with gold too until this issue >> is resolved in some manner? >> > > You can pass -fuse-ld=bfd to build libgcc_s.so.1 on Linux: > > diff --git a/libgcc/config/i386/t-linux b/libgcc/config/i386/t-linux > index 11bb46e..12aab16 100644 > --- a/libgcc/config/i386/t-linux > +++ b/libgcc/config/i386/t-linux > @@ -3,4 +3,8 @@ > # t-slibgcc-elf-ver and t-linux > SHLIB_MAPFILES = libgcc-std.ver $(srcdir)/config/i386/libgcc-glibc.ver > > +# Work around gold bug: > +# https://sourceware.org/bugzilla/show_bug.cgi?id=18703 > +SHLIB_LDFLAGS += -fuse-ld=bfd > + > HOST_LIBGCC2_CFLAGS += -mlong-double-80 -DUSE_ELF_SYMVER > > Or you have to make sure those symbols in both libgcc.a and libgcc.so.1 > are correct. Thanks this works. However, i ran into another problem. Our GCC build does not use -fvisibility=hidden to build libgcc.a. So, __cpu_indicator_init is GLOBAL in libgcc.a and not LOCAL. Which means any shared object that references __cpu_indicator_init will still create a PLT entry for it and fail at run-time. This is not directly related to this bug but thought I would mention it here while we are fixing this problem. Thanks Sri > > -- > You are receiving this mail because: > You reported the bug. -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils