[lld] [LLD][COFF] Add support for ARM64EC import call thunks with extended range (PR #109703)
Martin Storsjö via llvm-commits
llvm-commits at lists.llvm.org
Tue Sep 24 04:48:29 PDT 2024
================
@@ -0,0 +1,39 @@
+REQUIRES: aarch64, x86
+RUN: split-file %s %t.dir && cd %t.dir
+
+RUN: llvm-mc -filetype=obj -triple=arm64ec-windows test.s -o test.obj
+RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %S/Inputs/loadconfig-arm64ec.s -o loadconfig-arm64ec.obj
+RUN: llvm-lib -machine:arm64ec -def:test.def -out:test.lib
+
+RUN: lld-link -machine:arm64ec -dll -noentry -out:out.dll loadconfig-arm64ec.obj test.obj test.lib
+
+RUN: llvm-objdump -d out.dll | FileCheck --check-prefix=DISASM %s
+DISASM: 0000000180001000 <.text>:
+DISASM-NEXT: 180001000: 52800000 mov w0, #0x0 // =0
+DISASM-NEXT: 180001004: d65f03c0 ret
+DISASM-NEXT: ...
+DISASM-NEXT: 188001008: b000000b adrp x11, 0x188002000
+DISASM-NEXT: 18800100c: f940016b ldr x11, [x11]
+DISASM-NEXT: 188001010: f0fbffea adrp x10, 0x180000000
+DISASM-NEXT: 188001014: 9100014a add x10, x10, #0x0
+DISASM-NEXT: 188001018: 90fc0010 adrp x16, 0x180001000 <.text>
+DISASM-NEXT: 18800101c: 91000210 add x16, x16, #0x0
+DISASM-NEXT: 188001020: d61f0200 br x16
+
+#--- test.s
+ .text
+ .globl __icall_helper_arm64ec
+ .p2align 2, 0x0
+__icall_helper_arm64ec:
+ mov w0, #0
+ ret
+
+ .space 0x8000000
+
+ .data
+ .rva __imp_func
----------------
mstorsjo wrote:
Why does this test even require a thunk? We're only referencing `__imp_func`, not `func` directly, so we should only need the raw IAT entry, no thunks at all? (I guess this is some of the other arm64ec aspects that we've already been through a couple times, that I haven't really internalized yet - sorry about that.)
https://github.com/llvm/llvm-project/pull/109703
More information about the llvm-commits
mailing list