summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
diff options
context:
space:
mode:
authorTimur Iskhodzhanov <timurrrr@google.com>2015-02-02 15:04:23 +0000
committerTimur Iskhodzhanov <timurrrr@google.com>2015-02-02 15:04:23 +0000
commite5935ef0c4d200b77a5a96186c496d9f7f0def24 (patch)
tree8c21f1744e6c05f6436d4db1cbccf22ab8d6858b /compiler-rt/lib/sanitizer_common/sanitizer_win.cc
parent8cd22d4947b55694398e9e364ac31083817c2c0e (diff)
downloadbcm5719-llvm-e5935ef0c4d200b77a5a96186c496d9f7f0def24.tar.gz
bcm5719-llvm-e5935ef0c4d200b77a5a96186c496d9f7f0def24.zip
[ASan/Win] Add some diagnostics to help investigate Mprotect failures
llvm-svn: 227803
Diffstat (limited to 'compiler-rt/lib/sanitizer_common/sanitizer_win.cc')
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_win.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_win.cc b/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
index 6bac35b7be8..d552249bfd6 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_win.cc
@@ -123,8 +123,13 @@ void *MmapNoReserveOrDie(uptr size, const char *mem_type) {
}
void *Mprotect(uptr fixed_addr, uptr size) {
- return VirtualAlloc((LPVOID)fixed_addr, size,
- MEM_RESERVE | MEM_COMMIT, PAGE_NOACCESS);
+ void *res = VirtualAlloc((LPVOID)fixed_addr, size,
+ MEM_RESERVE | MEM_COMMIT, PAGE_NOACCESS);
+ if (res == 0)
+ Report("WARNING: %s failed to "
+ "mprotect %p (%zd) bytes at %p (error code: %d)\n",
+ SanitizerToolName, size, size, fixed_addr, GetLastError());
+ return res;
}
void FlushUnneededShadowMemory(uptr addr, uptr size) {
@@ -139,7 +144,7 @@ void NoHugePagesInRegion(uptr addr, uptr size) {
bool MemoryRangeIsAvailable(uptr range_start, uptr range_end) {
MEMORY_BASIC_INFORMATION mbi;
CHECK(VirtualQuery((void *)range_start, &mbi, sizeof(mbi)));
- return mbi.Protect & PAGE_NOACCESS &&
+ return mbi.Protect == PAGE_NOACCESS &&
(uptr)mbi.BaseAddress + mbi.RegionSize >= range_end;
}
OpenPOWER on IntegriCloud