diff options
author | Alex Shlyapnikov <alekseys@google.com> | 2017-01-09 23:49:17 +0000 |
---|---|---|
committer | Alex Shlyapnikov <alekseys@google.com> | 2017-01-09 23:49:17 +0000 |
commit | 8f1700544049edd19dc47d0597d8230c619d84d0 (patch) | |
tree | dfc5565c888578353e9fc80830aec61822f49f6d | |
parent | bc4ff1f4efc5ee08802c01377fe033f551ab173b (diff) | |
download | compiler-rt-8f1700544049edd19dc47d0597d8230c619d84d0.tar.gz |
ASAN activate/deactive controls thread_local_quarantine_size_kb option.
Summary: Also, bypass quarantine altogether when quarantine size is set ot zero.
Reviewers: eugenis
Subscribers: kubabrecka, llvm-commits, mehdi_amini
Differential Revision: https://reviews.llvm.org/D28480
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@291511 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/asan/asan_flags.cc | 5 | ||||
-rw-r--r-- | test/asan/TestCases/Linux/thread_local_quarantine_size_kb.cc | 9 |
2 files changed, 11 insertions, 3 deletions
diff --git a/lib/asan/asan_flags.cc b/lib/asan/asan_flags.cc index 4db407d45..ad5bbff28 100644 --- a/lib/asan/asan_flags.cc +++ b/lib/asan/asan_flags.cc @@ -169,6 +169,11 @@ void InitializeFlags() { (ASAN_LOW_MEMORY) ? 1 << 6 : FIRST_32_SECOND_64(1 << 8, 1 << 10); f->thread_local_quarantine_size_kb = kDefaultThreadLocalQuarantineSizeKb; } + if (f->thread_local_quarantine_size_kb == 0 && f->quarantine_size_mb > 0) { + Report("%s: thread_local_quarantine_size_kb can be set to 0 only when " + "quarantine_size_mb is set to 0\n", SanitizerToolName); + Die(); + } if (!f->replace_str && common_flags()->intercept_strlen) { Report("WARNING: strlen interceptor is enabled even though replace_str=0. " "Use intercept_strlen=0 to disable it."); diff --git a/test/asan/TestCases/Linux/thread_local_quarantine_size_kb.cc b/test/asan/TestCases/Linux/thread_local_quarantine_size_kb.cc index 7176484ed..24022a140 100644 --- a/test/asan/TestCases/Linux/thread_local_quarantine_size_kb.cc +++ b/test/asan/TestCases/Linux/thread_local_quarantine_size_kb.cc @@ -5,8 +5,10 @@ // RUN: FileCheck %s --check-prefix=CHECK-VALUE // RUN: %env_asan_opts=thread_local_quarantine_size_kb=64:quarantine_size_mb=64 %run %t 2>&1 | \ // RUN: FileCheck %s --allow-empty --check-prefix=CHECK-SMALL-LOCAL-CACHE-SMALL-OVERHEAD -// RUN: %env_asan_opts=thread_local_quarantine_size_kb=0:quarantine_size_mb=64 %run %t 2>&1 | \ -// RUN: FileCheck %s --check-prefix=CHECK-NO-LOCAL-CACHE-HUGE-OVERHEAD +// RUN: %env_asan_opts=thread_local_quarantine_size_kb=0:quarantine_size_mb=0 %run %t 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CHECK-QUARANTINE-DISABLED +// RUN: %env_asan_opts=thread_local_quarantine_size_kb=0:quarantine_size_mb=64 not %run %t 2>&1 | \ +// RUN: FileCheck %s --check-prefix=CHECK-FOR-PARAMETER-ERROR #include <stdio.h> #include <stdlib.h> @@ -37,4 +39,5 @@ int main() { // CHECK-VALUE: thread_local_quarantine_size_kb=256K // CHECK-SMALL-LOCAL-CACHE-SMALL-OVERHEAD-NOT: Heap size limit exceeded -// CHECK-NO-LOCAL-CACHE-HUGE-OVERHEAD: Heap size limit exceeded +// CHECK-QUARANTINE-DISABLED-NOT: Heap size limit exceeded +// CHECK-FOR-PARAMETER-ERROR: thread_local_quarantine_size_kb can be set to 0 only when quarantine_size_mb is set to 0 |