diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2021-06-30 10:24:09 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2021-12-28 08:40:38 -0300 |
commit | 063f9ba220f434c7f30dd65c4cff17c0c458a7cf (patch) | |
tree | 00737e23f3b48e8d8dd338f16fc8cb98f0e6c051 /elf/Makefile | |
parent | 8c0664e2b861fd3789602cc0b0b1922b0e20cb3a (diff) | |
download | glibc-063f9ba220f434c7f30dd65c4cff17c0c458a7cf.zip glibc-063f9ba220f434c7f30dd65c4cff17c0c458a7cf.tar.gz glibc-063f9ba220f434c7f30dd65c4cff17c0c458a7cf.tar.bz2 |
elf: Avoid unnecessary slowdown from profiling with audit (BZ#15533)
The rtld-audit interfaces introduces a slowdown due to enabling
profiling instrumentation (as if LD_AUDIT implied LD_PROFILE).
However, instrumenting is only necessary if one of audit libraries
provides PLT callbacks (la_pltenter or la_pltexit symbols). Otherwise,
the slowdown can be avoided.
The following patch adjusts the logic that enables profiling to iterate
over all audit modules and check if any of those provides a PLT hook.
To keep la_symbind to work even without PLT callbacks, _dl_fixup now
calls the audit callback if the modules implements it.
Co-authored-by: Alexander Monakov <amonakov@ispras.ru>
Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Diffstat (limited to 'elf/Makefile')
-rw-r--r-- | elf/Makefile | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/elf/Makefile b/elf/Makefile index 5e4ffeb..6368b6a 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -231,13 +231,15 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \ tst-tls20 tst-tls21 tst-dlmopen-dlerror tst-dlmopen-gethostbyname \ tst-dl-is_dso tst-ro-dynamic \ tst-audit18 \ + tst-audit19b \ tst-rtld-run-static \ # reldep9 tests-internal += loadtest unload unload2 circleload1 \ neededtest neededtest2 neededtest3 neededtest4 \ tst-tls3 tst-tls6 tst-tls7 tst-tls8 tst-dlmopen2 \ tst-ptrguard1 tst-stackguard1 \ - tst-create_format1 tst-tls-surplus tst-dl-hwcaps_split + tst-create_format1 tst-tls-surplus tst-dl-hwcaps_split \ + tst-audit19a tests-container += tst-pldd tst-dlopen-tlsmodid-container \ tst-dlopen-self-container tst-preload-pthread-libc test-srcs = tst-pathopt @@ -377,6 +379,9 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ tst-dlmopen-gethostbyname-mod tst-ro-dynamic-mod \ tst-auditmod18 \ tst-audit18mod \ + tst-auditmod19a \ + tst-auditmod19b \ + tst-audit19bmod \ # Most modules build with _ISOMAC defined, but those filtered out # depend on internal headers. @@ -1566,6 +1571,13 @@ $(objpfx)tst-audit18.out: $(objpfx)tst-auditmod18.so \ $(objpfx)tst-audit18mod.so tst-audit18-ARGS = -- $(host-test-program-cmd) +$(objpfx)tst-audit19a.out: $(objpfx)tst-auditmod19a.so +tst-audit19a-ENV = LD_AUDIT=$(objpfx)tst-auditmod19a.so + +$(objpfx)tst-audit19b.out: $(objpfx)tst-auditmod19b.so +$(objpfx)tst-audit19b: $(objpfx)tst-audit19bmod.so +tst-audit19b-ARGS = -- $(host-test-program-cmd) + # tst-sonamemove links against an older implementation of the library. LDFLAGS-tst-sonamemove-linkmod1.so = \ -Wl,--version-script=tst-sonamemove-linkmod1.map \ |