[PATCH] D50137: [AArch64] Add support for got relocated LDR's
Dave Green via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 1 23:25:40 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL338673: [AArch64] Add support for got relocated LDR's (authored by dmgreen, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D50137?vs=158490&id=158684#toc
Repository:
rL LLVM
https://reviews.llvm.org/D50137
Files:
llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
llvm/trunk/test/MC/AArch64/arm64-elf-relocs.s
llvm/trunk/test/MC/AArch64/elf-reloc-pcreladdressing.s
llvm/trunk/test/MC/AArch64/inline-asm-modifiers.s
Index: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
===================================================================
--- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
+++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
@@ -169,6 +169,8 @@
case AArch64::fixup_aarch64_ldr_pcrel_imm19:
if (SymLoc == AArch64MCExpr::VK_GOTTPREL)
return R_CLS(TLSIE_LD_GOTTPREL_PREL19);
+ if (SymLoc == AArch64MCExpr::VK_GOT)
+ return R_CLS(GOT_LD_PREL19);
return R_CLS(LD_PREL_LO19);
case AArch64::fixup_aarch64_pcrel_branch14:
return R_CLS(TSTBR14);
Index: llvm/trunk/test/MC/AArch64/elf-reloc-pcreladdressing.s
===================================================================
--- llvm/trunk/test/MC/AArch64/elf-reloc-pcreladdressing.s
+++ llvm/trunk/test/MC/AArch64/elf-reloc-pcreladdressing.s
@@ -7,11 +7,14 @@
adrp x5, :got:some_label
ldr x0, [x5, #:got_lo12:some_label]
+ ldr x0, :got:some_label
+
// OBJ: Relocations [
// OBJ-NEXT: Section {{.*}} .rela.text {
// OBJ-NEXT: 0x0 R_AARCH64_ADR_PREL_LO21 some_label 0x0
// OBJ-NEXT: 0x4 R_AARCH64_ADR_PREL_PG_HI21 some_label 0x0
// OBJ-NEXT: 0x8 R_AARCH64_ADR_GOT_PAGE some_label 0x0
// OBJ-NEXT: 0xC R_AARCH64_LD64_GOT_LO12_NC some_label 0x0
+// OBJ-NEXT: 0x10 R_AARCH64_GOT_LD_PREL19 some_label 0x0
// OBJ-NEXT: }
// OBJ-NEXT: ]
Index: llvm/trunk/test/MC/AArch64/inline-asm-modifiers.s
===================================================================
--- llvm/trunk/test/MC/AArch64/inline-asm-modifiers.s
+++ llvm/trunk/test/MC/AArch64/inline-asm-modifiers.s
@@ -68,13 +68,17 @@
//APP
adrp x0, :gottprel:var_tlsie
//NO_APP
+ //APP
+ ldr x0, :got:var_got
+ //NO_APP
ret
.Ltmp2:
.size test_inline_modifier_A, .Ltmp2-test_inline_modifier_A
// CHECK: R_AARCH64_ADR_PREL_PG_HI21 var_simple
// CHECK: R_AARCH64_ADR_GOT_PAGE var_got
// CHECK: R_AARCH64_TLSDESC_ADR_PAGE21 var_tlsgd
// CHECK: R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 var_tlsie
+// CHECK: R_AARCH64_GOT_LD_PREL19 var_got
.globl test_inline_modifier_wx
.type test_inline_modifier_wx, at function
Index: llvm/trunk/test/MC/AArch64/arm64-elf-relocs.s
===================================================================
--- llvm/trunk/test/MC/AArch64/arm64-elf-relocs.s
+++ llvm/trunk/test/MC/AArch64/arm64-elf-relocs.s
@@ -269,3 +269,10 @@
// certainly be accepted when assembling.
add x3, x5, :lo12:imm
// CHECK: add x3, x5, :lo12:imm
+
+ ldr x24, #:got:sym
+ ldr d22, :got:sym
+// CHECK: ldr x24, :got:sym
+// CHECK: ldr d22, :got:sym
+// CHECK-OBJ-LP64: R_AARCH64_GOT_LD_PREL19 sym
+// CHECK-OBJ-LP64: R_AARCH64_GOT_LD_PREL19 sym
\ No newline at end of file
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D50137.158684.patch
Type: text/x-patch
Size: 2778 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180802/8651976a/attachment-0001.bin>
More information about the llvm-commits
mailing list