[PATCH v2 2/6] elf: Avoid unnecessary slowdown from profiling with audit (BZ#15533)
Adhemerval Zanella
adhemerval.zanella@linaro.org
Tue Jul 27 16:12:57 GMT 2021
On 19/07/2021 11:33, Adhemerval Zanella wrote:
> diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c
> index e13a672ade..2abcfc996f 100644
> --- a/elf/dl-reloc.c
> +++ b/elf/dl-reloc.c
> @@ -181,7 +181,17 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[],
> #ifdef SHARED
> /* If we are auditing, install the same handlers we need for profiling. */
> if ((reloc_mode & __RTLD_AUDIT) == 0)
> - consider_profiling |= GLRO(dl_audit) != NULL;
> + {
> + struct audit_ifaces *afct = GLRO(dl_audit);
> + for (unsigned int cnt = 0; cnt < GLRO(dl_naudit); ++cnt)
> + {
> + /* Profiling is needed only if PLT hooks are provided. */
> + if (afct->ARCH_LA_PLTENTER != NULL
> + || afct->ARCH_LA_PLTEXIT != NULL)
> + consider_profiling = 1;
> + afct = afct->next;
> + }
> + }
> #elif defined PROF
This is wrong since it disables la_symbind() for lazy resolution
if the audit modules does not provide the plt callbacks as well.
I will update the patch to now call la_symbind() on _dl_fixup() if
la_symbind() is set.
More information about the Libc-alpha
mailing list