[compiler-rt] r230419 - [asan] add __asan_default_suppressions() hook

Kostya Serebryany kcc at google.com
Tue Feb 24 17:15:38 PST 2015


Author: kcc
Date: Tue Feb 24 19:15:37 2015
New Revision: 230419

URL: http://llvm.org/viewvc/llvm-project?rev=230419&view=rev
Log:
[asan] add __asan_default_suppressions() hook

Added:
    compiler-rt/trunk/test/asan/TestCases/Linux/asan_default_suppressions.cc
Modified:
    compiler-rt/trunk/lib/asan/asan_suppressions.cc

Modified: compiler-rt/trunk/lib/asan/asan_suppressions.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_suppressions.cc?rev=230419&r1=230418&r2=230419&view=diff
==============================================================================
--- compiler-rt/trunk/lib/asan/asan_suppressions.cc (original)
+++ compiler-rt/trunk/lib/asan/asan_suppressions.cc Tue Feb 24 19:15:37 2015
@@ -31,11 +31,23 @@ static const char *kSuppressionTypes[] =
     kInterceptorName, kInterceptorViaFunction, kInterceptorViaLibrary,
     kODRViolation};
 
+extern "C" {
+#if SANITIZER_SUPPORTS_WEAK_HOOKS
+SANITIZER_INTERFACE_ATTRIBUTE SANITIZER_WEAK_ATTRIBUTE
+const char *__asan_default_suppressions();
+#else
+// No week hooks, provide empty implementation.
+const char *__asan_default_suppressions() { return ""; }
+#endif  // SANITIZER_SUPPORTS_WEAK_HOOKS
+}  // extern "C"
+
 void InitializeSuppressions() {
   CHECK_EQ(nullptr, suppression_ctx);
   suppression_ctx = new (suppression_placeholder)  // NOLINT
       SuppressionContext(kSuppressionTypes, ARRAY_SIZE(kSuppressionTypes));
   suppression_ctx->ParseFromFile(flags()->suppressions);
+  if (&__asan_default_suppressions)
+    suppression_ctx->Parse(__asan_default_suppressions());
 }
 
 bool IsInterceptorSuppressed(const char *interceptor_name) {

Added: compiler-rt/trunk/test/asan/TestCases/Linux/asan_default_suppressions.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Linux/asan_default_suppressions.cc?rev=230419&view=auto
==============================================================================
--- compiler-rt/trunk/test/asan/TestCases/Linux/asan_default_suppressions.cc (added)
+++ compiler-rt/trunk/test/asan/TestCases/Linux/asan_default_suppressions.cc Tue Feb 24 19:15:37 2015
@@ -0,0 +1,7 @@
+// Test that we use the suppressions from __asan_default_suppressions.
+// RUN: %clangxx_asan %s -o %t && not %run %t 2>&1 | FileCheck %s
+extern "C" {
+  const char *__asan_default_suppressions() { return "FooBar"; }
+}
+// CHECK: AddressSanitizer: failed to parse suppressions
+int main() {}





More information about the llvm-commits mailing list