diff options
| author | Timur Iskhodzhanov <timurrrr@google.com> | 2015-02-02 15:04:23 +0000 |
|---|---|---|
| committer | Timur Iskhodzhanov <timurrrr@google.com> | 2015-02-02 15:04:23 +0000 |
| commit | e5935ef0c4d200b77a5a96186c496d9f7f0def24 (patch) | |
| tree | 8c21f1744e6c05f6436d4db1cbccf22ab8d6858b /compiler-rt/lib/sanitizer_common/sanitizer_win.cc | |
| parent | 8cd22d4947b55694398e9e364ac31083817c2c0e (diff) | |
| download | bcm5719-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.cc | 11 |
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; } |

