This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
symbol clarification please?
- From: Jack Howarth <howarth at fuse dot net>
- To: libc-alpha at sources dot redhat dot com
- Cc: drepper at redhat dot com
- Date: 12 Aug 2002 23:08:29 -0400
- Subject: symbol clarification please?
Ulrich,
Sorry if this is a stupid question, but what is the difference between
the "objdump --dynamic-sym" output of...
000266b0 g DF .text 000000c8 GLIBC_2.0 __divdi3
and
00026680 g DF .text 000000c8 (GLIBC_2.0) __divdi3
Are the ()'s for .hidden or what? I ask because the first symbol
comes from the glibc built from libgcc-compat code in current
glibc-2-2-branch.whereas the second one comes from Franz Sirl's
proposed replacement patch for the symbol fix-up. Ignoring
whether the fixup goes into gcc 3.2 or not, I am perplexed by
this difference because the second case tickled the binutils
bug that HJ Lu just fixed.
http://sources.redhat.com/ml/binutils/2002-08/msg00175.html
This is all against current gcc 2.95.4 which has...
00002628 g DF .text 000000dc GLIBC_2.0 __divdi3
in /lib/libgcc_so.1.
I am perplexed why the original libgcc-compat patch didn't tickle
this binutils problem whereas the revised libgcc-compat patch
did...generating link errors like...
> gcc -g -O2 -o .libs/check-program check-program.o ./.libs/libeel-2.so
-L/usr/X11R6/lib /usr/lib/libgailutil.so /usr/lib/libgnomeui-2.so
-L/usr/lib -lSM -lICE /usr/lib/libbonoboui-2.so
/usr/lib/libgnomecanvas-2.so /usr/lib/libgnome-2.so /usr/lib/libesd.so
> /lib/libgcc_s.so.1(*IND*+0x0): multiple definition of
`__divdi3@GLIBC_2.0'
> /lib/libc.so.6(.text+0xa40): first defined here
> /lib/libgcc_s.so.1(*IND*+0x0): multiple definition of
`__umoddi3@GLIBC_2.0'
> /lib/libc.so.6(.text+0xbac): first defined here
> /lib/libgcc_s.so.1(*IND*+0x0): multiple definition of
`__udivdi3@GLIBC_2.0'
> /lib/libc.so.6(.text+0xb88): first defined here
> /lib/libgcc_s.so.1(*IND*+0x0): multiple definition of
`__moddi3@GLIBC_2.0'
> /lib/libc.so.6(.text+0xb08): first defined here
...with stock binutils 2.13.90.0.3.
So, the (GLIBC_2.0) in libc.so.6 tickled the binutils bug
causing conflicting symbols with the GLIBC_2.0 versioned
symbol in libgcc.so.1. However the original libgcc-compat
patch has a GLIBC_2.0 versioned symbol which doesn't tickle
the binutils bug.
I have attached the original glibc-libgcc-compat-ppc-5a patch,
currently in glibc-2-2-branch and the revised one,
glibc-libgcc-compat-ppc-8-2_2d.
Thanks in advance for any clarifications between the differences in
the symbols handling in these two patches.
Jack
ps I ask because it looks like Franz's proposed fixup for symbol
handling in gcc 3.2 may get rejected but I am unclear if we still
would want his revised libgcc-compat patch instead of what currently
is in glibc-2-2-branch. Before the binutils fix, use of the revised
patch would not have been possible because of the symbol conflict
errors on linking against such a glibc.