summaryrefslogtreecommitdiff
path: root/test/COFF/arm64-localimport-align.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/COFF/arm64-localimport-align.s')
-rw-r--r--test/COFF/arm64-localimport-align.s24
1 files changed, 24 insertions, 0 deletions
diff --git a/test/COFF/arm64-localimport-align.s b/test/COFF/arm64-localimport-align.s
new file mode 100644
index 000000000000..4fbc79ec36d7
--- /dev/null
+++ b/test/COFF/arm64-localimport-align.s
@@ -0,0 +1,24 @@
+// REQUIRES: aarch64
+// RUN: llvm-mc -filetype=obj -triple=aarch64-windows %s -o %t.obj
+// RUN: lld-link -entry:main -subsystem:console %t.obj -out:%t.exe
+// Don't check the output, just make sure it links fine and doesn't
+// error out due to a misaligned load.
+ .text
+ .globl main
+ .globl myfunc
+main:
+ adrp x8, __imp_myfunc
+ ldr x0, [x8, :lo12:__imp_myfunc]
+ br x0
+ ret
+myfunc:
+ ret
+
+ .section .rdata, "dr"
+ // Start the .rdata section with a 4 byte chunk, to expose the alignment
+ // of the next chunk in the section.
+mydata:
+ .byte 42
+ // The synthesized LocalImportChunk gets stored here in the .rdata
+ // section, but needs to get proper 8 byte alignment since it is a
+ // pointer, just like regular LookupChunks in the IAT.