1 // RUN: %clang -g %s -o %t
2 // RUN: %clang -g %s -DBUILD_SO -fPIC -o %t-so.so -shared
3 // RUN: %run %t 2>&1 | FileCheck %s
7 // `__tls_get_addr` is somehow not invoked.
10 // These don't intercept __tls_get_addr.
11 // XFAIL: lsan,hwasan,ubsan
13 // FIXME: Fails for unknown reasons.
14 // UNSUPPORTED: powerpc64le-target-arch
23 // CHECK-COUNT-2: __sanitizer_get_dtls_size:
24 size_t __sanitizer_get_dtls_size(const void *ptr
)
25 __attribute__((disable_sanitizer_instrumentation
)) {
26 fprintf(stderr
, "__sanitizer_get_dtls_size: %p\n", ptr
);
30 typedef long *(*get_t
)();
32 void *Thread(void *unused
) { return GetTls(); }
34 int main(int argc
, char *argv
[]) {
36 snprintf(path
, sizeof(path
), "%s-so.so", argv
[0]);
39 void *handle
= dlopen(path
, RTLD_LAZY
);
41 fprintf(stderr
, "%s\n", dlerror());
43 GetTls
= (get_t
)dlsym(handle
, "GetTls");
44 assert(dlerror() == 0);
47 pthread_create(&t
, 0, Thread
, 0);
49 pthread_create(&t
, 0, Thread
, 0);
54 __thread
long huge_thread_local_array
[1 << 17];
55 long *GetTls() { return &huge_thread_local_array
[0]; }