1# REQUIRES: aarch64
2
3# RUN: yaml2obj < %s > %t.obj
4# RUN: lld-link /entry:main /subsystem:console /out:%t.exe %t.obj %p/Inputs/library-arm64.lib /alternatename:__delayLoadHelper2=main /delayload:library.dll
5# RUN: llvm-objdump -d %t.exe | FileCheck %s --check-prefix DISASM
6# RUN: llvm-readobj --coff-imports %t.exe | FileCheck %s -check-prefix IMPORTS
7
8# DISASM:  140001014:      11 00 00 d0     adrp    x17, #8192
9# DISASM:  140001018:      31 22 00 91     add     x17, x17, #8
10# DISASM:  14000101c:      01 00 00 14     b       0x140001020 <.text+0x20>
11# DISASM:  140001020:      fd 7b b3 a9     stp     x29, x30, [sp, #-208]!
12# DISASM:  140001024:      fd 03 00 91     mov     x29, sp
13# DISASM:  140001028:      e0 07 01 a9     stp     x0, x1, [sp, #16]
14# DISASM:  14000102c:      e2 0f 02 a9     stp     x2, x3, [sp, #32]
15# DISASM:  140001030:      e4 17 03 a9     stp     x4, x5, [sp, #48]
16# DISASM:  140001034:      e6 1f 04 a9     stp     x6, x7, [sp, #64]
17# DISASM:  140001038:      e0 87 02 ad     stp     q0, q1, [sp, #80]
18# DISASM:  14000103c:      e2 8f 03 ad     stp     q2, q3, [sp, #112]
19# DISASM:  140001040:      e4 97 04 ad     stp     q4, q5, [sp, #144]
20# DISASM:  140001044:      e6 9f 05 ad     stp     q6, q7, [sp, #176]
21# DISASM:  140001048:      e1 03 11 aa     mov     x1, x17
22# DISASM:  14000104c:      00 00 00 b0     adrp    x0, #4096
23# DISASM:  140001050:      00 00 00 91     add     x0, x0, #0
24# DISASM:  140001054:      eb ff ff 97     bl      0x140001000 <.text>
25# DISASM:  140001058:      f0 03 00 aa     mov     x16, x0
26# DISASM:  14000105c:      e6 9f 45 ad     ldp     q6, q7, [sp, #176]
27# DISASM:  140001060:      e4 97 44 ad     ldp     q4, q5, [sp, #144]
28# DISASM:  140001064:      e2 8f 43 ad     ldp     q2, q3, [sp, #112]
29# DISASM:  140001068:      e0 87 42 ad     ldp     q0, q1, [sp, #80]
30# DISASM:  14000106c:      e6 1f 44 a9     ldp     x6, x7, [sp, #64]
31# DISASM:  140001070:      e4 17 43 a9     ldp     x4, x5, [sp, #48]
32# DISASM:  140001074:      e2 0f 42 a9     ldp     x2, x3, [sp, #32]
33# DISASM:  140001078:      e0 07 41 a9     ldp     x0, x1, [sp, #16]
34# DISASM:  14000107c:      fd 7b cd a8     ldp     x29, x30, [sp], #208
35# DISASM:  140001080:      00 02 1f d6     br      x16
36
37# IMPORTS: Format: COFF-ARM64
38# IMPORTS: Arch: aarch64
39# IMPORTS: AddressSize: 64bit
40# IMPORTS: DelayImport {
41# IMPORTS:   Name: library.dll
42# IMPORTS:   Attributes: 0x1
43# IMPORTS:   ModuleHandle: 0x3000
44# IMPORTS:   ImportAddressTable: 0x3008
45# IMPORTS:   ImportNameTable: 0x2040
46# IMPORTS:   BoundDelayImportTable: 0x0
47# IMPORTS:   UnloadDelayImportTable: 0x0
48# IMPORTS:   Import {
49# IMPORTS:     Symbol: function (0)
50# IMPORTS:     Address: 0x140001014
51# IMPORTS:   }
52# IMPORTS: }
53
54--- !COFF
55header:
56  Machine:         IMAGE_FILE_MACHINE_ARM64
57  Characteristics: [  ]
58sections:
59  - Name:            .text
60    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
61    Alignment:       4
62    SectionData:     00000094C0035FD6
63    Relocations:
64      - VirtualAddress:  0
65        SymbolName:      function
66        Type:            IMAGE_REL_ARM64_BRANCH26
67symbols:
68  - Name:            .text
69    Value:           0
70    SectionNumber:   1
71    SimpleType:      IMAGE_SYM_TYPE_NULL
72    ComplexType:     IMAGE_SYM_DTYPE_NULL
73    StorageClass:    IMAGE_SYM_CLASS_STATIC
74    SectionDefinition:
75      Length:          8
76      NumberOfRelocations: 1
77      NumberOfLinenumbers: 0
78      CheckSum:        0
79      Number:          1
80  - Name:            main
81    Value:           0
82    SectionNumber:   1
83    SimpleType:      IMAGE_SYM_TYPE_NULL
84    ComplexType:     IMAGE_SYM_DTYPE_NULL
85    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
86  - Name:            function
87    Value:           0
88    SectionNumber:   0
89    SimpleType:      IMAGE_SYM_TYPE_NULL
90    ComplexType:     IMAGE_SYM_DTYPE_NULL
91    StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
92...
93