From 79af0fbbf1e6b52196c55f0adc4fd4395a91f00a Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Wed, 25 Nov 2015 23:03:59 +0000 Subject: [PATCH] add __tls_get_new regression test --- src/regression/tls_get_new-dtv.c | 38 ++++++++++++++++++++++++++++ src/regression/tls_get_new-dtv_dso.c | 13 ++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/regression/tls_get_new-dtv.c create mode 100644 src/regression/tls_get_new-dtv_dso.c diff --git a/src/regression/tls_get_new-dtv.c b/src/regression/tls_get_new-dtv.c new file mode 100644 index 0000000..a183fff --- /dev/null +++ b/src/regression/tls_get_new-dtv.c @@ -0,0 +1,38 @@ +// __tls_get_new did not allocate new dtv for threads properly +#include +#include +#include "test.h" + +#define N 10 + +#define T(c) ((c) || (t_error(#c " failed\n"),0)) + +static pthread_barrier_t b; +static void *mod; + +static void *start(void *a) +{ + void *(*f)(void); + + pthread_barrier_wait(&b); + T(f = dlsym(mod, "f")); + f(); + return 0; +} + +int main() +{ + pthread_t td[N]; + int i; + + pthread_barrier_init(&b, 0, N+1); + for (i=0; i