summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiana Picus <diana.picus@linaro.org>2019-01-14 09:45:49 +0000
committerDiana Picus <diana.picus@linaro.org>2019-01-14 09:45:49 +0000
commit02e6c67dee5d39681622fd2c40b827957d550fc3 (patch)
treeb76c8fcb838447cb6223fe8bf552f8e273dbc205
parent8e311229e8a7805da33bbbb66473c755fd50f3bf (diff)
downloadcompiler-rt-02e6c67dee5d39681622fd2c40b827957d550fc3.tar.gz
[asan] Add fallback for Thumb after r350139
This reverts r350806 which marked some tests as UNSUPPORTED on ARM and instead reintroduces the old code path only for Thumb, since that seems to be the only target that broke. It would still be nice to find the root cause of the breakage, but with the branch point for LLVM 8.0 scheduled for next week it's better to put things in a stable state while we investigate. Differential Revision: https://reviews.llvm.org/D56594 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@351040 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/asan/asan_rtl.cc11
-rw-r--r--test/asan/TestCases/Linux/quarantine_size_mb.cc2
-rw-r--r--test/sanitizer_common/TestCases/hard_rss_limit_mb_test.cc2
3 files changed, 13 insertions, 2 deletions
diff --git a/lib/asan/asan_rtl.cc b/lib/asan/asan_rtl.cc
index 2a790e851..13344f3b8 100644
--- a/lib/asan/asan_rtl.cc
+++ b/lib/asan/asan_rtl.cc
@@ -383,12 +383,18 @@ void PrintAddressSpaceLayout() {
kHighShadowBeg > kMidMemEnd);
}
+#if defined(__thumb__) && defined(__linux__)
+#define START_BACKGROUND_THREAD_IN_ASAN_INTERNAL
+#endif
+
+#ifndef START_BACKGROUND_THREAD_IN_ASAN_INTERNAL
static bool UNUSED __local_asan_dyninit = [] {
MaybeStartBackgroudThread();
SetSoftRssLimitExceededCallback(AsanSoftRssLimitExceededCallback);
return false;
}();
+#endif
static void AsanInitInternal() {
if (LIKELY(asan_inited)) return;
@@ -464,6 +470,11 @@ static void AsanInitInternal() {
allocator_options.SetFrom(flags(), common_flags());
InitializeAllocator(allocator_options);
+#ifdef START_BACKGROUND_THREAD_IN_ASAN_INTERNAL
+ MaybeStartBackgroudThread();
+ SetSoftRssLimitExceededCallback(AsanSoftRssLimitExceededCallback);
+#endif
+
// On Linux AsanThread::ThreadStart() calls malloc() that's why asan_inited
// should be set to 1 prior to initializing the threads.
asan_inited = 1;
diff --git a/test/asan/TestCases/Linux/quarantine_size_mb.cc b/test/asan/TestCases/Linux/quarantine_size_mb.cc
index 75a96ffd1..f7bccbfbe 100644
--- a/test/asan/TestCases/Linux/quarantine_size_mb.cc
+++ b/test/asan/TestCases/Linux/quarantine_size_mb.cc
@@ -7,7 +7,7 @@
// RUN: %env_asan_opts=hard_rss_limit_mb=20 not %run %t 2>&1 | FileCheck %s --check-prefix=RSS_LIMIT
// https://github.com/google/sanitizers/issues/981
-// UNSUPPORTED: android-26, arm
+// UNSUPPORTED: android-26
#include <string.h>
char *g;
diff --git a/test/sanitizer_common/TestCases/hard_rss_limit_mb_test.cc b/test/sanitizer_common/TestCases/hard_rss_limit_mb_test.cc
index ed213036f..e01d416cb 100644
--- a/test/sanitizer_common/TestCases/hard_rss_limit_mb_test.cc
+++ b/test/sanitizer_common/TestCases/hard_rss_limit_mb_test.cc
@@ -16,7 +16,7 @@
// XFAIL: msan
// XFAIL: ubsan
-// UNSUPPORTED: freebsd, solaris, darwin, arm
+// UNSUPPORTED: freebsd, solaris, darwin
#include <string.h>
#include <stdio.h>