This is the mail archive of the libc-help@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] |
Hi, I'm writing a small preload library to trace pthread_* calls, and am running into a bit of a chicken-and-egg problem. In order to find the original function, I use dlsym(RTLD_NEXT, ...) to look up the symbol on the first invocation. On Linux, this works find, however on the Hurd and on FreeBSD, the libdl invokes pthread_once, which is then dispatched into my preload library, where I still haven't found the real function. This could be due to a difference in dlsym() implementation (so it is sheer luck that it works on Linux), or a true behavioural difference between platforms. In any case, I am wondering if it is actually possible to redirect the pthread_* functions in this way, or if a different approach is required. LD_DEBUG=all output is attached for Linux (good) and FreeBSD (bad). Program source[1] is also available. Simon [1] http://www.hogyros.de/download/mutextrace-0.1.2.tar.gz
Attachment:
good.bz2
Description: Binary data
Attachment:
bad.bz2
Description: Binary data
Attachment:
signature.asc
Description: OpenPGP digital signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |