| # REQUIRES: aarch64 |
| RUN: split-file %s %t.dir && cd %t.dir |
| |
| RUN: llvm-lib -machine:arm64x -out:libtest.a -defArm64Native:test.def -def:test.def |
| RUN: llvm-mc -triple=arm64ec-windows-gnu arm64ec.s -filetype=obj -o arm64ec.obj |
| RUN: llvm-mc -triple=aarch64-windows-gnu aarch64.s -filetype=obj -o aarch64.obj |
| RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %S/Inputs/loadconfig-arm64ec.s -o loadconfig-arm64ec.obj |
| RUN: llvm-mc -filetype=obj -triple=aarch64-windows %S/Inputs/loadconfig-arm64.s -o loadconfig-arm64.obj |
| |
| RUN: lld-link -machine:arm64x -out:out.dll -dll -noentry arm64ec.obj aarch64.obj libtest.a loadconfig-arm64.obj loadconfig-arm64ec.obj -lldmingw |
| |
| RUN: llvm-readobj --coff-imports out.dll | FileCheck -check-prefix=IMPORTS %s |
| RUN: llvm-objdump -s out.dll | FileCheck --check-prefix=CONTENTS %s |
| |
| IMPORTS: Import { |
| IMPORTS-NEXT: Name: test.dll |
| IMPORTS-NEXT: ImportLookupTableRVA: 0x5{{.*}} |
| IMPORTS-NEXT: ImportAddressTableRVA: 0x4000 |
| IMPORTS-NEXT: Symbol: variable (0) |
| IMPORTS-NEXT: } |
| IMPORTS-NEXT: HybridObject { |
| IMPORTS: Import { |
| IMPORTS-NEXT: Name: test.dll |
| IMPORTS-NEXT: ImportLookupTableRVA: 0x5{{.*}} |
| IMPORTS-NEXT: ImportAddressTableRVA: 0x4000 |
| IMPORTS-NEXT: Symbol: variable (0) |
| IMPORTS-NEXT: } |
| IMPORTS-NEXT: } |
| |
| Native ARM64 runtime pseudo relocation list header at 0x5164, consisting of 0x0, 0x0, 0x1. |
| The runtime pseudo relocation is from an aarch64.obj object file, with import from 0x4000, |
| applied at 0x9018 with a size of 64 bits. ARM64EC runtime pseudo relocation list header at |
| 0x517c, consisting of 0x0, 0x0, 0x1. The runtime pseudo relocation is from arm64ec.obj |
| object file, with import from 0x4000, applied at 0x9000 with a size of 64 bits. |
| |
| CONTENTS: Contents of section .rdata: |
| CONTENTS: 180005160 00300000 00000000 00000000 01000000 |
| CONTENTS: 180005170 00400000 18900000 40000000 00000000 |
| CONTENTS: 180005180 00000000 01000000 00400000 00900000 |
| CONTENTS: 180005190 40000000 |
| |
| CONTENTS: Contents of section .test: |
| CONTENTS-NEXT: 180009000 00400080 01000000 7c510080 01000000 |
| CONTENTS-NEXT: 180009010 94510080 01000000 00400080 01000000 |
| CONTENTS-NEXT: 180009020 64510080 01000000 7c510080 01000000 |
| |
| #--- arm64ec.s |
| .text |
| .global "#_pei386_runtime_relocator" |
| "#_pei386_runtime_relocator": |
| ret |
| |
| .weak_anti_dep _pei386_runtime_relocator |
| .set _pei386_runtime_relocator,"#_pei386_runtime_relocator" |
| |
| .section .test,"dr" |
| .quad variable |
| .quad __RUNTIME_PSEUDO_RELOC_LIST__ |
| .quad __RUNTIME_PSEUDO_RELOC_LIST_END__ |
| |
| #--- aarch64.s |
| .text |
| .global _pei386_runtime_relocator |
| _pei386_runtime_relocator: |
| ret |
| |
| .section .test,"dr" |
| .quad variable |
| .quad __RUNTIME_PSEUDO_RELOC_LIST__ |
| .quad __RUNTIME_PSEUDO_RELOC_LIST_END__ |
| |
| #--- test.def |
| LIBRARY test.dll |
| EXPORTS |
| variable DATA |