1# struct Foo2a { 2# char *c1; 3# char *c2; 4# char *c3; 5# }; 6# struct Foo3 { 7# char *c1; 8# char *c2; 9# }; 10# 11# int foo() { 12# Foo2a f; 13# Foo3 f2; 14# } 15 .text 16 .file "main.cpp" 17 .globl main # -- Begin function main 18 .p2align 4, 0x90 19 .type main,@function 20main: # @main 21.Lfunc_begin0: 22 .file 1 "." "main.cpp" 23 .loc 1 10 0 # main.cpp:10:0 24 .cfi_startproc 25# %bb.0: 26 pushq %rbp 27 .cfi_def_cfa_offset 16 28 .cfi_offset %rbp, -16 29 movq %rsp, %rbp 30 .cfi_def_cfa_register %rbp 31 movl $0, -4(%rbp) 32 movl %edi, -8(%rbp) 33 movq %rsi, -16(%rbp) 34.Ltmp0: 35 .loc 1 12 9 prologue_end # main.cpp:12:9 36 movq -16(%rbp), %rax 37 movslq -8(%rbp), %rcx 38 movq (%rax,%rcx,8), %rax 39 .loc 1 12 7 is_stmt 0 # main.cpp:12:7 40 movq %rax, -40(%rbp) 41 .loc 1 13 9 is_stmt 1 # main.cpp:13:9 42 movq -16(%rbp), %rax 43 .loc 1 13 14 is_stmt 0 # main.cpp:13:14 44 movl -8(%rbp), %ecx 45 .loc 1 13 19 # main.cpp:13:19 46 addl $1, %ecx 47 .loc 1 13 9 # main.cpp:13:9 48 movslq %ecx, %rcx 49 movq (%rax,%rcx,8), %rax 50 .loc 1 13 7 # main.cpp:13:7 51 movq %rax, -32(%rbp) 52 .loc 1 14 9 is_stmt 1 # main.cpp:14:9 53 movq -16(%rbp), %rax 54 .loc 1 14 14 is_stmt 0 # main.cpp:14:14 55 movl -8(%rbp), %ecx 56 .loc 1 14 19 # main.cpp:14:19 57 addl $2, %ecx 58 .loc 1 14 9 # main.cpp:14:9 59 movslq %ecx, %rcx 60 movq (%rax,%rcx,8), %rax 61 .loc 1 14 7 # main.cpp:14:7 62 movq %rax, -24(%rbp) 63 .loc 1 16 9 is_stmt 1 # main.cpp:16:9 64 movq -16(%rbp), %rax 65 .loc 1 16 14 is_stmt 0 # main.cpp:16:14 66 movl -8(%rbp), %ecx 67 .loc 1 16 19 # main.cpp:16:19 68 addl $3, %ecx 69 .loc 1 16 9 # main.cpp:16:9 70 movslq %ecx, %rcx 71 movq (%rax,%rcx,8), %rax 72 .loc 1 16 7 # main.cpp:16:7 73 movq %rax, -40(%rbp) 74 .loc 1 17 9 is_stmt 1 # main.cpp:17:9 75 movq -16(%rbp), %rax 76 .loc 1 17 14 is_stmt 0 # main.cpp:17:14 77 movl -8(%rbp), %ecx 78 .loc 1 17 19 # main.cpp:17:19 79 addl $4, %ecx 80 .loc 1 17 9 # main.cpp:17:9 81 movslq %ecx, %rcx 82 movq (%rax,%rcx,8), %rax 83 .loc 1 17 7 # main.cpp:17:7 84 movq %rax, -32(%rbp) 85 .loc 1 18 2 is_stmt 1 # main.cpp:18:2 86 xorl %eax, %eax 87 .loc 1 18 2 epilogue_begin is_stmt 0 # main.cpp:18:2 88 popq %rbp 89 .cfi_def_cfa %rsp, 8 90 retq 91.Ltmp1: 92.Lfunc_end0: 93 .size main, .Lfunc_end0-main 94 .cfi_endproc 95 # -- End function 96 .section .debug_types.dwo,"e",@progbits 97 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit 98.Ldebug_info_dwo_start0: 99 .short 4 # DWARF version number 100 .long 0 # Offset Into Abbrev. Section 101 .byte 8 # Address Size (in bytes) 102 .quad 7448148824980338162 # Type Signature 103 .long 30 # Type DIE Offset 104 .byte 1 # Abbrev [1] 0x17:0x33 DW_TAG_type_unit 105 .short 33 # DW_AT_language 106 .long 0 # DW_AT_stmt_list 107 .byte 2 # Abbrev [2] 0x1e:0x22 DW_TAG_structure_type 108 .byte 5 # DW_AT_calling_convention 109 .byte 9 # DW_AT_name 110 .byte 24 # DW_AT_byte_size 111 .byte 1 # DW_AT_decl_file 112 .byte 1 # DW_AT_decl_line 113 .byte 3 # Abbrev [3] 0x24:0x9 DW_TAG_member 114 .byte 6 # DW_AT_name 115 .long 64 # DW_AT_type 116 .byte 1 # DW_AT_decl_file 117 .byte 2 # DW_AT_decl_line 118 .byte 0 # DW_AT_data_member_location 119 .byte 3 # Abbrev [3] 0x2d:0x9 DW_TAG_member 120 .byte 7 # DW_AT_name 121 .long 64 # DW_AT_type 122 .byte 1 # DW_AT_decl_file 123 .byte 3 # DW_AT_decl_line 124 .byte 8 # DW_AT_data_member_location 125 .byte 3 # Abbrev [3] 0x36:0x9 DW_TAG_member 126 .byte 8 # DW_AT_name 127 .long 64 # DW_AT_type 128 .byte 1 # DW_AT_decl_file 129 .byte 4 # DW_AT_decl_line 130 .byte 16 # DW_AT_data_member_location 131 .byte 0 # End Of Children Mark 132 .byte 4 # Abbrev [4] 0x40:0x5 DW_TAG_pointer_type 133 .long 69 # DW_AT_type 134 .byte 5 # Abbrev [5] 0x45:0x4 DW_TAG_base_type 135 .byte 4 # DW_AT_name 136 .byte 6 # DW_AT_encoding 137 .byte 1 # DW_AT_byte_size 138 .byte 0 # End Of Children Mark 139.Ldebug_info_dwo_end0: 140 .long .Ldebug_info_dwo_end1-.Ldebug_info_dwo_start1 # Length of Unit 141.Ldebug_info_dwo_start1: 142 .short 4 # DWARF version number 143 .long 0 # Offset Into Abbrev. Section 144 .byte 8 # Address Size (in bytes) 145 .quad 5322170643381124694 # Type Signature 146 .long 30 # Type DIE Offset 147 .byte 1 # Abbrev [1] 0x17:0x2a DW_TAG_type_unit 148 .short 33 # DW_AT_language 149 .long 0 # DW_AT_stmt_list 150 .byte 2 # Abbrev [2] 0x1e:0x19 DW_TAG_structure_type 151 .byte 5 # DW_AT_calling_convention 152 .byte 11 # DW_AT_name 153 .byte 16 # DW_AT_byte_size 154 .byte 1 # DW_AT_decl_file 155 .byte 6 # DW_AT_decl_line 156 .byte 3 # Abbrev [3] 0x24:0x9 DW_TAG_member 157 .byte 6 # DW_AT_name 158 .long 55 # DW_AT_type 159 .byte 1 # DW_AT_decl_file 160 .byte 7 # DW_AT_decl_line 161 .byte 0 # DW_AT_data_member_location 162 .byte 3 # Abbrev [3] 0x2d:0x9 DW_TAG_member 163 .byte 7 # DW_AT_name 164 .long 55 # DW_AT_type 165 .byte 1 # DW_AT_decl_file 166 .byte 8 # DW_AT_decl_line 167 .byte 8 # DW_AT_data_member_location 168 .byte 0 # End Of Children Mark 169 .byte 4 # Abbrev [4] 0x37:0x5 DW_TAG_pointer_type 170 .long 60 # DW_AT_type 171 .byte 5 # Abbrev [5] 0x3c:0x4 DW_TAG_base_type 172 .byte 4 # DW_AT_name 173 .byte 6 # DW_AT_encoding 174 .byte 1 # DW_AT_byte_size 175 .byte 0 # End Of Children Mark 176.Ldebug_info_dwo_end1: 177 .section .debug_abbrev,"",@progbits 178 .byte 1 # Abbreviation Code 179 .byte 17 # DW_TAG_compile_unit 180 .byte 0 # DW_CHILDREN_no 181 .byte 16 # DW_AT_stmt_list 182 .byte 23 # DW_FORM_sec_offset 183 .byte 27 # DW_AT_comp_dir 184 .byte 14 # DW_FORM_strp 185 .ascii "\264B" # DW_AT_GNU_pubnames 186 .byte 25 # DW_FORM_flag_present 187 .ascii "\260B" # DW_AT_GNU_dwo_name 188 .byte 14 # DW_FORM_strp 189 .ascii "\261B" # DW_AT_GNU_dwo_id 190 .byte 7 # DW_FORM_data8 191 .byte 17 # DW_AT_low_pc 192 .byte 1 # DW_FORM_addr 193 .byte 18 # DW_AT_high_pc 194 .byte 6 # DW_FORM_data4 195 .ascii "\263B" # DW_AT_GNU_addr_base 196 .byte 23 # DW_FORM_sec_offset 197 .byte 0 # EOM(1) 198 .byte 0 # EOM(2) 199 .byte 0 # EOM(3) 200 .section .debug_info,"",@progbits 201.Lcu_begin0: 202 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 203.Ldebug_info_start0: 204 .short 4 # DWARF version number 205 .long .debug_abbrev # Offset Into Abbrev. Section 206 .byte 8 # Address Size (in bytes) 207 .byte 1 # Abbrev [1] 0xb:0x25 DW_TAG_compile_unit 208 .long .Lline_table_start0 # DW_AT_stmt_list 209 .long .Lskel_string0 # DW_AT_comp_dir 210 # DW_AT_GNU_pubnames 211 .long .Lskel_string1 # DW_AT_GNU_dwo_name 212 .quad 4780348136649610820 # DW_AT_GNU_dwo_id 213 .quad .Lfunc_begin0 # DW_AT_low_pc 214 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 215 .long .Laddr_table_base0 # DW_AT_GNU_addr_base 216.Ldebug_info_end0: 217 .section .debug_str,"MS",@progbits,1 218.Lskel_string0: 219 .asciz "." # string offset=0 220.Lskel_string1: 221 .asciz "main.dwo" # string offset=68 222 .section .debug_str.dwo,"eMS",@progbits,1 223.Linfo_string0: 224 .asciz "main" # string offset=0 225.Linfo_string1: 226 .asciz "int" # string offset=5 227.Linfo_string2: 228 .asciz "argc" # string offset=9 229.Linfo_string3: 230 .asciz "argv" # string offset=14 231.Linfo_string4: 232 .asciz "char" # string offset=19 233.Linfo_string5: 234 .asciz "f" # string offset=24 235.Linfo_string6: 236 .asciz "c1" # string offset=26 237.Linfo_string7: 238 .asciz "c2" # string offset=29 239.Linfo_string8: 240 .asciz "c3" # string offset=32 241.Linfo_string9: 242 .asciz "Foo" # string offset=35 243.Linfo_string10: 244 .asciz "f2" # string offset=39 245.Linfo_string11: 246 .asciz "Foo2" # string offset=42 247.Linfo_string12: 248 .asciz "clang version 15.0.0" # string offset=47 249.Linfo_string13: 250 .asciz "main.cpp" # string offset=193 251.Linfo_string14: 252 .asciz "main.dwo" # string offset=202 253 .section .debug_str_offsets.dwo,"e",@progbits 254 .long 0 255 .long 5 256 .long 9 257 .long 14 258 .long 19 259 .long 24 260 .long 26 261 .long 29 262 .long 32 263 .long 35 264 .long 39 265 .long 42 266 .long 47 267 .long 193 268 .long 202 269 .section .debug_info.dwo,"e",@progbits 270 .long .Ldebug_info_dwo_end2-.Ldebug_info_dwo_start2 # Length of Unit 271.Ldebug_info_dwo_start2: 272 .short 4 # DWARF version number 273 .long 0 # Offset Into Abbrev. Section 274 .byte 8 # Address Size (in bytes) 275 .byte 6 # Abbrev [6] 0xb:0x6f DW_TAG_compile_unit 276 .byte 12 # DW_AT_producer 277 .short 33 # DW_AT_language 278 .byte 13 # DW_AT_name 279 .byte 14 # DW_AT_GNU_dwo_name 280 .quad 4780348136649610820 # DW_AT_GNU_dwo_id 281 .byte 7 # Abbrev [7] 0x19:0x3c DW_TAG_subprogram 282 .byte 0 # DW_AT_low_pc 283 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 284 .byte 1 # DW_AT_frame_base 285 .byte 86 286 .byte 0 # DW_AT_name 287 .byte 1 # DW_AT_decl_file 288 .byte 10 # DW_AT_decl_line 289 .long 85 # DW_AT_type 290 # DW_AT_external 291 .byte 8 # Abbrev [8] 0x28:0xb DW_TAG_formal_parameter 292 .byte 2 # DW_AT_location 293 .byte 145 294 .byte 120 295 .byte 2 # DW_AT_name 296 .byte 1 # DW_AT_decl_file 297 .byte 10 # DW_AT_decl_line 298 .long 85 # DW_AT_type 299 .byte 8 # Abbrev [8] 0x33:0xb DW_TAG_formal_parameter 300 .byte 2 # DW_AT_location 301 .byte 145 302 .byte 112 303 .byte 3 # DW_AT_name 304 .byte 1 # DW_AT_decl_file 305 .byte 10 # DW_AT_decl_line 306 .long 89 # DW_AT_type 307 .byte 9 # Abbrev [9] 0x3e:0xb DW_TAG_variable 308 .byte 2 # DW_AT_location 309 .byte 145 310 .byte 88 311 .byte 5 # DW_AT_name 312 .byte 1 # DW_AT_decl_file 313 .byte 11 # DW_AT_decl_line 314 .long 103 # DW_AT_type 315 .byte 9 # Abbrev [9] 0x49:0xb DW_TAG_variable 316 .byte 2 # DW_AT_location 317 .byte 145 318 .byte 72 319 .byte 10 # DW_AT_name 320 .byte 1 # DW_AT_decl_file 321 .byte 15 # DW_AT_decl_line 322 .long 112 # DW_AT_type 323 .byte 0 # End Of Children Mark 324 .byte 5 # Abbrev [5] 0x55:0x4 DW_TAG_base_type 325 .byte 1 # DW_AT_name 326 .byte 5 # DW_AT_encoding 327 .byte 4 # DW_AT_byte_size 328 .byte 4 # Abbrev [4] 0x59:0x5 DW_TAG_pointer_type 329 .long 94 # DW_AT_type 330 .byte 4 # Abbrev [4] 0x5e:0x5 DW_TAG_pointer_type 331 .long 99 # DW_AT_type 332 .byte 5 # Abbrev [5] 0x63:0x4 DW_TAG_base_type 333 .byte 4 # DW_AT_name 334 .byte 6 # DW_AT_encoding 335 .byte 1 # DW_AT_byte_size 336 .byte 10 # Abbrev [10] 0x67:0x9 DW_TAG_structure_type 337 # DW_AT_declaration 338 .quad 7448148824980338162 # DW_AT_signature 339 .byte 10 # Abbrev [10] 0x70:0x9 DW_TAG_structure_type 340 # DW_AT_declaration 341 .quad 5322170643381124694 # DW_AT_signature 342 .byte 0 # End Of Children Mark 343.Ldebug_info_dwo_end2: 344 .section .debug_abbrev.dwo,"e",@progbits 345 .byte 1 # Abbreviation Code 346 .byte 65 # DW_TAG_type_unit 347 .byte 1 # DW_CHILDREN_yes 348 .byte 19 # DW_AT_language 349 .byte 5 # DW_FORM_data2 350 .byte 16 # DW_AT_stmt_list 351 .byte 23 # DW_FORM_sec_offset 352 .byte 0 # EOM(1) 353 .byte 0 # EOM(2) 354 .byte 2 # Abbreviation Code 355 .byte 19 # DW_TAG_structure_type 356 .byte 1 # DW_CHILDREN_yes 357 .byte 54 # DW_AT_calling_convention 358 .byte 11 # DW_FORM_data1 359 .byte 3 # DW_AT_name 360 .ascii "\202>" # DW_FORM_GNU_str_index 361 .byte 11 # DW_AT_byte_size 362 .byte 11 # DW_FORM_data1 363 .byte 58 # DW_AT_decl_file 364 .byte 11 # DW_FORM_data1 365 .byte 59 # DW_AT_decl_line 366 .byte 11 # DW_FORM_data1 367 .byte 0 # EOM(1) 368 .byte 0 # EOM(2) 369 .byte 3 # Abbreviation Code 370 .byte 13 # DW_TAG_member 371 .byte 0 # DW_CHILDREN_no 372 .byte 3 # DW_AT_name 373 .ascii "\202>" # DW_FORM_GNU_str_index 374 .byte 73 # DW_AT_type 375 .byte 19 # DW_FORM_ref4 376 .byte 58 # DW_AT_decl_file 377 .byte 11 # DW_FORM_data1 378 .byte 59 # DW_AT_decl_line 379 .byte 11 # DW_FORM_data1 380 .byte 56 # DW_AT_data_member_location 381 .byte 11 # DW_FORM_data1 382 .byte 0 # EOM(1) 383 .byte 0 # EOM(2) 384 .byte 4 # Abbreviation Code 385 .byte 15 # DW_TAG_pointer_type 386 .byte 0 # DW_CHILDREN_no 387 .byte 73 # DW_AT_type 388 .byte 19 # DW_FORM_ref4 389 .byte 0 # EOM(1) 390 .byte 0 # EOM(2) 391 .byte 5 # Abbreviation Code 392 .byte 36 # DW_TAG_base_type 393 .byte 0 # DW_CHILDREN_no 394 .byte 3 # DW_AT_name 395 .ascii "\202>" # DW_FORM_GNU_str_index 396 .byte 62 # DW_AT_encoding 397 .byte 11 # DW_FORM_data1 398 .byte 11 # DW_AT_byte_size 399 .byte 11 # DW_FORM_data1 400 .byte 0 # EOM(1) 401 .byte 0 # EOM(2) 402 .byte 6 # Abbreviation Code 403 .byte 17 # DW_TAG_compile_unit 404 .byte 1 # DW_CHILDREN_yes 405 .byte 37 # DW_AT_producer 406 .ascii "\202>" # DW_FORM_GNU_str_index 407 .byte 19 # DW_AT_language 408 .byte 5 # DW_FORM_data2 409 .byte 3 # DW_AT_name 410 .ascii "\202>" # DW_FORM_GNU_str_index 411 .ascii "\260B" # DW_AT_GNU_dwo_name 412 .ascii "\202>" # DW_FORM_GNU_str_index 413 .ascii "\261B" # DW_AT_GNU_dwo_id 414 .byte 7 # DW_FORM_data8 415 .byte 0 # EOM(1) 416 .byte 0 # EOM(2) 417 .byte 7 # Abbreviation Code 418 .byte 46 # DW_TAG_subprogram 419 .byte 1 # DW_CHILDREN_yes 420 .byte 17 # DW_AT_low_pc 421 .ascii "\201>" # DW_FORM_GNU_addr_index 422 .byte 18 # DW_AT_high_pc 423 .byte 6 # DW_FORM_data4 424 .byte 64 # DW_AT_frame_base 425 .byte 24 # DW_FORM_exprloc 426 .byte 3 # DW_AT_name 427 .ascii "\202>" # DW_FORM_GNU_str_index 428 .byte 58 # DW_AT_decl_file 429 .byte 11 # DW_FORM_data1 430 .byte 59 # DW_AT_decl_line 431 .byte 11 # DW_FORM_data1 432 .byte 73 # DW_AT_type 433 .byte 19 # DW_FORM_ref4 434 .byte 63 # DW_AT_external 435 .byte 25 # DW_FORM_flag_present 436 .byte 0 # EOM(1) 437 .byte 0 # EOM(2) 438 .byte 8 # Abbreviation Code 439 .byte 5 # DW_TAG_formal_parameter 440 .byte 0 # DW_CHILDREN_no 441 .byte 2 # DW_AT_location 442 .byte 24 # DW_FORM_exprloc 443 .byte 3 # DW_AT_name 444 .ascii "\202>" # DW_FORM_GNU_str_index 445 .byte 58 # DW_AT_decl_file 446 .byte 11 # DW_FORM_data1 447 .byte 59 # DW_AT_decl_line 448 .byte 11 # DW_FORM_data1 449 .byte 73 # DW_AT_type 450 .byte 19 # DW_FORM_ref4 451 .byte 0 # EOM(1) 452 .byte 0 # EOM(2) 453 .byte 9 # Abbreviation Code 454 .byte 52 # DW_TAG_variable 455 .byte 0 # DW_CHILDREN_no 456 .byte 2 # DW_AT_location 457 .byte 24 # DW_FORM_exprloc 458 .byte 3 # DW_AT_name 459 .ascii "\202>" # DW_FORM_GNU_str_index 460 .byte 58 # DW_AT_decl_file 461 .byte 11 # DW_FORM_data1 462 .byte 59 # DW_AT_decl_line 463 .byte 11 # DW_FORM_data1 464 .byte 73 # DW_AT_type 465 .byte 19 # DW_FORM_ref4 466 .byte 0 # EOM(1) 467 .byte 0 # EOM(2) 468 .byte 10 # Abbreviation Code 469 .byte 19 # DW_TAG_structure_type 470 .byte 0 # DW_CHILDREN_no 471 .byte 60 # DW_AT_declaration 472 .byte 25 # DW_FORM_flag_present 473 .byte 105 # DW_AT_signature 474 .byte 32 # DW_FORM_ref_sig8 475 .byte 0 # EOM(1) 476 .byte 0 # EOM(2) 477 .byte 0 # EOM(3) 478 .section .debug_line.dwo,"e",@progbits 479.Ltmp2: 480 .long .Ldebug_line_end0-.Ldebug_line_start0 # unit length 481.Ldebug_line_start0: 482 .short 4 483 .long .Lprologue_end0-.Lprologue_start0 484.Lprologue_start0: 485 .byte 1 486 .byte 1 487 .byte 1 488 .byte -5 489 .byte 14 490 .byte 1 491 .byte 0 492 .ascii "main.cpp" 493 .byte 0 494 .byte 0 495 .byte 0 496 .byte 0 497 .byte 0 498.Lprologue_end0: 499.Ldebug_line_end0: 500 .section .debug_addr,"",@progbits 501.Laddr_table_base0: 502 .quad .Lfunc_begin0 503 .section .debug_gnu_pubnames,"",@progbits 504 .long .LpubNames_end0-.LpubNames_start0 # Length of Public Names Info 505.LpubNames_start0: 506 .short 2 # DWARF Version 507 .long .Lcu_begin0 # Offset of Compilation Unit Info 508 .long 48 # Compilation Unit Length 509 .long 25 # DIE offset 510 .byte 48 # Attributes: FUNCTION, EXTERNAL 511 .asciz "main" # External Name 512 .long 0 # End Mark 513.LpubNames_end0: 514 .section .debug_gnu_pubtypes,"",@progbits 515 .long .LpubTypes_end0-.LpubTypes_start0 # Length of Public Types Info 516.LpubTypes_start0: 517 .short 2 # DWARF Version 518 .long .Lcu_begin0 # Offset of Compilation Unit Info 519 .long 48 # Compilation Unit Length 520 .long 85 # DIE offset 521 .byte 144 # Attributes: TYPE, STATIC 522 .asciz "int" # External Name 523 .long 99 # DIE offset 524 .byte 144 # Attributes: TYPE, STATIC 525 .asciz "char" # External Name 526 .long 103 # DIE offset 527 .byte 16 # Attributes: TYPE, EXTERNAL 528 .asciz "Foo" # External Name 529 .long 112 # DIE offset 530 .byte 16 # Attributes: TYPE, EXTERNAL 531 .asciz "Foo2" # External Name 532 .long 0 # End Mark 533.LpubTypes_end0: 534 .ident "clang version 15.0.0" 535 .section ".note.GNU-stack","",@progbits 536 .addrsig 537 .section .debug_line,"",@progbits 538.Lline_table_start0: 539