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: aarch64 13// binutils 2.26 has a change that causes this test to fail on powerpc64. 14// UNSUPPORTED: powerpc64 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 32