From 32b92669e4ec83005eff2641b092f25be09373b8 Mon Sep 17 00:00:00 2001 From: Amit Aryeh Levy Date: Tue, 25 Apr 2017 20:05:51 -0400 Subject: Add RWPI/ROPI relocation model support Adds support for using LLVM 4's ROPI and RWPI relocation models for ARM --- src/rustllvm/PassWrapper.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/rustllvm/PassWrapper.cpp') diff --git a/src/rustllvm/PassWrapper.cpp b/src/rustllvm/PassWrapper.cpp index c410a6b1349..1e19e28e78a 100644 --- a/src/rustllvm/PassWrapper.cpp +++ b/src/rustllvm/PassWrapper.cpp @@ -290,7 +290,7 @@ extern "C" void LLVMRustPrintTargetFeatures(LLVMTargetMachineRef) { extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine( const char *TripleStr, const char *CPU, const char *Feature, - LLVMRustCodeModel RustCM, LLVMRelocMode Reloc, + LLVMRustCodeModel RustCM, int Reloc, LLVMRustCodeGenOptLevel RustOptLevel, bool UseSoftFloat, bool PositionIndependentExecutable, bool FunctionSections, bool DataSections) { @@ -304,15 +304,26 @@ extern "C" LLVMTargetMachineRef LLVMRustCreateTargetMachine( auto OptLevel = fromRust(RustOptLevel); switch (Reloc) { - case LLVMRelocStatic: + case 1: RM = Reloc::Static; break; - case LLVMRelocPIC: + case 2: RM = Reloc::PIC_; break; - case LLVMRelocDynamicNoPic: + case 3: RM = Reloc::DynamicNoPIC; break; +#if LLVM_VERSION_GE(4, 0) + case 4: + RM = Reloc::ROPI; + break; + case 5: + RM = Reloc::RWPI; + break; + case 6: + RM = Reloc::ROPI_RWPI; + break; +#endif default: #if LLVM_VERSION_LE(3, 8) RM = Reloc::Default; -- cgit 1.4.1-3-g733a5