Adhemerval Zanella
f4c142bb9f
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.
2024-02-23 08:50:00 -03:00
..
2024-01-01 10:53:40 -08:00
2024-02-01 09:31:33 -03:00
2024-01-01 10:53:40 -08:00
2020-03-06 09:53:24 -03:00
2024-02-01 11:02:01 +00:00
2024-01-01 10:53:40 -08:00
2020-03-06 09:53:24 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-07-17 10:08:10 -04:00
2022-06-05 12:09:02 -07:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-02-05 15:29:23 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-02-23 08:50:00 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2018-02-01 21:01:00 +00:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-03-30 10:50:50 -03:00
2024-01-01 10:53:40 -08:00
2022-11-01 09:51:06 -03:00
2024-01-01 10:53:40 -08:00
2020-06-22 11:09:50 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2023-07-17 10:08:10 -04:00
2022-10-20 11:23:05 -03:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00
2024-01-01 10:53:40 -08:00