diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc index c2397ef98a54..9a64192b0353 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_mac.cc @@ -53,9 +53,6 @@ class AtosSymbolizerProcess : public SymbolizerProcess { } void ExecuteWithDefaultArgs(const char *path_to_binary) const override { - // The `atos` binary has some issues with DYLD_ROOT_PATH on i386. - unsetenv("DYLD_ROOT_PATH"); - char pid_str[16]; internal_snprintf(pid_str, sizeof(pid_str), "%d", parent_pid_); if (GetMacosVersion() == MACOS_VERSION_MAVERICKS) { diff --git a/compiler-rt/test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc b/compiler-rt/test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc new file mode 100644 index 000000000000..f6070188d8e5 --- /dev/null +++ b/compiler-rt/test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc @@ -0,0 +1,26 @@ +// Check that when having a DYLD_ROOT_PATH set, the symbolizer still works. +// RUN: env DYLD_ROOT_PATH="/" ASAN_OPTIONS=$ASAN_OPTIONS:verbosity=2 ASAN_SYMBOLIZER_PATH=$(which atos) \ +// RUN: not %run %t 2>&1 | FileCheck %s +// +// Due to a bug in atos, this only works on x86_64. +// REQUIRES: x86_64 + +#include +#include +int main(int argc, char **argv) { + char *x = (char*)malloc(10 * sizeof(char)); + memset(x, 0, 10); + int res = x[argc]; + free(x); + free(x + argc - 1); // BOOM + // CHECK: AddressSanitizer: attempting double-free{{.*}}in thread T0 + // CHECK: Using atos at user-specified path: + // CHECK: #0 0x{{.*}} in {{.*}}free + // CHECK: #1 0x{{.*}} in main {{.*}}atos-symbolizer.cc:[[@LINE-4]] + // CHECK: freed by thread T0 here: + // CHECK: #0 0x{{.*}} in {{.*}}free + // CHECK: #1 0x{{.*}} in main {{.*}}atos-symbolizer.cc:[[@LINE-8]] + // CHECK: allocated by thread T0 here: + // CHECK: atos-symbolizer.cc:[[@LINE-13]] + return res; +} diff --git a/compiler-rt/test/asan/TestCases/Darwin/atos-symbolizer.cc b/compiler-rt/test/asan/TestCases/Darwin/atos-symbolizer.cc index 8da842238052..03cadf92d16a 100644 --- a/compiler-rt/test/asan/TestCases/Darwin/atos-symbolizer.cc +++ b/compiler-rt/test/asan/TestCases/Darwin/atos-symbolizer.cc @@ -3,10 +3,6 @@ // RUN: %clangxx_asan -O0 %s -o %t // RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:verbosity=2 ASAN_SYMBOLIZER_PATH=$(which atos) not %run %t 2>&1 | FileCheck %s -// Check that when having a DYLD_ROOT_PATH set, the symbolizer still works. -// RUN: env DYLD_ROOT_PATH="/" ASAN_OPTIONS=$ASAN_OPTIONS:verbosity=2 ASAN_SYMBOLIZER_PATH=$(which atos) \ -// RUN: not %run %t 2>&1 | FileCheck %s - #include #include int main(int argc, char **argv) {