summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-06-11 15:11:26 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2014-06-11 15:11:26 +0000
commitdfa54396520db5c8156e11feca94f975e1024d56 (patch)
tree3e3a11f1e1c7a553ba656243de7689bf25fae9fe
parent595fcab2d0ad17cd1310f99d8b506e8fe55dc5a0 (diff)
downloadbcm5719-llvm-dfa54396520db5c8156e11feca94f975e1024d56.tar.gz
bcm5719-llvm-dfa54396520db5c8156e11feca94f975e1024d56.zip
[asan] Fix mmap-ed coverage with coverage=0.
llvm-svn: 210655
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc4
-rw-r--r--compiler-rt/test/asan/TestCases/Linux/coverage-disabled.cc18
2 files changed, 20 insertions, 2 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc b/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
index ba6c58c5799..c22de9786c0 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
@@ -365,8 +365,8 @@ SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov_init() {
coverage_data.Init();
}
SANITIZER_INTERFACE_ATTRIBUTE void __sanitizer_cov_module_init(uptr npcs) {
- if (SANITIZER_ANDROID && common_flags()->coverage &&
- common_flags()->coverage_direct) {
+ if (!common_flags()->coverage || !common_flags()->coverage_direct) return;
+ if (SANITIZER_ANDROID) {
// dlopen/dlclose interceptors do not work on Android, so we rely on
// Extend() calls to update .sancov.map.
CovUpdateMapping(GET_CALLER_PC());
diff --git a/compiler-rt/test/asan/TestCases/Linux/coverage-disabled.cc b/compiler-rt/test/asan/TestCases/Linux/coverage-disabled.cc
new file mode 100644
index 00000000000..315c3125b46
--- /dev/null
+++ b/compiler-rt/test/asan/TestCases/Linux/coverage-disabled.cc
@@ -0,0 +1,18 @@
+// Test that no data is collected without a runtime flag.
+//
+// RUN: %clangxx_asan -mllvm -asan-coverage=1 %s -o %t
+//
+// RUN: rm -rf %T/coverage-disabled
+//
+// RUN: mkdir -p %T/coverage-disabled/normal
+// RUN: ASAN_OPTIONS=coverage_direct=0:coverage_dir=%T/coverage-disabled/normal:verbosity=1 %run %t
+// RUN: not %sancov print %T/coverage-disabled/normal/*.sancov 2>&1
+//
+// RUN: mkdir -p %T/coverage-disabled/direct
+// RUN: ASAN_OPTIONS=coverage_direct=1:coverage_dir=%T/coverage-disabled/direct:verbosity=1 %run %t
+// RUN: cd %T/coverage-disabled/direct
+// RUN: not %sancov rawunpack *.sancov
+
+int main(int argc, char **argv) {
+ return 0;
+}
OpenPOWER on IntegriCloud