Incorrect IFUNC use in libpthread for fork, vfork wrapper [BZ #19861]
Florian Weimer
fweimer@redhat.com
Mon Apr 11 10:02:00 GMT 2016
On 04/11/2016 11:57 AM, Andreas Schwab wrote:
> Florian Weimer <fweimer@redhat.com> writes:
>
>> I removed it, built a special libdofork.so which has a DT_NEEDED entry for
>> libpthread.so.0 only,
>
> Did you build libdofork before removing the wrapper?
Yes, I did, and I linked explicitly with -lpthread. After that, I
patched out the DT_NEEDED entry:
Dynamic segment contains 31 entries:
Addr: 0x0000000000200db8 Offset: 0x000db8 Link to section: [ 4]
'.dynstr'
Type Value
NEEDED Shared library: [libpthread.so.0]
<unknown>: 0xff 0x000000000000008c
However, the symbol version is stilled mapped to libc.so.6:
Version symbols section [ 5] '.gnu.version' contains 14 entries:
Addr: 0x000000000000043a Offset: 0x00043a Link to section: [ 3]
'.dynsym'
0: 0 *local* 0 *local*
2: 0 *local* 0 *local*
4: 0 *local* 0 *local*
6: 2 GLIBC_2.2.5(libc.so.6) 2 GLIBC_2.2.5(libc.so.6)
8: 1 *global* 1 *global*
10: 1 *global* 1 *global*
12: 1 *global* 1 *global*
Version needs section [ 6] '.gnu.version_r' contains 1 entry:
Addr: 0x0000000000000458 Offset: 0x000458 Link to section: [ 4]
'.dynstr'
000000: Version: 1 File: libc.so.6 Cnt: 1
0x0010: Name: GLIBC_2.2.5 Flags: none Version: 2
I don't know how t get rid of that.
Florian
More information about the Libc-alpha
mailing list