summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorFangrui Song <maskray@google.com>2018-06-30 08:27:48 +0000
committerFangrui Song <maskray@google.com>2018-06-30 08:27:48 +0000
commit877d4c0b05307d9bc8b72c6977ad12419df0294a (patch)
tree49e9f89d77f2257a9af942fa2138f47ce795424d /lib
parent46ce63aeead620efb48427fe645513a32cc48757 (diff)
[asan] Use MADV_NOCORE for use_madv_dontdump on FreeBSD.
Currently in FreeBSD 12.0-CURRENT with trunk clang+compiler-rt, faulty -fsanitize=address executable hangs at 'urdlck' state. Ka Ho Ng has verified that by backporting this to llvm 6.0.1, with use_madv_dontdump=1, shadow memory is not dumped. ASAN_OPTIONS=abort_on_error=1:disable_coredump=0:use_madv_dontdump=1 ./a Reviewers: dimitry, kcc, dvyukov, emaste, khng300 Subscribers: kubamracek, delcypher, llvm-commits, #sanitizers Differential Revision: https://reviews.llvm.org/D48257 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@336046 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/sanitizer_common/sanitizer_posix_libcdep.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/sanitizer_common/sanitizer_posix_libcdep.cc b/lib/sanitizer_common/sanitizer_posix_libcdep.cc
index 6acda66f0..eaf157881 100644
--- a/lib/sanitizer_common/sanitizer_posix_libcdep.cc
+++ b/lib/sanitizer_common/sanitizer_posix_libcdep.cc
@@ -78,8 +78,10 @@ bool NoHugePagesInRegion(uptr addr, uptr size) {
}
bool DontDumpShadowMemory(uptr addr, uptr length) {
-#ifdef MADV_DONTDUMP
+#if defined(MADV_DONTDUMP)
return madvise((void *)addr, length, MADV_DONTDUMP) == 0;
+#elif defined(MADV_NOCORE)
+ return madvise((void *)addr, length, MADV_NOCORE) == 0;
#else
return true;
#endif // MADV_DONTDUMP