[tsan] Recognize frames coming from "libclang_rt.tsan_*" module as internal
On OS X, we build a dylib of the TSan runtime, which doesn't necessarily need to contain debugging symbols (and file and line information), so llvm-symbolizer might not be able to find file names for TSan internal frames. FrameIsInternal currently only considers filenames, but we should simply treat all frames within `libclang_rt.tsan_osx_dynamic.dylib` as internal. This patch treats all modules starting with `libclang_rt.tsan_` as internal, because there may be more runtimes for other platforms in the future. Differential Revision: http://reviews.llvm.org/D14813 llvm-svn: 253559
This commit is contained in:
parent
6e90edf803
commit
9eb6df9f1e
|
|
@ -267,10 +267,15 @@ static bool FrameIsInternal(const SymbolizedStack *frame) {
|
||||||
if (frame == 0)
|
if (frame == 0)
|
||||||
return false;
|
return false;
|
||||||
const char *file = frame->info.file;
|
const char *file = frame->info.file;
|
||||||
return file != 0 &&
|
const char *module = frame->info.module;
|
||||||
(internal_strstr(file, "tsan_interceptors.cc") ||
|
if (file != 0 &&
|
||||||
internal_strstr(file, "sanitizer_common_interceptors.inc") ||
|
(internal_strstr(file, "tsan_interceptors.cc") ||
|
||||||
internal_strstr(file, "tsan_interface_"));
|
internal_strstr(file, "sanitizer_common_interceptors.inc") ||
|
||||||
|
internal_strstr(file, "tsan_interface_")))
|
||||||
|
return true;
|
||||||
|
if (module != 0 && (internal_strstr(module, "libclang_rt.tsan_")))
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static SymbolizedStack *SkipTsanInternalFrames(SymbolizedStack *frames) {
|
static SymbolizedStack *SkipTsanInternalFrames(SymbolizedStack *frames) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue