[compiler-rt] r368090 - [Sanitizer] Linux explicitally migrate shadow mapping to Transparent Huge Page
David Carlier via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 6 14:30:03 PDT 2019
Author: devnexen
Date: Tue Aug 6 14:30:03 2019
New Revision: 368090
URL: http://llvm.org/viewvc/llvm-project?rev=368090&view=rev
Log:
[Sanitizer] Linux explicitally migrate shadow mapping to Transparent Huge Page
in madvise mode, the shadow pages will be migrated only via madvise explicit calls.
Reviewers: vitalybuka
Reviewed By: vitalybuka
Differential Revision: https://reviews.llvm.org/D65775
Modified:
compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cpp
compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cpp
compiler-rt/trunk/lib/tsan/rtl/tsan_platform_posix.cpp
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h?rev=368090&r1=368089&r2=368090&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_common.h Tue Aug 6 14:30:03 2019
@@ -131,7 +131,7 @@ void ReleaseMemoryPagesToOS(uptr beg, up
void IncreaseTotalMmap(uptr size);
void DecreaseTotalMmap(uptr size);
uptr GetRSS();
-bool SetShadowRegionHugePageMode(uptr addr, uptr length);
+void SetShadowRegionHugePageMode(uptr addr, uptr length);
bool DontDumpShadowMemory(uptr addr, uptr length);
// Check if the built VMA size matches the runtime one.
void CheckVMASize();
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cpp
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cpp?rev=368090&r1=368089&r2=368090&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cpp (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_posix_libcdep.cpp Tue Aug 6 14:30:03 2019
@@ -68,13 +68,12 @@ void ReleaseMemoryPagesToOS(uptr beg, up
SANITIZER_MADVISE_DONTNEED);
}
-bool SetShadowRegionHugePageMode(uptr addr, uptr size) {
+void SetShadowRegionHugePageMode(uptr addr, uptr size) {
#ifdef MADV_NOHUGEPAGE // May not be defined on old systems.
if (common_flags()->no_huge_pages_for_shadow)
- return madvise((char *)addr, size, MADV_NOHUGEPAGE) == 0;
- return true;
-#else
- return true;
+ madvise((char *)addr, size, MADV_NOHUGEPAGE);
+ else
+ madvise((char *)addr, size, MADV_HUGEPAGE) == 0;
#endif // MADV_NOHUGEPAGE
}
Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cpp
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cpp?rev=368090&r1=368089&r2=368090&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cpp (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_win.cpp Tue Aug 6 14:30:03 2019
@@ -329,9 +329,8 @@ void ReleaseMemoryPagesToOS(uptr beg, up
// FIXME: add madvise-analog when we move to 64-bits.
}
-bool SetShadowRegionHugePageMode(uptr addr, uptr size) {
+void SetShadowRegionHugePageMode(uptr addr, uptr size) {
// FIXME: probably similar to ReleaseMemoryToOS.
- return true;
}
bool DontDumpShadowMemory(uptr addr, uptr length) {
Modified: compiler-rt/trunk/lib/tsan/rtl/tsan_platform_posix.cpp
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/rtl/tsan_platform_posix.cpp?rev=368090&r1=368089&r2=368090&view=diff
==============================================================================
--- compiler-rt/trunk/lib/tsan/rtl/tsan_platform_posix.cpp (original)
+++ compiler-rt/trunk/lib/tsan/rtl/tsan_platform_posix.cpp Tue Aug 6 14:30:03 2019
@@ -30,13 +30,7 @@ static const char kShadowMemoryMappingHi
"TSAN_OPTIONS=%s=0\n";
static void NoHugePagesInShadow(uptr addr, uptr size) {
- if (!SetShadowRegionHugePageMode(addr, size)) {
- Printf(kShadowMemoryMappingWarning, SanitizerToolName, addr, addr + size,
- "MADV_NOHUGEPAGE", errno);
- Printf(kShadowMemoryMappingHint, "MADV_NOHUGEPAGE",
- "no_huge_pages_for_shadow");
- Die();
- }
+ SetShadowRegionHugePageMode(addr, size);
}
static void DontDumpShadow(uptr addr, uptr size) {
More information about the llvm-commits
mailing list