]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/COFF/arm64-relocs-imports.test
Vendor import of lld trunk r338150:
[FreeBSD/FreeBSD.git] / test / COFF / arm64-relocs-imports.test
1 # REQUIRES: aarch64
2
3 # RUN: yaml2obj < %s > %t.obj
4 # RUN: llvm-objdump -d %t.obj | FileCheck %s -check-prefix BEFORE
5 # RUN: lld-link /entry:main /subsystem:console /out:%t.exe %t.obj %p/Inputs/library-arm64.lib
6 # RUN: llvm-objdump -d %t.exe | FileCheck %s -check-prefix AFTER
7
8 # BEFORE: Disassembly of section .text:
9 # BEFORE:        0:       fe 0f 1f f8     str     x30, [sp, #-16]!
10 # BEFORE:        4:       00 00 00 90     adrp    x0, #0
11 # BEFORE:        8:       00 08 00 91     add     x0, x0, #2
12 # BEFORE:        c:       00 00 00 94     bl      #0
13 # BEFORE:       10:       00 01 40 39     ldrb    w0, [x8]
14 # BEFORE:       14:       00 01 40 79     ldrh    w0, [x8]
15 # BEFORE:       18:       00 01 40 b9     ldr     w0, [x8]
16 # BEFORE:       1c:       00 01 40 f9     ldr     x0, [x8]
17 # BEFORE:       20:       00 01 00 39     strb    w0, [x8]
18 # BEFORE:       24:       00 01 00 79     strh    w0, [x8]
19 # BEFORE:       28:       00 01 00 b9     str     w0, [x8]
20 # BEFORE:       2c:       00 01 00 f9     str     x0, [x8]
21 # BEFORE:       30:       00 01 40 3d     ldr     b0, [x8]
22 # BEFORE:       34:       00 01 40 7d     ldr     h0, [x8]
23 # BEFORE:       38:       00 01 40 bd     ldr     s0, [x8]
24 # BEFORE:       3c:       00 01 40 fd     ldr     d0, [x8]
25 # BEFORE:       40:       00 01 c0 3d     ldr     q0, [x8]
26 # BEFORE:       44:       00 01 00 3d     str     b0, [x8]
27 # BEFORE:       48:       00 01 00 7d     str     h0, [x8]
28 # BEFORE:       4c:       00 01 00 bd     str     s0, [x8]
29 # BEFORE:       50:       00 01 00 fd     str     d0, [x8]
30 # BEFORE:       54:       00 01 80 3d     str     q0, [x8]
31 # BEFORE:       58:       00 05 40 f9     ldr     x0, [x8, #8]
32 # BEFORE:       5c:       20 1a 01 b0     adrp    x0, #36982784
33 # BEFORE:       60:       00 fc 4f f9     ldr     x0, [x0, #8184]
34 # BEFORE:       64:       e0 03 1f 2a     mov      w0, wzr
35 # BEFORE:       68:       fe 07 41 f8     ldr     x30, [sp], #16
36 # BEFORE:       6c:       c0 03 5f d6     ret
37 # BEFORE:       70:       08 00 00 00     <unknown>
38 # BEFORE:       74:       00 00 00 00     <unknown>
39 # BEFORE:       78:       01 00 00 00     <unknown>
40 # BEFORE:       7c:       01 00 00 00     <unknown>
41 # BEFORE:       80:       00 00 00 91     add     x0, x0, #0
42 # BEFORE:       84:       00 00 40 91     add     x0, x0, #0, lsl #12
43 # BEFORE:       88:       00 00 40 f9     ldr     x0, [x0]
44 # BEFORE:       8c:       01 00 00 00     <unknown>
45 # BEFORE:       90:       20 1a 09 30     adr x0, #74565
46 # BEFORE:       94:       01 00 00 54     b.ne    #0
47 # BEFORE:       98:       00 00 00 36     tbz     w0, #0, #0
48
49 # AFTER: Disassembly of section .text:
50 # AFTER:  140001000:      fe 0f 1f f8     str     x30, [sp, #-16]!
51 # AFTER:  140001004:      00 00 00 b0     adrp    x0, #4096
52 # AFTER:  140001008:      00 18 00 91     add     x0, x0, #6
53 # AFTER:  14000100c:      24 00 00 94     bl      #144
54 # AFTER:  140001010:      00 21 40 39     ldrb    w0, [x8, #8]
55 # AFTER:  140001014:      00 11 40 79     ldrh    w0, [x8, #8]
56 # AFTER:  140001018:      00 09 40 b9     ldr     w0, [x8, #8]
57 # AFTER:  14000101c:      00 05 40 f9     ldr     x0, [x8, #8]
58 # AFTER:  140001020:      00 21 00 39     strb    w0, [x8, #8]
59 # AFTER:  140001024:      00 11 00 79     strh    w0, [x8, #8]
60 # AFTER:  140001028:      00 09 00 b9     str     w0, [x8, #8]
61 # AFTER:  14000102c:      00 05 00 f9     str     x0, [x8, #8]
62 # AFTER:  140001030:      00 41 40 3d     ldr     b0, [x8, #16]
63 # AFTER:  140001034:      00 21 40 7d     ldr     h0, [x8, #16]
64 # AFTER:  140001038:      00 11 40 bd     ldr     s0, [x8, #16]
65 # AFTER:  14000103c:      00 09 40 fd     ldr     d0, [x8, #16]
66 # AFTER:  140001040:      00 05 c0 3d     ldr     q0, [x8, #16]
67 # AFTER:  140001044:      00 41 00 3d     str     b0, [x8, #16]
68 # AFTER:  140001048:      00 21 00 7d     str     h0, [x8, #16]
69 # AFTER:  14000104c:      00 11 00 bd     str     s0, [x8, #16]
70 # AFTER:  140001050:      00 09 00 fd     str     d0, [x8, #16]
71 # AFTER:  140001054:      00 05 80 3d     str     q0, [x8, #16]
72 # AFTER:  140001058:      00 09 40 f9     ldr     x0, [x8, #16]
73 # AFTER:  14000105c:      00 00 00 f0     adrp    x0, #12288
74 # AFTER:  140001060:      00 fc 47 f9     ldr     x0, [x0, #4088]
75 # AFTER:  140001064:      e0 03 1f 2a     mov      w0, wzr
76 # AFTER:  140001068:      fe 07 41 f8     ldr     x30, [sp], #16
77 # AFTER:  14000106c:      c0 03 5f d6     ret
78 # AFTER:  140001070:      10 20 00 40     <unknown>
79 # AFTER:  140001074:      01 00 00 00     <unknown>
80 # AFTER:  140001078:      09 20 00 00     <unknown>
81 # AFTER:  14000107c:      09 00 00 00     <unknown>
82 # AFTER:  140001080:      00 20 0e 91     add     x0, x0, #904
83 # AFTER:  140001084:      00 04 40 91     add     x0, x0, #1, lsl #12
84 # AFTER:  140001088:      00 c4 41 f9     ldr     x0, [x0, #904]
85 # AFTER:  14000108c:      03 00 00 00     <unknown>
86 # AFTER:  140001090:      e0 95 09 30     adr     x0, #78525
87 # AFTER:  140001094:      41 00 00 54     b.ne    #8
88 # AFTER:  140001098:      20 00 00 36     tbz     w0, #0, #4
89 # AFTER:  14000109c:      10 00 00 b0     adrp    x16, #4096
90 # AFTER:  1400010a0:      10 2a 40 f9     ldr     x16, [x16, #80]
91 # AFTER:  1400010a4:      00 02 1f d6     br      x16
92
93 --- !COFF
94 header:
95   Machine:         IMAGE_FILE_MACHINE_ARM64
96   Characteristics: [  ]
97 sections:
98   - Name:            .text
99     Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
100     Alignment:       4
101     SectionData:     FE0F1FF80000009000080091000000940001403900014079000140B9000140F90001003900010079000100B9000100F90001403D0001407D000140BD000140FD0001C03D0001003D0001007D000100BD000100FD0001803D000540F9201A01B000FC4FF9E0031F2AFE0741F8C0035FD6080000000000000001000000010000000000009100004091000040f901000000201a09300100005400000036
102     Relocations:
103       - VirtualAddress:  4
104         SymbolName:      .Lstr
105         Type:            IMAGE_REL_ARM64_PAGEBASE_REL21
106       - VirtualAddress:  8
107         SymbolName:      .Lstr
108         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12A
109       - VirtualAddress:  12
110         SymbolName:      function
111         Type:            IMAGE_REL_ARM64_BRANCH26
112       - VirtualAddress:  16
113         SymbolName:      .Lglobal
114         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
115       - VirtualAddress:  20
116         SymbolName:      .Lglobal
117         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
118       - VirtualAddress:  24
119         SymbolName:      .Lglobal
120         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
121       - VirtualAddress:  28
122         SymbolName:      .Lglobal
123         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
124       - VirtualAddress:  32
125         SymbolName:      .Lglobal
126         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
127       - VirtualAddress:  36
128         SymbolName:      .Lglobal
129         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
130       - VirtualAddress:  40
131         SymbolName:      .Lglobal
132         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
133       - VirtualAddress:  44
134         SymbolName:      .Lglobal
135         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
136       - VirtualAddress:  48
137         SymbolName:      .Lglobal16
138         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
139       - VirtualAddress:  52
140         SymbolName:      .Lglobal16
141         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
142       - VirtualAddress:  56
143         SymbolName:      .Lglobal16
144         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
145       - VirtualAddress:  60
146         SymbolName:      .Lglobal16
147         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
148       - VirtualAddress:  64
149         SymbolName:      .Lglobal16
150         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
151       - VirtualAddress:  68
152         SymbolName:      .Lglobal16
153         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
154       - VirtualAddress:  72
155         SymbolName:      .Lglobal16
156         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
157       - VirtualAddress:  76
158         SymbolName:      .Lglobal16
159         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
160       - VirtualAddress:  80
161         SymbolName:      .Lglobal16
162         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
163       - VirtualAddress:  84
164         SymbolName:      .Lglobal16
165         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
166       - VirtualAddress:  88
167         SymbolName:      .Lglobal
168         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
169       - VirtualAddress:  92
170         SymbolName:      .Lglobal16
171         Type:            IMAGE_REL_ARM64_PAGEBASE_REL21
172       - VirtualAddress:  96
173         SymbolName:      .Lglobal0
174         Type:            IMAGE_REL_ARM64_PAGEOFFSET_12L
175       - VirtualAddress:  112
176         SymbolName:      .Lglobal
177         Type:            IMAGE_REL_ARM64_ADDR64
178       - VirtualAddress:  120
179         SymbolName:      .Lglobal
180         Type:            IMAGE_REL_ARM64_ADDR32NB
181       - VirtualAddress:  124
182         SymbolName:      .Lglobal
183         Type:            IMAGE_REL_ARM64_SECREL
184       - VirtualAddress:  128
185         SymbolName:      .Lglobal5000
186         Type:            IMAGE_REL_ARM64_SECREL_LOW12A
187       - VirtualAddress:  132
188         SymbolName:      .Lglobal5000
189         Type:            IMAGE_REL_ARM64_SECREL_HIGH12A
190       - VirtualAddress:  136
191         SymbolName:      .Lglobal5000
192         Type:            IMAGE_REL_ARM64_SECREL_LOW12L
193       - VirtualAddress:  140
194         SymbolName:      .Lglobal
195         Type:            IMAGE_REL_ARM64_SECTION
196       - VirtualAddress:  144
197         SymbolName:      .Lglobal
198         Type:            IMAGE_REL_ARM64_REL21
199       - VirtualAddress:  148
200         SymbolName:      function
201         Type:            IMAGE_REL_ARM64_BRANCH19
202       - VirtualAddress:  152
203         SymbolName:      function
204         Type:            IMAGE_REL_ARM64_BRANCH14
205   - Name:            .data
206     Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
207     Alignment:       4
208     SectionData:     ''
209   - Name:            .bss
210     Characteristics: [ IMAGE_SCN_CNT_UNINITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
211     Alignment:       4
212     SectionData:     ''
213   - Name:            .rdata
214     Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
215     Alignment:       1
216     SectionData:     00000000202068656C6C6F20776F726C6400
217 symbols:
218   - Name:            .text
219     Value:           0
220     SectionNumber:   1
221     SimpleType:      IMAGE_SYM_TYPE_NULL
222     ComplexType:     IMAGE_SYM_DTYPE_NULL
223     StorageClass:    IMAGE_SYM_CLASS_STATIC
224     SectionDefinition:
225       Length:          28
226       NumberOfRelocations: 3
227       NumberOfLinenumbers: 0
228       CheckSum:        1438860354
229       Number:          1
230   - Name:            .rdata
231     Value:           0
232     SectionNumber:   4
233     SimpleType:      IMAGE_SYM_TYPE_NULL
234     ComplexType:     IMAGE_SYM_DTYPE_NULL
235     StorageClass:    IMAGE_SYM_CLASS_STATIC
236     SectionDefinition:
237       Length:          12
238       NumberOfRelocations: 0
239       NumberOfLinenumbers: 0
240       CheckSum:        872944732
241       Number:          4
242   - Name:            main
243     Value:           0
244     SectionNumber:   1
245     SimpleType:      IMAGE_SYM_TYPE_NULL
246     ComplexType:     IMAGE_SYM_DTYPE_NULL
247     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
248   - Name:            .Lstr
249     Value:           4
250     SectionNumber:   4
251     SimpleType:      IMAGE_SYM_TYPE_NULL
252     ComplexType:     IMAGE_SYM_DTYPE_NULL
253     StorageClass:    IMAGE_SYM_CLASS_STATIC
254   - Name:            .Lglobal
255     Value:           8
256     SectionNumber:   4
257     SimpleType:      IMAGE_SYM_TYPE_NULL
258     ComplexType:     IMAGE_SYM_DTYPE_NULL
259     StorageClass:    IMAGE_SYM_CLASS_STATIC
260   - Name:            .Lglobal16
261     Value:           16
262     SectionNumber:   4
263     SimpleType:      IMAGE_SYM_TYPE_NULL
264     ComplexType:     IMAGE_SYM_DTYPE_NULL
265     StorageClass:    IMAGE_SYM_CLASS_STATIC
266   - Name:            .Lglobal0
267     Value:           0
268     SectionNumber:   4
269     SimpleType:      IMAGE_SYM_TYPE_NULL
270     ComplexType:     IMAGE_SYM_DTYPE_NULL
271     StorageClass:    IMAGE_SYM_CLASS_STATIC
272   - Name:            function
273     Value:           0
274     SectionNumber:   0
275     SimpleType:      IMAGE_SYM_TYPE_NULL
276     ComplexType:     IMAGE_SYM_DTYPE_NULL
277     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
278   - Name:            .Lglobal5000
279     Value:           5000
280     SectionNumber:   4
281     SimpleType:      IMAGE_SYM_TYPE_NULL
282     ComplexType:     IMAGE_SYM_DTYPE_NULL
283     StorageClass:    IMAGE_SYM_CLASS_STATIC
284 ...