[parisc-linux] glibc is broken because of gcc
Sébastien Bernard
seb at frankengul.org
Tue Jul 3 16:36:15 MDT 2007
John David Anglin a écrit :
>> Here is the readelf of the broken build :
>> seb at hpnux:~/glibc-2.5/build-tree/hppa-libc/rt$ readelf -a ./libc.so
>> |grep multiple_threads
>> 1230: 0013e328 4 OBJECT GLOBAL DEFAULT 32
>> __librt_multiple_threads@@GLIBC_PRIVATE
>> 2737: 0013e328 4 OBJECT LOCAL HIDDEN 32 __libc_multiple_threads
>> 3961: 0013e328 4 OBJECT GLOBAL DEFAULT 32 __librt_multiple_threads
>>
>> seb at hpnux:~/dev/glibc/glibc-2.5/build-tree/hppa-libc/rt$ readelf -a
>> librt_pic.a |grep multiple_threads
>> 18: 00000000 0 NOTYPE GLOBAL HIDDEN UND __librt_multiple_threads
>> 6: 00000000 0 NOTYPE GLOBAL DEFAULT UND __librt_multiple_threads
>> 6: 00000000 0 NOTYPE GLOBAL DEFAULT UND __librt_multiple_threads
>>
>> I don't see anything wrong. Moreover, the readelf on the correct library
>> gives exactly the same result.
>
> The error in bug 428509 is:
>
> ...
> /home/seb/dev/glibc-2.5/build-tree/hppa-libc/rt/librt_pic.a(mq_timedreceive.os):(.text+0x20): more undefined references to `__librt_multiple_threads' follow
> /usr/bin/ld: /home/seb/dev/glibc-2.5/build-tree/hppa-libc/rt/librt.so: hidden symbol `__librt_multiple_threads' isn't defined
> /usr/bin/ld: final link failed: Nonrepresentable section on output
>
> Looking at gcc PR 20218, it's clear that there are some very subtle
> issues here. So, it's not clear to me where the problem lies. It
> could be in glibc (hppa sysdep-cancel.h), binutils or gcc. The handling
> of the visibility attribute was broken prior to HJL's change, so it
> could have exposed bugs in other packages.
>
> Because of this, it was a mistake for Debian to backport this change.
> The change is only in the unreleased gcc trunk.
>
> Since the problem was introduced by a gcc change, I'd start with
> a gcc PR and mention the patch that introduced the regression.
>
> Could you do glibc builds with the gcc trunk before and after the change?
> It's best to base the PR on an unmodified version of gcc.
>
> It would help to know the exact details of the linker command that
> fails, the assembler code generated for mq_timedreceive, and the
> __librt_multiple_threads symbols in __librt_multiple_threads librt.so.
>
> Dave
Here is the detail of the link command done with gcc-4.1-4.1.2-13.
It's not clear want do you want exactly.
I join the result of :
objdump -d mq_timedreceive.os
readelf -a libc-cancellation.os
readelf -a mq_timedreceive.os
Hope this is what you're asking for.
Seb
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: dump.objdump_timedreceive
Url: http://lists.parisc-linux.org/pipermail/parisc-linux/attachments/20070703/29f98071/attachment.txt
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: dump.readelf_libc-cancel
Url: http://lists.parisc-linux.org/pipermail/parisc-linux/attachments/20070703/29f98071/attachment-0001.txt
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: dump.readelf_timedreceive
Url: http://lists.parisc-linux.org/pipermail/parisc-linux/attachments/20070703/29f98071/attachment-0002.txt
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: log.link
Url: http://lists.parisc-linux.org/pipermail/parisc-linux/attachments/20070703/29f98071/attachment-0003.txt
More information about the parisc-linux
mailing list