diff options
Diffstat (limited to 'llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp')
| -rw-r--r-- | llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp index caebace2eb78..44695a86c4e3 100644 --- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp +++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFObjectWriter.cpp @@ -38,7 +38,7 @@ namespace { unsigned getRelocType(MCContext &Ctx, const MCValue &Target, const MCFixup &Fixup, bool IsPCRel) const override; - bool needsRelocateWithSymbol(const MCSymbol &Sym, + bool needsRelocateWithSymbol(const MCValue &Val, const MCSymbol &Sym, unsigned Type) const override; void addTargetSectionFlags(MCContext &Ctx, MCSectionELF &Sec) override; @@ -51,7 +51,8 @@ ARMELFObjectWriter::ARMELFObjectWriter(uint8_t OSABI) ELF::EM_ARM, /*HasRelocationAddend*/ false) {} -bool ARMELFObjectWriter::needsRelocateWithSymbol(const MCSymbol &Sym, +bool ARMELFObjectWriter::needsRelocateWithSymbol(const MCValue &, + const MCSymbol &, unsigned Type) const { // FIXME: This is extremely conservative. This really needs to use an // explicit list with a clear explanation for why each realocation needs to @@ -157,6 +158,18 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target, default: return ELF::R_ARM_THM_CALL; } + case ARM::fixup_arm_ldst_pcrel_12: + return ELF::R_ARM_LDR_PC_G0; + case ARM::fixup_arm_pcrel_10_unscaled: + return ELF::R_ARM_LDRS_PC_G0; + case ARM::fixup_t2_ldst_pcrel_12: + return ELF::R_ARM_THM_PC12; + case ARM::fixup_arm_adr_pcrel_12: + return ELF::R_ARM_ALU_PC_G0; + case ARM::fixup_thumb_adr_pcrel_10: + return ELF::R_ARM_THM_PC8; + case ARM::fixup_t2_adr_pcrel_12: + return ELF::R_ARM_THM_ALU_PREL_11_0; case ARM::fixup_bf_target: return ELF::R_ARM_THM_BF16; case ARM::fixup_bfc_target: |
