aboutsummaryrefslogtreecommitdiff
path: root/test/ELF/aarch64-gnu-ifunc2.s
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-01-19 10:05:49 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-01-19 10:05:49 +0000
commite2fd426bdafe9f5c10066d3926ece6e342184a67 (patch)
treebfbbb5fd38554e6b8988b7a217e9fd0623728d7d /test/ELF/aarch64-gnu-ifunc2.s
parent84c4061b34e048f47e5eb4fbabc1558495e8157c (diff)
Vendor import of lld trunk r351319 (just before the release_80 branchvendor/lld/lld-trunk-r351319
Notes
Notes: svn path=/vendor/lld/dist/; revision=343179 svn path=/vendor/lld/lld-trunk-r351319/; revision=343180; tag=vendor/lld/lld-trunk-r351319
Diffstat (limited to 'test/ELF/aarch64-gnu-ifunc2.s')
-rw-r--r--test/ELF/aarch64-gnu-ifunc2.s52
1 files changed, 52 insertions, 0 deletions
diff --git a/test/ELF/aarch64-gnu-ifunc2.s b/test/ELF/aarch64-gnu-ifunc2.s
new file mode 100644
index 000000000000..2caff3f14586
--- /dev/null
+++ b/test/ELF/aarch64-gnu-ifunc2.s
@@ -0,0 +1,52 @@
+# REQUIRES: aarch64
+# RUN: llvm-mc -filetype=obj -triple=aarch64-none-linux-gnu %s -o %t.o
+# RUN: ld.lld -static %t.o -o %tout
+# RUN: llvm-objdump -D %tout | FileCheck %s
+# RUN: llvm-readobj -r %tout | FileCheck %s --check-prefix=RELOC
+
+# CHECK: Disassembly of section .text:
+# CHECK-NEXT: myfunc:
+# CHECK-NEXT: 210000:
+
+# CHECK: main:
+# adrp x8, 0x230000, 0x230000 == address in .got
+# CHECK-NEXT: 210004: {{.*}} adrp x8, #131072
+# CHECK-NEXT: 210008: {{.*}} ldr x8, [x8]
+# CHECK-NEXT: 21000c: {{.*}} ret
+
+# CHECK: Disassembly of section .plt:
+# CHECK-NEXT: .plt:
+# adrp x16, 0x220000, 0x220000 == address in .got.plt
+# CHECK-NEXT: 210010: {{.*}} adrp x16, #65536
+# CHECK-NEXT: 210014: {{.*}} ldr x17, [x16]
+# CHECK-NEXT: 210018: {{.*}} add x16, x16, #0
+# CHECK-NEXT: 21001c: {{.*}} br x17
+
+# CHECK: Disassembly of section .got.plt:
+# CHECK-NEXT: .got.plt:
+# CHECK-NEXT: 220000:
+
+# CHECK: Disassembly of section .got:
+# CHECK-NEXT: .got:
+# 0x210010 == address in .plt
+# CHECK-NEXT: 230000: 10 00 21 00
+
+# RELOC: Relocations [
+# RELOC-NEXT: Section {{.*}} .rela.plt {
+# RELOC-NEXT: 0x220000 R_AARCH64_IRELATIVE - 0x210000
+# RELOC-NEXT: }
+# RELOC-NEXT: ]
+
+.text
+.globl myfunc
+.type myfunc,@gnu_indirect_function
+myfunc:
+ ret
+
+.text
+.globl main
+.type main,@function
+main:
+ adrp x8, :got:myfunc
+ ldr x8, [x8, :got_lo12:myfunc]
+ ret