summaryrefslogtreecommitdiff
path: root/lib/msan/msan.cc
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-05-21 09:56:28 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-05-21 09:56:28 +0000
commitae96885f48a00155b671ba5392844825686d596f (patch)
treea4dceb3d40583a45d31688023f1016dd06aba50e /lib/msan/msan.cc
parent7624ea878aa7313d79a5955d48801074009fb3cd (diff)
[msan] Implement MSAN_OPTIONS=print_stats=1.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@209287 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan/msan.cc')
-rw-r--r--lib/msan/msan.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/msan/msan.cc b/lib/msan/msan.cc
index 308be461b..058ef7e48 100644
--- a/lib/msan/msan.cc
+++ b/lib/msan/msan.cc
@@ -143,6 +143,7 @@ static void ParseFlagsFromString(Flags *f, const char *str) {
ParseFlag(str, &f->report_umrs, "report_umrs", "");
ParseFlag(str, &f->wrap_signals, "wrap_signals", "");
+ ParseFlag(str, &f->print_stats, "print_stats", "");
// keep_going is an old name for halt_on_error,
// and it has inverse meaning.
@@ -171,6 +172,7 @@ static void InitializeFlags(Flags *f, const char *options) {
f->origin_history_per_stack_limit = 20000;
f->report_umrs = true;
f->wrap_signals = true;
+ f->print_stats = false;
f->halt_on_error = !&__msan_keep_going;
// Override from user-specified string.
@@ -331,6 +333,8 @@ void __msan_warning() {
(void)sp;
PrintWarning(pc, bp);
if (__msan::flags()->halt_on_error) {
+ if (__msan::flags()->print_stats)
+ ReportStats();
Printf("Exiting\n");
Die();
}
@@ -340,6 +344,8 @@ void __msan_warning_noreturn() {
GET_CALLER_PC_BP_SP;
(void)sp;
PrintWarning(pc, bp);
+ if (__msan::flags()->print_stats)
+ ReportStats();
Printf("Exiting\n");
Die();
}