[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
*** SPAM LEVEL 4.448 *** Dynamic linker behaviour difference between Lin
From: |
Simon Richter |
Subject: |
*** SPAM LEVEL 4.448 *** Dynamic linker behaviour difference between Linux, Hurd and FreeBSD |
Date: |
Fri, 03 May 2013 17:11:04 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130116 Icedove/10.0.12 |
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
good.bz2
Description: Binary data
bad.bz2
Description: Binary data
signature.asc
Description: OpenPGP digital signature
- *** SPAM LEVEL 4.448 *** Dynamic linker behaviour difference between Linux, Hurd and FreeBSD,
Simon Richter <=