brintos

brintos / llvm-project-archived public Read only

0
0
Text · 910 B · 8ef6ba4 Raw
36 lines · cpp
1// REQUIRES: asan-64-bits2// Regression test: __tls_get_addr interceptor must recognize static TLS.3//4// RUN: %clangxx_asan -DSHARED %s -shared -o %t-so.so -fPIC5// RUN: %clangxx_asan %s -ldl -pthread -o %t %t-so.so6// RUN: %env_asan_opts=verbosity=2 %run %t 2>&1 | FileCheck %s7 8// CHECK: before9// CHECK: __tls_get_addr: static tls10// CHECK: after11 12// XFAIL: target=aarch64{{.*}}13// binutils 2.26 has a change that causes this test to fail on powerpc64.14// UNSUPPORTED: target=powerpc64{{.*}}15 16/// We call __tls_get_addr early in GetTls to work around an issue for glibc<2.25,17/// so we don't get a log for f().18// REQUIRES: glibc-2.2719 20#ifndef SHARED21#include <stdio.h>22 23unsigned *f();24int main(int argc, char *argv[]) {25  fprintf(stderr, "before\n");26  f();27  fprintf(stderr, "after\n");28  return 0;29}30#else  // SHARED31static __thread unsigned ThreadLocal;32unsigned *f() {33  return &ThreadLocal;34}35#endif36