summaryrefslogtreecommitdiffstats
path: root/llvm/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
diff options
context:
space:
mode:
authorAndrew Kaylor <andrew.kaylor@intel.com>2013-10-01 01:47:35 +0000
committerAndrew Kaylor <andrew.kaylor@intel.com>2013-10-01 01:47:35 +0000
commitea395924d2359443a7bd3bad774ed848654c2ba0 (patch)
tree67124ddeebdb3874377d6ce9ae14c14f7f7f5ea0 /llvm/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
parent9a08f9e56123194183b8f8811a826d9a91ece091 (diff)
downloadbcm5719-llvm-ea395924d2359443a7bd3bad774ed848654c2ba0.tar.gz
bcm5719-llvm-ea395924d2359443a7bd3bad774ed848654c2ba0.zip
Adding multiple module support for MCJIT.
Tests to follow. PIC with small code model and EH frame handling will not work with multiple modules. There are also some rough edges to be smoothed out for remote target support. llvm-svn: 191722
Diffstat (limited to 'llvm/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp')
-rw-r--r--llvm/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp b/llvm/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
index 650832e1292..5469c8374b1 100644
--- a/llvm/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
+++ b/llvm/lib/ExecutionEngine/MCJIT/SectionMemoryManager.cpp
@@ -105,6 +105,9 @@ bool SectionMemoryManager::finalizeMemory(std::string *ErrMsg)
// FIXME: Should in-progress permissions be reverted if an error occurs?
error_code ec;
+ // Don't allow free memory blocks to be used after setting protection flags.
+ CodeMem.FreeMem.clear();
+
// Make code memory executable.
ec = applyMemoryGroupPermissions(CodeMem,
sys::Memory::MF_READ | sys::Memory::MF_EXEC);
@@ -115,6 +118,9 @@ bool SectionMemoryManager::finalizeMemory(std::string *ErrMsg)
return true;
}
+ // Don't allow free memory blocks to be used after setting protection flags.
+ RODataMem.FreeMem.clear();
+
// Make read-only data memory read-only.
ec = applyMemoryGroupPermissions(RODataMem,
sys::Memory::MF_READ | sys::Memory::MF_EXEC);
OpenPOWER on IntegriCloud