[llvm-shlib] Fix the version naming style of libLLVM for Windows (#85710)
[llvm-project.git] / bolt / test / X86 / dwarf4-types-forward-backward-cross-reference.s
blobc407ecadd1119e5ce58170e0f703f5afe725f167
1 # REQUIRES: system-linux
3 # RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %s -o %t.o
4 # RUN: %clang %cflags -gdwarf-4 %t.o -o %t.exe
5 # RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections
6 # RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt | FileCheck --check-prefix=POSTCHECK %s
8 # This test checks that BOLT handles correctly backward and forward cross CU references
9 # for DWARF4 with -fdebug-types-section
11 # POSTCHECK: version = 0x0004
12 # POSTCHECK: DW_TAG_variable [10]
13 # POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000112 "Foo2a")
15 # POSTCHECK: version = 0x0004
16 # POSTCHECK: DW_TAG_variable [10]
17 # POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000094 "Foo")
18 # POSTCHECK: DW_TAG_variable [10]
19 # POSTCHECK: DW_AT_type [DW_FORM_ref_addr] (0x0000000000000190 "Foo3a")
21 # main.cpp
22 # struct Foo {
23 # char *c1;
24 # char *c2;
25 # char *c3;
26 # };
27 # struct Foo2 {
28 # char *c1;
29 # char *c2;
30 # };
31 # int main(int argc, char *argv[]) {
32 # Foo f;
33 # f.c1 = argv[argc];
34 # f.c2 = argv[argc + 1];
35 # f.c3 = argv[argc + 2];
36 # Foo2 f2;
37 # f.c1 = argv[argc + 3];
38 # f.c2 = argv[argc + 4];
39 # return 0;
40 # }
42 # helper.cpp
43 # struct Foo2a {
44 # char *c1;
45 # char *c2;
46 # char *c3;
47 # };
48 # struct Foo3 {
49 # char *c1;
50 # char *c2;
51 # };
53 # int foo() {
54 # Foo2a f;
55 # Foo3 f2;
56 # return 0;
57 # }
59 # helper1.cpp
60 # struct Foo3a {
61 # char *c1;
62 # char *c2;
63 # char *c3;
64 # };
65 # struct Foo4 {
66 # char *c1;
67 # char *c2;
68 # };
70 # int foo2() {
71 # Foo3a f;
72 # Foo4 f2;
73 # return 0;
74 # }
77 .text
78 .file "llvm-link"
79 .globl main # -- Begin function main
80 .p2align 4, 0x90
81 .type main,@function
82 main: # @main
83 .Lfunc_begin0:
84 .file 1 "/dwarf4-types-forward-cross-reference-test" "main.cpp"
85 .loc 1 10 0 # main.cpp:10:0
86 .cfi_startproc
87 # %bb.0: # %entry
88 pushq %rbp
89 .cfi_def_cfa_offset 16
90 .cfi_offset %rbp, -16
91 movq %rsp, %rbp
92 .cfi_def_cfa_register %rbp
93 movl $0, -4(%rbp)
94 movl %edi, -8(%rbp)
95 movq %rsi, -16(%rbp)
96 .Ltmp0:
97 .loc 1 12 9 prologue_end # main.cpp:12:9
98 movq -16(%rbp), %rax
99 movslq -8(%rbp), %rcx
100 movq (%rax,%rcx,8), %rax
101 .loc 1 12 7 is_stmt 0 # main.cpp:12:7
102 movq %rax, -40(%rbp)
103 .loc 1 13 9 is_stmt 1 # main.cpp:13:9
104 movq -16(%rbp), %rax
105 .loc 1 13 14 is_stmt 0 # main.cpp:13:14
106 movl -8(%rbp), %ecx
107 .loc 1 13 19 # main.cpp:13:19
108 addl $1, %ecx
109 .loc 1 13 9 # main.cpp:13:9
110 movslq %ecx, %rcx
111 movq (%rax,%rcx,8), %rax
112 .loc 1 13 7 # main.cpp:13:7
113 movq %rax, -32(%rbp)
114 .loc 1 14 9 is_stmt 1 # main.cpp:14:9
115 movq -16(%rbp), %rax
116 .loc 1 14 14 is_stmt 0 # main.cpp:14:14
117 movl -8(%rbp), %ecx
118 .loc 1 14 19 # main.cpp:14:19
119 addl $2, %ecx
120 .loc 1 14 9 # main.cpp:14:9
121 movslq %ecx, %rcx
122 movq (%rax,%rcx,8), %rax
123 .loc 1 14 7 # main.cpp:14:7
124 movq %rax, -24(%rbp)
125 .loc 1 16 9 is_stmt 1 # main.cpp:16:9
126 movq -16(%rbp), %rax
127 .loc 1 16 14 is_stmt 0 # main.cpp:16:14
128 movl -8(%rbp), %ecx
129 .loc 1 16 19 # main.cpp:16:19
130 addl $3, %ecx
131 .loc 1 16 9 # main.cpp:16:9
132 movslq %ecx, %rcx
133 movq (%rax,%rcx,8), %rax
134 .loc 1 16 7 # main.cpp:16:7
135 movq %rax, -40(%rbp)
136 .loc 1 17 9 is_stmt 1 # main.cpp:17:9
137 movq -16(%rbp), %rax
138 .loc 1 17 14 is_stmt 0 # main.cpp:17:14
139 movl -8(%rbp), %ecx
140 .loc 1 17 19 # main.cpp:17:19
141 addl $4, %ecx
142 .loc 1 17 9 # main.cpp:17:9
143 movslq %ecx, %rcx
144 movq (%rax,%rcx,8), %rax
145 .loc 1 17 7 # main.cpp:17:7
146 movq %rax, -32(%rbp)
147 .loc 1 18 2 is_stmt 1 # main.cpp:18:2
148 xorl %eax, %eax
149 .loc 1 18 2 epilogue_begin is_stmt 0 # main.cpp:18:2
150 popq %rbp
151 .cfi_def_cfa %rsp, 8
152 retq
153 .Ltmp1:
154 .Lfunc_end0:
155 .size main, .Lfunc_end0-main
156 .cfi_endproc
157 # -- End function
158 .globl _Z3foov # -- Begin function _Z3foov
159 .p2align 4, 0x90
160 .type _Z3foov,@function
161 _Z3foov: # @_Z3foov
162 .Lfunc_begin1:
163 .file 2 "/dwarf4-types-forward-cross-reference-test" "helper.cpp"
164 .loc 2 11 0 is_stmt 1 # helper.cpp:11:0
165 .cfi_startproc
166 # %bb.0: # %entry
167 pushq %rbp
168 .cfi_def_cfa_offset 16
169 .cfi_offset %rbp, -16
170 movq %rsp, %rbp
171 .cfi_def_cfa_register %rbp
172 .Ltmp2:
173 .loc 2 14 3 prologue_end # helper.cpp:14:3
174 xorl %eax, %eax
175 .loc 2 14 3 epilogue_begin is_stmt 0 # helper.cpp:14:3
176 popq %rbp
177 .cfi_def_cfa %rsp, 8
178 retq
179 .Ltmp3:
180 .Lfunc_end1:
181 .size _Z3foov, .Lfunc_end1-_Z3foov
182 .cfi_endproc
183 # -- End function
184 .globl _Z4foo2v # -- Begin function _Z4foo2v
185 .p2align 4, 0x90
186 .type _Z4foo2v,@function
187 _Z4foo2v: # @_Z4foo2v
188 .Lfunc_begin2:
189 .file 3 "/dwarf4-types-forward-cross-reference-test" "helper1.cpp"
190 .loc 3 11 0 is_stmt 1 # helper1.cpp:11:0
191 .cfi_startproc
192 # %bb.0: # %entry
193 pushq %rbp
194 .cfi_def_cfa_offset 16
195 .cfi_offset %rbp, -16
196 movq %rsp, %rbp
197 .cfi_def_cfa_register %rbp
198 .Ltmp4:
199 .loc 3 14 3 prologue_end # helper1.cpp:14:3
200 xorl %eax, %eax
201 .loc 3 14 3 epilogue_begin is_stmt 0 # helper1.cpp:14:3
202 popq %rbp
203 .cfi_def_cfa %rsp, 8
204 retq
205 .Ltmp5:
206 .Lfunc_end2:
207 .size _Z4foo2v, .Lfunc_end2-_Z4foo2v
208 .cfi_endproc
209 # -- End function
210 .section .debug_types,"G",@progbits,7448148824980338162,comdat
211 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
212 .Ldebug_info_start0:
213 .short 4 # DWARF version number
214 .long .debug_abbrev # Offset Into Abbrev. Section
215 .byte 8 # Address Size (in bytes)
216 .quad 7448148824980338162 # Type Signature
217 .long 30 # Type DIE Offset
218 .byte 1 # Abbrev [1] 0x17:0x42 DW_TAG_type_unit
219 .short 33 # DW_AT_language
220 .long .Lline_table_start0 # DW_AT_stmt_list
221 .byte 2 # Abbrev [2] 0x1e:0x2e DW_TAG_structure_type
222 .byte 5 # DW_AT_calling_convention
223 .long .Linfo_string18 # DW_AT_name
224 .byte 24 # DW_AT_byte_size
225 .byte 1 # DW_AT_decl_file
226 .byte 1 # DW_AT_decl_line
227 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
228 .long .Linfo_string15 # DW_AT_name
229 .long 76 # DW_AT_type
230 .byte 1 # DW_AT_decl_file
231 .byte 2 # DW_AT_decl_line
232 .byte 0 # DW_AT_data_member_location
233 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
234 .long .Linfo_string16 # DW_AT_name
235 .long 76 # DW_AT_type
236 .byte 1 # DW_AT_decl_file
237 .byte 3 # DW_AT_decl_line
238 .byte 8 # DW_AT_data_member_location
239 .byte 3 # Abbrev [3] 0x3f:0xc DW_TAG_member
240 .long .Linfo_string17 # DW_AT_name
241 .long 76 # DW_AT_type
242 .byte 1 # DW_AT_decl_file
243 .byte 4 # DW_AT_decl_line
244 .byte 16 # DW_AT_data_member_location
245 .byte 0 # End Of Children Mark
246 .byte 4 # Abbrev [4] 0x4c:0x5 DW_TAG_pointer_type
247 .long 81 # DW_AT_type
248 .byte 5 # Abbrev [5] 0x51:0x7 DW_TAG_base_type
249 .long .Linfo_string13 # DW_AT_name
250 .byte 6 # DW_AT_encoding
251 .byte 1 # DW_AT_byte_size
252 .byte 0 # End Of Children Mark
253 .Ldebug_info_end0:
254 .section .debug_types,"G",@progbits,5322170643381124694,comdat
255 .long .Ldebug_info_end1-.Ldebug_info_start1 # Length of Unit
256 .Ldebug_info_start1:
257 .short 4 # DWARF version number
258 .long .debug_abbrev # Offset Into Abbrev. Section
259 .byte 8 # Address Size (in bytes)
260 .quad 5322170643381124694 # Type Signature
261 .long 30 # Type DIE Offset
262 .byte 1 # Abbrev [1] 0x17:0x36 DW_TAG_type_unit
263 .short 33 # DW_AT_language
264 .long .Lline_table_start0 # DW_AT_stmt_list
265 .byte 2 # Abbrev [2] 0x1e:0x22 DW_TAG_structure_type
266 .byte 5 # DW_AT_calling_convention
267 .long .Linfo_string20 # DW_AT_name
268 .byte 16 # DW_AT_byte_size
269 .byte 1 # DW_AT_decl_file
270 .byte 6 # DW_AT_decl_line
271 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
272 .long .Linfo_string15 # DW_AT_name
273 .long 64 # DW_AT_type
274 .byte 1 # DW_AT_decl_file
275 .byte 7 # DW_AT_decl_line
276 .byte 0 # DW_AT_data_member_location
277 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
278 .long .Linfo_string16 # DW_AT_name
279 .long 64 # DW_AT_type
280 .byte 1 # DW_AT_decl_file
281 .byte 8 # DW_AT_decl_line
282 .byte 8 # DW_AT_data_member_location
283 .byte 0 # End Of Children Mark
284 .byte 4 # Abbrev [4] 0x40:0x5 DW_TAG_pointer_type
285 .long 69 # DW_AT_type
286 .byte 5 # Abbrev [5] 0x45:0x7 DW_TAG_base_type
287 .long .Linfo_string13 # DW_AT_name
288 .byte 6 # DW_AT_encoding
289 .byte 1 # DW_AT_byte_size
290 .byte 0 # End Of Children Mark
291 .Ldebug_info_end1:
292 .section .debug_types,"G",@progbits,1175092228111723119,comdat
293 .long .Ldebug_info_end2-.Ldebug_info_start2 # Length of Unit
294 .Ldebug_info_start2:
295 .short 4 # DWARF version number
296 .long .debug_abbrev # Offset Into Abbrev. Section
297 .byte 8 # Address Size (in bytes)
298 .quad 1175092228111723119 # Type Signature
299 .long 30 # Type DIE Offset
300 .byte 1 # Abbrev [1] 0x17:0x42 DW_TAG_type_unit
301 .short 33 # DW_AT_language
302 .long .Lline_table_start0 # DW_AT_stmt_list
303 .byte 2 # Abbrev [2] 0x1e:0x2e DW_TAG_structure_type
304 .byte 5 # DW_AT_calling_convention
305 .long .Linfo_string21 # DW_AT_name
306 .byte 24 # DW_AT_byte_size
307 .byte 2 # DW_AT_decl_file
308 .byte 1 # DW_AT_decl_line
309 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
310 .long .Linfo_string15 # DW_AT_name
311 .long 76 # DW_AT_type
312 .byte 2 # DW_AT_decl_file
313 .byte 2 # DW_AT_decl_line
314 .byte 0 # DW_AT_data_member_location
315 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
316 .long .Linfo_string16 # DW_AT_name
317 .long 76 # DW_AT_type
318 .byte 2 # DW_AT_decl_file
319 .byte 3 # DW_AT_decl_line
320 .byte 8 # DW_AT_data_member_location
321 .byte 3 # Abbrev [3] 0x3f:0xc DW_TAG_member
322 .long .Linfo_string17 # DW_AT_name
323 .long 76 # DW_AT_type
324 .byte 2 # DW_AT_decl_file
325 .byte 4 # DW_AT_decl_line
326 .byte 16 # DW_AT_data_member_location
327 .byte 0 # End Of Children Mark
328 .byte 4 # Abbrev [4] 0x4c:0x5 DW_TAG_pointer_type
329 .long 81 # DW_AT_type
330 .byte 5 # Abbrev [5] 0x51:0x7 DW_TAG_base_type
331 .long .Linfo_string13 # DW_AT_name
332 .byte 6 # DW_AT_encoding
333 .byte 1 # DW_AT_byte_size
334 .byte 0 # End Of Children Mark
335 .Ldebug_info_end2:
336 .section .debug_types,"G",@progbits,12995149649732825572,comdat
337 .long .Ldebug_info_end3-.Ldebug_info_start3 # Length of Unit
338 .Ldebug_info_start3:
339 .short 4 # DWARF version number
340 .long .debug_abbrev # Offset Into Abbrev. Section
341 .byte 8 # Address Size (in bytes)
342 .quad -5451594423976726044 # Type Signature
343 .long 30 # Type DIE Offset
344 .byte 1 # Abbrev [1] 0x17:0x36 DW_TAG_type_unit
345 .short 33 # DW_AT_language
346 .long .Lline_table_start0 # DW_AT_stmt_list
347 .byte 2 # Abbrev [2] 0x1e:0x22 DW_TAG_structure_type
348 .byte 5 # DW_AT_calling_convention
349 .long .Linfo_string22 # DW_AT_name
350 .byte 16 # DW_AT_byte_size
351 .byte 2 # DW_AT_decl_file
352 .byte 6 # DW_AT_decl_line
353 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
354 .long .Linfo_string15 # DW_AT_name
355 .long 64 # DW_AT_type
356 .byte 2 # DW_AT_decl_file
357 .byte 7 # DW_AT_decl_line
358 .byte 0 # DW_AT_data_member_location
359 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
360 .long .Linfo_string16 # DW_AT_name
361 .long 64 # DW_AT_type
362 .byte 2 # DW_AT_decl_file
363 .byte 8 # DW_AT_decl_line
364 .byte 8 # DW_AT_data_member_location
365 .byte 0 # End Of Children Mark
366 .byte 4 # Abbrev [4] 0x40:0x5 DW_TAG_pointer_type
367 .long 69 # DW_AT_type
368 .byte 5 # Abbrev [5] 0x45:0x7 DW_TAG_base_type
369 .long .Linfo_string13 # DW_AT_name
370 .byte 6 # DW_AT_encoding
371 .byte 1 # DW_AT_byte_size
372 .byte 0 # End Of Children Mark
373 .Ldebug_info_end3:
374 .section .debug_types,"G",@progbits,10693860647081617285,comdat
375 .long .Ldebug_info_end4-.Ldebug_info_start4 # Length of Unit
376 .Ldebug_info_start4:
377 .short 4 # DWARF version number
378 .long .debug_abbrev # Offset Into Abbrev. Section
379 .byte 8 # Address Size (in bytes)
380 .quad -7752883426627934331 # Type Signature
381 .long 30 # Type DIE Offset
382 .byte 1 # Abbrev [1] 0x17:0x42 DW_TAG_type_unit
383 .short 33 # DW_AT_language
384 .long .Lline_table_start0 # DW_AT_stmt_list
385 .byte 2 # Abbrev [2] 0x1e:0x2e DW_TAG_structure_type
386 .byte 5 # DW_AT_calling_convention
387 .long .Linfo_string23 # DW_AT_name
388 .byte 24 # DW_AT_byte_size
389 .byte 3 # DW_AT_decl_file
390 .byte 1 # DW_AT_decl_line
391 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
392 .long .Linfo_string15 # DW_AT_name
393 .long 76 # DW_AT_type
394 .byte 3 # DW_AT_decl_file
395 .byte 2 # DW_AT_decl_line
396 .byte 0 # DW_AT_data_member_location
397 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
398 .long .Linfo_string16 # DW_AT_name
399 .long 76 # DW_AT_type
400 .byte 3 # DW_AT_decl_file
401 .byte 3 # DW_AT_decl_line
402 .byte 8 # DW_AT_data_member_location
403 .byte 3 # Abbrev [3] 0x3f:0xc DW_TAG_member
404 .long .Linfo_string17 # DW_AT_name
405 .long 76 # DW_AT_type
406 .byte 3 # DW_AT_decl_file
407 .byte 4 # DW_AT_decl_line
408 .byte 16 # DW_AT_data_member_location
409 .byte 0 # End Of Children Mark
410 .byte 4 # Abbrev [4] 0x4c:0x5 DW_TAG_pointer_type
411 .long 81 # DW_AT_type
412 .byte 5 # Abbrev [5] 0x51:0x7 DW_TAG_base_type
413 .long .Linfo_string13 # DW_AT_name
414 .byte 6 # DW_AT_encoding
415 .byte 1 # DW_AT_byte_size
416 .byte 0 # End Of Children Mark
417 .Ldebug_info_end4:
418 .section .debug_types,"G",@progbits,17604755499357858397,comdat
419 .long .Ldebug_info_end5-.Ldebug_info_start5 # Length of Unit
420 .Ldebug_info_start5:
421 .short 4 # DWARF version number
422 .long .debug_abbrev # Offset Into Abbrev. Section
423 .byte 8 # Address Size (in bytes)
424 .quad -841988574351693219 # Type Signature
425 .long 30 # Type DIE Offset
426 .byte 1 # Abbrev [1] 0x17:0x36 DW_TAG_type_unit
427 .short 33 # DW_AT_language
428 .long .Lline_table_start0 # DW_AT_stmt_list
429 .byte 2 # Abbrev [2] 0x1e:0x22 DW_TAG_structure_type
430 .byte 5 # DW_AT_calling_convention
431 .long .Linfo_string24 # DW_AT_name
432 .byte 16 # DW_AT_byte_size
433 .byte 3 # DW_AT_decl_file
434 .byte 6 # DW_AT_decl_line
435 .byte 3 # Abbrev [3] 0x27:0xc DW_TAG_member
436 .long .Linfo_string15 # DW_AT_name
437 .long 64 # DW_AT_type
438 .byte 3 # DW_AT_decl_file
439 .byte 7 # DW_AT_decl_line
440 .byte 0 # DW_AT_data_member_location
441 .byte 3 # Abbrev [3] 0x33:0xc DW_TAG_member
442 .long .Linfo_string16 # DW_AT_name
443 .long 64 # DW_AT_type
444 .byte 3 # DW_AT_decl_file
445 .byte 8 # DW_AT_decl_line
446 .byte 8 # DW_AT_data_member_location
447 .byte 0 # End Of Children Mark
448 .byte 4 # Abbrev [4] 0x40:0x5 DW_TAG_pointer_type
449 .long 69 # DW_AT_type
450 .byte 5 # Abbrev [5] 0x45:0x7 DW_TAG_base_type
451 .long .Linfo_string13 # DW_AT_name
452 .byte 6 # DW_AT_encoding
453 .byte 1 # DW_AT_byte_size
454 .byte 0 # End Of Children Mark
455 .Ldebug_info_end5:
456 .section .debug_abbrev,"",@progbits
457 .byte 1 # Abbreviation Code
458 .byte 65 # DW_TAG_type_unit
459 .byte 1 # DW_CHILDREN_yes
460 .byte 19 # DW_AT_language
461 .byte 5 # DW_FORM_data2
462 .byte 16 # DW_AT_stmt_list
463 .byte 23 # DW_FORM_sec_offset
464 .byte 0 # EOM(1)
465 .byte 0 # EOM(2)
466 .byte 2 # Abbreviation Code
467 .byte 19 # DW_TAG_structure_type
468 .byte 1 # DW_CHILDREN_yes
469 .byte 54 # DW_AT_calling_convention
470 .byte 11 # DW_FORM_data1
471 .byte 3 # DW_AT_name
472 .byte 14 # DW_FORM_strp
473 .byte 11 # DW_AT_byte_size
474 .byte 11 # DW_FORM_data1
475 .byte 58 # DW_AT_decl_file
476 .byte 11 # DW_FORM_data1
477 .byte 59 # DW_AT_decl_line
478 .byte 11 # DW_FORM_data1
479 .byte 0 # EOM(1)
480 .byte 0 # EOM(2)
481 .byte 3 # Abbreviation Code
482 .byte 13 # DW_TAG_member
483 .byte 0 # DW_CHILDREN_no
484 .byte 3 # DW_AT_name
485 .byte 14 # DW_FORM_strp
486 .byte 73 # DW_AT_type
487 .byte 19 # DW_FORM_ref4
488 .byte 58 # DW_AT_decl_file
489 .byte 11 # DW_FORM_data1
490 .byte 59 # DW_AT_decl_line
491 .byte 11 # DW_FORM_data1
492 .byte 56 # DW_AT_data_member_location
493 .byte 11 # DW_FORM_data1
494 .byte 0 # EOM(1)
495 .byte 0 # EOM(2)
496 .byte 4 # Abbreviation Code
497 .byte 15 # DW_TAG_pointer_type
498 .byte 0 # DW_CHILDREN_no
499 .byte 73 # DW_AT_type
500 .byte 19 # DW_FORM_ref4
501 .byte 0 # EOM(1)
502 .byte 0 # EOM(2)
503 .byte 5 # Abbreviation Code
504 .byte 36 # DW_TAG_base_type
505 .byte 0 # DW_CHILDREN_no
506 .byte 3 # DW_AT_name
507 .byte 14 # DW_FORM_strp
508 .byte 62 # DW_AT_encoding
509 .byte 11 # DW_FORM_data1
510 .byte 11 # DW_AT_byte_size
511 .byte 11 # DW_FORM_data1
512 .byte 0 # EOM(1)
513 .byte 0 # EOM(2)
514 .byte 6 # Abbreviation Code
515 .byte 17 # DW_TAG_compile_unit
516 .byte 1 # DW_CHILDREN_yes
517 .byte 37 # DW_AT_producer
518 .byte 14 # DW_FORM_strp
519 .byte 19 # DW_AT_language
520 .byte 5 # DW_FORM_data2
521 .byte 3 # DW_AT_name
522 .byte 14 # DW_FORM_strp
523 .byte 16 # DW_AT_stmt_list
524 .byte 23 # DW_FORM_sec_offset
525 .byte 27 # DW_AT_comp_dir
526 .byte 14 # DW_FORM_strp
527 .byte 17 # DW_AT_low_pc
528 .byte 1 # DW_FORM_addr
529 .byte 18 # DW_AT_high_pc
530 .byte 6 # DW_FORM_data4
531 .byte 0 # EOM(1)
532 .byte 0 # EOM(2)
533 .byte 7 # Abbreviation Code
534 .byte 46 # DW_TAG_subprogram
535 .byte 1 # DW_CHILDREN_yes
536 .byte 17 # DW_AT_low_pc
537 .byte 1 # DW_FORM_addr
538 .byte 18 # DW_AT_high_pc
539 .byte 6 # DW_FORM_data4
540 .byte 64 # DW_AT_frame_base
541 .byte 24 # DW_FORM_exprloc
542 .byte 3 # DW_AT_name
543 .byte 14 # DW_FORM_strp
544 .byte 58 # DW_AT_decl_file
545 .byte 11 # DW_FORM_data1
546 .byte 59 # DW_AT_decl_line
547 .byte 11 # DW_FORM_data1
548 .byte 73 # DW_AT_type
549 .byte 19 # DW_FORM_ref4
550 .byte 63 # DW_AT_external
551 .byte 25 # DW_FORM_flag_present
552 .byte 0 # EOM(1)
553 .byte 0 # EOM(2)
554 .byte 8 # Abbreviation Code
555 .byte 5 # DW_TAG_formal_parameter
556 .byte 0 # DW_CHILDREN_no
557 .byte 2 # DW_AT_location
558 .byte 24 # DW_FORM_exprloc
559 .byte 3 # DW_AT_name
560 .byte 14 # DW_FORM_strp
561 .byte 58 # DW_AT_decl_file
562 .byte 11 # DW_FORM_data1
563 .byte 59 # DW_AT_decl_line
564 .byte 11 # DW_FORM_data1
565 .byte 73 # DW_AT_type
566 .byte 19 # DW_FORM_ref4
567 .byte 0 # EOM(1)
568 .byte 0 # EOM(2)
569 .byte 9 # Abbreviation Code
570 .byte 52 # DW_TAG_variable
571 .byte 0 # DW_CHILDREN_no
572 .byte 2 # DW_AT_location
573 .byte 24 # DW_FORM_exprloc
574 .byte 3 # DW_AT_name
575 .byte 14 # DW_FORM_strp
576 .byte 58 # DW_AT_decl_file
577 .byte 11 # DW_FORM_data1
578 .byte 59 # DW_AT_decl_line
579 .byte 11 # DW_FORM_data1
580 .byte 73 # DW_AT_type
581 .byte 19 # DW_FORM_ref4
582 .byte 0 # EOM(1)
583 .byte 0 # EOM(2)
584 .byte 10 # Abbreviation Code
585 .byte 19 # DW_TAG_structure_type
586 .byte 0 # DW_CHILDREN_no
587 .byte 60 # DW_AT_declaration
588 .byte 25 # DW_FORM_flag_present
589 .byte 105 # DW_AT_signature
590 .byte 32 # DW_FORM_ref_sig8
591 .byte 0 # EOM(1)
592 .byte 0 # EOM(2)
593 .byte 11 # Abbreviation Code
594 .byte 46 # DW_TAG_subprogram
595 .byte 1 # DW_CHILDREN_yes
596 .byte 17 # DW_AT_low_pc
597 .byte 1 # DW_FORM_addr
598 .byte 18 # DW_AT_high_pc
599 .byte 6 # DW_FORM_data4
600 .byte 64 # DW_AT_frame_base
601 .byte 24 # DW_FORM_exprloc
602 .byte 110 # DW_AT_linkage_name
603 .byte 14 # DW_FORM_strp
604 .byte 3 # DW_AT_name
605 .byte 14 # DW_FORM_strp
606 .byte 58 # DW_AT_decl_file
607 .byte 11 # DW_FORM_data1
608 .byte 59 # DW_AT_decl_line
609 .byte 11 # DW_FORM_data1
610 .byte 73 # DW_AT_type
611 .byte 19 # DW_FORM_ref4
612 .byte 63 # DW_AT_external
613 .byte 25 # DW_FORM_flag_present
614 .byte 0 # EOM(1)
615 .byte 0 # EOM(2)
616 .byte 12 # Abbreviation Code <-- Manually added abbrev decl
617 .byte 52 # DW_TAG_variable
618 .byte 0 # DW_CHILDREN_no
619 .byte 2 # DW_AT_location
620 .byte 24 # DW_FORM_exprloc
621 .byte 3 # DW_AT_name
622 .byte 14 # DW_FORM_strp
623 .byte 58 # DW_AT_decl_file
624 .byte 11 # DW_FORM_data1
625 .byte 59 # DW_AT_decl_line
626 .byte 11 # DW_FORM_data1
627 .byte 73 # DW_AT_type
628 .byte 16 # DW_FORM_ref_addr
629 .byte 0 # EOM(1)
630 .byte 0 # EOM(2)
631 .byte 0 # EOM(3)
632 .section .debug_info,"",@progbits
633 .Lcu_begin0:
634 .long .Ldebug_info_end6-.Ldebug_info_start6 # Length of Unit
635 .Ldebug_info_start6:
636 .short 4 # DWARF version number
637 .long .debug_abbrev # Offset Into Abbrev. Section
638 .byte 8 # Address Size (in bytes)
639 .byte 6 # Abbrev [6] 0xb:0x9c DW_TAG_compile_unit
640 .long .Linfo_string0 # DW_AT_producer
641 .short 33 # DW_AT_language
642 .long .Linfo_string1 # DW_AT_name
643 .long .Lline_table_start0 # DW_AT_stmt_list
644 .long .Linfo_string2 # DW_AT_comp_dir
645 .quad .Lfunc_begin0 # DW_AT_low_pc
646 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
647 .byte 7 # Abbrev [7] 0x2a:0x52 DW_TAG_subprogram
648 .quad .Lfunc_begin0 # DW_AT_low_pc
649 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
650 .byte 1 # DW_AT_frame_base
651 .byte 86
652 .long .Linfo_string5 # DW_AT_name
653 .byte 1 # DW_AT_decl_file
654 .byte 10 # DW_AT_decl_line
655 .long 124 # DW_AT_type
656 # DW_AT_external
657 .byte 8 # Abbrev [8] 0x43:0xe DW_TAG_formal_parameter
658 .byte 2 # DW_AT_location
659 .byte 145
660 .byte 120
661 .long .Linfo_string11 # DW_AT_name
662 .byte 1 # DW_AT_decl_file
663 .byte 10 # DW_AT_decl_line
664 .long 124 # DW_AT_type
665 .byte 8 # Abbrev [8] 0x51:0xe DW_TAG_formal_parameter
666 .byte 2 # DW_AT_location
667 .byte 145
668 .byte 112
669 .long .Linfo_string12 # DW_AT_name
670 .byte 1 # DW_AT_decl_file
671 .byte 10 # DW_AT_decl_line
672 .long 131 # DW_AT_type
673 .byte 9 # Abbrev [9] 0x5f:0xe DW_TAG_variable
674 .byte 2 # DW_AT_location
675 .byte 145
676 .byte 88
677 .long .Linfo_string14 # DW_AT_name
678 .byte 1 # DW_AT_decl_file
679 .byte 11 # DW_AT_decl_line
680 .long 148 # DW_AT_type
681 .byte 12 # Abbrev [12] 0x6d:0xe DW_TAG_variable <-- Manually modified s/9/12
682 .byte 2 # DW_AT_location
683 .byte 145
684 .byte 72
685 .long .Linfo_string19 # DW_AT_name
686 .byte 1 # DW_AT_decl_file
687 .byte 15 # DW_AT_decl_line
688 .long .Lmanual_label # DW_AT_type <-- Manually modified
689 .byte 0 # End Of Children Mark
690 .byte 5 # Abbrev [5] 0x7c:0x7 DW_TAG_base_type
691 .long .Linfo_string6 # DW_AT_name
692 .byte 5 # DW_AT_encoding
693 .byte 4 # DW_AT_byte_size
694 .byte 4 # Abbrev [4] 0x83:0x5 DW_TAG_pointer_type
695 .long 136 # DW_AT_type
696 .byte 4 # Abbrev [4] 0x88:0x5 DW_TAG_pointer_type
697 .long 141 # DW_AT_type
698 .byte 5 # Abbrev [5] 0x8d:0x7 DW_TAG_base_type
699 .long .Linfo_string13 # DW_AT_name
700 .byte 6 # DW_AT_encoding
701 .byte 1 # DW_AT_byte_size
702 .Lmanual_label_forward:
703 .byte 10 # Abbrev [10] 0x94:0x9 DW_TAG_structure_type
704 # DW_AT_declaration
705 .quad 7448148824980338162 # DW_AT_signature
706 .byte 10 # Abbrev [10] 0x9d:0x9 DW_TAG_structure_type
707 # DW_AT_declaration
708 .quad 5322170643381124694 # DW_AT_signature
709 .byte 0 # End Of Children Mark
710 .Ldebug_info_end6:
711 .Lcu_begin1:
712 .long .Ldebug_info_end7-.Ldebug_info_start7 # Length of Unit
713 .Ldebug_info_start7:
714 .short 4 # DWARF version number
715 .long .debug_abbrev # Offset Into Abbrev. Section
716 .byte 8 # Address Size (in bytes)
717 .byte 6 # Abbrev [6] 0xb:0x73 DW_TAG_compile_unit
718 .long .Linfo_string0 # DW_AT_producer
719 .short 33 # DW_AT_language
720 .long .Linfo_string3 # DW_AT_name
721 .long .Lline_table_start0 # DW_AT_stmt_list
722 .long .Linfo_string2 # DW_AT_comp_dir
723 .quad .Lfunc_begin1 # DW_AT_low_pc
724 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc
725 .byte 11 # Abbrev [11] 0x2a:0x3a DW_TAG_subprogram
726 .quad .Lfunc_begin1 # DW_AT_low_pc
727 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc
728 .byte 1 # DW_AT_frame_base
729 .byte 86
730 .long .Linfo_string7 # DW_AT_linkage_name
731 .long .Linfo_string8 # DW_AT_name
732 .byte 2 # DW_AT_decl_file
733 .byte 11 # DW_AT_decl_line
734 .long 100 # DW_AT_type
735 # DW_AT_external
736 .byte 12 # Abbrev [12] 0x47:0xe DW_TAG_variable2 <-- Manually modified s/9/12
737 .byte 2 # DW_AT_location
738 .byte 145
739 .byte 104
740 .long .Linfo_string14 # DW_AT_name
741 .byte 2 # DW_AT_decl_file
742 .byte 12 # DW_AT_decl_line
743 .long .Lmanual_label_forward # DW_AT_type <-- Manually modified
744 .byte 12 # Abbrev [12] 0x55:0xe DW_TAG_variable <-- Manually modified s/9/12
745 .byte 2 # DW_AT_location
746 .byte 145
747 .byte 88
748 .long .Linfo_string19 # DW_AT_name
749 .byte 2 # DW_AT_decl_file
750 .byte 13 # DW_AT_decl_line
751 .long .Lmanual_label2 # DW_AT_type <-- Manually modified
752 .byte 0 # End Of Children Mark
753 .byte 5 # Abbrev [5] 0x64:0x7 DW_TAG_base_type
754 .long .Linfo_string6 # DW_AT_name
755 .byte 5 # DW_AT_encoding
756 .byte 4 # DW_AT_byte_size
757 .Lmanual_label:
758 .byte 10 # Abbrev [10] 0x6b:0x9 DW_TAG_structure_type
759 # DW_AT_declaration
760 .quad 1175092228111723119 # DW_AT_signature
761 .byte 10 # Abbrev [10] 0x74:0x9 DW_TAG_structure_type
762 # DW_AT_declaration
763 .quad -5451594423976726044 # DW_AT_signature
764 .byte 0 # End Of Children Mark
765 .Ldebug_info_end7:
766 .Lcu_begin2:
767 .long .Ldebug_info_end8-.Ldebug_info_start8 # Length of Unit
768 .Ldebug_info_start8:
769 .short 4 # DWARF version number
770 .long .debug_abbrev # Offset Into Abbrev. Section
771 .byte 8 # Address Size (in bytes)
772 .byte 6 # Abbrev [6] 0xb:0x73 DW_TAG_compile_unit
773 .long .Linfo_string0 # DW_AT_producer
774 .short 33 # DW_AT_language
775 .long .Linfo_string4 # DW_AT_name
776 .long .Lline_table_start0 # DW_AT_stmt_list
777 .long .Linfo_string2 # DW_AT_comp_dir
778 .quad .Lfunc_begin2 # DW_AT_low_pc
779 .long .Lfunc_end2-.Lfunc_begin2 # DW_AT_high_pc
780 .byte 11 # Abbrev [11] 0x2a:0x3a DW_TAG_subprogram
781 .quad .Lfunc_begin2 # DW_AT_low_pc
782 .long .Lfunc_end2-.Lfunc_begin2 # DW_AT_high_pc
783 .byte 1 # DW_AT_frame_base
784 .byte 86
785 .long .Linfo_string9 # DW_AT_linkage_name
786 .long .Linfo_string10 # DW_AT_name
787 .byte 3 # DW_AT_decl_file
788 .byte 11 # DW_AT_decl_line
789 .long 100 # DW_AT_type
790 # DW_AT_external
791 .byte 9 # Abbrev [9] 0x47:0xe DW_TAG_variable
792 .byte 2 # DW_AT_location
793 .byte 145
794 .byte 104
795 .long .Linfo_string14 # DW_AT_name
796 .byte 3 # DW_AT_decl_file
797 .byte 12 # DW_AT_decl_line
798 .long 107 # DW_AT_type
799 .byte 9 # Abbrev [9] 0x55:0xe DW_TAG_variable
800 .byte 2 # DW_AT_location
801 .byte 145
802 .byte 88
803 .long .Linfo_string19 # DW_AT_name
804 .byte 3 # DW_AT_decl_file
805 .byte 13 # DW_AT_decl_line
806 .long 116 # DW_AT_type
807 .byte 0 # End Of Children Mark
808 .byte 5 # Abbrev [5] 0x64:0x7 DW_TAG_base_type
809 .long .Linfo_string6 # DW_AT_name
810 .byte 5 # DW_AT_encoding
811 .byte 4 # DW_AT_byte_size
812 .Lmanual_label2:
813 .byte 10 # Abbrev [10] 0x6b:0x9 DW_TAG_structure_type
814 # DW_AT_declaration
815 .quad -7752883426627934331 # DW_AT_signature
816 .byte 10 # Abbrev [10] 0x74:0x9 DW_TAG_structure_type
817 # DW_AT_declaration
818 .quad -841988574351693219 # DW_AT_signature
819 .byte 0 # End Of Children Mark
820 .Ldebug_info_end8:
821 .section .debug_str,"MS",@progbits,1
822 .Linfo_string0:
823 .asciz "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)" # string offset=0
824 .Linfo_string1:
825 .asciz "main.cpp" # string offset=105
826 .Linfo_string2:
827 .asciz "/dwarf4-types-forward-cross-reference-test" # string offset=114
828 .Linfo_string3:
829 .asciz "helper.cpp" # string offset=194
830 .Linfo_string4:
831 .asciz "helper1.cpp" # string offset=205
832 .Linfo_string5:
833 .asciz "main" # string offset=217
834 .Linfo_string6:
835 .asciz "int" # string offset=222
836 .Linfo_string7:
837 .asciz "_Z3foov" # string offset=226
838 .Linfo_string8:
839 .asciz "foo" # string offset=234
840 .Linfo_string9:
841 .asciz "_Z4foo2v" # string offset=238
842 .Linfo_string10:
843 .asciz "foo2" # string offset=247
844 .Linfo_string11:
845 .asciz "argc" # string offset=252
846 .Linfo_string12:
847 .asciz "argv" # string offset=257
848 .Linfo_string13:
849 .asciz "char" # string offset=262
850 .Linfo_string14:
851 .asciz "f" # string offset=267
852 .Linfo_string15:
853 .asciz "c1" # string offset=269
854 .Linfo_string16:
855 .asciz "c2" # string offset=272
856 .Linfo_string17:
857 .asciz "c3" # string offset=275
858 .Linfo_string18:
859 .asciz "Foo" # string offset=278
860 .Linfo_string19:
861 .asciz "f2" # string offset=282
862 .Linfo_string20:
863 .asciz "Foo2" # string offset=285
864 .Linfo_string21:
865 .asciz "Foo2a" # string offset=290
866 .Linfo_string22:
867 .asciz "Foo3" # string offset=296
868 .Linfo_string23:
869 .asciz "Foo3a" # string offset=301
870 .Linfo_string24:
871 .asciz "Foo4" # string offset=307
872 .ident "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"
873 .ident "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"
874 .ident "clang version 17.0.0 (https://github.com/llvm/llvm-project.git 73027ae39b1492e5b6033358a13b86d7d1e781ae)"
875 .section ".note.GNU-stack","",@progbits
876 .addrsig
877 .section .debug_line,"",@progbits
878 .Lline_table_start0: