aboutsummaryrefslogtreecommitdiff
path: root/elf/Makefile
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-02-22 10:42:55 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-02-23 08:50:00 -0300
commitf4c142bb9fe6b02c0af8cfca8a920091e2dba44b (patch)
tree2b4b576da6835eb847026dad5c1a89c3abf52985 /elf/Makefile
parente2a65ecc4b30a797df7dc6529f09b712aa256029 (diff)
downloadglibc-f4c142bb9fe6b02c0af8cfca8a920091e2dba44b.tar
glibc-f4c142bb9fe6b02c0af8cfca8a920091e2dba44b.tar.gz
glibc-f4c142bb9fe6b02c0af8cfca8a920091e2dba44b.tar.bz2
glibc-f4c142bb9fe6b02c0af8cfca8a920091e2dba44b.zip
arm: Use _dl_find_object on __gnu_Unwind_Find_exidx (BZ 31405)
Instead of __dl_iterate_phdr. On ARM dlfo_eh_frame/dlfo_eh_count maps to PT_ARM_EXIDX vaddr start / length. On a Neoverse N1 machine with 160 cores, the following program: $ cat test.c #include <stdlib.h> #include <pthread.h> #include <assert.h> enum { niter = 1024, ntimes = 128, }; static void * tf (void *arg) { int a = (int) arg; for (int i = 0; i < niter; i++) { void *p[ntimes]; for (int j = 0; j < ntimes; j++) p[j] = malloc (a * 128); for (int j = 0; j < ntimes; j++) free (p[j]); } return NULL; } int main (int argc, char *argv[]) { enum { nthreads = 16 }; pthread_t t[nthreads]; for (int i = 0; i < nthreads; i ++) assert (pthread_create (&t[i], NULL, tf, (void *) i) == 0); for (int i = 0; i < nthreads; i++) { void *r; assert (pthread_join (t[i], &r) == 0); assert (r == NULL); } return 0; } $ arm-linux-gnueabihf-gcc -fsanitize=address test.c -o test Improves from ~15s to 0.5s. Checked on arm-linux-gnueabihf.
Diffstat (limited to 'elf/Makefile')
-rw-r--r--elf/Makefile2
1 files changed, 1 insertions, 1 deletions
diff --git a/elf/Makefile b/elf/Makefile
index 5d78b659ce..36c04baf02 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -34,6 +34,7 @@ routines = \
dl-addr \
dl-addr-obj \
dl-early_allocate \
+ dl-find_object \
dl-iteratephdr \
dl-libc \
dl-origin \
@@ -60,7 +61,6 @@ dl-routines = \
dl-deps \
dl-exception \
dl-execstack \
- dl-find_object \
dl-fini \
dl-init \
dl-load \