270 lines · plain
1REQUIRES: aarch64, x862RUN: split-file %s %t.dir && cd %t.dir3 4RUN: llvm-mc -filetype=obj -triple=arm64ec-windows test-arm64ec.s -o test-arm64ec.obj5RUN: llvm-mc -filetype=obj -triple=x86_64-windows test-x86_64.s -o test-x86_64.obj6RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %S/Inputs/loadconfig-arm64ec.s -o loadconfig-arm64ec.obj7RUN: llvm-lib -out:test.lib -def:test.def -machine:arm64ec8 9RUN: lld-link -out:out.dll -debug -machine:arm64ec -dll -noentry test-arm64ec.obj test-x86_64.obj loadconfig-arm64ec.obj test.lib10RUN: llvm-pdbutil dump out.pdb -all | FileCheck %s11 12CHECK: Streams13CHECK-NEXT: ============================================================14CHECK: Stream 10 ( 104 bytes): [Module "Import:test.dll"]15CHECK-NEXT: Blocks: [9]16CHECK-NEXT: Stream 11 ({{[ 0-9]+}} bytes): [Module "* Linker *"]17CHECK-NEXT: Blocks: [10]18 19CHECK: Module Stats20CHECK-NEXT: ============================================================21CHECK-NEXT: Mod 0000 | `{{.*}}test-arm64ec.obj`:22CHECK-NEXT: Mod 0 (debug info not present): [{{.*}}test-arm64ec.obj]23CHECK-NEXT: Mod 0001 | `{{.*}}test-x86_64.obj`:24CHECK-NEXT: Mod 1 (debug info not present): [{{.*}}test-x86_64.obj]25CHECK-NEXT: Mod 0002 | `{{.*}}loadconfig-arm64ec.obj`:26CHECK-NEXT: Mod 2 (debug info not present): [{{.*}}loadconfig-arm64ec.obj]27CHECK-NEXT: Mod 0003 | `test.dll`:28CHECK-NEXT: Mod 3 (debug info not present): [test.dll]29CHECK-NEXT: Mod 0004 | `Import:test.dll`:30CHECK-NEXT: Stream 10, 104 bytes31 32CHECK: Modules33CHECK-NEXT: ============================================================34CHECK-NEXT: Mod 0000 | `{{.*}}test-arm64ec.obj`:35CHECK-NEXT: SC[.text] | mod = 0, 0001:0000, size = 8, data crc = 2063330902, reloc crc = 036CHECK-NEXT: IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_EXECUTE |37CHECK-NEXT: IMAGE_SCN_MEM_READ38CHECK-NEXT: Obj: `{{.*}}test-arm64ec.obj`:39CHECK-NEXT: debug stream: 65535, # files: 0, has ec info: false40CHECK-NEXT: pdb file ni: 0 ``, src file ni: 0 ``41CHECK-NEXT: Mod 0001 | `{{.*}}test-x86_64.obj`:42CHECK-NEXT: SC[.text] | mod = 1, 0001:4096, size = 0, data crc = 0, reloc crc = 043CHECK-NEXT: IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_EXECUTE |44CHECK-NEXT: IMAGE_SCN_MEM_READ45CHECK-NEXT: Obj: `{{.*}}test-x86_64.obj`:46CHECK-NEXT: debug stream: 65535, # files: 0, has ec info: false47CHECK-NEXT: pdb file ni: 0 ``, src file ni: 0 ``48CHECK-NEXT: Mod 0002 | `{{.*}}loadconfig-arm64ec.obj`:49CHECK-NEXT: SC[.text] | mod = 2, 0001:0008, size = 0, data crc = 0, reloc crc = 050CHECK-NEXT: IMAGE_SCN_CNT_CODE | IMAGE_SCN_ALIGN_4BYTES | IMAGE_SCN_MEM_EXECUTE |51CHECK-NEXT: IMAGE_SCN_MEM_READ52CHECK-NEXT: Obj: `{{.*}}loadconfig-arm64ec.obj`:53CHECK-NEXT: debug stream: 65535, # files: 0, has ec info: false54CHECK-NEXT: pdb file ni: 0 ``, src file ni: 0 ``55CHECK-NEXT: Mod 0003 | `test.dll`:56CHECK-NEXT: SC[???] | mod = 65535, 65535:0000, size = -1, data crc = 0, reloc crc = 057CHECK-NEXT: none58CHECK-NEXT: Obj: `{{.*}}test.lib`:59CHECK-NEXT: debug stream: 65535, # files: 0, has ec info: false60CHECK-NEXT: pdb file ni: 0 ``, src file ni: 0 ``61CHECK-NEXT: Mod 0004 | `Import:test.dll`:62CHECK-NEXT: SC[.text] | mod = 4, 0001:4096, size = 6, data crc = 0, reloc crc = 063CHECK-NEXT: IMAGE_SCN_CNT_CODE | IMAGE_SCN_MEM_EXECUTE | IMAGE_SCN_MEM_READ64CHECK-NEXT: Obj: `{{.*}}test.lib`:65CHECK-NEXT: debug stream: 10, # files: 0, has ec info: false66CHECK-NEXT: pdb file ni: 0 ``, src file ni: 0 ``67CHECK-NEXT: Mod 0005 | `* Linker *`:68CHECK-NEXT: SC[???] | mod = 65535, 65535:0000, size = -1, data crc = 0, reloc crc = 069CHECK-NEXT: none70CHECK-NEXT: Obj: ``:71CHECK-NEXT: debug stream: 11, # files: 0, has ec info: false72CHECK-NEXT: pdb file ni: 1 `{{.*}}out.pdb`, src file ni: 0 ``73 74CHECK: Public Symbols75CHECK-NEXT: ============================================================76CHECK-NEXT: Records77CHECK-NEXT: 584 | S_PUB32 [size = 28] `x86_64_sym`78CHECK-NEXT: flags = none, addr = 0005:000879CHECK-NEXT: 536 | S_PUB32 [size = 28] `arm64ec_sym`80CHECK-NEXT: flags = none, addr = 0005:000081CHECK-NEXT: 168 | S_PUB32 [size = 44] `__hybrid_auxiliary_iat_copy`82CHECK-NEXT: flags = none, addr = 0002:83CHECK-NEXT: 96 | S_PUB32 [size = 32] `__chpe_metadata`84CHECK-NEXT: flags = none, addr = 0003:000085CHECK-NEXT: 456 | S_PUB32 [size = 48] `__x64_code_ranges_to_entry_points`86CHECK-NEXT: flags = none, addr = 0002:87CHECK-NEXT: 0 | S_PUB32 [size = 20] `#func`88CHECK-NEXT: flags = function, addr = 0001:000889CHECK-NEXT: 244 | S_PUB32 [size = 40] `__icall_helper_arm64ec`90CHECK-NEXT: flags = none, addr = 0001:000091CHECK-NEXT: 64 | S_PUB32 [size = 32] `__auximpcopy_func`92CHECK-NEXT: flags = none, addr = 0002:93CHECK-NEXT: 504 | S_PUB32 [size = 32] `_load_config_used`94CHECK-NEXT: flags = none, addr = 0002:95CHECK-NEXT: 564 | S_PUB32 [size = 20] `func`96CHECK-NEXT: flags = function, addr = 0001:409697CHECK-NEXT: 128 | S_PUB32 [size = 40] `__hybrid_auxiliary_iat`98CHECK-NEXT: flags = none, addr = 0002:819299CHECK-NEXT: 284 | S_PUB32 [size = 32] `__imp_aux_func`100CHECK-NEXT: flags = none, addr = 0002:0000101CHECK-NEXT: 344 | S_PUB32 [size = 28] `__impchk_func`102CHECK-NEXT: flags = function, addr = 0001:0020103CHECK-NEXT: 372 | S_PUB32 [size = 44] `__os_arm64x_dispatch_icall`104CHECK-NEXT: flags = none, addr = 0002:105CHECK-NEXT: 212 | S_PUB32 [size = 32] `__hybrid_code_map`106CHECK-NEXT: flags = none, addr = 0002:107CHECK-NEXT: 20 | S_PUB32 [size = 44] `__arm64x_redirection_metadata`108CHECK-NEXT: flags = none, addr = 0004:0000109CHECK-NEXT: 416 | S_PUB32 [size = 40] `__os_arm64x_dispatch_ret`110CHECK-NEXT: flags = none, addr = 0002:111CHECK-NEXT: 316 | S_PUB32 [size = 28] `__imp_func`112CHECK-NEXT: flags = none, addr = 0002:8192113 114CHECK: Symbols115CHECK-NEXT: ============================================================116CHECK-NEXT: Mod 0000 | `{{.*}}test-arm64ec.obj`:117CHECK-NEXT: Error loading module stream 0. The specified stream could not be loaded. Module stream not present118CHECK-NEXT: Mod 0001 | `{{.*}}test-x86_64.obj`:119CHECK-NEXT: Error loading module stream 1. The specified stream could not be loaded. Module stream not present120CHECK-NEXT: Mod 0002 | `{{.*}}loadconfig-arm64ec.obj`:121CHECK-NEXT: Error loading module stream 2. The specified stream could not be loaded. Module stream not present122CHECK-NEXT: Mod 0003 | `test.dll`:123CHECK-NEXT: Error loading module stream 3. The specified stream could not be loaded. Module stream not present124CHECK-NEXT: Mod 0004 | `Import:test.dll`:125CHECK-NEXT: 4 | S_OBJNAME [size = 20] sig=0, `test.dll`126CHECK-NEXT: 24 | S_COMPILE3 [size = 40]127CHECK-NEXT: machine = arm64ec, Ver = LLVM Linker, language = link128CHECK-NEXT: frontend = 0.0.0.0, backend = 14.10.25019.0129CHECK-NEXT: flags = none130CHECK-NEXT: 64 | S_THUNK32 [size = 32] `func`131CHECK-NEXT: parent = 0, end = 96, next = 0132CHECK-NEXT: kind = thunk, size = 6, addr = 0001:4096133CHECK-NEXT: 96 | S_END [size = 4]134CHECK-NEXT: Mod 0005 | `* Linker *`:135CHECK-NEXT: 4 | S_OBJNAME [size = 20] sig=0, `* Linker *`136CHECK-NEXT: 24 | S_COMPILE3 [size = 40]137CHECK-NEXT: machine = arm64x, Ver = LLVM Linker, language = link138CHECK-NEXT: frontend = 0.0.0.0, backend = 14.10.25019.0139CHECK-NEXT: flags = none140CHECK-NEXT: 64 | S_ENVBLOCK [size = {{[0-9]+}}]141CHECK: {{[0-9]+}} | S_SECTION [size = 28] `.text`142CHECK-NEXT: length = 4102, alignment = 12, rva = 4096, section # = 1143CHECK-NEXT: characteristics =144CHECK-NEXT: code145CHECK-NEXT: execute permissions146CHECK-NEXT: read permissions147CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 24] `.text`148CHECK-NEXT: length = 8, addr = 0001:0000149CHECK-NEXT: characteristics =150CHECK-NEXT: code151CHECK-NEXT: execute permissions152CHECK-NEXT: read permissions153CHECK-NEXT: {{[0-9]+}} | S_SECTION [size = 28] `.rdata`154CHECK-NEXT: length = 8208, alignment = 12, rva = 12288, section # = 2155CHECK-NEXT: characteristics =156CHECK-NEXT: initialized data157CHECK-NEXT: read permissions158CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$5`159CHECK-NEXT: length = 16, addr = 0002:0000160CHECK-NEXT: characteristics =161CHECK-NEXT: initialized data162CHECK-NEXT: read permissions163CHECK-NEXT: write permissions164CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.00cfg`165CHECK-NEXT: length = 456, addr = 0002:166CHECK-NEXT: characteristics =167CHECK-NEXT: initialized data168CHECK-NEXT: read permissions169CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$2`170CHECK-NEXT: length = 40, addr = 0002:171CHECK-NEXT: characteristics =172CHECK-NEXT: initialized data173CHECK-NEXT: read permissions174CHECK-NEXT: write permissions175CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$4`176CHECK-NEXT: length = 16, addr = 0002:177CHECK-NEXT: characteristics =178CHECK-NEXT: initialized data179CHECK-NEXT: read permissions180CHECK-NEXT: write permissions181CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$6`182CHECK-NEXT: length = 8, addr = 0002:183CHECK-NEXT: characteristics =184CHECK-NEXT: initialized data185CHECK-NEXT: read permissions186CHECK-NEXT: write permissions187CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$7`188CHECK-NEXT: length = 9, addr = 0002:189CHECK-NEXT: characteristics =190CHECK-NEXT: initialized data191CHECK-NEXT: read permissions192CHECK-NEXT: write permissions193CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$a`194CHECK-NEXT: length = 16, addr = 0002:195CHECK-NEXT: characteristics =196CHECK-NEXT: initialized data197CHECK-NEXT: read permissions198CHECK-NEXT: write permissions199CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 28] `.idata$9`200CHECK-NEXT: length = 16, addr = 0002:8192201CHECK-NEXT: characteristics =202CHECK-NEXT: initialized data203CHECK-NEXT: read permissions204CHECK-NEXT: write permissions205CHECK-NEXT: {{[0-9]+}} | S_SECTION [size = 28] `.data`206CHECK-NEXT: length = 124, alignment = 12, rva = 24576, section # = 3207CHECK-NEXT: characteristics =208CHECK-NEXT: initialized data209CHECK-NEXT: read permissions210CHECK-NEXT: write permissions211CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 24] `.data`212CHECK-NEXT: length = 124, addr = 0003:0000213CHECK-NEXT: characteristics =214CHECK-NEXT: initialized data215CHECK-NEXT: read permissions216CHECK-NEXT: write permissions217CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 24] `.bss`218CHECK-NEXT: length = 0, addr = 0003:0124219CHECK-NEXT: characteristics =220CHECK-NEXT: uninitialized data221CHECK-NEXT: read permissions222CHECK-NEXT: write permissions223CHECK-NEXT: {{[0-9]+}} | S_SECTION [size = 28] `.a64xrm`224CHECK-NEXT: length = 8, alignment = 12, rva = 28672, section # = 4225CHECK-NEXT: characteristics =226CHECK-NEXT: initialized data227CHECK-NEXT: read permissions228CHECK-NEXT: {{[0-9]+}} | S_SECTION [size = 28] `.test`229CHECK-NEXT: length = 16, alignment = 12, rva = 32768, section # = 5230CHECK-NEXT: characteristics =231CHECK-NEXT: initialized data232CHECK-NEXT: read permissions233CHECK-NEXT: {{[0-9]+}} | S_COFFGROUP [size = 24] `.test`234CHECK-NEXT: length = 16, addr = 0005:0000235CHECK-NEXT: characteristics =236CHECK-NEXT: initialized data237CHECK-NEXT: read permissions238CHECK-NEXT: {{[0-9]+}} | S_SECTION [size = 28] `.reloc`239CHECK-NEXT: length = 32, alignment = 12, rva = 36864, section # = 6240CHECK-NEXT: characteristics =241CHECK-NEXT: initialized data242CHECK-NEXT: discardable243CHECK-NEXT: read permissions244 245#--- test-arm64ec.s246 .text247 .globl __icall_helper_arm64ec248 .p2align 2, 0x0249__icall_helper_arm64ec:250 mov w0, #0251 ret252 253 .section .test,"dr"254 .globl arm64ec_sym255arm64ec_sym:256 .rva __imp_func257 .rva __imp_aux_func258 259#--- test-x86_64.s260 .section .test,"dr"261 .globl x86_64_sym262x86_64_sym:263 .rva __imp_func264 .rva __imp_aux_func265 266#--- test.def267LIBRARY test.dll268EXPORTS269 func270