1 # clang++ main.cpp -g2 -gsplit-dwarf=split -gdwarf-4 -fdebug-types-section
13 # int main(int argc, char *argv[]) {
16 # f.c2 = argv[argc + 1];
17 # f.c3 = argv[argc + 2];
19 # f.c1 = argv[argc + 3];
20 # f.c2 = argv[argc + 4];
26 .globl main # -- Begin function main
31 .file 1 "." "main.cpp"
32 .loc 1 12 0 # main.cpp:12:0
36 .cfi_def_cfa_offset 16
39 .cfi_def_cfa_register %rbp
44 .loc 1 14 10 prologue_end # main.cpp:14:10
47 movq
(%rax
,%rcx
,8), %rax
48 .loc 1 14 8 is_stmt 0 # main.cpp:14:8
50 .loc 1 15 10 is_stmt 1 # main.cpp:15:10
52 .loc 1 15 15 is_stmt 0 # main.cpp:15:15
54 .loc 1 15 20 # main.cpp:15:20
56 .loc 1 15 10 # main.cpp:15:10
58 movq
(%rax
,%rcx
,8), %rax
59 .loc 1 15 8 # main.cpp:15:8
61 .loc 1 16 10 is_stmt 1 # main.cpp:16:10
63 .loc 1 16 15 is_stmt 0 # main.cpp:16:15
65 .loc 1 16 20 # main.cpp:16:20
67 .loc 1 16 10 # main.cpp:16:10
69 movq
(%rax
,%rcx
,8), %rax
70 .loc 1 16 8 # main.cpp:16:8
72 .loc 1 18 10 is_stmt 1 # main.cpp:18:10
74 .loc 1 18 15 is_stmt 0 # main.cpp:18:15
76 .loc 1 18 20 # main.cpp:18:20
78 .loc 1 18 10 # main.cpp:18:10
80 movq
(%rax
,%rcx
,8), %rax
81 .loc 1 18 8 # main.cpp:18:8
83 .loc 1 19 10 is_stmt 1 # main.cpp:19:10
85 .loc 1 19 15 is_stmt 0 # main.cpp:19:15
87 .loc 1 19 20 # main.cpp:19:20
89 .loc 1 19 10 # main.cpp:19:10
91 movq
(%rax
,%rcx
,8), %rax
92 .loc 1 19 8 # main.cpp:19:8
94 .loc 1 20 3 is_stmt 1 # main.cpp:20:3
101 .size main, .Lfunc_end0-main
104 .section .debug_types.dwo,"e",@progbits
105 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit
106 .Ldebug_info_dwo_start0:
107 .short 4 # DWARF version number
108 .long 0 # Offset Into Abbrev. Section
109 .byte 8 # Address Size (in bytes)
110 .quad 7448148824980338162 # Type Signature
111 .long 30 # Type DIE Offset
112 .byte 1 # Abbrev [1] 0x17:0x33 DW_TAG_type_unit
113 .short 33 # DW_AT_language
114 .long 0 # DW_AT_stmt_list
115 .byte 2 # Abbrev [2] 0x1e:0x22 DW_TAG_structure_type
116 .byte 5 # DW_AT_calling_convention
118 .byte 24 # DW_AT_byte_size
119 .byte 1 # DW_AT_decl_file
120 .byte 1 # DW_AT_decl_line
121 .byte 3 # Abbrev [3] 0x24:0x9 DW_TAG_member
123 .long 64 # DW_AT_type
124 .byte 1 # DW_AT_decl_file
125 .byte 2 # DW_AT_decl_line
126 .byte 0 # DW_AT_data_member_location
127 .byte 3 # Abbrev [3] 0x2d:0x9 DW_TAG_member
129 .long 64 # DW_AT_type
130 .byte 1 # DW_AT_decl_file
131 .byte 3 # DW_AT_decl_line
132 .byte 8 # DW_AT_data_member_location
133 .byte 3 # Abbrev [3] 0x36:0x9 DW_TAG_member
135 .long 64 # DW_AT_type
136 .byte 1 # DW_AT_decl_file
137 .byte 4 # DW_AT_decl_line
138 .byte 16 # DW_AT_data_member_location
139 .byte 0 # End Of Children Mark
140 .byte 4 # Abbrev [4] 0x40:0x5 DW_TAG_pointer_type
141 .long 69 # DW_AT_type
142 .byte 5 # Abbrev [5] 0x45:0x4 DW_TAG_base_type
144 .byte 6 # DW_AT_encoding
145 .byte 1 # DW_AT_byte_size
146 .byte 0 # End Of Children Mark
147 .Ldebug_info_dwo_end0:
148 .long .Ldebug_info_dwo_end1-.Ldebug_info_dwo_start1 # Length of Unit
149 .Ldebug_info_dwo_start1:
150 .short 4 # DWARF version number
151 .long 0 # Offset Into Abbrev. Section
152 .byte 8 # Address Size (in bytes)
153 .quad 5322170643381124694 # Type Signature
154 .long 30 # Type DIE Offset
155 .byte 1 # Abbrev [1] 0x17:0x2a DW_TAG_type_unit
156 .short 33 # DW_AT_language
157 .long 0 # DW_AT_stmt_list
158 .byte 2 # Abbrev [2] 0x1e:0x19 DW_TAG_structure_type
159 .byte 5 # DW_AT_calling_convention
160 .byte 11 # DW_AT_name
161 .byte 16 # DW_AT_byte_size
162 .byte 1 # DW_AT_decl_file
163 .byte 7 # DW_AT_decl_line
164 .byte 3 # Abbrev [3] 0x24:0x9 DW_TAG_member
166 .long 55 # DW_AT_type
167 .byte 1 # DW_AT_decl_file
168 .byte 8 # DW_AT_decl_line
169 .byte 0 # DW_AT_data_member_location
170 .byte 3 # Abbrev [3] 0x2d:0x9 DW_TAG_member
172 .long 55 # DW_AT_type
173 .byte 1 # DW_AT_decl_file
174 .byte 9 # DW_AT_decl_line
175 .byte 8 # DW_AT_data_member_location
176 .byte 0 # End Of Children Mark
177 .byte 4 # Abbrev [4] 0x37:0x5 DW_TAG_pointer_type
178 .long 60 # DW_AT_type
179 .byte 5 # Abbrev [5] 0x3c:0x4 DW_TAG_base_type
181 .byte 6 # DW_AT_encoding
182 .byte 1 # DW_AT_byte_size
183 .byte 0 # End Of Children Mark
184 .Ldebug_info_dwo_end1:
185 .section .debug_abbrev,"",@progbits
186 .byte 1 # Abbreviation Code
187 .byte 17 # DW_TAG_compile_unit
188 .byte 0 # DW_CHILDREN_no
189 .byte 16 # DW_AT_stmt_list
190 .byte 23 # DW_FORM_sec_offset
191 .byte 27 # DW_AT_comp_dir
192 .byte 14 # DW_FORM_strp
193 .ascii "\264B" # DW_AT_GNU_pubnames
194 .byte 25 # DW_FORM_flag_present
195 .ascii "\260B" # DW_AT_GNU_dwo_name
196 .byte 14 # DW_FORM_strp
197 .ascii "\261B" # DW_AT_GNU_dwo_id
198 .byte 7 # DW_FORM_data8
199 .byte 17 # DW_AT_low_pc
200 .byte 1 # DW_FORM_addr
201 .byte 18 # DW_AT_high_pc
202 .byte 6 # DW_FORM_data4
203 .ascii "\263B" # DW_AT_GNU_addr_base
204 .byte 23 # DW_FORM_sec_offset
208 .section .debug_info,"",@progbits
210 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit
212 .short 4 # DWARF version number
213 .long .debug_abbrev # Offset Into Abbrev. Section
214 .byte 8 # Address Size (in bytes)
215 .byte 1 # Abbrev [1] 0xb:0x25 DW_TAG_compile_unit
216 .long .Lline_table_start0 # DW_AT_stmt_list
217 .long .Lskel_string0 # DW_AT_comp_dir
219 .long .Lskel_string1 # DW_AT_GNU_dwo_name
220 .quad 4780348136649610820 # DW_AT_GNU_dwo_id
221 .quad .Lfunc_begin0 # DW_AT_low_pc
222 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
223 .long .Laddr_table_base0 # DW_AT_GNU_addr_base
225 .section .debug_str,"MS",@progbits,1
227 .asciz "." # string offset=0
229 .asciz "main.dwo" # string offset=38
230 .section .debug_str.dwo,"eMS",@progbits,1
232 .asciz "main" # string offset=0
234 .asciz "int" # string offset=5
236 .asciz "argc" # string offset=9
238 .asciz "argv" # string offset=14
240 .asciz "char" # string offset=19
242 .asciz "f" # string offset=24
244 .asciz "c1" # string offset=26
246 .asciz "c2" # string offset=29
248 .asciz "c3" # string offset=32
250 .asciz "Foo" # string offset=35
252 .asciz "f2" # string offset=39
254 .asciz "Foo2" # string offset=42
256 .asciz "clang version 15.0.0" # string offset=47
258 .asciz "main.cpp" # string offset=68
260 .asciz "main.dwo" # string offset=77
261 .section .debug_str_offsets.dwo,"e",@progbits
277 .section .debug_info.dwo,"e",@progbits
278 .long .Ldebug_info_dwo_end2-.Ldebug_info_dwo_start2 # Length of Unit
279 .Ldebug_info_dwo_start2:
280 .short 4 # DWARF version number
281 .long 0 # Offset Into Abbrev. Section
282 .byte 8 # Address Size (in bytes)
283 .byte 6 # Abbrev [6] 0xb:0x6f DW_TAG_compile_unit
284 .byte 12 # DW_AT_producer
285 .short 33 # DW_AT_language
286 .byte 13 # DW_AT_name
287 .byte 14 # DW_AT_GNU_dwo_name
288 .quad 4780348136649610820 # DW_AT_GNU_dwo_id
289 .byte 7 # Abbrev [7] 0x19:0x3c DW_TAG_subprogram
290 .byte 0 # DW_AT_low_pc
291 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc
292 .byte 1 # DW_AT_frame_base
295 .byte 1 # DW_AT_decl_file
296 .byte 12 # DW_AT_decl_line
297 .long 85 # DW_AT_type
299 .byte 8 # Abbrev [8] 0x28:0xb DW_TAG_formal_parameter
300 .byte 2 # DW_AT_location
304 .byte 1 # DW_AT_decl_file
305 .byte 12 # DW_AT_decl_line
306 .long 85 # DW_AT_type
307 .byte 8 # Abbrev [8] 0x33:0xb DW_TAG_formal_parameter
308 .byte 2 # DW_AT_location
312 .byte 1 # DW_AT_decl_file
313 .byte 12 # DW_AT_decl_line
314 .long 89 # DW_AT_type
315 .byte 9 # Abbrev [9] 0x3e:0xb DW_TAG_variable
316 .byte 2 # DW_AT_location
320 .byte 1 # DW_AT_decl_file
321 .byte 13 # DW_AT_decl_line
322 .long 103 # DW_AT_type
323 .byte 9 # Abbrev [9] 0x49:0xb DW_TAG_variable
324 .byte 2 # DW_AT_location
327 .byte 10 # DW_AT_name
328 .byte 1 # DW_AT_decl_file
329 .byte 17 # DW_AT_decl_line
330 .long 112 # DW_AT_type
331 .byte 0 # End Of Children Mark
332 .byte 5 # Abbrev [5] 0x55:0x4 DW_TAG_base_type
334 .byte 5 # DW_AT_encoding
335 .byte 4 # DW_AT_byte_size
336 .byte 4 # Abbrev [4] 0x59:0x5 DW_TAG_pointer_type
337 .long 94 # DW_AT_type
338 .byte 4 # Abbrev [4] 0x5e:0x5 DW_TAG_pointer_type
339 .long 99 # DW_AT_type
340 .byte 5 # Abbrev [5] 0x63:0x4 DW_TAG_base_type
342 .byte 6 # DW_AT_encoding
343 .byte 1 # DW_AT_byte_size
344 .byte 10 # Abbrev [10] 0x67:0x9 DW_TAG_structure_type
346 .quad 7448148824980338162 # DW_AT_signature
347 .byte 10 # Abbrev [10] 0x70:0x9 DW_TAG_structure_type
349 .quad 5322170643381124694 # DW_AT_signature
350 .byte 0 # End Of Children Mark
351 .Ldebug_info_dwo_end2:
352 .section .debug_abbrev.dwo,"e",@progbits
353 .byte 1 # Abbreviation Code
354 .byte 65 # DW_TAG_type_unit
355 .byte 1 # DW_CHILDREN_yes
356 .byte 19 # DW_AT_language
357 .byte 5 # DW_FORM_data2
358 .byte 16 # DW_AT_stmt_list
359 .byte 23 # DW_FORM_sec_offset
362 .byte 2 # Abbreviation Code
363 .byte 19 # DW_TAG_structure_type
364 .byte 1 # DW_CHILDREN_yes
365 .byte 54 # DW_AT_calling_convention
366 .byte 11 # DW_FORM_data1
368 .ascii "\202>" # DW_FORM_GNU_str_index
369 .byte 11 # DW_AT_byte_size
370 .byte 11 # DW_FORM_data1
371 .byte 58 # DW_AT_decl_file
372 .byte 11 # DW_FORM_data1
373 .byte 59 # DW_AT_decl_line
374 .byte 11 # DW_FORM_data1
377 .byte 3 # Abbreviation Code
378 .byte 13 # DW_TAG_member
379 .byte 0 # DW_CHILDREN_no
381 .ascii "\202>" # DW_FORM_GNU_str_index
382 .byte 73 # DW_AT_type
383 .byte 19 # DW_FORM_ref4
384 .byte 58 # DW_AT_decl_file
385 .byte 11 # DW_FORM_data1
386 .byte 59 # DW_AT_decl_line
387 .byte 11 # DW_FORM_data1
388 .byte 56 # DW_AT_data_member_location
389 .byte 11 # DW_FORM_data1
392 .byte 4 # Abbreviation Code
393 .byte 15 # DW_TAG_pointer_type
394 .byte 0 # DW_CHILDREN_no
395 .byte 73 # DW_AT_type
396 .byte 19 # DW_FORM_ref4
399 .byte 5 # Abbreviation Code
400 .byte 36 # DW_TAG_base_type
401 .byte 0 # DW_CHILDREN_no
403 .ascii "\202>" # DW_FORM_GNU_str_index
404 .byte 62 # DW_AT_encoding
405 .byte 11 # DW_FORM_data1
406 .byte 11 # DW_AT_byte_size
407 .byte 11 # DW_FORM_data1
410 .byte 6 # Abbreviation Code
411 .byte 17 # DW_TAG_compile_unit
412 .byte 1 # DW_CHILDREN_yes
413 .byte 37 # DW_AT_producer
414 .ascii "\202>" # DW_FORM_GNU_str_index
415 .byte 19 # DW_AT_language
416 .byte 5 # DW_FORM_data2
418 .ascii "\202>" # DW_FORM_GNU_str_index
419 .ascii "\260B" # DW_AT_GNU_dwo_name
420 .ascii "\202>" # DW_FORM_GNU_str_index
421 .ascii "\261B" # DW_AT_GNU_dwo_id
422 .byte 7 # DW_FORM_data8
425 .byte 7 # Abbreviation Code
426 .byte 46 # DW_TAG_subprogram
427 .byte 1 # DW_CHILDREN_yes
428 .byte 17 # DW_AT_low_pc
429 .ascii "\201>" # DW_FORM_GNU_addr_index
430 .byte 18 # DW_AT_high_pc
431 .byte 6 # DW_FORM_data4
432 .byte 64 # DW_AT_frame_base
433 .byte 24 # DW_FORM_exprloc
435 .ascii "\202>" # DW_FORM_GNU_str_index
436 .byte 58 # DW_AT_decl_file
437 .byte 11 # DW_FORM_data1
438 .byte 59 # DW_AT_decl_line
439 .byte 11 # DW_FORM_data1
440 .byte 73 # DW_AT_type
441 .byte 19 # DW_FORM_ref4
442 .byte 63 # DW_AT_external
443 .byte 25 # DW_FORM_flag_present
446 .byte 8 # Abbreviation Code
447 .byte 5 # DW_TAG_formal_parameter
448 .byte 0 # DW_CHILDREN_no
449 .byte 2 # DW_AT_location
450 .byte 24 # DW_FORM_exprloc
452 .ascii "\202>" # DW_FORM_GNU_str_index
453 .byte 58 # DW_AT_decl_file
454 .byte 11 # DW_FORM_data1
455 .byte 59 # DW_AT_decl_line
456 .byte 11 # DW_FORM_data1
457 .byte 73 # DW_AT_type
458 .byte 19 # DW_FORM_ref4
461 .byte 9 # Abbreviation Code
462 .byte 52 # DW_TAG_variable
463 .byte 0 # DW_CHILDREN_no
464 .byte 2 # DW_AT_location
465 .byte 24 # DW_FORM_exprloc
467 .ascii "\202>" # DW_FORM_GNU_str_index
468 .byte 58 # DW_AT_decl_file
469 .byte 11 # DW_FORM_data1
470 .byte 59 # DW_AT_decl_line
471 .byte 11 # DW_FORM_data1
472 .byte 73 # DW_AT_type
473 .byte 19 # DW_FORM_ref4
476 .byte 10 # Abbreviation Code
477 .byte 19 # DW_TAG_structure_type
478 .byte 0 # DW_CHILDREN_no
479 .byte 60 # DW_AT_declaration
480 .byte 25 # DW_FORM_flag_present
481 .byte 105 # DW_AT_signature
482 .byte 32 # DW_FORM_ref_sig8
486 .section .debug_line.dwo,"e",@progbits
488 .long .Ldebug_line_end0-.Ldebug_line_start0 # unit length
491 .long .Lprologue_end0-.Lprologue_start0
508 .section .debug_addr,"",@progbits
511 .section .debug_gnu_pubnames,"",@progbits
512 .long .LpubNames_end0-.LpubNames_start0 # Length of Public Names Info
514 .short 2 # DWARF Version
515 .long .Lcu_begin0 # Offset of Compilation Unit Info
516 .long 48 # Compilation Unit Length
517 .long 25 # DIE offset
518 .byte 48 # Attributes: FUNCTION, EXTERNAL
519 .asciz "main" # External Name
522 .section .debug_gnu_pubtypes,"",@progbits
523 .long .LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info
525 .short 2 # DWARF Version
526 .long .Lcu_begin0 # Offset of Compilation Unit Info
527 .long 48 # Compilation Unit Length
528 .long 103 # DIE offset
529 .byte 16 # Attributes: TYPE, EXTERNAL
530 .asciz "Foo" # External Name
531 .long 112 # DIE offset
532 .byte 16 # Attributes: TYPE, EXTERNAL
533 .asciz "Foo2" # External Name
534 .long 85 # DIE offset
535 .byte 144 # Attributes: TYPE, STATIC
536 .asciz "int" # External Name
537 .long 99 # DIE offset
538 .byte 144 # Attributes: TYPE, STATIC
539 .asciz "char" # External Name
542 .ident "clang version 15.0.0"
543 .section ".note.GNU-stack","",@progbits
545 .section .debug_line,"",@progbits