1# clang++ -gsplit-dwarf -g2 -gdwarf-5 -gpubnames -fdebug-compilation-dir='.' 2# header.h 3# struct Foo2a { 4# char *c1; 5# char *c2; 6# char *c3; 7# }; 8# main.cpp 9# #include "header.h" 10# struct Foo2 { 11# char *c1; 12# }; 13# int main(int argc, char *argv[]) { 14# Foo2 f2; 15# Foo2a f3; 16# return 0; 17# } 18 19 .text 20 .file "main.cpp" 21 .globl main # -- Begin function main 22 .p2align 4, 0x90 23 .type main,@function 24main: # @main 25.Lfunc_begin0: 26 .file 0 "." "main.cpp" md5 0x9c5cea5bb78d3fc265cd175110bfe903 27 .loc 0 5 0 # main.cpp:5:0 28 .cfi_startproc 29# %bb.0: # %entry 30 pushq %rbp 31 .cfi_def_cfa_offset 16 32 .cfi_offset %rbp, -16 33 movq %rsp, %rbp 34 .cfi_def_cfa_register %rbp 35 movl $0, -4(%rbp) 36 movl %edi, -8(%rbp) 37 movq %rsi, -16(%rbp) 38.Ltmp0: 39 .loc 0 8 2 prologue_end # main.cpp:8:2 40 xorl %eax, %eax 41 .loc 0 8 2 epilogue_begin is_stmt 0 # main.cpp:8:2 42 popq %rbp 43 .cfi_def_cfa %rsp, 8 44 retq 45.Ltmp1: 46.Lfunc_end0: 47 .size main, .Lfunc_end0-main 48 .cfi_endproc 49 # -- End function 50 .file 1 "." "header.h" md5 0xfea7bb1f22c47f129e15695f7137a1e7 51 .section .debug_abbrev,"",@progbits 52 .byte 1 # Abbreviation Code 53 .byte 74 # DW_TAG_skeleton_unit 54 .byte 0 # DW_CHILDREN_no 55 .byte 16 # DW_AT_stmt_list 56 .byte 23 # DW_FORM_sec_offset 57 .byte 114 # DW_AT_str_offsets_base 58 .byte 23 # DW_FORM_sec_offset 59 .byte 27 # DW_AT_comp_dir 60 .byte 37 # DW_FORM_strx1 61 .byte 118 # DW_AT_dwo_name 62 .byte 37 # DW_FORM_strx1 63 .byte 17 # DW_AT_low_pc 64 .byte 27 # DW_FORM_addrx 65 .byte 18 # DW_AT_high_pc 66 .byte 6 # DW_FORM_data4 67 .byte 115 # DW_AT_addr_base 68 .byte 23 # DW_FORM_sec_offset 69 .byte 0 # EOM(1) 70 .byte 0 # EOM(2) 71 .byte 0 # EOM(3) 72 .section .debug_info,"",@progbits 73.Lcu_begin0: 74 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 75.Ldebug_info_start0: 76 .short 5 # DWARF version number 77 .byte 4 # DWARF Unit Type 78 .byte 8 # Address Size (in bytes) 79 .long .debug_abbrev # Offset Into Abbrev. Section 80 .quad -5618023701701543936 81 .byte 1 # Abbrev [1] 0x14:0x14 DW_TAG_skeleton_unit 82 .long .Lline_table_start0 # DW_AT_stmt_list 83 .long .Lstr_offsets_base0 # DW_AT_str_offsets_base 84 .byte 0 # DW_AT_comp_dir 85 .byte 1 # DW_AT_dwo_name 86 .byte 0 # DW_AT_low_pc 87 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 88 .long .Laddr_table_base0 # DW_AT_addr_base 89.Ldebug_info_end0: 90 .section .debug_str_offsets,"",@progbits 91 .long 12 # Length of String Offsets Set 92 .short 5 93 .short 0 94.Lstr_offsets_base0: 95 .section .debug_str,"MS",@progbits,1 96.Lskel_string0: 97 .asciz "." # string offset=0 98.Lskel_string1: 99 .asciz "main" # string offset=2 100.Lskel_string2: 101 .asciz "int" # string offset=7 102.Lskel_string3: 103 .asciz "char" # string offset=11 104.Lskel_string4: 105 .asciz "Foo2" # string offset=16 106.Lskel_string5: 107 .asciz "Foo2a" # string offset=21 108.Lskel_string6: 109 .asciz "main.dwo" # string offset=27 110 .section .debug_str_offsets,"",@progbits 111 .long .Lskel_string0 112 .long .Lskel_string6 113 .section .debug_str_offsets.dwo,"e",@progbits 114 .long 64 # Length of String Offsets Set 115 .short 5 116 .short 0 117 .section .debug_str.dwo,"eMS",@progbits,1 118.Linfo_string0: 119 .asciz "main" # string offset=0 120.Linfo_string1: 121 .asciz "int" # string offset=5 122.Linfo_string2: 123 .asciz "argc" # string offset=9 124.Linfo_string3: 125 .asciz "argv" # string offset=14 126.Linfo_string4: 127 .asciz "char" # string offset=19 128.Linfo_string5: 129 .asciz "f2" # string offset=24 130.Linfo_string6: 131 .asciz "c1" # string offset=27 132.Linfo_string7: 133 .asciz "Foo2" # string offset=30 134.Linfo_string8: 135 .asciz "f3" # string offset=35 136.Linfo_string9: 137 .asciz "c2" # string offset=38 138.Linfo_string10: 139 .asciz "c3" # string offset=41 140.Linfo_string11: 141 .asciz "Foo2a" # string offset=44 142.Linfo_string12: 143 .asciz "clang version 19.0.0git (git@github.com:ayermolo/llvm-project.git da9e9277be64deca73370a90d22af33e5b37cc52)" # string offset=50 144.Linfo_string13: 145 .asciz "main.cpp" # string offset=158 146.Linfo_string14: 147 .asciz "main.dwo" # string offset=167 148 .section .debug_str_offsets.dwo,"e",@progbits 149 .long 0 150 .long 5 151 .long 9 152 .long 14 153 .long 19 154 .long 24 155 .long 27 156 .long 30 157 .long 35 158 .long 38 159 .long 41 160 .long 44 161 .long 50 162 .long 158 163 .long 167 164 .section .debug_info.dwo,"e",@progbits 165 .long .Ldebug_info_dwo_end0-.Ldebug_info_dwo_start0 # Length of Unit 166.Ldebug_info_dwo_start0: 167 .short 5 # DWARF version number 168 .byte 5 # DWARF Unit Type 169 .byte 8 # Address Size (in bytes) 170 .long 0 # Offset Into Abbrev. Section 171 .quad -5618023701701543936 172 .byte 1 # Abbrev [1] 0x14:0x87 DW_TAG_compile_unit 173 .byte 12 # DW_AT_producer 174 .short 33 # DW_AT_language 175 .byte 13 # DW_AT_name 176 .byte 14 # DW_AT_dwo_name 177 .byte 2 # Abbrev [2] 0x1a:0x3c DW_TAG_subprogram 178 .byte 0 # DW_AT_low_pc 179 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 180 .byte 1 # DW_AT_frame_base 181 .byte 86 182 .byte 0 # DW_AT_name 183 .byte 0 # DW_AT_decl_file 184 .byte 5 # DW_AT_decl_line 185 .long 86 # DW_AT_type 186 # DW_AT_external 187 .byte 3 # Abbrev [3] 0x29:0xb DW_TAG_formal_parameter 188 .byte 2 # DW_AT_location 189 .byte 145 190 .byte 120 191 .byte 2 # DW_AT_name 192 .byte 0 # DW_AT_decl_file 193 .byte 5 # DW_AT_decl_line 194 .long 86 # DW_AT_type 195 .byte 3 # Abbrev [3] 0x34:0xb DW_TAG_formal_parameter 196 .byte 2 # DW_AT_location 197 .byte 145 198 .byte 112 199 .byte 3 # DW_AT_name 200 .byte 0 # DW_AT_decl_file 201 .byte 5 # DW_AT_decl_line 202 .long 90 # DW_AT_type 203 .byte 4 # Abbrev [4] 0x3f:0xb DW_TAG_variable 204 .byte 2 # DW_AT_location 205 .byte 145 206 .byte 104 207 .byte 5 # DW_AT_name 208 .byte 0 # DW_AT_decl_file 209 .byte 6 # DW_AT_decl_line 210 .long 104 # DW_AT_type 211 .byte 4 # Abbrev [4] 0x4a:0xb DW_TAG_variable 212 .byte 2 # DW_AT_location 213 .byte 145 214 .byte 80 215 .byte 8 # DW_AT_name 216 .byte 0 # DW_AT_decl_file 217 .byte 7 # DW_AT_decl_line 218 .long 120 # DW_AT_type 219 .byte 0 # End Of Children Mark 220 .byte 5 # Abbrev [5] 0x56:0x4 DW_TAG_base_type 221 .byte 1 # DW_AT_name 222 .byte 5 # DW_AT_encoding 223 .byte 4 # DW_AT_byte_size 224 .byte 6 # Abbrev [6] 0x5a:0x5 DW_TAG_pointer_type 225 .long 95 # DW_AT_type 226 .byte 6 # Abbrev [6] 0x5f:0x5 DW_TAG_pointer_type 227 .long 100 # DW_AT_type 228 .byte 5 # Abbrev [5] 0x64:0x4 DW_TAG_base_type 229 .byte 4 # DW_AT_name 230 .byte 6 # DW_AT_encoding 231 .byte 1 # DW_AT_byte_size 232 .byte 7 # Abbrev [7] 0x68:0x10 DW_TAG_structure_type 233 .byte 5 # DW_AT_calling_convention 234 .byte 7 # DW_AT_name 235 .byte 8 # DW_AT_byte_size 236 .byte 0 # DW_AT_decl_file 237 .byte 2 # DW_AT_decl_line 238 .byte 8 # Abbrev [8] 0x6e:0x9 DW_TAG_member 239 .byte 6 # DW_AT_name 240 .long 95 # DW_AT_type 241 .byte 0 # DW_AT_decl_file 242 .byte 3 # DW_AT_decl_line 243 .byte 0 # DW_AT_data_member_location 244 .byte 0 # End Of Children Mark 245 .byte 7 # Abbrev [7] 0x78:0x22 DW_TAG_structure_type 246 .byte 5 # DW_AT_calling_convention 247 .byte 11 # DW_AT_name 248 .byte 24 # DW_AT_byte_size 249 .byte 1 # DW_AT_decl_file 250 .byte 1 # DW_AT_decl_line 251 .byte 8 # Abbrev [8] 0x7e:0x9 DW_TAG_member 252 .byte 6 # DW_AT_name 253 .long 95 # DW_AT_type 254 .byte 1 # DW_AT_decl_file 255 .byte 2 # DW_AT_decl_line 256 .byte 0 # DW_AT_data_member_location 257 .byte 8 # Abbrev [8] 0x87:0x9 DW_TAG_member 258 .byte 9 # DW_AT_name 259 .long 95 # DW_AT_type 260 .byte 1 # DW_AT_decl_file 261 .byte 3 # DW_AT_decl_line 262 .byte 8 # DW_AT_data_member_location 263 .byte 8 # Abbrev [8] 0x90:0x9 DW_TAG_member 264 .byte 10 # DW_AT_name 265 .long 95 # DW_AT_type 266 .byte 1 # DW_AT_decl_file 267 .byte 4 # DW_AT_decl_line 268 .byte 16 # DW_AT_data_member_location 269 .byte 0 # End Of Children Mark 270 .byte 0 # End Of Children Mark 271.Ldebug_info_dwo_end0: 272 .section .debug_abbrev.dwo,"e",@progbits 273 .byte 1 # Abbreviation Code 274 .byte 17 # DW_TAG_compile_unit 275 .byte 1 # DW_CHILDREN_yes 276 .byte 37 # DW_AT_producer 277 .byte 37 # DW_FORM_strx1 278 .byte 19 # DW_AT_language 279 .byte 5 # DW_FORM_data2 280 .byte 3 # DW_AT_name 281 .byte 37 # DW_FORM_strx1 282 .byte 118 # DW_AT_dwo_name 283 .byte 37 # DW_FORM_strx1 284 .byte 0 # EOM(1) 285 .byte 0 # EOM(2) 286 .byte 2 # Abbreviation Code 287 .byte 46 # DW_TAG_subprogram 288 .byte 1 # DW_CHILDREN_yes 289 .byte 17 # DW_AT_low_pc 290 .byte 27 # DW_FORM_addrx 291 .byte 18 # DW_AT_high_pc 292 .byte 6 # DW_FORM_data4 293 .byte 64 # DW_AT_frame_base 294 .byte 24 # DW_FORM_exprloc 295 .byte 3 # DW_AT_name 296 .byte 37 # DW_FORM_strx1 297 .byte 58 # DW_AT_decl_file 298 .byte 11 # DW_FORM_data1 299 .byte 59 # DW_AT_decl_line 300 .byte 11 # DW_FORM_data1 301 .byte 73 # DW_AT_type 302 .byte 19 # DW_FORM_ref4 303 .byte 63 # DW_AT_external 304 .byte 25 # DW_FORM_flag_present 305 .byte 0 # EOM(1) 306 .byte 0 # EOM(2) 307 .byte 3 # Abbreviation Code 308 .byte 5 # DW_TAG_formal_parameter 309 .byte 0 # DW_CHILDREN_no 310 .byte 2 # DW_AT_location 311 .byte 24 # DW_FORM_exprloc 312 .byte 3 # DW_AT_name 313 .byte 37 # DW_FORM_strx1 314 .byte 58 # DW_AT_decl_file 315 .byte 11 # DW_FORM_data1 316 .byte 59 # DW_AT_decl_line 317 .byte 11 # DW_FORM_data1 318 .byte 73 # DW_AT_type 319 .byte 19 # DW_FORM_ref4 320 .byte 0 # EOM(1) 321 .byte 0 # EOM(2) 322 .byte 4 # Abbreviation Code 323 .byte 52 # DW_TAG_variable 324 .byte 0 # DW_CHILDREN_no 325 .byte 2 # DW_AT_location 326 .byte 24 # DW_FORM_exprloc 327 .byte 3 # DW_AT_name 328 .byte 37 # DW_FORM_strx1 329 .byte 58 # DW_AT_decl_file 330 .byte 11 # DW_FORM_data1 331 .byte 59 # DW_AT_decl_line 332 .byte 11 # DW_FORM_data1 333 .byte 73 # DW_AT_type 334 .byte 19 # DW_FORM_ref4 335 .byte 0 # EOM(1) 336 .byte 0 # EOM(2) 337 .byte 5 # Abbreviation Code 338 .byte 36 # DW_TAG_base_type 339 .byte 0 # DW_CHILDREN_no 340 .byte 3 # DW_AT_name 341 .byte 37 # DW_FORM_strx1 342 .byte 62 # DW_AT_encoding 343 .byte 11 # DW_FORM_data1 344 .byte 11 # DW_AT_byte_size 345 .byte 11 # DW_FORM_data1 346 .byte 0 # EOM(1) 347 .byte 0 # EOM(2) 348 .byte 6 # Abbreviation Code 349 .byte 15 # DW_TAG_pointer_type 350 .byte 0 # DW_CHILDREN_no 351 .byte 73 # DW_AT_type 352 .byte 19 # DW_FORM_ref4 353 .byte 0 # EOM(1) 354 .byte 0 # EOM(2) 355 .byte 7 # Abbreviation Code 356 .byte 19 # DW_TAG_structure_type 357 .byte 1 # DW_CHILDREN_yes 358 .byte 54 # DW_AT_calling_convention 359 .byte 11 # DW_FORM_data1 360 .byte 3 # DW_AT_name 361 .byte 37 # DW_FORM_strx1 362 .byte 11 # DW_AT_byte_size 363 .byte 11 # DW_FORM_data1 364 .byte 58 # DW_AT_decl_file 365 .byte 11 # DW_FORM_data1 366 .byte 59 # DW_AT_decl_line 367 .byte 11 # DW_FORM_data1 368 .byte 0 # EOM(1) 369 .byte 0 # EOM(2) 370 .byte 8 # Abbreviation Code 371 .byte 13 # DW_TAG_member 372 .byte 0 # DW_CHILDREN_no 373 .byte 3 # DW_AT_name 374 .byte 37 # DW_FORM_strx1 375 .byte 73 # DW_AT_type 376 .byte 19 # DW_FORM_ref4 377 .byte 58 # DW_AT_decl_file 378 .byte 11 # DW_FORM_data1 379 .byte 59 # DW_AT_decl_line 380 .byte 11 # DW_FORM_data1 381 .byte 56 # DW_AT_data_member_location 382 .byte 11 # DW_FORM_data1 383 .byte 0 # EOM(1) 384 .byte 0 # EOM(2) 385 .byte 0 # EOM(3) 386 .section .debug_addr,"",@progbits 387 .long .Ldebug_addr_end0-.Ldebug_addr_start0 # Length of contribution 388.Ldebug_addr_start0: 389 .short 5 # DWARF version number 390 .byte 8 # Address size 391 .byte 0 # Segment selector size 392.Laddr_table_base0: 393 .quad .Lfunc_begin0 394.Ldebug_addr_end0: 395 .section .debug_names,"",@progbits 396 .long .Lnames_end0-.Lnames_start0 # Header: unit length 397.Lnames_start0: 398 .short 5 # Header: version 399 .short 0 # Header: padding 400 .long 1 # Header: compilation unit count 401 .long 0 # Header: local type unit count 402 .long 0 # Header: foreign type unit count 403 .long 5 # Header: bucket count 404 .long 5 # Header: name count 405 .long .Lnames_abbrev_end0-.Lnames_abbrev_start0 # Header: abbreviation table size 406 .long 8 # Header: augmentation string size 407 .ascii "LLVM0700" # Header: augmentation string 408 .long .Lcu_begin0 # Compilation unit 0 409 .long 0 # Bucket 0 410 .long 1 # Bucket 1 411 .long 0 # Bucket 2 412 .long 3 # Bucket 3 413 .long 4 # Bucket 4 414 .long 2090263771 # Hash in Bucket 1 415 .long 2090499946 # Hash in Bucket 1 416 .long 193495088 # Hash in Bucket 3 417 .long 259227804 # Hash in Bucket 4 418 .long 2090147939 # Hash in Bucket 4 419 .long .Lskel_string4 # String in Bucket 1: Foo2 420 .long .Lskel_string1 # String in Bucket 1: main 421 .long .Lskel_string2 # String in Bucket 3: int 422 .long .Lskel_string5 # String in Bucket 4: Foo2a 423 .long .Lskel_string3 # String in Bucket 4: char 424 .long .Lnames3-.Lnames_entries0 # Offset in Bucket 1 425 .long .Lnames0-.Lnames_entries0 # Offset in Bucket 1 426 .long .Lnames1-.Lnames_entries0 # Offset in Bucket 3 427 .long .Lnames4-.Lnames_entries0 # Offset in Bucket 4 428 .long .Lnames2-.Lnames_entries0 # Offset in Bucket 4 429.Lnames_abbrev_start0: 430 .ascii "\230\023" # Abbrev code 431 .byte 19 # DW_TAG_structure_type 432 .byte 3 # DW_IDX_die_offset 433 .byte 19 # DW_FORM_ref4 434 .byte 4 # DW_IDX_parent 435 .byte 25 # DW_FORM_flag_present 436 .byte 0 # End of abbrev 437 .byte 0 # End of abbrev 438 .ascii "\230." # Abbrev code 439 .byte 46 # DW_TAG_subprogram 440 .byte 3 # DW_IDX_die_offset 441 .byte 19 # DW_FORM_ref4 442 .byte 4 # DW_IDX_parent 443 .byte 25 # DW_FORM_flag_present 444 .byte 0 # End of abbrev 445 .byte 0 # End of abbrev 446 .ascii "\230$" # Abbrev code 447 .byte 36 # DW_TAG_base_type 448 .byte 3 # DW_IDX_die_offset 449 .byte 19 # DW_FORM_ref4 450 .byte 4 # DW_IDX_parent 451 .byte 25 # DW_FORM_flag_present 452 .byte 0 # End of abbrev 453 .byte 0 # End of abbrev 454 .byte 0 # End of abbrev list 455.Lnames_abbrev_end0: 456.Lnames_entries0: 457.Lnames3: 458.L4: 459 .ascii "\230\023" # Abbreviation code 460 .long 104 # DW_IDX_die_offset 461 .byte 0 # DW_IDX_parent 462 # End of list: Foo2 463.Lnames0: 464.L1: 465 .ascii "\230." # Abbreviation code 466 .long 26 # DW_IDX_die_offset 467 .byte 0 # DW_IDX_parent 468 # End of list: main 469.Lnames1: 470.L3: 471 .ascii "\230$" # Abbreviation code 472 .long 86 # DW_IDX_die_offset 473 .byte 0 # DW_IDX_parent 474 # End of list: int 475.Lnames4: 476.L2: 477 .ascii "\230\023" # Abbreviation code 478 .long 120 # DW_IDX_die_offset 479 .byte 0 # DW_IDX_parent 480 # End of list: Foo2a 481.Lnames2: 482.L0: 483 .ascii "\230$" # Abbreviation code 484 .long 100 # DW_IDX_die_offset 485 .byte 0 # DW_IDX_parent 486 # End of list: char 487 .p2align 2, 0x0 488.Lnames_end0: 489 .ident "clang version 19.0.0git (git@github.com:ayermolo/llvm-project.git da9e9277be64deca73370a90d22af33e5b37cc52)" 490 .section ".note.GNU-stack","",@progbits 491 .addrsig 492 .section .debug_line,"",@progbits 493.Lline_table_start0: 494