diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sanitizer_common/sanitizer_flags.cc | 3 | ||||
-rw-r--r-- | lib/sanitizer_common/sanitizer_flags.h | 1 | ||||
-rw-r--r-- | lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc | 7 |
3 files changed, 10 insertions, 1 deletions
diff --git a/lib/sanitizer_common/sanitizer_flags.cc b/lib/sanitizer_common/sanitizer_flags.cc index 4fb14d795..55644e0d6 100644 --- a/lib/sanitizer_common/sanitizer_flags.cc +++ b/lib/sanitizer_common/sanitizer_flags.cc @@ -67,6 +67,7 @@ void SetCommonFlagsDefaults(CommonFlags *f) { f->suppressions = ""; f->print_suppressions = true; f->disable_coredump = (SANITIZER_WORDSIZE == 64); + f->symbolize_inline_frames = true; } void ParseCommonFlagsFromString(CommonFlags *f, const char *str) { @@ -158,6 +159,8 @@ void ParseCommonFlagsFromString(CommonFlags *f, const char *str) { "Disable core dumping. By default, disable_core=1 on 64-bit to avoid " "dumping a 16T+ core file. Ignored on OSes that don't dump core by" "default and for sanitizers that don't reserve lots of virtual memory."); + ParseFlag(str, &f->symbolize_inline_frames, "symbolize_inline_frames", + "Print inlined frames in stacktraces. Defaults to true."); // Do a sanity check for certain flags. if (f->malloc_context_size < 1) diff --git a/lib/sanitizer_common/sanitizer_flags.h b/lib/sanitizer_common/sanitizer_flags.h index a9c5d3572..6d1d9b60b 100644 --- a/lib/sanitizer_common/sanitizer_flags.h +++ b/lib/sanitizer_common/sanitizer_flags.h @@ -61,6 +61,7 @@ struct CommonFlags { const char *suppressions; bool print_suppressions; bool disable_coredump; + bool symbolize_inline_frames; }; inline CommonFlags *common_flags() { diff --git a/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc b/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc index dfca52308..636fdeae8 100644 --- a/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc +++ b/lib/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc @@ -348,7 +348,12 @@ class LLVMSymbolizerProcess : public SymbolizerProcess { #else const char* const kSymbolizerArch = "--default-arch=unknown"; #endif - execl(path_to_binary, path_to_binary, kSymbolizerArch, (char *)0); + + const char *const inline_flag = common_flags()->symbolize_inline_frames + ? "--inlining=true" + : "--inlining=false"; + execl(path_to_binary, path_to_binary, inline_flag, kSymbolizerArch, + (char *)0); } }; |