[compiler-rt] [sanitizers] improve debug output for failed suppression parse (PR #72066)
Vitaly Buka via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 21 16:45:05 PST 2023
https://github.com/vitalybuka updated https://github.com/llvm/llvm-project/pull/72066
>From ba9bb00e8edb7b87eede1c3005fdbf5124c78e21 Mon Sep 17 00:00:00 2001
From: Thomas Schenker <thomas.schenker at protonmail.com>
Date: Sun, 12 Nov 2023 21:05:01 +0100
Subject: [PATCH 1/4] [sanitizers] improve debug output for failed suppression
parse
If a suppression file can not be parsed, add the supported suppression
types to the error message.
---
compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp
index f3818526baab1b7..a94178828bd80db 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp
@@ -139,6 +139,10 @@ void SuppressionContext::Parse(const char *str) {
}
if (type == suppression_types_num_) {
Printf("%s: failed to parse suppressions\n", SanitizerToolName);
+ Printf("Supported suppression types are:\n");
+ for (type = 0; type < suppression_types_num_; type++) {
+ Printf("- %s\n", suppression_types_[type]);
+ }
Die();
}
Suppression s;
>From 93c3c4ab8baafed74085decddbe675c4b621b072 Mon Sep 17 00:00:00 2001
From: Thomas Schenker <thomas.schenker at protonmail.com>
Date: Tue, 14 Nov 2023 22:16:47 +0100
Subject: [PATCH 2/4] add tests
---
.../lib/sanitizer_common/sanitizer_suppressions.cpp | 2 +-
.../tests/sanitizer_suppressions_test.cpp | 12 +++++++++---
2 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp
index a94178828bd80db..913960d3ebc8786 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp
@@ -138,7 +138,7 @@ void SuppressionContext::Parse(const char *str) {
}
}
if (type == suppression_types_num_) {
- Printf("%s: failed to parse suppressions\n", SanitizerToolName);
+ Printf("%s: failed to parse suppressions.\n", SanitizerToolName);
Printf("Supported suppression types are:\n");
for (type = 0; type < suppression_types_num_; type++) {
Printf("- %s\n", suppression_types_[type]);
diff --git a/compiler-rt/lib/sanitizer_common/tests/sanitizer_suppressions_test.cpp b/compiler-rt/lib/sanitizer_common/tests/sanitizer_suppressions_test.cpp
index 50a6ce92f9bedc9..aeff9897a51622d 100644
--- a/compiler-rt/lib/sanitizer_common/tests/sanitizer_suppressions_test.cpp
+++ b/compiler-rt/lib/sanitizer_common/tests/sanitizer_suppressions_test.cpp
@@ -130,9 +130,15 @@ TEST_F(SuppressionContextTest, HasSuppressionType) {
}
TEST_F(SuppressionContextTest, RegressionTestForBufferOverflowInSuppressions) {
- EXPECT_DEATH(ctx_.Parse("race"), "failed to parse suppressions");
- EXPECT_DEATH(ctx_.Parse("foo"), "failed to parse suppressions");
+ const char *expected_output =
+ "failed to parse suppressions.\n"
+ "Supported suppression types are:\n"
+ "- race\n"
+ "- thread\n"
+ "- mutex\n"
+ "- signal\n";
+ EXPECT_DEATH(ctx_.Parse("race"), expected_output);
+ EXPECT_DEATH(ctx_.Parse("foo"), expected_output);
}
-
} // namespace __sanitizer
>From d14830ac4297c7cabfc571e9f6dbc15f80725fe0 Mon Sep 17 00:00:00 2001
From: Thomas Schenker <thomas.schenker at protonmail.com>
Date: Tue, 14 Nov 2023 22:42:24 +0100
Subject: [PATCH 3/4] format
---
.../tests/sanitizer_suppressions_test.cpp | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/compiler-rt/lib/sanitizer_common/tests/sanitizer_suppressions_test.cpp b/compiler-rt/lib/sanitizer_common/tests/sanitizer_suppressions_test.cpp
index aeff9897a51622d..45ed16b173afe47 100644
--- a/compiler-rt/lib/sanitizer_common/tests/sanitizer_suppressions_test.cpp
+++ b/compiler-rt/lib/sanitizer_common/tests/sanitizer_suppressions_test.cpp
@@ -131,12 +131,12 @@ TEST_F(SuppressionContextTest, HasSuppressionType) {
TEST_F(SuppressionContextTest, RegressionTestForBufferOverflowInSuppressions) {
const char *expected_output =
- "failed to parse suppressions.\n"
- "Supported suppression types are:\n"
- "- race\n"
- "- thread\n"
- "- mutex\n"
- "- signal\n";
+ "failed to parse suppressions.\n"
+ "Supported suppression types are:\n"
+ "- race\n"
+ "- thread\n"
+ "- mutex\n"
+ "- signal\n";
EXPECT_DEATH(ctx_.Parse("race"), expected_output);
EXPECT_DEATH(ctx_.Parse("foo"), expected_output);
}
>From f1278d4082bdbb05e7f621ffd59377f990f9be52 Mon Sep 17 00:00:00 2001
From: Vitaly Buka <vitalybuka at gmail.com>
Date: Tue, 21 Nov 2023 16:44:53 -0800
Subject: [PATCH 4/4] Remove {}
---
compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp
index 913960d3ebc8786..9c8c4bf9d1a4841 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cpp
@@ -140,9 +140,8 @@ void SuppressionContext::Parse(const char *str) {
if (type == suppression_types_num_) {
Printf("%s: failed to parse suppressions.\n", SanitizerToolName);
Printf("Supported suppression types are:\n");
- for (type = 0; type < suppression_types_num_; type++) {
+ for (type = 0; type < suppression_types_num_; type++)
Printf("- %s\n", suppression_types_[type]);
- }
Die();
}
Suppression s;
More information about the llvm-commits
mailing list