mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Add ARM NONE and PREL31 relocation types.
Add R_ARM_NONE and R_ARM_PREL31 relocation types to MCExpr. Both of them will be used while generating .ARM.extab and .ARM.exidx sections. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169965 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9ee68e3f72
commit
37c7461fc3
@ -160,6 +160,7 @@ public:
|
||||
VK_TLVP, // Mach-O thread local variable relocation
|
||||
VK_SECREL,
|
||||
// FIXME: We'd really like to use the generic Kinds listed above for these.
|
||||
VK_ARM_NONE,
|
||||
VK_ARM_PLT, // ARM-style PLT references. i.e., (PLT) instead of @PLT
|
||||
VK_ARM_TLSGD, // ditto for TLSGD, GOT, GOTOFF, TPOFF and GOTTPOFF
|
||||
VK_ARM_GOT,
|
||||
@ -168,6 +169,7 @@ public:
|
||||
VK_ARM_GOTTPOFF,
|
||||
VK_ARM_TARGET1,
|
||||
VK_ARM_TARGET2,
|
||||
VK_ARM_PREL31,
|
||||
|
||||
VK_PPC_TOC, // TOC base
|
||||
VK_PPC_TOC_ENTRY, // TOC entry
|
||||
|
@ -54,14 +54,16 @@ void MCExpr::print(raw_ostream &OS) const {
|
||||
else
|
||||
OS << Sym;
|
||||
|
||||
if (SRE.getKind() == MCSymbolRefExpr::VK_ARM_PLT ||
|
||||
if (SRE.getKind() == MCSymbolRefExpr::VK_ARM_NONE ||
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_PLT ||
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_TLSGD ||
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_GOT ||
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_GOTOFF ||
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_TPOFF ||
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_GOTTPOFF ||
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_TARGET1 ||
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_TARGET2)
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_TARGET2 ||
|
||||
SRE.getKind() == MCSymbolRefExpr::VK_ARM_PREL31)
|
||||
OS << MCSymbolRefExpr::getVariantKindName(SRE.getKind());
|
||||
else if (SRE.getKind() != MCSymbolRefExpr::VK_None &&
|
||||
SRE.getKind() != MCSymbolRefExpr::VK_PPC_DARWIN_HA16 &&
|
||||
@ -193,6 +195,7 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) {
|
||||
case VK_DTPOFF: return "DTPOFF";
|
||||
case VK_TLVP: return "TLVP";
|
||||
case VK_SECREL: return "SECREL";
|
||||
case VK_ARM_NONE: return "(NONE)";
|
||||
case VK_ARM_PLT: return "(PLT)";
|
||||
case VK_ARM_GOT: return "(GOT)";
|
||||
case VK_ARM_GOTOFF: return "(GOTOFF)";
|
||||
@ -201,6 +204,7 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) {
|
||||
case VK_ARM_TLSGD: return "(tlsgd)";
|
||||
case VK_ARM_TARGET1: return "(target1)";
|
||||
case VK_ARM_TARGET2: return "(target2)";
|
||||
case VK_ARM_PREL31: return "(prel31)";
|
||||
case VK_PPC_TOC: return "tocbase";
|
||||
case VK_PPC_TOC_ENTRY: return "toc";
|
||||
case VK_PPC_DARWIN_HA16: return "ha16";
|
||||
|
@ -133,6 +133,7 @@ const MCSymbol *ARMELFObjectWriter::ExplicitRelSym(const MCAssembler &Asm,
|
||||
switch (RelocType) {
|
||||
default: EmitThisSym = true; break;
|
||||
case ELF::R_ARM_ABS32: EmitThisSym = false; break;
|
||||
case ELF::R_ARM_PREL31: EmitThisSym = false; break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -225,6 +226,9 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target,
|
||||
case FK_Data_4:
|
||||
switch (Modifier) {
|
||||
default: llvm_unreachable("Unsupported Modifier");
|
||||
case MCSymbolRefExpr::VK_ARM_NONE:
|
||||
Type = ELF::R_ARM_NONE;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_ARM_GOT:
|
||||
Type = ELF::R_ARM_GOT_BREL;
|
||||
break;
|
||||
@ -249,7 +253,10 @@ unsigned ARMELFObjectWriter::GetRelocTypeInner(const MCValue &Target,
|
||||
case MCSymbolRefExpr::VK_ARM_TARGET2:
|
||||
Type = ELF::R_ARM_TARGET2;
|
||||
break;
|
||||
}
|
||||
case MCSymbolRefExpr::VK_ARM_PREL31:
|
||||
Type = ELF::R_ARM_PREL31;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case ARM::fixup_arm_ldst_pcrel_12:
|
||||
case ARM::fixup_arm_pcrel_10:
|
||||
|
Loading…
Reference in New Issue
Block a user