aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/ARM/ARMTargetObjectFile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/ARM/ARMTargetObjectFile.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMTargetObjectFile.cpp23
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,