summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source')
-rw-r--r--lldb/source/Expression/ClangExpressionParser.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/lldb/source/Expression/ClangExpressionParser.cpp b/lldb/source/Expression/ClangExpressionParser.cpp
index 05e26e18f05..1d86c9161b6 100644
--- a/lldb/source/Expression/ClangExpressionParser.cpp
+++ b/lldb/source/Expression/ClangExpressionParser.cpp
@@ -609,10 +609,18 @@ ClangExpressionParser::PrepareForExecution (lldb::addr_t &func_allocation_addr,
llvm::Triple triple(module_ap->getTargetTriple());
llvm::Function *function = module_ap->getFunction (function_name.c_str());
llvm::Reloc::Model relocModel;
+ llvm::CodeModel::Model codeModel;
if (triple.isOSBinFormatELF())
+ {
relocModel = llvm::Reloc::Static;
+ // This will be small for 32-bit and large for 64-bit.
+ codeModel = llvm::CodeModel::JITDefault;
+ }
else
+ {
relocModel = llvm::Reloc::PIC_;
+ codeModel = llvm::CodeModel::Small;
+ }
EngineBuilder builder(module_ap.release());
builder.setEngineKind(EngineKind::JIT)
.setErrorStr(&error_string)
@@ -620,7 +628,7 @@ ClangExpressionParser::PrepareForExecution (lldb::addr_t &func_allocation_addr,
.setJITMemoryManager(jit_memory_manager)
.setOptLevel(CodeGenOpt::Less)
.setAllocateGVsWithCode(true)
- .setCodeModel(CodeModel::Small)
+ .setCodeModel(codeModel)
.setUseMCJIT(true);
StringRef mArch;
OpenPOWER on IntegriCloud