xref: /aosp_15_r20/external/compiler-rt/test/tsan/Darwin/symbolizer-dladdr.cc (revision 7c3d14c8b49c529e04be81a3ce6f5cc23712e4c6)
1*7c3d14c8STreehugger Robot // RUN: %clangxx_tsan %s -o %t
2*7c3d14c8STreehugger Robot // RUN: %env_tsan_opts=verbosity=2:external_symbolizer_path= %deflake %run %t | FileCheck %s
3*7c3d14c8STreehugger Robot #include "../test.h"
4*7c3d14c8STreehugger Robot 
5*7c3d14c8STreehugger Robot int GlobalData[10];
6*7c3d14c8STreehugger Robot 
Thread(void * a)7*7c3d14c8STreehugger Robot void *Thread(void *a) {
8*7c3d14c8STreehugger Robot   barrier_wait(&barrier);
9*7c3d14c8STreehugger Robot   GlobalData[2] = 42;
10*7c3d14c8STreehugger Robot   return 0;
11*7c3d14c8STreehugger Robot }
12*7c3d14c8STreehugger Robot 
main()13*7c3d14c8STreehugger Robot int main() {
14*7c3d14c8STreehugger Robot   barrier_init(&barrier, 2);
15*7c3d14c8STreehugger Robot   print_address("addr=", 1, GlobalData);
16*7c3d14c8STreehugger Robot   pthread_t t;
17*7c3d14c8STreehugger Robot   pthread_create(&t, 0, Thread, 0);
18*7c3d14c8STreehugger Robot   GlobalData[2] = 43;
19*7c3d14c8STreehugger Robot   barrier_wait(&barrier);
20*7c3d14c8STreehugger Robot   pthread_join(t, 0);
21*7c3d14c8STreehugger Robot }
22*7c3d14c8STreehugger Robot 
23*7c3d14c8STreehugger Robot // CHECK: External symbolizer is explicitly disabled.
24*7c3d14c8STreehugger Robot // CHECK: Using dladdr symbolizer.
25*7c3d14c8STreehugger Robot // CHECK: addr=[[ADDR:0x[0-9,a-f]+]]
26*7c3d14c8STreehugger Robot // CHECK: WARNING: ThreadSanitizer: data race
27*7c3d14c8STreehugger Robot // CHECK: Location is global 'GlobalData' at [[ADDR]] ({{.*}}+0x{{[0-9,a-f]+}})
28