diff options
| author | Alexey Samsonov <vonosmas@gmail.com> | 2014-07-30 20:54:37 +0000 |
|---|---|---|
| committer | Alexey Samsonov <vonosmas@gmail.com> | 2014-07-30 20:54:37 +0000 |
| commit | 34a4c6e12fa3849b19a617e49259ecb418d9bc00 (patch) | |
| tree | 08ee7f8111e03bc3e8421afb85763dc95044dacf /compiler-rt/lib/sanitizer_common/sanitizer_suppressions.cc | |
| parent | cab7ca3e2a64869f6acaf730e0fb032bf1299bd7 (diff) | |
| download | bcm5719-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.cc | 14 |
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; |

