]> git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/asan/TestCases/Linux/static_tls.cc
Imported Upstream version 1.6.0+dfsg1
[rustc.git] / src / compiler-rt / test / asan / TestCases / Linux / static_tls.cc
1 // REQUIRES: asan-64-bits
2 // Regression test: __tls_get_addr interceptor must recognize static TLS.
3 //
4 // RUN: %clangxx_asan -DSHARED %s -shared -o %t-so.so -fPIC
5 // RUN: %clangxx_asan %s -ldl -pthread -o %t %t-so.so
6 // RUN: %env_asan_opts=verbosity=2 %run %t 2>&1 | FileCheck %s
7
8 // CHECK: before
9 // CHECK: __tls_get_addr: static tls
10 // CHECK: after
11
12 // XFAIL: powerpc64, aarch64
13
14 #ifndef SHARED
15 #include <stdio.h>
16
17 unsigned *f();
18 int main(int argc, char *argv[]) {
19 fprintf(stderr, "before\n");
20 f();
21 fprintf(stderr, "after\n");
22 return 0;
23 }
24 #else // SHARED
25 static __thread unsigned ThreadLocal;
26 unsigned *f() {
27 return &ThreadLocal;
28 }
29 #endif