From 2e3aaed7e771c453e016c0a3315fd411de158faa Mon Sep 17 00:00:00 2001 From: Diana Picus Date: Mon, 14 Jan 2019 09:45:49 +0000 Subject: [PATCH] [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 llvm-svn: 351040 --- compiler-rt/lib/asan/asan_rtl.cc | 11 +++++++++++ .../test/asan/TestCases/Linux/quarantine_size_mb.cc | 2 +- .../TestCases/hard_rss_limit_mb_test.cc | 2 +- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/compiler-rt/lib/asan/asan_rtl.cc b/compiler-rt/lib/asan/asan_rtl.cc index 2a790e851f19b..13344f3b8887a 100644 --- a/compiler-rt/lib/asan/asan_rtl.cc +++ b/compiler-rt/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/compiler-rt/test/asan/TestCases/Linux/quarantine_size_mb.cc b/compiler-rt/test/asan/TestCases/Linux/quarantine_size_mb.cc index 75a96ffd188a9..f7bccbfbe8db8 100644 --- a/compiler-rt/test/asan/TestCases/Linux/quarantine_size_mb.cc +++ b/compiler-rt/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 char *g; diff --git a/compiler-rt/test/sanitizer_common/TestCases/hard_rss_limit_mb_test.cc b/compiler-rt/test/sanitizer_common/TestCases/hard_rss_limit_mb_test.cc index ed213036f9890..e01d416cb80fd 100644 --- a/compiler-rt/test/sanitizer_common/TestCases/hard_rss_limit_mb_test.cc +++ b/compiler-rt/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 #include