Change ELF relocation model to static
authorAndrew Kaylor <andrew.kaylor@intel.com>
Wed, 20 Feb 2013 21:39:02 +0000 (21:39 +0000)
committerAndrew Kaylor <andrew.kaylor@intel.com>
Wed, 20 Feb 2013 21:39:02 +0000 (21:39 +0000)
llvm-svn: 175671

lldb/source/Expression/ClangExpressionParser.cpp
lldb/source/Expression/RecordingMemoryManager.cpp

index a601b00..7be3784 100644 (file)
@@ -601,10 +601,15 @@ 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;
+    if (triple.isOSBinFormatELF())
+        relocModel = llvm::Reloc::Static;
+    else
+        relocModel = llvm::Reloc::PIC_;
     EngineBuilder builder(module_ap.release());
     builder.setEngineKind(EngineKind::JIT)
         .setErrorStr(&error_string)
-        .setRelocationModel(llvm::Reloc::PIC_)
+        .setRelocationModel(relocModel)
         .setJITMemoryManager(jit_memory_manager)
         .setOptLevel(CodeGenOpt::Less)
         .setAllocateGVsWithCode(true)
index 6dc2029..2a81fc2 100644 (file)
@@ -294,6 +294,8 @@ RecordingMemoryManager::ReportAllocations (llvm::ExecutionEngine &engine)
         
         engine.mapSectionAddress((void*)ai->m_local_start, ai->m_remote_start);
     }
+    // Trigger re-application of relocations.
+    engine.finalizeObject();
 }
 
 bool