diff options
author | Alexey Samsonov <samsonov@google.com> | 2013-11-14 08:56:59 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2013-11-14 08:56:59 +0000 |
commit | 694d85636b148dfcac37e5c23639baa8fe9abce9 (patch) | |
tree | ec373649a4c0d1336bcb8774a40058de1d750d38 /lib/sanitizer_common | |
parent | d2e32e323cca83b666ecd124ebfd1720232d0928 (diff) |
[Sanitizer] Add print_summary runtime flag to disable error summaries (UBSan doesn't need them)
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@194685 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common')
-rw-r--r-- | lib/sanitizer_common/sanitizer_common.cc | 6 | ||||
-rw-r--r-- | lib/sanitizer_common/sanitizer_flags.cc | 2 | ||||
-rw-r--r-- | lib/sanitizer_common/sanitizer_flags.h | 2 |
3 files changed, 10 insertions, 0 deletions
diff --git a/lib/sanitizer_common/sanitizer_common.cc b/lib/sanitizer_common/sanitizer_common.cc index 7f896f9bd..9c331a8e4 100644 --- a/lib/sanitizer_common/sanitizer_common.cc +++ b/lib/sanitizer_common/sanitizer_common.cc @@ -166,6 +166,8 @@ void PrintModuleAndOffset(const char *module, uptr offset) { } void ReportErrorSummary(const char *error_message) { + if (!common_flags()->print_summary) + return; InternalScopedBuffer<char> buff(kMaxSummaryLength); internal_snprintf(buff.data(), buff.size(), "SUMMARY: %s: %s", SanitizerToolName, error_message); @@ -174,6 +176,8 @@ void ReportErrorSummary(const char *error_message) { void ReportErrorSummary(const char *error_type, const char *file, int line, const char *function) { + if (!common_flags()->print_summary) + return; InternalScopedBuffer<char> buff(kMaxSummaryLength); internal_snprintf( buff.data(), buff.size(), "%s %s:%d %s", error_type, @@ -183,6 +187,8 @@ void ReportErrorSummary(const char *error_type, const char *file, } void ReportErrorSummary(const char *error_type, StackTrace *stack) { + if (!common_flags()->print_summary) + return; AddressInfo ai; #if !SANITIZER_GO if (stack->size > 0 && Symbolizer::Get()->IsAvailable()) { diff --git a/lib/sanitizer_common/sanitizer_flags.cc b/lib/sanitizer_common/sanitizer_flags.cc index ba23ea04b..924ed4bc0 100644 --- a/lib/sanitizer_common/sanitizer_flags.cc +++ b/lib/sanitizer_common/sanitizer_flags.cc @@ -32,6 +32,7 @@ void SetCommonFlagDefaults() { f->detect_leaks = false; f->leak_check_at_exit = true; f->allocator_may_return_null = false; + f->print_summary = true; } void ParseCommonFlagsFromString(const char *str) { @@ -48,6 +49,7 @@ void ParseCommonFlagsFromString(const char *str) { ParseFlag(str, &f->detect_leaks, "detect_leaks"); ParseFlag(str, &f->leak_check_at_exit, "leak_check_at_exit"); ParseFlag(str, &f->allocator_may_return_null, "allocator_may_return_null"); + ParseFlag(str, &f->print_summary, "print_summary"); // 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 b8a6b15d8..9461dff80 100644 --- a/lib/sanitizer_common/sanitizer_flags.h +++ b/lib/sanitizer_common/sanitizer_flags.h @@ -51,6 +51,8 @@ struct CommonFlags { bool leak_check_at_exit; // If false, the allocator will crash instead of returning 0 on out-of-memory. bool allocator_may_return_null; + // If false, disable printing error summaries in addition to error reports. + bool print_summary; }; inline CommonFlags *common_flags() { |