diff options
Diffstat (limited to 'llvm/lib/Target/ARM/ARMTargetObjectFile.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMTargetObjectFile.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp b/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp index cd231896d691..3692eeeaaa64 100644 --- a/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp +++ b/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp @@ -9,13 +9,13 @@ #include "ARMTargetObjectFile.h" #include "ARMSubtarget.h" #include "ARMTargetMachine.h" +#include "MCTargetDesc/ARMMCAsmInfo.h" #include "llvm/BinaryFormat/Dwarf.h" #include "llvm/BinaryFormat/ELF.h" #include "llvm/MC/MCAsmInfo.h" #include "llvm/MC/MCContext.h" #include "llvm/MC/MCExpr.h" #include "llvm/MC/MCSectionELF.h" -#include "llvm/MC/MCTargetOptions.h" #include "llvm/MC/MCValue.h" #include "llvm/MC/SectionKind.h" #include "llvm/Target/TargetMachine.h" @@ -28,10 +28,15 @@ using namespace dwarf; // ELF Target //===----------------------------------------------------------------------===// +ARMElfTargetObjectFile::ARMElfTargetObjectFile() { + PLTRelativeSpecifier = ARM::S_PREL31; + SupportIndirectSymViaGOTPCRel = true; +} + void ARMElfTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM) { const ARMBaseTargetMachine &ARM_TM = static_cast<const ARMBaseTargetMachine &>(TM); - bool isAAPCS_ABI = ARM_TM.TargetABI == ARMBaseTargetMachine::ARMABI::ARM_ABI_AAPCS; + bool isAAPCS_ABI = ARM_TM.TargetABI == ARM::ARMABI::ARM_ABI_AAPCS; bool genExecuteOnly = ARM_TM.getMCSubtargetInfo()->hasFeature(ARM::FeatureExecuteOnly); @@ -61,16 +66,15 @@ const MCExpr *ARMElfTargetObjectFile::getIndirectSymViaGOTPCRel( const GlobalValue *GV, const MCSymbol *Sym, const MCValue &MV, int64_t Offset, MachineModuleInfo *MMI, MCStreamer &Streamer) const { int64_t FinalOffset = Offset + MV.getConstant(); - const MCExpr *Res = MCSymbolRefExpr::create( - Sym, MCSymbolRefExpr::VK_ARM_GOT_PREL, getContext()); + const MCExpr *Res = + MCSymbolRefExpr::create(Sym, ARM::S_GOT_PREL, getContext()); const MCExpr *Off = MCConstantExpr::create(FinalOffset, getContext()); return MCBinaryExpr::createAdd(Res, Off, getContext()); } const MCExpr *ARMElfTargetObjectFile:: getIndirectSymViaRWPI(const MCSymbol *Sym) const { - return MCSymbolRefExpr::create(Sym, MCSymbolRefExpr::VK_ARM_SBREL, - getContext()); + return MCSymbolRefExpr::create(Sym, ARM::S_SBREL, getContext()); } const MCExpr *ARMElfTargetObjectFile::getTTypeGlobalReference( @@ -82,14 +86,13 @@ const MCExpr *ARMElfTargetObjectFile::getTTypeGlobalReference( assert(Encoding == DW_EH_PE_absptr && "Can handle absptr encoding only"); - return MCSymbolRefExpr::create(TM.getSymbol(GV), - MCSymbolRefExpr::VK_ARM_TARGET2, getContext()); + return MCSymbolRefExpr::create(TM.getSymbol(GV), ARM::S_TARGET2, + getContext()); } const MCExpr *ARMElfTargetObjectFile:: getDebugThreadLocalSymbol(const MCSymbol *Sym) const { - return MCSymbolRefExpr::create(Sym, MCSymbolRefExpr::VK_ARM_TLSLDO, - getContext()); + return MCSymbolRefExpr::create(Sym, ARM::S_TLSLDO, getContext()); } static bool isExecuteOnlyFunction(const GlobalObject *GO, SectionKind SK, |
