summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/msan/msan_linux.cc
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2012-12-26 06:37:23 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2012-12-26 06:37:23 +0000
commit794a73124bd4f831d6c7e235f4630bb094108e7c (patch)
tree3ceb0851a3bf4fdf359bd6823c49b4f09c10171e /compiler-rt/lib/msan/msan_linux.cc
parenta11cd57a7810257a4d92cc9bf767ab2ca1e0177b (diff)
downloadbcm5719-llvm-794a73124bd4f831d6c7e235f4630bb094108e7c.tar.gz
bcm5719-llvm-794a73124bd4f831d6c7e235f4630bb094108e7c.zip
[msan] Check for conflicting memory mappings.
Check for conflicting memory mappings before attempting to map shadow. Helps avoid segfault on Linux with disabled ASLR. llvm-svn: 171100
Diffstat (limited to 'compiler-rt/lib/msan/msan_linux.cc')
-rw-r--r--compiler-rt/lib/msan/msan_linux.cc6
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler-rt/lib/msan/msan_linux.cc b/compiler-rt/lib/msan/msan_linux.cc
index aea29453c32..b51f6363310 100644
--- a/compiler-rt/lib/msan/msan_linux.cc
+++ b/compiler-rt/lib/msan/msan_linux.cc
@@ -51,6 +51,12 @@ bool InitShadow(bool prot1, bool prot2, bool map_shadow, bool init_origins) {
Printf("Bad1 : %p %p\n", kBad1Beg, kBad1End);
}
+ if (!MemoryRangeIsAvailable(kShadowBeg,
+ init_origins ? kOriginsEnd : kShadowEnd)) {
+ Printf("FATAL: Shadow memory range is not available.\n");
+ return false;
+ }
+
if (prot1 && !Mprotect(kBad1Beg, kBad1End - kBad1Beg))
return false;
if (prot2 && !Mprotect(kBad2Beg, kBad2End - kBad2Beg))
OpenPOWER on IntegriCloud