summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-arm/ifunc-6.s
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-arm/ifunc-6.s')
-rw-r--r--ld/testsuite/ld-arm/ifunc-6.s59
1 files changed, 59 insertions, 0 deletions
diff --git a/ld/testsuite/ld-arm/ifunc-6.s b/ld/testsuite/ld-arm/ifunc-6.s
new file mode 100644
index 0000000..4596fa3
--- /dev/null
+++ b/ld/testsuite/ld-arm/ifunc-6.s
@@ -0,0 +1,59 @@
+ .syntax unified
+ .arch armv6t2
+
+ .macro define,name,type
+ .type \name,%gnu_indirect_function
+ \type
+\name:
+ mov pc,lr
+ .size \name,.-\name
+ .endm
+
+ .macro test_relocs,name,width
+ bl\width \name
+ b\width \name
+ beq\width \name
+ ldr r4,1f
+ ldr r4,2f
+1:
+ .word \name(GOT)
+2:
+ .word \name(GOT_PREL)
+ .endm
+
+ .global f1
+ .global f2
+
+ .global f3
+ .global f4
+ .hidden f3
+ .hidden f4
+
+ define f1,.arm
+ define f2,.thumb_func
+ define f3,.arm
+ define f4,.thumb_func
+
+ .globl _start
+ .type _start,%function
+ .arm
+_start:
+ test_relocs foo
+ test_relocs f1,
+ test_relocs f2,
+ .size _start,.-_start
+
+ .globl _thumb
+ .type _thumb,%function
+ .thumb_func
+_thumb:
+ test_relocs foo
+ test_relocs f3,.w
+ test_relocs f4,.w
+ .size _thumb,.-_thumb
+
+ .data
+foo:
+ .word 0x11223344
+ .word __irel_start
+ .word __irel_end