This is the mail archive of the libc-hacker@sourceware.org mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix s_finitel.c on ppc/ppc64


On Wed, Feb 01, 2006 at 11:41:02AM -0600, Steven Munroe wrote:
> >While comparing ppc{,64} and s390{,64} abilist differences between
> >older DFmode only long double capable glibc with current CVS glibc,
> >I noticed we are now only exporting {__,}finitel@GLIBC_2.{1,0}
> >and not also {__,}finitel@@GLIBC_2.4.  Fixed thusly:
> >  
> 
> Thanks for finding this and the libio-ldbl.h problem. I have hit this
> trying a full biarch toolchain build. But it looks there are simular
> problems with sprintf and __strtold_internal. I am hitting this in the
> powerpc glibc install for -msecure-plt bootstrap.
> 
> /opt/biarch/gcc41-ld/bin/powerpc-secure-gcc   -o
> /home/sjmunroe/toolchain/build/glibc32/malloc/memusagestat
> /home/sjmunroe/toolchain/build/glibc32/malloc/memusagestat.o  -lgd -lpng
> -lz -lm
> /opt/biarch/gcc41-ld/lib/gcc/powerpc-linux/4.1.0/../../../../lib/libm.so:
> undefined reference to `finitel@GLIBC_2.4'
> /opt/biarch/gcc41-ld/lib/gcc/powerpc-linux/4.1.0/../../../../lib/libm.so:
> undefined reference to `sprintf@GLIBC_2.4'
> /opt/biarch/gcc41-ld/lib/gcc/powerpc-linux/4.1.0/../../../../lib/libm.so:
> undefined reference to `__strtold_internal@GLIBC_2.4'
> collect2: ld returned 1 exit status
> 
> Will the fix be simular to finitel?

There are no problems with sprintf nor __strtold_internal in the
.dynsyms I have:
find . -type f | xargs grep '^\(__nldbl\|\)\(sprintf\|__strtold_internal\)'
./i386/lib.libc-2.3.90.so.abi:__strtold_internal@@GLIBC_2.0 FUNC GLOBAL DEFAULT
./i386/lib.libc-2.3.90.so.abi:sprintf@@GLIBC_2.0 FUNC GLOBAL DEFAULT
./i686/lib.i686.nosegneg.libc-2.3.90.so.abi:__strtold_internal@@GLIBC_2.0 FUNC GLOBAL DEFAULT
./i686/lib.i686.nosegneg.libc-2.3.90.so.abi:sprintf@@GLIBC_2.0 FUNC GLOBAL DEFAULT
./i686/lib.libc-2.3.90.so.abi:__strtold_internal@@GLIBC_2.0 FUNC GLOBAL DEFAULT
./i686/lib.libc-2.3.90.so.abi:sprintf@@GLIBC_2.0 FUNC GLOBAL DEFAULT
./ia64/lib.libc-2.3.90.so.abi:__strtold_internal@@GLIBC_2.2 FUNC GLOBAL DEFAULT
./ia64/lib.libc-2.3.90.so.abi:sprintf@@GLIBC_2.2 FUNC GLOBAL DEFAULT
./ppc/lib.libc-2.3.90.so.abi:__strtold_internal@@GLIBC_2.4 FUNC GLOBAL DEFAULT
./ppc/lib.libc-2.3.90.so.abi:__strtold_internal@GLIBC_2.0 FUNC GLOBAL DEFAULT
./ppc/lib.libc-2.3.90.so.abi:sprintf@@GLIBC_2.4 FUNC GLOBAL DEFAULT
./ppc/lib.libc-2.3.90.so.abi:sprintf@GLIBC_2.0 FUNC GLOBAL DEFAULT
./ppc64/lib64.libc-2.3.90.so.abi:__strtold_internal@@GLIBC_2.4 FUNC GLOBAL DEFAULT
./ppc64/lib64.libc-2.3.90.so.abi:__strtold_internal@GLIBC_2.3 FUNC GLOBAL DEFAULT
./ppc64/lib64.libc-2.3.90.so.abi:sprintf@@GLIBC_2.4 FUNC GLOBAL DEFAULT
./ppc64/lib64.libc-2.3.90.so.abi:sprintf@GLIBC_2.3 FUNC GLOBAL DEFAULT
./s390/lib.libc-2.3.90.so.abi:__strtold_internal@@GLIBC_2.4 FUNC GLOBAL DEFAULT
./s390/lib.libc-2.3.90.so.abi:__strtold_internal@GLIBC_2.0 FUNC GLOBAL DEFAULT
./s390/lib.libc-2.3.90.so.abi:sprintf@@GLIBC_2.4 FUNC GLOBAL DEFAULT
./s390/lib.libc-2.3.90.so.abi:sprintf@GLIBC_2.0 FUNC GLOBAL DEFAULT
./s390x/lib64.libc-2.3.90.so.abi:__strtold_internal@@GLIBC_2.4 FUNC GLOBAL DEFAULT
./s390x/lib64.libc-2.3.90.so.abi:__strtold_internal@GLIBC_2.2 FUNC GLOBAL DEFAULT
./s390x/lib64.libc-2.3.90.so.abi:sprintf@@GLIBC_2.4 FUNC GLOBAL DEFAULT
./s390x/lib64.libc-2.3.90.so.abi:sprintf@GLIBC_2.2 FUNC GLOBAL DEFAULT
./x86_64/lib64.libc-2.3.90.so.abi:__strtold_internal@@GLIBC_2.2.5 FUNC GLOBAL DEFAULT
./x86_64/lib64.libc-2.3.90.so.abi:sprintf@@GLIBC_2.2.5 FUNC GLOBAL DEFAULT

Furthermore, even the missing {,__}finitel@@GLIBC_2.4 in libm.so
is something that could result in such problems - {,__}finitel@@GLIBC_2.4
is still exported from libc.so and therefore it would just bind to the libc
symbol rather than libm.
The above errors sound like you are mixing a newly built libm.so
with old libc.so or something like that.

	Jakub


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]