Index: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc =================================================================== --- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc +++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc @@ -48,6 +48,9 @@ // Attempts to demangle the name via __cxa_demangle from __cxxabiv1. const char *DemangleCXXABI(const char *name) { + if (name[0] != '_' || name[1] != 'Z') + return name; + // FIXME: __cxa_demangle aggressively insists on allocating memory. // There's not much we can do about that, short of providing our // own demangler (libc++abi's implementation could be adapted so that Index: compiler-rt/trunk/test/tsan/Darwin/symbolizer-dladdr.cc =================================================================== --- compiler-rt/trunk/test/tsan/Darwin/symbolizer-dladdr.cc +++ compiler-rt/trunk/test/tsan/Darwin/symbolizer-dladdr.cc @@ -3,10 +3,12 @@ #include "../test.h" int GlobalData[10]; +long long x; void *Thread(void *a) { barrier_wait(&barrier); GlobalData[2] = 42; + x = 7; return 0; } @@ -18,6 +20,7 @@ pthread_t t; pthread_create(&t, 0, Thread, 0); GlobalData[2] = 43; + x = 8; barrier_wait(&barrier); pthread_join(t, 0); } @@ -27,3 +30,5 @@ // CHECK: addr=[[ADDR:0x[0-9,a-f]+]] // CHECK: WARNING: ThreadSanitizer: data race // CHECK: Location is global 'GlobalData' at [[ADDR]] ({{.*}}+0x{{[0-9,a-f]+}}) +// CHECK: WARNING: ThreadSanitizer: data race +// CHECK: Location is global 'x' at {{.*}} ({{.*}}+0x{{[0-9,a-f]+}})