brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.1 KiB · f84d21d Raw
224 lines · plain
1REQUIRES: aarch64, x862RUN: split-file %s %t.dir && cd %t.dir3 4RUN: llvm-mc -filetype=obj -triple=arm64ec-windows arm64ec-data.s -o arm64ec-data.obj5RUN: llvm-mc -filetype=obj -triple=arm64ec-windows arm64ec-func.s -o arm64ec-func.obj6RUN: llvm-mc -filetype=obj -triple=arm64ec-windows antidep-func.s -o antidep-func.obj7RUN: llvm-mc -filetype=obj -triple=arm64ec-windows arm64ec-data-sym.s -o arm64ec-data-sym.obj8RUN: llvm-mc -filetype=obj -triple=x86_64-windows x86_64-func.s -o x86_64-func.obj9RUN: llvm-mc -filetype=obj -triple=arm64ec-windows %S/Inputs/loadconfig-arm64ec.s -o loadconfig-arm64ec.obj10 11RUN: lld-link -out:exports.dll -machine:arm64ec arm64ec-func.obj x86_64-func.obj loadconfig-arm64ec.obj \12RUN:          arm64ec-data.obj -dll -noentry -export:arm64ec_func -export:func=arm64ec_func \13RUN:          -export:x86_64_func -export:data_sym,DATA14 15RUN: llvm-objdump -d exports.dll | FileCheck -check-prefix=EXP-DISASM %s16EXP-DISASM:      Disassembly of section .text:17EXP-DISASM-EMPTY:18EXP-DISASM-NEXT: 0000000180001000 <.text>:19EXP-DISASM-NEXT: 180001000: 90000008     adrp    x8, 0x180001000 <.text>20EXP-DISASM-NEXT: 180001004: 52800040     mov     w0, #0x221EXP-DISASM-NEXT: 180001008: d65f03c0     ret22EXP-DISASM-NEXT:                 ...23EXP-DISASM-EMPTY:24EXP-DISASM-NEXT: 0000000180002000 <x86_64_func>:25EXP-DISASM-NEXT: 180002000: e8 fb ef ff ff               callq   0x180001000 <.text>26EXP-DISASM-NEXT: 180002005: b8 03 00 00 00               movl    $0x3, %eax27EXP-DISASM-NEXT: 18000200a: c3                           retq28EXP-DISASM-EMPTY:29EXP-DISASM-NEXT: Disassembly of section .hexpthk:30EXP-DISASM-EMPTY:31EXP-DISASM-NEXT: 0000000180003000 <func>:32EXP-DISASM-NEXT: 180003000: 48 8b c4                     movq    %rsp, %rax33EXP-DISASM-NEXT: 180003003: 48 89 58 20                  movq    %rbx, 0x20(%rax)34EXP-DISASM-NEXT: 180003007: 55                           pushq   %rbp35EXP-DISASM-NEXT: 180003008: 5d                           popq    %rbp36EXP-DISASM-NEXT: 180003009: e9 f2 df ff ff               jmp     0x180001000 <.text>37EXP-DISASM-NEXT: 18000300e: cc                           int338EXP-DISASM-NEXT: 18000300f: cc                           int339EXP-DISASM-EMPTY:40EXP-DISASM-NEXT: 0000000180003010 <arm64ec_func>:41EXP-DISASM-NEXT: 180003010: 48 8b c4                     movq    %rsp, %rax42EXP-DISASM-NEXT: 180003013: 48 89 58 20                  movq    %rbx, 0x20(%rax)43EXP-DISASM-NEXT: 180003017: 55                           pushq   %rbp44EXP-DISASM-NEXT: 180003018: 5d                           popq    %rbp45EXP-DISASM-NEXT: 180003019: e9 e2 df ff ff               jmp     0x180001000 <.text>46EXP-DISASM-NEXT: 18000301e: cc                           int347EXP-DISASM-NEXT: 18000301f: cc                           int348 49RUN: llvm-objdump -p exports.dll | FileCheck -check-prefix=EXP-EXPORT %s50EXP-EXPORT:      Ordinal      RVA  Name51EXP-EXPORT-NEXT:       1   0x3010  arm64ec_func52EXP-EXPORT-NEXT:       2   0x7000  data_sym53EXP-EXPORT-NEXT:       3   0x3000  func54EXP-EXPORT-NEXT:       4   0x2000  x86_64_func55 56RUN: llvm-readobj --coff-load-config exports.dll | FileCheck -check-prefix=EXP-CHPE %s57EXP-CHPE:       CodeMap [58EXP-CHPE-NEXT:    0x1000 - 0x100C  ARM64EC59EXP-CHPE-NEXT:    0x2000 - 0x3020  X6460EXP-CHPE-NEXT:  ]61EXP-CHPE-NEXT:  CodeRangesToEntryPoints [62EXP-CHPE-NEXT:    0x3000 - 0x3010 -> 0x300063EXP-CHPE-NEXT:    0x3010 - 0x3020 -> 0x301064EXP-CHPE-NEXT:  ]65EXP-CHPE-NEXT:  RedirectionMetadata [66EXP-CHPE-NEXT:    0x3000 -> 0x100067EXP-CHPE-NEXT:    0x3010 -> 0x100068EXP-CHPE-NEXT:  ]69 70RUN: llvm-readobj --sections exports.dll | FileCheck --check-prefix=A64XRM %s71 72A64XRM:      Name: .a64xrm (2E 61 36 34 78 72 6D 00)73A64XRM-NEXT: VirtualSize: 0x1874A64XRM-NEXT: VirtualAddress: 0x600075A64XRM-NEXT: RawDataSize: 51276A64XRM-NEXT: PointerToRawData:77A64XRM-NEXT: PointerToRelocations: 0x078A64XRM-NEXT: PointerToLineNumbers: 0x079A64XRM-NEXT: RelocationCount: 080A64XRM-NEXT: LineNumberCount: 081A64XRM-NEXT: Characteristics [ (0x40000040)82A64XRM-NEXT:   IMAGE_SCN_CNT_INITIALIZED_DATA (0x40)83A64XRM-NEXT:   IMAGE_SCN_MEM_READ (0x40000000)84A64XRM-NEXT: ]85 86RUN: llvm-readobj --hex-dump=.a64xrm exports.dll | FileCheck --check-prefix=A64XRM-DUMP %s87 88A64XRM-DUMP:      0x180006000 00300000 00100000 10300000 0010000089A64XRM-DUMP-NEXT: 0x180006010 00000000 0000000090 91RUN: llvm-objdump -s --section=.test exports.dll | FileCheck --check-prefix=EXP-DATA %s92EXP-DATA: 180007000 00300000 1030000093 94RUN: lld-link -out:exports2.dll -machine:arm64ec antidep-func.obj x86_64-func.obj loadconfig-arm64ec.obj \95RUN:          arm64ec-data.obj -dll -noentry -export:arm64ec_func -export:func=arm64ec_func \96RUN:          -export:x86_64_func -export:data_sym,DATA97 98RUN: llvm-objdump -d exports2.dll | FileCheck -check-prefix=EXP-DISASM %s99RUN: llvm-objdump -p exports2.dll | FileCheck -check-prefix=EXP-EXPORT %s100RUN: llvm-objdump -s --section=.test exports2.dll | FileCheck --check-prefix=EXP-DATA %s101RUN: llvm-readobj --coff-load-config exports2.dll | FileCheck -check-prefix=EXP-CHPE %s102 103RUN: lld-link -out:entry.dll -machine:arm64ec arm64ec-func.obj loadconfig-arm64ec.obj -dll -entry:arm64ec_func104 105RUN: llvm-objdump -d entry.dll | FileCheck -check-prefix=ENTRY-DISASM %s106ENTRY-DISASM:      Disassembly of section .text:107ENTRY-DISASM-EMPTY:108ENTRY-DISASM-NEXT: 0000000180001000 <.text>:109ENTRY-DISASM-NEXT: 180001000: 90000008     adrp    x8, 0x180001000 <.text>110ENTRY-DISASM-NEXT: 180001004: 52800040     mov     w0, #0x2                // =2111ENTRY-DISASM-NEXT: 180001008: d65f03c0     ret112ENTRY-DISASM-EMPTY:113ENTRY-DISASM-NEXT: Disassembly of section .hexpthk:114ENTRY-DISASM-EMPTY:115ENTRY-DISASM-NEXT: 0000000180002000 <.hexpthk>:116ENTRY-DISASM-NEXT: 180002000: 48 8b c4                     movq    %rsp, %rax117ENTRY-DISASM-NEXT: 180002003: 48 89 58 20                  movq    %rbx, 0x20(%rax)118ENTRY-DISASM-NEXT: 180002007: 55                           pushq   %rbp119ENTRY-DISASM-NEXT: 180002008: 5d                           popq    %rbp120ENTRY-DISASM-NEXT: 180002009: e9 f2 ef ff ff               jmp     0x180001000 <.text>121ENTRY-DISASM-NEXT: 18000200e: cc                           int3122ENTRY-DISASM-NEXT: 18000200f: cc                           int3123 124RUN: llvm-readobj --headers entry.dll | FileCheck -check-prefix=ENTRY %s125ENTRY: AddressOfEntryPoint: 0x2000126 127RUN: llvm-readobj --coff-load-config entry.dll | FileCheck -check-prefix=ENTRY-CHPE %s128ENTRY-CHPE:       CodeMap [129ENTRY-CHPE-NEXT:    0x1000 - 0x100C  ARM64EC130ENTRY-CHPE-NEXT:    0x2000 - 0x2010  X64131ENTRY-CHPE-NEXT:  ]132ENTRY-CHPE-NEXT:  CodeRangesToEntryPoints [133ENTRY-CHPE-NEXT:    0x2000 - 0x2010 -> 0x2000134ENTRY-CHPE-NEXT:  ]135ENTRY-CHPE-NEXT:  RedirectionMetadata [136ENTRY-CHPE-NEXT:    0x2000 -> 0x1000137ENTRY-CHPE-NEXT:  ]138 139 140Test exporting data symbol as a function:141 142RUN: lld-link -out:data-func.dll -machine:arm64ec arm64ec-data-sym.obj loadconfig-arm64ec.obj -dll -noentry -export:data_sym143 144RUN: llvm-readobj --hex-dump=.test data-func.dll | FileCheck --check-prefix=DATAFUNC-TEST %s145DATAFUNC-TEST:      Hex dump of section '.test':146DATAFUNC-TEST-NEXT: 0x180004000 00000000                            ....147 148RUN: llvm-readobj --coff-exports --hex-dump=.test data-func.dll | FileCheck --check-prefix=DATAFUNC-EXP %s149DATAFUNC-EXP:      Export {150DATAFUNC-EXP-NEXT:   Ordinal: 1151DATAFUNC-EXP-NEXT:   Name: data_sym152DATAFUNC-EXP-NEXT:   RVA: 0x4000153DATAFUNC-EXP-NEXT: }154 155 156Test mingw-style auto-export:157 158RUN: lld-link -out:export-all.dll -machine:arm64ec arm64ec-func.obj loadconfig-arm64ec.obj -dll -noentry -lldmingw159RUN: llvm-objdump -d export-all.dll | FileCheck --check-prefix=EXPORT-ALL %s160 161EXPORT-ALL:     Disassembly of section .text:162EXPORT-ALL-EMPTY:163EXPORT-ALL-NEXT: 0000000180001000 <.text>:164EXPORT-ALL-NEXT: 180001000: 90000008     adrp    x8, 0x180001000 <.text>165EXPORT-ALL-NEXT: 180001004: 52800040     mov     w0, #0x2                // =2166EXPORT-ALL-NEXT: 180001008: d65f03c0     ret167EXPORT-ALL-EMPTY:168EXPORT-ALL-NEXT: Disassembly of section .hexpthk:169EXPORT-ALL-EMPTY:170EXPORT-ALL-NEXT: 0000000180002000 <arm64ec_func>:171EXPORT-ALL-NEXT: 180002000: 48 8b c4                     movq    %rsp, %rax172EXPORT-ALL-NEXT: 180002003: 48 89 58 20                  movq    %rbx, 0x20(%rax)173EXPORT-ALL-NEXT: 180002007: 55                           pushq   %rbp174EXPORT-ALL-NEXT: 180002008: 5d                           popq    %rbp175EXPORT-ALL-NEXT: 180002009: e9 f2 ef ff ff               jmp     0x180001000 <.text>176EXPORT-ALL-NEXT: 18000200e: cc                           int3177EXPORT-ALL-NEXT: 18000200f: cc                           int3178 179 180#--- arm64ec-func.s181    .text182    .globl arm64ec_func183    .p2align 2, 0x0184arm64ec_func:185    adrp x8,arm64ec_func186    mov w0, #2187    ret188 189#--- antidep-func.s190    .text191    .globl "#arm64ec_func"192    .p2align 2, 0x0193"#arm64ec_func":194    adrp x8,arm64ec_func195    mov w0, #2196    ret197 198    .weak_anti_dep arm64ec_func199arm64ec_func = "#arm64ec_func"200 201#--- arm64ec-data.s202    .section .test, "r"203    .globl data_sym204    .p2align 2, 0x0205data_sym:206    .rva "EXP+#func"207    .rva "EXP+#arm64ec_func"208 209#--- x86_64-func.s210    .text211    .globl x86_64_func212    .p2align 2, 0x0213x86_64_func:214    call arm64ec_func215    movl $3, %eax216    retq217 218#--- arm64ec-data-sym.s219    .section .test, "r"220    .globl data_sym221    .p2align 2, 0x0222data_sym:223    .word 0224