mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-16 05:41:45 +00:00
[PowerPC] Support various tls-related modifiers
The current code base only supports the minimum set of tls-related relocations and @modifiers that are necessary to support compiler- generated code. This patch extends this to the full set defined in the ABI (and supported by the GNU assembler) for the benefit of the assembler parser. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184551 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f7c1ee79fe
commit
cab0a19338
@ -183,17 +183,39 @@ public:
|
||||
VK_PPC_TOC_LO, // symbol@toc@l
|
||||
VK_PPC_TOC_HI, // symbol@toc@h
|
||||
VK_PPC_TOC_HA, // symbol@toc@ha
|
||||
VK_PPC_TPREL, // symbol@tprel
|
||||
VK_PPC_TPREL_LO, // symbol@tprel@l
|
||||
VK_PPC_TPREL_HI, // symbol@tprel@h
|
||||
VK_PPC_TPREL_HA, // symbol@tprel@ha
|
||||
VK_PPC_TPREL_HIGHER, // symbol@tprel@higher
|
||||
VK_PPC_TPREL_HIGHERA, // symbol@tprel@highera
|
||||
VK_PPC_TPREL_HIGHEST, // symbol@tprel@highest
|
||||
VK_PPC_TPREL_HIGHESTA, // symbol@tprel@highesta
|
||||
VK_PPC_DTPREL, // symbol@dtprel
|
||||
VK_PPC_DTPREL_LO, // symbol@dtprel@l
|
||||
VK_PPC_DTPREL_HI, // symbol@dtprel@h
|
||||
VK_PPC_DTPREL_HA, // symbol@dtprel@ha
|
||||
VK_PPC_DTPREL_HIGHER, // symbol@dtprel@higher
|
||||
VK_PPC_DTPREL_HIGHERA, // symbol@dtprel@highera
|
||||
VK_PPC_DTPREL_HIGHEST, // symbol@dtprel@highest
|
||||
VK_PPC_DTPREL_HIGHESTA,// symbol@dtprel@highesta
|
||||
VK_PPC_GOT_TPREL, // symbol@got@tprel
|
||||
VK_PPC_GOT_TPREL_LO, // symbol@got@tprel@l
|
||||
VK_PPC_GOT_TPREL_HI, // symbol@got@tprel@h
|
||||
VK_PPC_GOT_TPREL_HA, // symbol@got@tprel@ha
|
||||
VK_PPC_GOT_DTPREL, // symbol@got@dtprel
|
||||
VK_PPC_GOT_DTPREL_LO, // symbol@got@dtprel@l
|
||||
VK_PPC_GOT_DTPREL_HI, // symbol@got@dtprel@h
|
||||
VK_PPC_GOT_DTPREL_HA, // symbol@got@dtprel@ha
|
||||
VK_PPC_TLS, // symbol@tls
|
||||
VK_PPC_GOT_TLSGD, // symbol@got@tlsgd
|
||||
VK_PPC_GOT_TLSGD_LO, // symbol@got@tlsgd@l
|
||||
VK_PPC_GOT_TLSGD_HI, // symbol@got@tlsgd@h
|
||||
VK_PPC_GOT_TLSGD_HA, // symbol@got@tlsgd@ha
|
||||
VK_PPC_TLSGD, // symbol@tlsgd
|
||||
VK_PPC_GOT_TLSLD, // symbol@got@tlsld
|
||||
VK_PPC_GOT_TLSLD_LO, // symbol@got@tlsld@l
|
||||
VK_PPC_GOT_TLSLD_HI, // symbol@got@tlsld@h
|
||||
VK_PPC_GOT_TLSLD_HA, // symbol@got@tlsld@ha
|
||||
VK_PPC_TLSLD, // symbol@tlsld
|
||||
|
||||
|
@ -2029,8 +2029,30 @@ StringRef ELFObjectFile<ELFT>::getRelocationTypeName(uint32_t Type) const {
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL14_BRTAKEN);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL14_BRNTAKEN);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_REL32);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_LO);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_TPREL16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16_LO);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_DTPREL16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16_LO);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSGD16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_LO);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TLSLD16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_LO_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_TPREL16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_LO_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC_GOT_DTPREL16_HA);
|
||||
default: break;
|
||||
}
|
||||
break;
|
||||
@ -2067,16 +2089,42 @@ StringRef ELFObjectFile<ELFT>::getRelocationTypeName(uint32_t Type) const {
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TOC16_LO_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TLS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_LO);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_LO);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16_LO);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSGD16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16_LO);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TLSLD16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_LO_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_TPREL16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_LO_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_HI);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_GOT_DTPREL16_HA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_LO_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHER);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHERA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHEST);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TPREL16_HIGHESTA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_LO_DS);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHER);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHERA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHEST);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_DTPREL16_HIGHESTA);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TLSGD);
|
||||
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_PPC64_TLSLD);
|
||||
default: break;
|
||||
|
@ -461,8 +461,30 @@ enum {
|
||||
R_PPC_REL14_BRTAKEN = 12,
|
||||
R_PPC_REL14_BRNTAKEN = 13,
|
||||
R_PPC_REL32 = 26,
|
||||
R_PPC_TPREL16 = 69,
|
||||
R_PPC_TPREL16_LO = 70,
|
||||
R_PPC_TPREL16_HA = 72
|
||||
R_PPC_TPREL16_HI = 71,
|
||||
R_PPC_TPREL16_HA = 72,
|
||||
R_PPC_DTPREL16 = 74,
|
||||
R_PPC_DTPREL16_LO = 75,
|
||||
R_PPC_DTPREL16_HI = 76,
|
||||
R_PPC_DTPREL16_HA = 77,
|
||||
R_PPC_GOT_TLSGD16 = 79,
|
||||
R_PPC_GOT_TLSGD16_LO = 80,
|
||||
R_PPC_GOT_TLSGD16_HI = 81,
|
||||
R_PPC_GOT_TLSGD16_HA = 82,
|
||||
R_PPC_GOT_TLSLD16 = 83,
|
||||
R_PPC_GOT_TLSLD16_LO = 84,
|
||||
R_PPC_GOT_TLSLD16_HI = 85,
|
||||
R_PPC_GOT_TLSLD16_HA = 86,
|
||||
R_PPC_GOT_TPREL16_DS = 87,
|
||||
R_PPC_GOT_TPREL16_LO_DS = 88,
|
||||
R_PPC_GOT_TPREL16_HI = 89,
|
||||
R_PPC_GOT_TPREL16_HA = 90,
|
||||
R_PPC_GOT_DTPREL16_DS = 91,
|
||||
R_PPC_GOT_DTPREL16_LO_DS = 92,
|
||||
R_PPC_GOT_DTPREL16_HI = 93,
|
||||
R_PPC_GOT_DTPREL16_HA = 94
|
||||
};
|
||||
|
||||
// ELF Relocation types for PPC64
|
||||
@ -498,16 +520,42 @@ enum {
|
||||
R_PPC64_TOC16_DS = 63,
|
||||
R_PPC64_TOC16_LO_DS = 64,
|
||||
R_PPC64_TLS = 67,
|
||||
R_PPC64_TPREL16 = 69,
|
||||
R_PPC64_TPREL16_LO = 70,
|
||||
R_PPC64_TPREL16_HI = 71,
|
||||
R_PPC64_TPREL16_HA = 72,
|
||||
R_PPC64_DTPREL16 = 74,
|
||||
R_PPC64_DTPREL16_LO = 75,
|
||||
R_PPC64_DTPREL16_HI = 76,
|
||||
R_PPC64_DTPREL16_HA = 77,
|
||||
R_PPC64_GOT_TLSGD16 = 79,
|
||||
R_PPC64_GOT_TLSGD16_LO = 80,
|
||||
R_PPC64_GOT_TLSGD16_HI = 81,
|
||||
R_PPC64_GOT_TLSGD16_HA = 82,
|
||||
R_PPC64_GOT_TLSLD16 = 83,
|
||||
R_PPC64_GOT_TLSLD16_LO = 84,
|
||||
R_PPC64_GOT_TLSLD16_HI = 85,
|
||||
R_PPC64_GOT_TLSLD16_HA = 86,
|
||||
R_PPC64_GOT_TPREL16_DS = 87,
|
||||
R_PPC64_GOT_TPREL16_LO_DS = 88,
|
||||
R_PPC64_GOT_TPREL16_HI = 89,
|
||||
R_PPC64_GOT_TPREL16_HA = 90,
|
||||
R_PPC64_GOT_DTPREL16_DS = 91,
|
||||
R_PPC64_GOT_DTPREL16_LO_DS = 92,
|
||||
R_PPC64_GOT_DTPREL16_HI = 93,
|
||||
R_PPC64_GOT_DTPREL16_HA = 94,
|
||||
R_PPC64_TPREL16_DS = 95,
|
||||
R_PPC64_TPREL16_LO_DS = 96,
|
||||
R_PPC64_TPREL16_HIGHER = 97,
|
||||
R_PPC64_TPREL16_HIGHERA = 98,
|
||||
R_PPC64_TPREL16_HIGHEST = 99,
|
||||
R_PPC64_TPREL16_HIGHESTA = 100,
|
||||
R_PPC64_DTPREL16_DS = 101,
|
||||
R_PPC64_DTPREL16_LO_DS = 102,
|
||||
R_PPC64_DTPREL16_HIGHER = 103,
|
||||
R_PPC64_DTPREL16_HIGHERA = 104,
|
||||
R_PPC64_DTPREL16_HIGHEST = 105,
|
||||
R_PPC64_DTPREL16_HIGHESTA = 106,
|
||||
R_PPC64_TLSGD = 107,
|
||||
R_PPC64_TLSLD = 108
|
||||
};
|
||||
|
@ -363,17 +363,39 @@ void MCELFStreamer::fixSymbolsInTLSFixups(const MCExpr *expr) {
|
||||
case MCSymbolRefExpr::VK_Mips_GOTTPREL:
|
||||
case MCSymbolRefExpr::VK_Mips_TPREL_HI:
|
||||
case MCSymbolRefExpr::VK_Mips_TPREL_LO:
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL:
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_LO:
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HI:
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HA:
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HIGHER:
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HIGHERA:
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HIGHEST:
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HIGHESTA:
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL:
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_LO:
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HI:
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HA:
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHER:
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHERA:
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHEST:
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHESTA:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TPREL:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TPREL_LO:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TPREL_HI:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TPREL_HA:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_DTPREL:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_LO:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HI:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HA:
|
||||
case MCSymbolRefExpr::VK_PPC_TLS:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_LO:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HI:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HA:
|
||||
case MCSymbolRefExpr::VK_PPC_TLSGD:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_LO:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HI:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HA:
|
||||
case MCSymbolRefExpr::VK_PPC_TLSLD:
|
||||
break;
|
||||
|
@ -208,17 +208,39 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) {
|
||||
case VK_PPC_TOC_LO: return "toc@l";
|
||||
case VK_PPC_TOC_HI: return "toc@h";
|
||||
case VK_PPC_TOC_HA: return "toc@ha";
|
||||
case VK_PPC_TPREL: return "tprel";
|
||||
case VK_PPC_TPREL_LO: return "tprel@l";
|
||||
case VK_PPC_TPREL_HI: return "tprel@h";
|
||||
case VK_PPC_TPREL_HA: return "tprel@ha";
|
||||
case VK_PPC_TPREL_HIGHER: return "tprel@higher";
|
||||
case VK_PPC_TPREL_HIGHERA: return "tprel@highera";
|
||||
case VK_PPC_TPREL_HIGHEST: return "tprel@highest";
|
||||
case VK_PPC_TPREL_HIGHESTA: return "tprel@highesta";
|
||||
case VK_PPC_DTPREL: return "dtprel";
|
||||
case VK_PPC_DTPREL_LO: return "dtprel@l";
|
||||
case VK_PPC_DTPREL_HI: return "dtprel@h";
|
||||
case VK_PPC_DTPREL_HA: return "dtprel@ha";
|
||||
case VK_PPC_DTPREL_HIGHER: return "dtprel@higher";
|
||||
case VK_PPC_DTPREL_HIGHERA: return "dtprel@highera";
|
||||
case VK_PPC_DTPREL_HIGHEST: return "dtprel@highest";
|
||||
case VK_PPC_DTPREL_HIGHESTA: return "dtprel@highesta";
|
||||
case VK_PPC_GOT_TPREL: return "got@tprel";
|
||||
case VK_PPC_GOT_TPREL_LO: return "got@tprel@l";
|
||||
case VK_PPC_GOT_TPREL_HI: return "got@tprel@h";
|
||||
case VK_PPC_GOT_TPREL_HA: return "got@tprel@ha";
|
||||
case VK_PPC_GOT_DTPREL: return "got@dtprel";
|
||||
case VK_PPC_GOT_DTPREL_LO: return "got@dtprel@l";
|
||||
case VK_PPC_GOT_DTPREL_HI: return "got@dtprel@h";
|
||||
case VK_PPC_GOT_DTPREL_HA: return "got@dtprel@ha";
|
||||
case VK_PPC_TLS: return "tls";
|
||||
case VK_PPC_GOT_TLSGD: return "got@tlsgd";
|
||||
case VK_PPC_GOT_TLSGD_LO: return "got@tlsgd@l";
|
||||
case VK_PPC_GOT_TLSGD_HI: return "got@tlsgd@h";
|
||||
case VK_PPC_GOT_TLSGD_HA: return "got@tlsgd@ha";
|
||||
case VK_PPC_TLSGD: return "tlsgd";
|
||||
case VK_PPC_GOT_TLSLD: return "got@tlsld";
|
||||
case VK_PPC_GOT_TLSLD_LO: return "got@tlsld@l";
|
||||
case VK_PPC_GOT_TLSLD_HI: return "got@tlsld@h";
|
||||
case VK_PPC_GOT_TLSLD_HA: return "got@tlsld@ha";
|
||||
case VK_PPC_TLSLD: return "tlsld";
|
||||
case VK_Mips_GPREL: return "GPREL";
|
||||
@ -311,24 +333,68 @@ MCSymbolRefExpr::getVariantKindForName(StringRef Name) {
|
||||
.Case("toc@ha", VK_PPC_TOC_HA)
|
||||
.Case("TLS", VK_PPC_TLS)
|
||||
.Case("tls", VK_PPC_TLS)
|
||||
.Case("TPREL", VK_PPC_TPREL)
|
||||
.Case("tprel", VK_PPC_TPREL)
|
||||
.Case("TPREL@L", VK_PPC_TPREL_LO)
|
||||
.Case("tprel@l", VK_PPC_TPREL_LO)
|
||||
.Case("TPREL@H", VK_PPC_TPREL_HI)
|
||||
.Case("tprel@h", VK_PPC_TPREL_HI)
|
||||
.Case("TPREL@HA", VK_PPC_TPREL_HA)
|
||||
.Case("tprel@ha", VK_PPC_TPREL_HA)
|
||||
.Case("TPREL@HIGHER", VK_PPC_TPREL_HIGHER)
|
||||
.Case("tprel@higher", VK_PPC_TPREL_HIGHER)
|
||||
.Case("TPREL@HIGHERA", VK_PPC_TPREL_HIGHERA)
|
||||
.Case("tprel@highera", VK_PPC_TPREL_HIGHERA)
|
||||
.Case("TPREL@HIGHEST", VK_PPC_TPREL_HIGHEST)
|
||||
.Case("tprel@highest", VK_PPC_TPREL_HIGHEST)
|
||||
.Case("TPREL@HIGHESTA", VK_PPC_TPREL_HIGHESTA)
|
||||
.Case("tprel@highesta", VK_PPC_TPREL_HIGHESTA)
|
||||
.Case("DTPREL", VK_PPC_DTPREL)
|
||||
.Case("dtprel", VK_PPC_DTPREL)
|
||||
.Case("DTPREL@L", VK_PPC_DTPREL_LO)
|
||||
.Case("dtprel@l", VK_PPC_DTPREL_LO)
|
||||
.Case("DTPREL@H", VK_PPC_DTPREL_HI)
|
||||
.Case("dtprel@h", VK_PPC_DTPREL_HI)
|
||||
.Case("DTPREL@HA", VK_PPC_DTPREL_HA)
|
||||
.Case("dtprel@ha", VK_PPC_DTPREL_HA)
|
||||
.Case("DTPREL@HIGHER", VK_PPC_DTPREL_HIGHER)
|
||||
.Case("dtprel@higher", VK_PPC_DTPREL_HIGHER)
|
||||
.Case("DTPREL@HIGHERA", VK_PPC_DTPREL_HIGHERA)
|
||||
.Case("dtprel@highera", VK_PPC_DTPREL_HIGHERA)
|
||||
.Case("DTPREL@HIGHEST", VK_PPC_DTPREL_HIGHEST)
|
||||
.Case("dtprel@highest", VK_PPC_DTPREL_HIGHEST)
|
||||
.Case("DTPREL@HIGHESTA", VK_PPC_DTPREL_HIGHESTA)
|
||||
.Case("dtprel@highesta", VK_PPC_DTPREL_HIGHESTA)
|
||||
.Case("GOT@TPREL", VK_PPC_GOT_TPREL)
|
||||
.Case("got@tprel", VK_PPC_GOT_TPREL)
|
||||
.Case("GOT@TPREL@L", VK_PPC_GOT_TPREL_LO)
|
||||
.Case("got@tprel@l", VK_PPC_GOT_TPREL_LO)
|
||||
.Case("GOT@TPREL@H", VK_PPC_GOT_TPREL_HI)
|
||||
.Case("got@tprel@h", VK_PPC_GOT_TPREL_HI)
|
||||
.Case("GOT@TPREL@HA", VK_PPC_GOT_TPREL_HA)
|
||||
.Case("got@tprel@ha", VK_PPC_GOT_TPREL_HA)
|
||||
.Case("GOT@DTPREL", VK_PPC_GOT_DTPREL)
|
||||
.Case("got@dtprel", VK_PPC_GOT_DTPREL)
|
||||
.Case("GOT@DTPREL@L", VK_PPC_GOT_DTPREL_LO)
|
||||
.Case("got@dtprel@l", VK_PPC_GOT_DTPREL_LO)
|
||||
.Case("GOT@DTPREL@H", VK_PPC_GOT_DTPREL_HI)
|
||||
.Case("got@dtprel@h", VK_PPC_GOT_DTPREL_HI)
|
||||
.Case("GOT@DTPREL@HA", VK_PPC_GOT_DTPREL_HA)
|
||||
.Case("got@dtprel@ha", VK_PPC_GOT_DTPREL_HA)
|
||||
.Case("GOT@TLSGD", VK_PPC_GOT_TLSGD)
|
||||
.Case("got@tlsgd", VK_PPC_GOT_TLSGD)
|
||||
.Case("GOT@TLSGD@L", VK_PPC_GOT_TLSGD_LO)
|
||||
.Case("got@tlsgd@l", VK_PPC_GOT_TLSGD_LO)
|
||||
.Case("GOT@TLSGD@H", VK_PPC_GOT_TLSGD_HI)
|
||||
.Case("got@tlsgd@h", VK_PPC_GOT_TLSGD_HI)
|
||||
.Case("GOT@TLSGD@HA", VK_PPC_GOT_TLSGD_HA)
|
||||
.Case("got@tlsgd@ha", VK_PPC_GOT_TLSGD_HA)
|
||||
.Case("GOT@TLSLD", VK_PPC_GOT_TLSLD)
|
||||
.Case("got@tlsld", VK_PPC_GOT_TLSLD)
|
||||
.Case("GOT@TLSLD@L", VK_PPC_GOT_TLSLD_LO)
|
||||
.Case("got@tlsld@l", VK_PPC_GOT_TLSLD_LO)
|
||||
.Case("GOT@TLSLD@H", VK_PPC_GOT_TLSLD_HI)
|
||||
.Case("got@tlsld@h", VK_PPC_GOT_TLSLD_HI)
|
||||
.Case("GOT@TLSLD@HA", VK_PPC_GOT_TLSLD_HA)
|
||||
.Case("got@tlsld@ha", VK_PPC_GOT_TLSLD_HA)
|
||||
.Default(VK_Invalid);
|
||||
|
@ -120,33 +120,90 @@ unsigned PPCELFObjectWriter::getRelocTypeInner(const MCValue &Target,
|
||||
case MCSymbolRefExpr::VK_PPC_TOC_HA:
|
||||
Type = ELF::R_PPC64_TOC16_HA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL:
|
||||
Type = ELF::R_PPC_TPREL16;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_LO:
|
||||
Type = ELF::R_PPC_TPREL16_LO;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HI:
|
||||
Type = ELF::R_PPC_TPREL16_HI;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HA:
|
||||
Type = ELF::R_PPC_TPREL16_HA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HIGHER:
|
||||
Type = ELF::R_PPC64_TPREL16_HIGHER;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HIGHERA:
|
||||
Type = ELF::R_PPC64_TPREL16_HIGHERA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HIGHEST:
|
||||
Type = ELF::R_PPC64_TPREL16_HIGHEST;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_HIGHESTA:
|
||||
Type = ELF::R_PPC64_TPREL16_HIGHESTA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL:
|
||||
Type = ELF::R_PPC64_DTPREL16;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_LO:
|
||||
Type = ELF::R_PPC64_DTPREL16_LO;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HI:
|
||||
Type = ELF::R_PPC64_DTPREL16_HI;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HA:
|
||||
Type = ELF::R_PPC64_DTPREL16_HA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHER:
|
||||
Type = ELF::R_PPC64_DTPREL16_HIGHER;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHERA:
|
||||
Type = ELF::R_PPC64_DTPREL16_HIGHERA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHEST:
|
||||
Type = ELF::R_PPC64_DTPREL16_HIGHEST;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_HIGHESTA:
|
||||
Type = ELF::R_PPC64_DTPREL16_HIGHESTA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD:
|
||||
Type = ELF::R_PPC64_GOT_TLSGD16;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_LO:
|
||||
Type = ELF::R_PPC64_GOT_TLSGD16_LO;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HI:
|
||||
Type = ELF::R_PPC64_GOT_TLSGD16_HI;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HA:
|
||||
Type = ELF::R_PPC64_GOT_TLSGD16_HA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD:
|
||||
Type = ELF::R_PPC64_GOT_TLSLD16;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_LO:
|
||||
Type = ELF::R_PPC64_GOT_TLSLD16_LO;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HI:
|
||||
Type = ELF::R_PPC64_GOT_TLSLD16_HI;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HA:
|
||||
Type = ELF::R_PPC64_GOT_TLSLD16_HA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TPREL_HI:
|
||||
Type = ELF::R_PPC64_GOT_TPREL16_HI;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TPREL_HA:
|
||||
Type = ELF::R_PPC64_GOT_TPREL16_HA;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HI:
|
||||
Type = ELF::R_PPC64_GOT_DTPREL16_HI;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_HA:
|
||||
Type = ELF::R_PPC64_GOT_DTPREL16_HA;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PPC::fixup_ppc_half16ds:
|
||||
@ -164,9 +221,30 @@ unsigned PPCELFObjectWriter::getRelocTypeInner(const MCValue &Target,
|
||||
case MCSymbolRefExpr::VK_PPC_TOC_LO:
|
||||
Type = ELF::R_PPC64_TOC16_LO_DS;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL:
|
||||
Type = ELF::R_PPC64_TPREL16_DS;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TPREL_LO:
|
||||
Type = ELF::R_PPC64_TPREL16_LO_DS;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL:
|
||||
Type = ELF::R_PPC64_DTPREL16_DS;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_DTPREL_LO:
|
||||
Type = ELF::R_PPC64_DTPREL16_LO_DS;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TPREL:
|
||||
Type = ELF::R_PPC64_GOT_TPREL16_DS;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TPREL_LO:
|
||||
Type = ELF::R_PPC64_GOT_TPREL16_LO_DS;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_DTPREL:
|
||||
Type = ELF::R_PPC64_GOT_DTPREL16_DS;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_DTPREL_LO:
|
||||
Type = ELF::R_PPC64_GOT_DTPREL16_LO_DS;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case PPC::fixup_ppc_tlsreg:
|
||||
|
@ -130,6 +130,46 @@
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_LO target 0x0
|
||||
addi 3, 3, target@tprel@l
|
||||
|
||||
# CHECK: addi 3, 3, target@tprel # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16 target 0x0
|
||||
addi 3, 3, target@tprel
|
||||
|
||||
# CHECK: addi 3, 3, target@tprel@h # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel@h, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HI target 0x0
|
||||
addi 3, 3, target@tprel@h
|
||||
|
||||
# CHECK: addi 3, 3, target@tprel@higher # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel@higher, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HIGHER target 0x0
|
||||
addi 3, 3, target@tprel@higher
|
||||
|
||||
# CHECK: addis 3, 2, target@tprel@highest # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel@highest, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HIGHEST target 0x0
|
||||
addis 3, 2, target@tprel@highest
|
||||
|
||||
# CHECK: addi 3, 3, target@tprel@highera # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel@highera, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HIGHERA target 0x0
|
||||
addi 3, 3, target@tprel@highera
|
||||
|
||||
# CHECK: addis 3, 2, target@tprel@highesta # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel@highesta, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_HIGHESTA target 0x0
|
||||
addis 3, 2, target@tprel@highesta
|
||||
|
||||
# CHECK: ld 1, target@tprel@l(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel@l, kind: fixup_ppc_half16ds
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_LO_DS target 0x0
|
||||
ld 1, target@tprel@l(3)
|
||||
|
||||
# CHECK: ld 1, target@tprel(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@tprel, kind: fixup_ppc_half16ds
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_TPREL16_DS target 0x0
|
||||
ld 1, target@tprel(3)
|
||||
|
||||
# CHECK: addis 3, 2, target@dtprel@ha # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel@ha, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HA target 0x0
|
||||
@ -140,6 +180,46 @@
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_LO target 0x0
|
||||
addi 3, 3, target@dtprel@l
|
||||
|
||||
# CHECK: addi 3, 3, target@dtprel # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16 target 0x0
|
||||
addi 3, 3, target@dtprel
|
||||
|
||||
# CHECK: addi 3, 3, target@dtprel@h # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel@h, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HI target 0x0
|
||||
addi 3, 3, target@dtprel@h
|
||||
|
||||
# CHECK: addi 3, 3, target@dtprel@higher # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel@higher, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HIGHER target 0x0
|
||||
addi 3, 3, target@dtprel@higher
|
||||
|
||||
# CHECK: addis 3, 2, target@dtprel@highest # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel@highest, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HIGHEST target 0x0
|
||||
addis 3, 2, target@dtprel@highest
|
||||
|
||||
# CHECK: addi 3, 3, target@dtprel@highera # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel@highera, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HIGHERA target 0x0
|
||||
addi 3, 3, target@dtprel@highera
|
||||
|
||||
# CHECK: addis 3, 2, target@dtprel@highesta # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel@highesta, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_HIGHESTA target 0x0
|
||||
addis 3, 2, target@dtprel@highesta
|
||||
|
||||
# CHECK: ld 1, target@dtprel@l(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel@l, kind: fixup_ppc_half16ds
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_LO_DS target 0x0
|
||||
ld 1, target@dtprel@l(3)
|
||||
|
||||
# CHECK: ld 1, target@dtprel(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@dtprel, kind: fixup_ppc_half16ds
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_DTPREL16_DS target 0x0
|
||||
ld 1, target@dtprel(3)
|
||||
|
||||
|
||||
# CHECK: addis 3, 2, target@got@tprel@ha # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tprel@ha, kind: fixup_ppc_half16
|
||||
@ -151,6 +231,35 @@
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_LO_DS target 0x0
|
||||
ld 1, target@got@tprel@l(3)
|
||||
|
||||
# CHECK: addis 3, 2, target@got@tprel@h # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tprel@h, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_HI target 0x0
|
||||
addis 3, 2, target@got@tprel@h
|
||||
|
||||
# CHECK: ld 1, target@got@tprel(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tprel, kind: fixup_ppc_half16ds
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TPREL16_DS target 0x0
|
||||
ld 1, target@got@tprel(3)
|
||||
|
||||
# CHECK: addis 3, 2, target@got@dtprel@ha # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@dtprel@ha, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_DTPREL16_HA target 0x0
|
||||
addis 3, 2, target@got@dtprel@ha
|
||||
|
||||
# CHECK: ld 1, target@got@dtprel@l(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@dtprel@l, kind: fixup_ppc_half16ds
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_DTPREL16_LO_DS target 0x0
|
||||
ld 1, target@got@dtprel@l(3)
|
||||
|
||||
# CHECK: addis 3, 2, target@got@dtprel@h # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@dtprel@h, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_DTPREL16_HI target 0x0
|
||||
addis 3, 2, target@got@dtprel@h
|
||||
|
||||
# CHECK: ld 1, target@got@dtprel(3) # encoding: [0xe8,0x23,A,0bAAAAAA00]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@dtprel, kind: fixup_ppc_half16ds
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_DTPREL16_DS target 0x0
|
||||
ld 1, target@got@dtprel(3)
|
||||
|
||||
# CHECK: addis 3, 2, target@got@tlsgd@ha # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsgd@ha, kind: fixup_ppc_half16
|
||||
@ -162,6 +271,16 @@
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16_LO target 0x0
|
||||
addi 3, 3, target@got@tlsgd@l
|
||||
|
||||
# CHECK: addi 3, 3, target@got@tlsgd@h # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsgd@h, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16_HI target 0x0
|
||||
addi 3, 3, target@got@tlsgd@h
|
||||
|
||||
# CHECK: addi 3, 3, target@got@tlsgd # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsgd, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSGD16 target 0x0
|
||||
addi 3, 3, target@got@tlsgd
|
||||
|
||||
|
||||
# CHECK: addis 3, 2, target@got@tlsld@ha # encoding: [0x3c,0x62,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsld@ha, kind: fixup_ppc_half16
|
||||
@ -173,3 +292,13 @@
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16_LO target 0x0
|
||||
addi 3, 3, target@got@tlsld@l
|
||||
|
||||
# CHECK: addi 3, 3, target@got@tlsld@h # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsld@h, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16_HI target 0x0
|
||||
addi 3, 3, target@got@tlsld@h
|
||||
|
||||
# CHECK: addi 3, 3, target@got@tlsld # encoding: [0x38,0x63,A,A]
|
||||
# CHECK-NEXT: # fixup A - offset: 2, value: target@got@tlsld, kind: fixup_ppc_half16
|
||||
# CHECK-REL: 0x{{[0-9A-F]*[26AE]}} R_PPC64_GOT_TLSLD16 target 0x0
|
||||
addi 3, 3, target@got@tlsld
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user