summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc
diff options
context:
space:
mode:
authorAlexey Samsonov <vonosmas@gmail.com>2014-07-30 20:54:37 +0000
committerAlexey Samsonov <vonosmas@gmail.com>2014-07-30 20:54:37 +0000
commit34a4c6e12fa3849b19a617e49259ecb418d9bc00 (patch)
tree08ee7f8111e03bc3e8421afb85763dc95044dacf /compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc
parentcab7ca3e2a64869f6acaf730e0fb032bf1299bd7 (diff)
downloadbcm5719-llvm-34a4c6e12fa3849b19a617e49259ecb418d9bc00.tar.gz
bcm5719-llvm-34a4c6e12fa3849b19a617e49259ecb418d9bc00.zip
[Sanitizer] Make SuppressionContext a singleton class, residing in sanitizer_common.
Convert TSan and LSan to the new interface. More changes will follow: 1) "suppressions" should become a common runtime flag. 2) Code for parsing suppressions file should be moved to SuppressionContext::Init(). llvm-svn: 214334
Diffstat (limited to 'compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc')
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc14
1 files changed, 14 insertions, 0 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc b/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc
index 87ccf7fca22..aa04ec69f02 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc
@@ -16,6 +16,7 @@
#include "sanitizer_allocator_internal.h"
#include "sanitizer_common.h"
#include "sanitizer_libc.h"
+#include "sanitizer_placement_new.h"
namespace __sanitizer {
@@ -65,6 +66,19 @@ bool TemplateMatch(char *templ, const char *str) {
return true;
}
+ALIGNED(64) static char placeholder[sizeof(SuppressionContext)];
+static SuppressionContext *suppression_ctx = 0;
+
+SuppressionContext *SuppressionContext::Get() {
+ CHECK(suppression_ctx);
+ return suppression_ctx;
+}
+
+void SuppressionContext::Init() {
+ CHECK(!suppression_ctx);
+ suppression_ctx = new(placeholder) SuppressionContext;
+}
+
bool SuppressionContext::Match(const char *str, SuppressionType type,
Suppression **s) {
can_parse_ = false;
OpenPOWER on IntegriCloud