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


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: Incorrect IFUNC use in libpthread for fork, vfork wrapper [BZ #19861]


On 03/30/2016 09:51 PM, Richard Henderson wrote:

Come to think of it, we had the same situation of the same symbol version being
provided by two libraries prior to removing fork from libpthread too, so when
providing compatibility symbols we must be mindful of that -- proper
dependencies on libpthread may well not exist.

Considering that libpthread has a DT_NEEDED entry for libc.so.6, doe we actually need the compatibility wrapper?

I removed it, built a special libdofork.so which has a DT_NEEDED entry for libpthread.so.0 only, and got this with a glibc built that doesn't have the compatibility wrapper:

     12074:     symbol=fork;  lookup in file=/tmp/boom [0]
     12074:     symbol=fork;  lookup in file=./nptl/libpthread.so.0 [0]
     12074:     symbol=fork;  lookup in file=./libdofork.so [0]
     12074:     symbol=fork;  lookup in file=./libc.so.6 [0]
12074: binding file ./libdofork.so [0] to ./libc.so.6 [0]: normal symbol `fork' [GLIBC_2.2.5]

So it seems to work just as before.

The difference will be visible with dlopen, but will that matter?

Florian


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