]> git.proxmox.com Git - rustc.git/blame - src/compiler-rt/test/asan/TestCases/Linux/static_tls.cc
New upstream version 1.12.0+dfsg1
[rustc.git] / src / compiler-rt / test / asan / TestCases / Linux / static_tls.cc
CommitLineData
92a42be0
SL
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
3157f602 12// XFAIL: aarch64
5bcae85e
SL
13// binutils 2.26 has a change that causes this test to fail on powerpc64.
14// UNSUPPORTED: powerpc64
92a42be0
SL
15
16#ifndef SHARED
17#include <stdio.h>
18
19unsigned *f();
20int main(int argc, char *argv[]) {
21 fprintf(stderr, "before\n");
22 f();
23 fprintf(stderr, "after\n");
24 return 0;
25}
26#else // SHARED
27static __thread unsigned ThreadLocal;
28unsigned *f() {
29 return &ThreadLocal;
30}
31#endif