diff options
author | Alexey Samsonov <samsonov@google.com> | 2013-09-03 13:22:51 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2013-09-03 13:22:51 +0000 |
commit | 5b5c99d219884c4356d0ce47b896ed7c4d098cb2 (patch) | |
tree | 8be286248948affab8edeec956852db1eed2bac3 /compiler-rt | |
parent | aa15689c798b0d67b624f98aef07c2064b5559b8 (diff) | |
download | bcm5719-llvm-5b5c99d219884c4356d0ce47b896ed7c4d098cb2.tar.gz bcm5719-llvm-5b5c99d219884c4356d0ce47b896ed7c4d098cb2.zip |
ASan, LSan, MSan: try to find llvm-symbolizer binary in PATH if it is not provided. Now we don't need to explicitly set the location of llvm-symbolizer in lit test configs.
llvm-svn: 189801
Diffstat (limited to 'compiler-rt')
-rw-r--r-- | compiler-rt/lib/asan/asan_rtl.cc | 6 | ||||
-rw-r--r-- | compiler-rt/lib/asan/lit_tests/lit.cfg | 3 | ||||
-rw-r--r-- | compiler-rt/lib/lsan/lit_tests/AsanConfig/lit.cfg | 1 | ||||
-rw-r--r-- | compiler-rt/lib/lsan/lit_tests/LsanConfig/lit.cfg | 2 | ||||
-rw-r--r-- | compiler-rt/lib/lsan/lsan.cc | 9 | ||||
-rw-r--r-- | compiler-rt/lib/msan/lit_tests/lit.cfg | 3 | ||||
-rw-r--r-- | compiler-rt/lib/msan/msan.cc | 3 | ||||
-rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h | 3 | ||||
-rw-r--r-- | compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc | 5 |
9 files changed, 14 insertions, 21 deletions
diff --git a/compiler-rt/lib/asan/asan_rtl.cc b/compiler-rt/lib/asan/asan_rtl.cc index 46b79a611e2..ee2128f20cd 100644 --- a/compiler-rt/lib/asan/asan_rtl.cc +++ b/compiler-rt/lib/asan/asan_rtl.cc @@ -532,10 +532,8 @@ void __asan_init() { InitializeAllocator(); // Start symbolizer process if necessary. - const char* external_symbolizer = common_flags()->external_symbolizer_path; - if (common_flags()->symbolize && external_symbolizer && - external_symbolizer[0]) { - InitializeExternalSymbolizer(external_symbolizer); + if (common_flags()->symbolize) { + InitializeExternalSymbolizer(common_flags()->external_symbolizer_path); } // On Linux AsanThread::ThreadStart() calls malloc() that's why asan_inited diff --git a/compiler-rt/lib/asan/lit_tests/lit.cfg b/compiler-rt/lib/asan/lit_tests/lit.cfg index 317ec6f14e7..16e3565c09f 100644 --- a/compiler-rt/lib/asan/lit_tests/lit.cfg +++ b/compiler-rt/lib/asan/lit_tests/lit.cfg @@ -70,9 +70,6 @@ config.substitutions.append( ("%clang_asan ", (" " + config.clang + " " + config.substitutions.append( ("%clangxx_asan ", (" " + config.clang + " " + clang_asan_cxxflags + " ")) ) -# Setup path to external LLVM symbolizer to run AddressSanitizer output tests. -config.environment['ASAN_SYMBOLIZER_PATH'] = config.llvm_symbolizer_path - # Setup path to asan_symbolize.py script. asan_source_dir = get_required_attr(config, "asan_source_dir") asan_symbolize = os.path.join(asan_source_dir, "scripts", "asan_symbolize.py") diff --git a/compiler-rt/lib/lsan/lit_tests/AsanConfig/lit.cfg b/compiler-rt/lib/lsan/lit_tests/AsanConfig/lit.cfg index 8b0bbadfd8a..ae9198173ff 100644 --- a/compiler-rt/lib/lsan/lit_tests/AsanConfig/lit.cfg +++ b/compiler-rt/lib/lsan/lit_tests/AsanConfig/lit.cfg @@ -30,4 +30,3 @@ config.substitutions.append( ("%clang_lsan ", (" " + config.clang + " " + clang_lsan_cflags + " ")) ) config.environment['ASAN_OPTIONS'] = 'detect_leaks=1' -config.environment['ASAN_SYMBOLIZER_PATH'] = config.llvm_symbolizer_path diff --git a/compiler-rt/lib/lsan/lit_tests/LsanConfig/lit.cfg b/compiler-rt/lib/lsan/lit_tests/LsanConfig/lit.cfg index 21d7fd83bab..84faf9167a7 100644 --- a/compiler-rt/lib/lsan/lit_tests/LsanConfig/lit.cfg +++ b/compiler-rt/lib/lsan/lit_tests/LsanConfig/lit.cfg @@ -28,5 +28,3 @@ clang_lsan_cflags = config.clang_cflags + " -fsanitize=leak " config.substitutions.append( ("%clang_lsan ", (" " + config.clang + " " + clang_lsan_cflags + " ")) ) - -config.environment['LSAN_SYMBOLIZER_PATH'] = config.llvm_symbolizer_path diff --git a/compiler-rt/lib/lsan/lsan.cc b/compiler-rt/lib/lsan/lsan.cc index 22e18e2a98f..99b165b5d8c 100644 --- a/compiler-rt/lib/lsan/lsan.cc +++ b/compiler-rt/lib/lsan/lsan.cc @@ -25,8 +25,7 @@ namespace __lsan { static void InitializeCommonFlags() { CommonFlags *cf = common_flags(); cf->external_symbolizer_path = GetEnv("LSAN_SYMBOLIZER_PATH"); - cf->symbolize = (cf->external_symbolizer_path && - cf->external_symbolizer_path[0]); + cf->symbolize = true; cf->strip_path_prefix = ""; cf->fast_unwind_on_malloc = true; cf->malloc_context_size = 30; @@ -53,10 +52,8 @@ void Init() { SetCurrentThread(tid); // Start symbolizer process if necessary. - const char* external_symbolizer = common_flags()->external_symbolizer_path; - if (common_flags()->symbolize && external_symbolizer && - external_symbolizer[0]) { - InitializeExternalSymbolizer(external_symbolizer); + if (common_flags()->symbolize) { + InitializeExternalSymbolizer(common_flags()->external_symbolizer_path); } InitCommonLsan(); diff --git a/compiler-rt/lib/msan/lit_tests/lit.cfg b/compiler-rt/lib/msan/lit_tests/lit.cfg index 093ad943ac2..fd88ca04d42 100644 --- a/compiler-rt/lib/msan/lit_tests/lit.cfg +++ b/compiler-rt/lib/msan/lit_tests/lit.cfg @@ -65,9 +65,6 @@ config.substitutions.append( ("%clangxx_msan ", " ".join([config.clang] + clang_msan_cxxflags) + " ") ) -# Setup path to external LLVM symbolizer to run MemorySanitizer output tests. -config.environment['MSAN_SYMBOLIZER_PATH'] = config.llvm_symbolizer_path - # Default test suffixes. config.suffixes = ['.c', '.cc', '.cpp'] diff --git a/compiler-rt/lib/msan/msan.cc b/compiler-rt/lib/msan/msan.cc index 0134fe1ce13..afe7f8e725f 100644 --- a/compiler-rt/lib/msan/msan.cc +++ b/compiler-rt/lib/msan/msan.cc @@ -324,8 +324,9 @@ void __msan_init() { } const char *external_symbolizer = common_flags()->external_symbolizer_path; + bool symbolizer_started = InitializeExternalSymbolizer(external_symbolizer); if (external_symbolizer && external_symbolizer[0]) { - CHECK(InitializeExternalSymbolizer(external_symbolizer)); + CHECK(symbolizer_started); } GetThreadStackTopAndBottom(/* at_initialization */true, diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h index 3f3149cb7a3..90ee784f561 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h @@ -79,7 +79,8 @@ const char *Demangle(const char *name); const char *DemangleCXXABI(const char *name); // Starts external symbolizer program in a subprocess. Sanitizer communicates -// with external symbolizer via pipes. +// with external symbolizer via pipes. If path_to_symbolizer is NULL or empty, +// tries to look for llvm-symbolizer in PATH. bool InitializeExternalSymbolizer(const char *path_to_symbolizer); const int kSymbolizerStartupTimeMillis = 10; diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc index 125dd99fb18..9ccd622153e 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc @@ -345,6 +345,11 @@ class Symbolizer { } bool InitializeExternalSymbolizer(const char *path_to_symbolizer) { + if (!path_to_symbolizer || path_to_symbolizer[0] == '\0') { + path_to_symbolizer = FindPathToBinary("llvm-symbolizer"); + if (!path_to_symbolizer) + return false; + } int input_fd, output_fd; if (!StartSymbolizerSubprocess(path_to_symbolizer, &input_fd, &output_fd)) return false; |