brintos

brintos / llvm-project-archived public Read only

0
0
Text · 22.4 KiB · 612b5f9 Raw
570 lines · plain
1REQUIRES: aarch64, x862RUN: split-file %s %t.dir && cd %t.dir3 4RUN: llvm-mc -filetype=obj -triple=arm64ec-windows func12-thunks-arm64ec.s -o func12-thunks-arm64ec.obj5RUN: llvm-mc -filetype=obj -triple=aarch64-windows func12-thunks-arm64.s -o func12-thunks-arm64.obj6RUN: llvm-mc -filetype=obj -triple=arm64ec-windows func12-arm64ec.s -o func12-arm64ec.obj7RUN: llvm-mc -filetype=obj -triple=aarch64-windows func123-arm64.s -o func123-arm64.obj8RUN: llvm-mc -filetype=obj -triple=arm64ec-windows func123-arm64ec.s -o func123-arm64ec.obj9RUN: llvm-mc -filetype=obj -triple=aarch64-windows func12-arm64.s -o func12-arm64.obj10RUN: llvm-mc -filetype=obj -triple=aarch64-windows func234-arm64.s -o func234-arm64.obj11RUN: llvm-mc -filetype=obj -triple=arm64ec-windows func12o-arm64ec.s -o func12o-arm64ec.obj12RUN: llvm-mc -filetype=obj -triple=aarch64-windows func34-arm64.s -o func34-arm64.obj13RUN: llvm-mc -filetype=obj -triple=aarch64-windows func34o-arm64.s -o func34o-arm64.obj14RUN: llvm-mc -filetype=obj -triple=aarch64-windows funco-arm64.s -o funco-arm64.obj15RUN: llvm-mc -filetype=obj -triple=arm64ec-windows icall.s -o icall.obj16RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %S/Inputs/loadconfig-arm64ec.s -o loadconfig-arm64ec.obj17RUN: llvm-mc -filetype=obj -triple=aarch64-windows %S/Inputs/loadconfig-arm64.s -o loadconfig-arm64.obj18RUN: llvm-lib -machine:arm64ec -def:imp.def -out:imp-arm64ec.lib19RUN: llvm-lib -machine:arm64 -def:imp.def -out:imp-arm64.lib20RUN: llvm-lib -machine:arm64x -def:imp.def -defArm64Native:imp.def -out:imp-arm64x.lib21RUN: llvm-lib -machine:arm64x -def:imp-ord10.def -defArm64Native:imp.def -out:imp-ecord.lib22RUN: llvm-lib -machine:arm64x -def:imp-ord10.def -defArm64Native:imp-ord20.def -out:imp-ecord.lib23RUN: llvm-lib -machine:arm64x -def:imp2.def -defArm64Native:imp2.def -out:imp2.lib24RUN: llvm-lib -machine:arm64x -def:noname-ec.def -defArm64Native:noname-native.def -out:noname.lib25RUN: llvm-lib -machine:arm64x -def:dup-ec.def -defArm64Native:dup-native.def -out:dup.lib26 27 28# Link to the imported func1, func2, and func1's thunks from both native and EC code.29 30RUN: lld-link -machine:arm64x -dll -noentry -out:test-12-thunks.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \31RUN:          icall.obj func12-thunks-arm64ec.obj func12-thunks-arm64.obj imp-arm64ec.lib imp-arm64.lib32 33RUN: llvm-objdump -d test-12-thunks.dll | FileCheck --check-prefix=DISASM-12T %s34DISASM-12T:      0000000180001000 <.text>:35DISASM-12T-NEXT: 180001000: f0000010     adrp    x16, 0x18000400036DISASM-12T-NEXT: 180001004: f9400610     ldr     x16, [x16, #0x8]37DISASM-12T-NEXT: 180001008: d61f0200     br      x1638DISASM-12T-NEXT:                 ...39DISASM-12T-NEXT: 180002000: 52800040     mov     w0, #0x2                // =240DISASM-12T-NEXT: 180002004: d65f03c0     ret41DISASM-12T-NEXT: 180002008: 90000030     adrp    x16, 0x18000600042DISASM-12T-NEXT: 18000200c: f9400210     ldr     x16, [x16]43DISASM-12T-NEXT: 180002010: d61f0200     br      x1644DISASM-12T-NEXT: 180002014: d000000b     adrp    x11, 0x18000400045DISASM-12T-NEXT: 180002018: f940016b     ldr     x11, [x11]46DISASM-12T-NEXT: 18000201c: 9000000a     adrp    x10, 0x180002000 <.text+0x1000>47DISASM-12T-NEXT: 180002020: 9100f14a     add     x10, x10, #0x3c48DISASM-12T-NEXT: 180002024: 17fffff7     b       0x180002000 <.text+0x1000>49DISASM-12T-NEXT: 180002028: d000000b     adrp    x11, 0x18000400050DISASM-12T-NEXT: 18000202c: f940056b     ldr     x11, [x11, #0x8]51DISASM-12T-NEXT: 180002030: d0ffffea     adrp    x10, 0x18000000052DISASM-12T-NEXT: 180002034: 9100014a     add     x10, x10, #0x053DISASM-12T-NEXT: 180002038: 17fffff2     b       0x180002000 <.text+0x1000>54DISASM-12T-NEXT: 18000203c: 52800060     mov     w0, #0x3                // =355DISASM-12T-NEXT: 180002040: d65f03c0     ret56DISASM-12T-NEXT:                 ...57DISASM-12T-NEXT: 180003000: ff 25 fa 0f 00 00            jmpq    *0xffa(%rip)            # 0x18000400058 59RUN: llvm-readobj --coff-imports test-12-thunks.dll | FileCheck --check-prefixes=IMPORTS-12,IMPORTS-12-EC %s60IMPORTS-12:      Import {61IMPORTS-12-NEXT:   Name: test.dll62IMPORTS-12-NEXT:   ImportLookupTableRVA: 0x534863IMPORTS-12-NEXT:   ImportAddressTableRVA: 0x400064IMPORTS-12-NEXT:   Symbol: func1 (0)65IMPORTS-12-NEXT:   Symbol: func2 (0)66IMPORTS-12-NEXT: }67IMPORTS-12-NEXT: HybridObject {68IMPORTS-12-EC:     Import {69IMPORTS-12-EC-NEXT:  Name: test.dll70IMPORTS-12-EC-NEXT:  ImportLookupTableRVA: 0x534871IMPORTS-12-EC-NEXT:  ImportAddressTableRVA: 0x400072IMPORTS-12-EC-NEXT:  Symbol: func1 (0)73IMPORTS-12-EC-NEXT:  Symbol: func2 (0)74IMPORTS-12-EC-NEXT:}75IMPORTS-12-NEXT: }76 77RUN: llvm-readobj --hex-dump=.test test-12-thunks.dll | FileCheck --check-prefix=FUNC-12-THUNKS %s78FUNC-12-THUNKS:      0x180009000 00600000 00400000 00300000 0820000079FUNC-12-THUNKS-NEXT: 0x180009010 08600000 0840000080 81RUN: llvm-readobj --hex-dump=.testa test-12-thunks.dll | FileCheck --check-prefix=FUNC-12-THUNKSA %s82FUNC-12-THUNKSA: 0x18000a000 00400000 08400000 0010000083 84RUN: lld-link -machine:arm64ec -dll -noentry -out:test-12-thunks-ec.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \85RUN:          icall.obj func12-thunks-arm64ec.obj func12-thunks-arm64.obj imp-arm64ec.lib imp-arm64.lib86RUN: llvm-objdump -d test-12-thunks-ec.dll | FileCheck --check-prefix=DISASM-12T %s87RUN: llvm-readobj --hex-dump=.test test-12-thunks-ec.dll | FileCheck --check-prefix=FUNC-12-THUNKS %s88RUN: llvm-readobj --hex-dump=.testa test-12-thunks-ec.dll | FileCheck --check-prefix=FUNC-12-THUNKSA %s89RUN: llvm-readobj --coff-imports test-12-thunks-ec.dll | FileCheck --check-prefix=IMPORTS-12-EC %s90 91 92# If the ordinals of named imports don't match, use the EC value.93 94RUN: lld-link -machine:arm64x -dll -noentry -out:test-12-thunks-ord.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \95RUN:          icall.obj func12-thunks-arm64ec.obj func12-thunks-arm64.obj imp-ecord.lib96RUN: llvm-readobj --coff-imports test-12-thunks-ord.dll | FileCheck --check-prefix=IMPORTS-ORD %s97 98IMPORTS-ORD:      Format: COFF-ARM64X99IMPORTS-ORD-NEXT: Arch: aarch64100IMPORTS-ORD-NEXT: AddressSize: 64bit101IMPORTS-ORD-NEXT: Import {102IMPORTS-ORD-NEXT:   Name: test.dll103IMPORTS-ORD-NEXT:   ImportLookupTableRVA: 0x5348104IMPORTS-ORD-NEXT:   ImportAddressTableRVA: 0x4000105IMPORTS-ORD-NEXT:   Symbol: func1 (11)106IMPORTS-ORD-NEXT:   Symbol: func2 (12)107IMPORTS-ORD-NEXT: }108IMPORTS-ORD-NEXT: HybridObject {109IMPORTS-ORD-NEXT:   Format: COFF-ARM64EC110IMPORTS-ORD-NEXT:   Arch: aarch64111IMPORTS-ORD-NEXT:   AddressSize: 64bit112IMPORTS-ORD-NEXT:   Import {113IMPORTS-ORD-NEXT:     Name: test.dll114IMPORTS-ORD-NEXT:     ImportLookupTableRVA: 0x5348115IMPORTS-ORD-NEXT:     ImportAddressTableRVA: 0x4000116IMPORTS-ORD-NEXT:     Symbol: func1 (11)117IMPORTS-ORD-NEXT:     Symbol: func2 (12)118IMPORTS-ORD-NEXT:   }119IMPORTS-ORD-NEXT: }120 121 122# Link to NONAME imports.123 124RUN: lld-link -machine:arm64x -dll -noentry -out:test-noname.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \125RUN:          icall.obj func12-thunks-arm64ec.obj func12-thunks-arm64.obj noname.lib126RUN: llvm-readobj --coff-imports test-noname.dll | FileCheck --check-prefix=IMPORTS-ORD2 %s127 128IMPORTS-ORD2:      Format: COFF-ARM64X129IMPORTS-ORD2-NEXT: Arch: aarch64130IMPORTS-ORD2-NEXT: AddressSize: 64bit131IMPORTS-ORD2-NEXT: Import {132IMPORTS-ORD2-NEXT:   Name: test.dll133IMPORTS-ORD2-NEXT:   ImportLookupTableRVA: 0x5348134IMPORTS-ORD2-NEXT:   ImportAddressTableRVA: 0x4000135IMPORTS-ORD2-NEXT:   Symbol:  (12)136IMPORTS-ORD2-NEXT:   Symbol:  (11)137IMPORTS-ORD2-NEXT: }138IMPORTS-ORD2-NEXT: HybridObject {139IMPORTS-ORD2-NEXT:   Format: COFF-ARM64EC140IMPORTS-ORD2-NEXT:   Arch: aarch64141IMPORTS-ORD2-NEXT:   AddressSize: 64bit142IMPORTS-ORD2-NEXT:   Import {143IMPORTS-ORD2-NEXT:     Name: test.dll144IMPORTS-ORD2-NEXT:     ImportLookupTableRVA: 0x5350145IMPORTS-ORD2-NEXT:     ImportAddressTableRVA: 0x4008146IMPORTS-ORD2-NEXT:     Symbol:  (11)147IMPORTS-ORD2-NEXT:     Symbol:  (10)148IMPORTS-ORD2-NEXT:   }149IMPORTS-ORD2-NEXT: }150 151# Link to the imported func1 and func2 from both native and EC code, and func3 from native code.152 153RUN: lld-link -machine:arm64x -dll -noentry -out:test2.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \154RUN:          icall.obj func12-arm64ec.obj func123-arm64.obj imp-arm64x.lib155 156RUN: llvm-readobj --coff-imports test2.dll | FileCheck --check-prefixes=IMPORTS-123-12,IMPORTS-123-12-EC %s157IMPORTS-123-12:      Import {158IMPORTS-123-12-NEXT:   Name: test.dll159IMPORTS-123-12-NEXT:   ImportLookupTableRVA: 0x3338160IMPORTS-123-12-NEXT:   ImportAddressTableRVA: 0x2000161IMPORTS-123-12-NEXT:   Symbol: func3 (0)162IMPORTS-123-12-NEXT:   Symbol: func1 (0)163IMPORTS-123-12-NEXT:   Symbol: func2 (0)164IMPORTS-123-12-NEXT: }165IMPORTS-123-12-NEXT: HybridObject {166IMPORTS-123-12-EC:     Import {167IMPORTS-123-12-EC-NEXT:  Name: test.dll168IMPORTS-123-12-EC-NEXT:  ImportLookupTableRVA: 0x3340169IMPORTS-123-12-EC-NEXT:  ImportAddressTableRVA: 0x2008170IMPORTS-123-12-EC-NEXT:  Symbol: func1 (0)171IMPORTS-123-12-EC-NEXT:  Symbol: func2 (0)172IMPORTS-123-12-EC-NEXT:}173IMPORTS-123-12-NEXT: }174 175RUN: llvm-readobj --hex-dump=.test test2.dll | FileCheck --check-prefix=TEST-123-12 %s176TEST-123-12: 0x180007000 08400000 08200000 10400000 10200000177 178RUN: llvm-readobj --hex-dump=.testa test2.dll | FileCheck --check-prefix=TEST-123-12A %s179TEST-123-12A: 0x180008000 08200000 10200000 00200000180 181RUN: llvm-readobj --hex-dump=.rdata test2.dll | FileCheck --check-prefix=TEST-123-12AUX %s182TEST-123-12AUX:      0x180004000 00000000 00000000 08100080 01000000183TEST-123-12AUX-NEXT: 0x180004010 1c100080 01000000 00000000 00000000184 185RUN: lld-link -machine:arm64ec -dll -noentry -out:test2-ec.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \186RUN:          icall.obj func12-arm64ec.obj func123-arm64.obj imp-arm64x.lib187RUN: llvm-readobj --coff-imports test2-ec.dll | FileCheck --check-prefix=IMPORTS-123-12-EC %s188RUN: llvm-readobj --hex-dump=.test test2-ec.dll | FileCheck --check-prefix=TEST-123-12 %s189RUN: llvm-readobj --hex-dump=.testa test2-ec.dll | FileCheck --check-prefix=TEST-123-12A %s190RUN: llvm-readobj --hex-dump=.rdata test2-ec.dll | FileCheck --check-prefix=TEST-123-12AUX %s191 192 193# Link to the imported func1 and func2 from both native and EC code, and func3 from EC code.194 195RUN: lld-link -machine:arm64x -dll -noentry -out:func-12-123.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \196RUN:          icall.obj func123-arm64ec.obj func12-arm64.obj imp-arm64x.lib197 198RUN: llvm-readobj --coff-imports func-12-123.dll | FileCheck --check-prefixes=IMPORTS-12-123,IMPORTS-12-123-EC %s199IMPORTS-12-123:      Import {200IMPORTS-12-123-NEXT:   Name: test.dll201IMPORTS-12-123-NEXT:   ImportLookupTableRVA: 0x3338202IMPORTS-12-123-NEXT:   ImportAddressTableRVA: 0x2000203IMPORTS-12-123-NEXT:   Symbol: func1 (0)204IMPORTS-12-123-NEXT:   Symbol: func2 (0)205IMPORTS-12-123-NEXT: }206IMPORTS-12-123-NEXT: HybridObject {207IMPORTS-12-123-EC:     Import {208IMPORTS-12-123-EC-NEXT:  Name: test.dll209IMPORTS-12-123-EC-NEXT:  ImportLookupTableRVA: 0x3338210IMPORTS-12-123-EC-NEXT:  ImportAddressTableRVA: 0x2000211IMPORTS-12-123-EC-NEXT:  Symbol: func1 (0)212IMPORTS-12-123-EC-NEXT:  Symbol: func2 (0)213IMPORTS-12-123-EC-NEXT:  Symbol: func3 (0)214IMPORTS-12-123-EC-NEXT:}215IMPORTS-12-123-NEXT: }216 217RUN: llvm-readobj --hex-dump=.test func-12-123.dll | FileCheck --check-prefix=TEST-12-123 %s218TEST-12-123:      0x180007000 00400000 00200000 08400000 08200000219TEST-12-123-NEXT: 0x180007010 10400000 10200000220 221RUN: llvm-readobj --hex-dump=.testa func-12-123.dll | FileCheck --check-prefix=TEST-12-123A %s222TEST-12-123A: 0x180008000 00200000 08200000223 224RUN: llvm-readobj --hex-dump=.rdata func-12-123.dll | FileCheck --check-prefix=TEST-12-123AUX %s225TEST-12-123AUX:      0x180004000 08100080 01000000 1c100080 01000000226TEST-12-123AUX-NEXT: 0x180004010 30100080 01000000 00000000 00000000227 228RUN: lld-link -machine:arm64ec -dll -noentry -out:func-12-123-ec.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \229RUN:          icall.obj func123-arm64ec.obj func12-arm64.obj imp-arm64x.lib230RUN: llvm-readobj --coff-imports func-12-123-ec.dll | FileCheck --check-prefix=IMPORTS-12-123-EC %s231RUN: llvm-readobj --hex-dump=.test func-12-123-ec.dll | FileCheck --check-prefix=TEST-12-123 %s232RUN: llvm-readobj --hex-dump=.testa func-12-123-ec.dll | FileCheck --check-prefix=TEST-12-123A %s233RUN: llvm-readobj --hex-dump=.rdata func-12-123-ec.dll | FileCheck --check-prefix=TEST-12-123AUX %s234 235# Link to the imported func2 and func3 from both native and EC code, func4 from native code,236# and func1 from EC code.237 238RUN: lld-link -machine:arm64x -dll -noentry -out:test-234-123.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \239RUN:          icall.obj func123-arm64ec.obj func234-arm64.obj imp-arm64x.lib240 241RUN: llvm-readobj --coff-imports test-234-123.dll | FileCheck --check-prefixes=IMPORTS-234-123,IMPORTS-234-123-EC %s242IMPORTS-234-123:      Import {243IMPORTS-234-123-NEXT:   Name: test.dll244IMPORTS-234-123-NEXT:   ImportLookupTableRVA: 0x3338245IMPORTS-234-123-NEXT:   ImportAddressTableRVA: 0x2000246IMPORTS-234-123-NEXT:   Symbol: func4 (0)247IMPORTS-234-123-NEXT:   Symbol: func2 (0)248IMPORTS-234-123-NEXT:   Symbol: func3 (0)249IMPORTS-234-123-NEXT: }250IMPORTS-234-123-NEXT: HybridObject {251IMPORTS-234-123-EC:     Import {252IMPORTS-234-123-EC-NEXT:  Name: test.dll253IMPORTS-234-123-EC-NEXT:  ImportLookupTableRVA: 0x3340254IMPORTS-234-123-EC-NEXT:  ImportAddressTableRVA: 0x2008255IMPORTS-234-123-EC-NEXT:  Symbol: func2 (0)256IMPORTS-234-123-EC-NEXT:  Symbol: func3 (0)257IMPORTS-234-123-EC-NEXT:  Symbol: func1 (0)258IMPORTS-234-123-EC-NEXT:}259IMPORTS-234-123-NEXT: }260 261RUN: llvm-readobj --hex-dump=.test test-234-123.dll | FileCheck --check-prefix=TEST-234-123 %s262TEST-234-123:      0x180007000 18400000 18200000 08400000 08200000263TEST-234-123-NEXT: 0x180007010 10400000 1020000264 265RUN: llvm-readobj --hex-dump=.testa test-234-123.dll | FileCheck --check-prefix=TEST-234-123A %s266TEST-234-123A: 0x180008000 08200000 10200000 00200000267 268RUN: lld-link -machine:arm64ec -dll -noentry -out:test-234-123-ec.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \269RUN:          icall.obj func123-arm64ec.obj func234-arm64.obj imp-arm64x.lib270RUN: llvm-readobj --coff-imports test-234-123-ec.dll | FileCheck --check-prefix=IMPORTS-234-123-EC %s271RUN: llvm-readobj --hex-dump=.test test-234-123-ec.dll | FileCheck --check-prefix=TEST-234-123 %s272RUN: llvm-readobj --hex-dump=.testa test-234-123-ec.dll | FileCheck --check-prefix=TEST-234-123A %s273 274 275# Link to the imported func3 and func4 from native code, and func1 and func2 from EC code.276 277RUN: lld-link -machine:arm64x -dll -noentry -out:test-34-12.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \278RUN:          icall.obj func12o-arm64ec.obj func34o-arm64.obj imp-arm64x.lib imp2.lib279 280RUN: llvm-readobj --coff-imports test-34-12.dll | FileCheck --check-prefixes=IMPORTS-34-12,IMPORTS-34-12-EC %s281IMPORTS-34-12:      Import {282IMPORTS-34-12-NEXT:   Name: test.dll283IMPORTS-34-12-NEXT:   ImportLookupTableRVA: 0x3350284IMPORTS-34-12-NEXT:   ImportAddressTableRVA: 0x2000285IMPORTS-34-12-NEXT:   Symbol: func3 (0)286IMPORTS-34-12-NEXT:   Symbol: func4 (0)287IMPORTS-34-12-NEXT: }288IMPORTS-34-12-NEXT: Import {289IMPORTS-34-12-NEXT:   Name: test2.dll290IMPORTS-34-12-NEXT:   ImportLookupTableRVA: 0x3378291IMPORTS-34-12-NEXT:   ImportAddressTableRVA: 0x2028292IMPORTS-34-12-NEXT:   Symbol: otherfunc (0)293IMPORTS-34-12-NEXT: }294IMPORTS-34-12-NEXT: HybridObject {295IMPORTS-34-12-EC:     Import {296IMPORTS-34-12-EC-NEXT:  Name: test.dll297IMPORTS-34-12-EC-NEXT:  ImportLookupTableRVA: 0x3360298IMPORTS-34-12-EC-NEXT:  ImportAddressTableRVA: 0x2010299IMPORTS-34-12-EC-NEXT:  Symbol: func1 (0)300IMPORTS-34-12-EC-NEXT:  Symbol: func2 (0)301IMPORTS-34-12-EC-NEXT:}302IMPORTS-34-12-EC-NEXT:Import {303IMPORTS-34-12-EC-NEXT:  Name: test2.dll304IMPORTS-34-12-EC-NEXT:  ImportLookupTableRVA: 0x3378305IMPORTS-34-12-EC-NEXT:  ImportAddressTableRVA: 0x2028306IMPORTS-34-12-EC-NEXT:  Symbol: otherfunc (0)307IMPORTS-34-12-EC-NEXT:}308IMPORTS-34-12-NEXT: }309 310RUN: llvm-readobj --hex-dump=.test test-34-12.dll | FileCheck --check-prefix=TEST-23-12 %s311TEST-23-12:      0x180007000 10400000 10200000 18400000 18200000312TEST-23-12-NEXT: 0x180007010 28400000 28200000313 314RUN: llvm-readobj --hex-dump=.testa test-34-12.dll | FileCheck --check-prefix=TEST-23-12A %s315TEST-23-12A: 0x180008000 00200000 08200000 28200000316 317RUN: lld-link -machine:arm64ec -dll -noentry -out:test-34-12-ec.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \318RUN:          icall.obj func12o-arm64ec.obj func34o-arm64.obj imp-arm64x.lib imp2.lib319RUN: llvm-readobj --coff-imports test-34-12-ec.dll | FileCheck --check-prefix=IMPORTS-34-12-EC %s320RUN: llvm-readobj --hex-dump=.test test-34-12-ec.dll | FileCheck --check-prefix=TEST-23-12 %s321RUN: llvm-readobj --hex-dump=.testa test-34-12-ec.dll | FileCheck --check-prefix=TEST-23-12A %s322 323 324# Link only to imported EC functions, with no native imports.325 326RUN: lld-link -machine:arm64x -dll -noentry -out:test-ec12.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \327RUN:          icall.obj func12-arm64ec.obj funco-arm64.obj imp-arm64x.lib imp2.lib328 329RUN: llvm-readobj --coff-imports test-ec12.dll | FileCheck --check-prefix=IMPORTS-EC12 %s330 331IMPORTS-EC12:      File: test-ec12.dll332IMPORTS-EC12-NEXT: Format: COFF-ARM64X333IMPORTS-EC12-NEXT: Arch: aarch64334IMPORTS-EC12-NEXT: AddressSize: 64bit335IMPORTS-EC12-NEXT: Import {336IMPORTS-EC12-NEXT:   Name: test.dll337IMPORTS-EC12-NEXT:   ImportLookupTableRVA: 0x3350338IMPORTS-EC12-NEXT:   ImportAddressTableRVA: 0x2000339IMPORTS-EC12-NEXT: }340IMPORTS-EC12-NEXT: Import {341IMPORTS-EC12-NEXT:   Name: test2.dll342IMPORTS-EC12-NEXT:   ImportLookupTableRVA: 0x3368343IMPORTS-EC12-NEXT:   ImportAddressTableRVA: 0x2018344IMPORTS-EC12-NEXT:   Symbol: otherfunc (0)345IMPORTS-EC12-NEXT: }346IMPORTS-EC12-NEXT: HybridObject {347IMPORTS-EC12-NEXT:   Format: COFF-ARM64EC348IMPORTS-EC12-NEXT:   Arch: aarch64349IMPORTS-EC12-NEXT:   AddressSize: 64bit350IMPORTS-EC12-NEXT:   Import {351IMPORTS-EC12-NEXT:     Name: test.dll352IMPORTS-EC12-NEXT:     ImportLookupTableRVA: 0x3350353IMPORTS-EC12-NEXT:     ImportAddressTableRVA: 0x2000354IMPORTS-EC12-NEXT:     Symbol: func1 (0)355IMPORTS-EC12-NEXT:     Symbol: func2 (0)356IMPORTS-EC12-NEXT:   }357IMPORTS-EC12-NEXT:   Import {358IMPORTS-EC12-NEXT:     Name: test2.dll359IMPORTS-EC12-NEXT:     ImportLookupTableRVA: 0x3370360IMPORTS-EC12-NEXT:     ImportAddressTableRVA: 0x2020361IMPORTS-EC12-NEXT:   }362IMPORTS-EC12-NEXT: }363 364 365# Link only to imported native functions, with no EC imports.366 367RUN: lld-link -machine:arm64x -dll -noentry -out:test-n12.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \368RUN:          func12-arm64.obj imp-arm64x.lib369 370RUN: llvm-readobj --coff-imports test-n12.dll | FileCheck --check-prefixes=IMPORTS-N12,IMPORTS-N12-EC %s371 372IMPORTS-N12:      Arch: aarch64373IMPORTS-N12-NEXT: AddressSize: 64bit374IMPORTS-N12-NEXT: Import {375IMPORTS-N12-NEXT:   Name: test.dll376IMPORTS-N12-NEXT:   ImportLookupTableRVA: 0x2330377IMPORTS-N12-NEXT:   ImportAddressTableRVA: 0x1000378IMPORTS-N12-NEXT:   Symbol: func1 (0)379IMPORTS-N12-NEXT:   Symbol: func2 (0)380IMPORTS-N12-NEXT: }381IMPORTS-N12-NEXT: HybridObject {382IMPORTS-N12-EC:      Format: COFF-ARM64EC383IMPORTS-N12-EC-NEXT: Arch: aarch64384IMPORTS-N12-EC-NEXT: AddressSize: 64bit385IMPORTS-N12-EC-NEXT: Import {386IMPORTS-N12-EC-NEXT:   Name: test.dll387IMPORTS-N12-EC-NEXT:   ImportLookupTableRVA: 0x2340388IMPORTS-N12-EC-NEXT:   ImportAddressTableRVA: 0x1010389IMPORTS-N12-EC-NEXT: }390IMPORTS-N12-NEXT: }391 392RUN: lld-link -machine:arm64ec -dll -noentry -out:test-n12-ec.dll loadconfig-arm64.obj loadconfig-arm64ec.obj \393RUN:          func12-arm64.obj imp-arm64x.lib394RUN: llvm-readobj --coff-imports test-n12-ec.dll | FileCheck --check-prefix=IMPORTS-N12-EC %s395 396 397RUN: lld-link -machine:arm64x -dll -noentry -out:test-dup.dll loadconfig-arm64.obj loadconfig-arm64ec.obj icall.obj \398RUN:          func12-arm64ec.obj func34-arm64.obj dup.lib399 400RUN: llvm-readobj --coff-imports test-dup.dll | FileCheck --check-prefix=IMPORTS-DUP %s401IMPORTS-DUP:      Format: COFF-ARM64X402IMPORTS-DUP-NEXT: Arch: aarch64403IMPORTS-DUP-NEXT: AddressSize: 64bit404IMPORTS-DUP-NEXT: Import {405IMPORTS-DUP-NEXT:   Name: test.dll406IMPORTS-DUP-NEXT:   ImportLookupTableRVA: 0x3338407IMPORTS-DUP-NEXT:   ImportAddressTableRVA: 0x2000408IMPORTS-DUP-NEXT:   Symbol: func4 (0)409IMPORTS-DUP-NEXT:   Symbol: func4 (0)410IMPORTS-DUP-NEXT: }411IMPORTS-DUP-NEXT: HybridObject {412IMPORTS-DUP-NEXT:   Format: COFF-ARM64EC413IMPORTS-DUP-NEXT:   Arch: aarch64414IMPORTS-DUP-NEXT:   AddressSize: 64bit415IMPORTS-DUP-NEXT:   Import {416IMPORTS-DUP-NEXT:     Name: test.dll417IMPORTS-DUP-NEXT:     ImportLookupTableRVA: 0x3348418IMPORTS-DUP-NEXT:     ImportAddressTableRVA: 0x2010419IMPORTS-DUP-NEXT:     Symbol: func1 (0)420IMPORTS-DUP-NEXT:     Symbol: func1 (0)421IMPORTS-DUP-NEXT:   }422IMPORTS-DUP-NEXT: }423 424#--- func12-thunks-arm64ec.s425    .section .test, "r"426    .rva __imp_func1427    .rva __imp_aux_func1428    .rva func1429    .rva "#func1"430    .rva __imp_func2431    .rva __imp_aux_func2432 433#--- func12-thunks-arm64.s434    .section .testa, "r"435    .rva __imp_func1436    .rva __imp_func2437    .rva func2438 439#--- func12-arm64ec.s440    .section .test, "r"441    .rva __imp_func1442    .rva __imp_aux_func1443    .rva __imp_func2444    .rva __imp_aux_func2445 446#--- func123-arm64.s447    .section .testa, "r"448    .rva __imp_func1449    .rva __imp_func2450    .rva __imp_func3451 452#--- func123-arm64ec.s453    .section .test, "r"454    .rva __imp_func1455    .rva __imp_aux_func1456    .rva __imp_func2457    .rva __imp_aux_func2458    .rva __imp_func3459    .rva __imp_aux_func3460 461#--- func12-arm64.s462    .section .testa, "r"463    .rva __imp_func1464    .rva __imp_func2465 466#--- func234-arm64.s467    .section .testa, "r"468    .rva __imp_func2469    .rva __imp_func3470    .rva __imp_func4471 472#--- func12o-arm64ec.s473    .section .test, "r"474    .rva __imp_func1475    .rva __imp_aux_func1476    .rva __imp_func2477    .rva __imp_aux_func2478    .rva __imp_otherfunc479    .rva __imp_aux_otherfunc480 481#--- func34-arm64.s482    .section .testa, "r"483    .rva __imp_func3484    .rva __imp_func4485 486#--- func34o-arm64.s487    .section .testa, "r"488    .rva __imp_func3489    .rva __imp_func4490    .rva __imp_otherfunc491 492#--- funco-arm64.s493    .section .testa, "r"494    .rva __imp_otherfunc495 496#--- icall.s497    .text498    .globl __icall_helper_arm64ec499    .p2align 2, 0x0500__icall_helper_arm64ec:501    mov w0, #2502    ret503 504    .section .hybmp$x, "yi"505    .symidx __imp_func1506    .symidx func1_exit_thunk507    .word 4508 509    .section .wowthk$aa,"xr",discard,func1_exit_thunk510    .globl func1_exit_thunk511func1_exit_thunk:512    mov w0, #3513    ret514 515#--- imp.def516NAME test.dll517EXPORTS518    data_sym DATA519    func1520    func2521    func3522    func4523 524#--- imp-ord10.def525NAME test.dll526EXPORTS527    data_sym DATA @10528    func1 @11529    func2 @12530    func3 @13531    func4 @14532 533#--- imp-ord20.def534NAME test.dll535EXPORTS536    data_sym DATA @10537    func1 @21538    func2 @22539    func3 @23540    func4 @24541 542#--- imp2.def543NAME test2.dll544EXPORTS545    otherfunc546 547#--- noname-ec.def548NAME test.dll549EXPORTS550    func1 @10 NONAME551    func2 @11 NONAME552 553#--- noname-native.def554NAME test.dll555EXPORTS556    func1 @12 NONAME557    func2 @11 NONAME558 559#--- dup-ec.def560NAME test.dll561EXPORTS562    func1563    func2 EXPORTAS func1564 565#--- dup-native.def566NAME test.dll567EXPORTS568    func3 EXPORTAS func4569    func4570