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 /include | |
parent | 8c0664e2b861fd3789602cc0b0b1922b0e20cb3a (diff) | |
download | glibc-063f9ba220f434c7f30dd65c4cff17c0c458a7cf.tar.gz glibc-063f9ba220f434c7f30dd65c4cff17c0c458a7cf.tar.xz glibc-063f9ba220f434c7f30dd65c4cff17c0c458a7cf.zip |
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 'include')
-rw-r--r-- | include/link.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/link.h b/include/link.h index c1c382ccfa..6a9f788d2b 100644 --- a/include/link.h +++ b/include/link.h @@ -367,8 +367,10 @@ extern struct r_debug_extended _r_debug_extended attribute_hidden; #if __ELF_NATIVE_CLASS == 32 # define symbind symbind32 +# define LA_SYMBIND "la_symbind32" #elif __ELF_NATIVE_CLASS == 64 # define symbind symbind64 +# define LA_SYMBIND "la_symbind64" #else # error "__ELF_NATIVE_CLASS must be defined" #endif |