esan: fix shadow setup
authorDmitry Vyukov <dvyukov@google.com>
Fri, 20 Jul 2018 13:40:08 +0000 (13:40 +0000)
committerDmitry Vyukov <dvyukov@google.com>
Fri, 20 Jul 2018 13:40:08 +0000 (13:40 +0000)
r337531 changed return type of MmapFixedNoReserve, but esan wasn't updated.
As the result esan shadow setup always fails.
We probably need to make MmapFixedNoAccess signature consistent
with MmapFixedNoReserve. But this is just to unbreak tests.

llvm-svn: 337550

compiler-rt/lib/esan/esan.cpp

index 09b530b6645f6b02cc2f114c758292b24c719a8c..44b8032caa1a48f392b0f363d775e0875914c92d 100644 (file)
@@ -163,15 +163,15 @@ static void initializeShadow() {
     VPrintf(1, "Shadow #%d: [%zx-%zx) (%zuGB)\n", i, ShadowStart, ShadowEnd,
             (ShadowEnd - ShadowStart) >> 30);
 
-    uptr Map;
+    uptr Map = 0;
     if (__esan_which_tool == ESAN_WorkingSet) {
       // We want to identify all shadow pages that are touched so we start
       // out inaccessible.
       Map = (uptr)MmapFixedNoAccess(ShadowStart, ShadowEnd- ShadowStart,
                                     "shadow");
     } else {
-      Map = (uptr)MmapFixedNoReserve(ShadowStart, ShadowEnd - ShadowStart,
-                                     "shadow");
+      if (MmapFixedNoReserve(ShadowStart, ShadowEnd - ShadowStart, "shadow"))
+        Map = ShadowStart;
     }
     if (Map != ShadowStart) {
       Printf("FATAL: EfficiencySanitizer failed to map its shadow memory.\n");