diff options
author | Evan Cheng <evan.cheng@apple.com> | 2008-09-24 16:25:55 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2008-09-24 16:25:55 +0000 |
commit | cdc0060e270a3ad71acd9ea77f5ddee6ae11895a (patch) | |
tree | 75a08a52ff00ef2a95bb033d3ad68c4183c50ac9 | |
parent | 921a45c6d6b41196e9687c81e142c3009b529a98 (diff) | |
download | bcm5719-llvm-cdc0060e270a3ad71acd9ea77f5ddee6ae11895a.tar.gz bcm5719-llvm-cdc0060e270a3ad71acd9ea77f5ddee6ae11895a.zip |
Add DisableGVCompilation which forces the JIT to assert when it tries to allocate space for a GlobalVariable.
llvm-svn: 56557
-rw-r--r-- | llvm/include/llvm/ExecutionEngine/ExecutionEngine.h | 11 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/ExecutionEngine.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/ExecutionEngine/JIT/JIT.cpp | 4 |
3 files changed, 16 insertions, 0 deletions
diff --git a/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h b/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h index edcddde2e39..d4fd0fb19b1 100644 --- a/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h +++ b/llvm/include/llvm/ExecutionEngine/ExecutionEngine.h @@ -65,6 +65,7 @@ class ExecutionEngine { const TargetData *TD; ExecutionEngineState state; bool LazyCompilationDisabled; + bool GVCompilationDisabled; bool SymbolSearchingDisabled; protected: @@ -254,6 +255,16 @@ public: bool isLazyCompilationDisabled() const { return LazyCompilationDisabled; } + + /// DisableGVCompilation - If called, the JIT will abort if it's asked to allocate + /// space and populate a GlobalVariable. + void DisableGVCompilation(bool Disabled = true) { + GVCompilationDisabled = Disabled; + } + bool isGVCompilationDisabled() const { + return GVCompilationDisabled; + } + /// DisableSymbolSearching - If called, the JIT will not try to lookup unknown /// symbols with dlsym. A client can still use InstallLazyFunctionCreator to /// resolve symbols in a custom way. diff --git a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp index 52a69eaea77..8cc2244272b 100644 --- a/llvm/lib/ExecutionEngine/ExecutionEngine.cpp +++ b/llvm/lib/ExecutionEngine/ExecutionEngine.cpp @@ -40,6 +40,7 @@ ExecutionEngine::EERegisterFn ExecutionEngine::ExceptionTableRegister = 0; ExecutionEngine::ExecutionEngine(ModuleProvider *P) : LazyFunctionCreator(0) { LazyCompilationDisabled = false; + GVCompilationDisabled = false; SymbolSearchingDisabled = false; Modules.push_back(P); assert(P && "ModuleProvider is null?"); diff --git a/llvm/lib/ExecutionEngine/JIT/JIT.cpp b/llvm/lib/ExecutionEngine/JIT/JIT.cpp index 39ecc2796c7..383b3804758 100644 --- a/llvm/lib/ExecutionEngine/JIT/JIT.cpp +++ b/llvm/lib/ExecutionEngine/JIT/JIT.cpp @@ -552,6 +552,10 @@ void *JIT::getOrEmitGlobalVariable(const GlobalVariable *GV) { addGlobalMapping(GV, Ptr); } } else { + if (isGVCompilationDisabled()) { + cerr << "Compilation of GlobalVariable is disabled!\n"; + abort(); + } // If the global hasn't been emitted to memory yet, allocate space and // emit it into memory. It goes in the same array as the generated // code, jump tables, etc. |