summaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-aarch64/gc-relocs-tlsdesc.s
diff options
context:
space:
mode:
Diffstat (limited to 'ld/testsuite/ld-aarch64/gc-relocs-tlsdesc.s')
-rw-r--r--ld/testsuite/ld-aarch64/gc-relocs-tlsdesc.s38
1 files changed, 38 insertions, 0 deletions
diff --git a/ld/testsuite/ld-aarch64/gc-relocs-tlsdesc.s b/ld/testsuite/ld-aarch64/gc-relocs-tlsdesc.s
new file mode 100644
index 00000000000..413c5130754
--- /dev/null
+++ b/ld/testsuite/ld-aarch64/gc-relocs-tlsdesc.s
@@ -0,0 +1,38 @@
+ .global tlsdescvar
+ .section .tbss,"awT",%nobits
+ .align 2
+ .type tlsdescvar, %object
+ .size tlsdescvar, 4
+tlsdescvar:
+ .zero 4
+
+ .align 2
+ .type l_tlsdescvar, %object
+ .size l_tlsdescvar, 4
+l_tlsdescvar:
+ .zero 4
+.text
+_test_tls_desc:
+
+ // R_AARCH64_TLSDESC_ADR_PAGE tlsdescvar
+ adrp x0, :tlsdesc:tlsdescvar
+ // R_AARCH64_TLSDESC_LD64_LO12 tlsdescvar
+ ldr x1, [x0, :tlsdesc_lo12:tlsdescvar]
+ // R_AARCH64_TLSDESC_ADD_LO12 tlsdescvar
+ add x0, x0, :tlsdesc_lo12:tlsdescvar
+ // R_AARCH64_TLSDESC_CALL tlsdescvar
+ .tlsdesccall tlsdescvar
+ blr x1
+
+_test_tls_desc_local:
+
+ // R_AARCH64_TLSDESC_ADR_PAGE l_tlsdescvar
+ adrp x0, :tlsdesc:l_tlsdescvar
+ // R_AARCH64_TLSDESC_LD64_LO12 l_tlsdescvar
+ ldr x1, [x0, :tlsdesc_lo12:l_tlsdescvar]
+ // R_AARCH64_TLSDESC_ADD_LO12 l_tlsdescvar
+ add x0, x0, :tlsdesc_lo12:l_tlsdescvar
+ // R_AARCH64_TLSDESC_CALL l_tlsdescvar
+ .tlsdesccall l_tlsdescvar
+ blr x1
+