2 # RUN: yaml2obj %s -o %t.obj
3 # RUN: lld-link %t.obj %p/Inputs/library.lib /subsystem:console \
4 # RUN: /entry:mainCRTStartup /alternatename:__delayLoadHelper2=mainCRTStartup \
5 # RUN: /delayload:library.dll /out:%t.exe
6 # RUN: llvm-readobj --coff-imports %t.exe | FileCheck -check-prefix=IMPORT %s
7 # RUN: llvm-readobj --coff-basereloc %t.exe | FileCheck -check-prefix=BASEREL %s
8 # RUN: llvm-objdump -d %t.exe | FileCheck --check-prefix=DISASM %s
10 # IMPORT: Format: COFF-ARM
11 # IMPORT-NEXT: Arch: thumb
12 # IMPORT-NEXT: AddressSize: 32bit
13 # IMPORT-NEXT: DelayImport {
14 # IMPORT-NEXT: Name: library.dll
15 # IMPORT-NEXT: Attributes: 0x1
16 # IMPORT-NEXT: ModuleHandle: 0x3000
17 # IMPORT-NEXT: ImportAddressTable: 0x3008
18 # IMPORT-NEXT: ImportNameTable: 0x2040
19 # IMPORT-NEXT: BoundDelayImportTable: 0x0
20 # IMPORT-NEXT: UnloadDelayImportTable: 0x0
21 # IMPORT-NEXT: Import {
22 # IMPORT-NEXT: Symbol: function (0)
23 # IMPORT-NEXT: Address: 0x40100D
27 # BASEREL: BaseReloc [
28 # BASEREL-NEXT: Entry {
29 # BASEREL-NEXT: Type: ARM_MOV32(T)
30 # BASEREL-NEXT: Address: 0x1000
32 # BASEREL-NEXT: Entry {
33 # BASEREL-NEXT: Type: ARM_MOV32(T)
34 # BASEREL-NEXT: Address: 0x100C
36 # BASEREL-NEXT: Entry {
37 # BASEREL-NEXT: Type: ARM_MOV32(T)
38 # BASEREL-NEXT: Address: 0x1026
40 # BASEREL-NEXT: Entry {
41 # BASEREL-NEXT: Type: ABSOLUTE
42 # BASEREL-NEXT: Address: 0x1000
44 # BASEREL-NEXT: Entry {
45 # BASEREL-NEXT: Type: HIGHLOW
46 # BASEREL-NEXT: Address: 0x3008
48 # BASEREL-NEXT: Entry {
49 # BASEREL-NEXT: Type: ABSOLUTE
50 # BASEREL-NEXT: Address: 0x3000
54 # DISASM: 40100c: 43 f2 08 0c movw r12, #12296
55 # DISASM-NEXT: c0 f2 40 0c movt r12, #64
56 # DISASM-NEXT: 00 f0 00 b8 b.w #0
57 # DISASM-NEXT: 2d e9 0f 48 push.w {r0, r1, r2, r3, r11, lr}
58 # DISASM-NEXT: 0d f2 10 0b addw r11, sp, #16
59 # DISASM-NEXT: 2d ed 10 0b vpush {d0, d1, d2, d3, d4, d5, d6, d7}
60 # DISASM-NEXT: 61 46 mov r1, r12
61 # DISASM-NEXT: 42 f2 00 00 movw r0, #8192
62 # DISASM-NEXT: c0 f2 40 00 movt r0, #64
63 # DISASM-NEXT: ff f7 e7 ff bl #-50
64 # DISASM-NEXT: 84 46 mov r12, r0
65 # DISASM-NEXT: bd ec 10 0b vpop {d0, d1, d2, d3, d4, d5, d6, d7}
66 # DISASM-NEXT: bd e8 0f 48 pop.w {r0, r1, r2, r3, r11, lr}
67 # DISASM-NEXT: 60 47 bx r12
71 Machine: IMAGE_FILE_MACHINE_ARMNT
75 Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_PURGEABLE, IMAGE_SCN_MEM_16BIT, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
77 SectionData: 40F20000C0F2000000680047
80 SymbolName: __imp_function
81 Type: IMAGE_REL_ARM_MOV32T
86 SimpleType: IMAGE_SYM_TYPE_NULL
87 ComplexType: IMAGE_SYM_DTYPE_NULL
88 StorageClass: IMAGE_SYM_CLASS_STATIC
91 NumberOfRelocations: 1
92 NumberOfLinenumbers: 0
95 - Name: mainCRTStartup
98 SimpleType: IMAGE_SYM_TYPE_NULL
99 ComplexType: IMAGE_SYM_DTYPE_FUNCTION
100 StorageClass: IMAGE_SYM_CLASS_EXTERNAL
101 - Name: __imp_function
104 SimpleType: IMAGE_SYM_TYPE_NULL
105 ComplexType: IMAGE_SYM_DTYPE_NULL
106 StorageClass: IMAGE_SYM_CLASS_EXTERNAL