mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-03 04:12:10 +08:00
35fab451d9
We interpose a lot of libC functions (dlopen, fork, pthread_create, etc.). Some of these functions have versions. For example, % nm -D /lib64/gprofng/libgp-collector.so | grep thread_create@ | sort 000000000004b420 T pthread_create@GLIBC_2.34 000000000004b490 T pthread_create@GLIBC_2.17 000000000004b500 T pthread_create@GLIBC_2.2.5 000000000004b570 T pthread_create@GLIBC_2.1 000000000004b5e0 T pthread_create@GLIBC_2.0 Our library does not set the default version for symbols. This is correct because we don't know which libC will be used. gcc and g++ links differently the version symbols when the default version is not set. c-linker is using our pthread_create@GLIBC_2.34 and c++-linker is using our pthread_create@GLIBC_2.0 by default. The current implementation of the interposed functions is: If we are in our pthread_create@GLIBC_<NN>, we use dlvsym (dlflag, "pthread_create", "GLIBC_<NN>") to find and call the same function from libC. In the test from PR 30360, pthread_create@GLIBC_2.0 is not in the current libC. We need to call the default version symbol from libC. gprofng/ChangeLog 2023-04-16 Vladimir Mezentsev <vladimir.mezentsev@oracle.com> PR gprofng/30360 * libcollector/iotrace.c: Find and call a default libC version symbol. * libcollector/dispatcher.c: Likewise. * libcollector/iotrace.c: Likewise. * libcollector/linetrace.c: Likewise. * libcollector/mmaptrace.c: Likewise. * libcollector/synctrace.c: Likewise. * libcollector/collector.h (REAL_DCL): Remove an unused argument. |
||
---|---|---|
.. | ||
aclocal.m4 | ||
CHK_LIBC_OBJ | ||
collector.c | ||
collector.h | ||
collectorAPI.c | ||
configure | ||
configure.ac | ||
descendants.h | ||
dispatcher.c | ||
envmgmt.c | ||
gethrtime.c | ||
heaptrace.c | ||
hwprofile.c | ||
hwprofile.h | ||
iolib.c | ||
iotrace.c | ||
jprofile.c | ||
libcol_hwcdrv.c | ||
libcol_hwcfuncs.c | ||
libcol_util.c | ||
libcol_util.h | ||
libcol-i386-dis.c | ||
libgprofng.ver | ||
linetrace.c | ||
Makefile.am | ||
Makefile.in | ||
memmgr.c | ||
memmgr.h | ||
mmaptrace.c | ||
profile.c | ||
synctrace.c | ||
tsd.c | ||
tsd.h | ||
unwind.c |