1# REQUIRES: x86-registered-target 2 3# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o 4# RUN: llvm-symbolizer --obj=%t.o 0x30 0x20 0x6c 0xf | FileCheck %s 5 6# CHECK: main 7# CHECK-NEXT: llvm-symbolizer-bbsections-test.c:13 8# CHECK: g 9# CHECK-NEXT: llvm-symbolizer-bbsections-test.c:5 10# CHECK: main 11# CHECK-NEXT: llvm-symbolizer-bbsections-test.c:15 12# CHECK: main 13# CHECK-NEXT: llvm-symbolizer-bbsections-test.c:18 14# How to generate this file: 15# int f(int a) { 16# return a + 1; 17# } 18# 19# int g(int a) { 20# return a + 2; 21# } 22# 23# int h(int a) { 24# return a + 3; 25# } 26# 27# // Use simple control flow to generate lots of basic block sections. 28# int main(int argc, char *argv[]) { 29# if (argc > 10) 30# return f(argc); 31# else if (argc > 8) 32# return g(argc); 33# else if (argc > 4) 34# return h(argc); 35# return 0; 36# } 37# 38# $ clang -S -fbasic-block-sections=all llvm-symbolizer-bbsections-test.cc 39# Manually reororder the sections to place them in this order: 40# _Z1fi 41# main.__part.4 42# _Z1gi 43# main 44# _Z1hi 45# main.__part.5 46# (rest) 47# Strip the .section .text directives to have all the functions in the same 48# section. 49# This ensures the basic blocks are reordered non-contiguous exactly like 50# how a linker would do it. 51 .text 52 .file "llvm-symbolizer-bbsections-test.c" 53 #.section .text._Z1fi,"ax",@progbits 54 .globl _Z1fi # -- Begin function _Z1fi 55 .p2align 4, 0x90 56 .type _Z1fi,@function 57_Z1fi: # @_Z1fi 58.Lfunc_begin0: 59 .file 1 "Examples" "llvm-symbolizer-bbsections-test.c" 60 .loc 1 1 0 # llvm-symbolizer-bbsections-test.c:1:0 61 .cfi_startproc 62# %bb.0: 63 pushq %rbp 64 .cfi_def_cfa_offset 16 65 .cfi_offset %rbp, -16 66 movq %rsp, %rbp 67 .cfi_def_cfa_register %rbp 68 movl %edi, -4(%rbp) 69.Ltmp0: 70 .loc 1 2 10 prologue_end # llvm-symbolizer-bbsections-test.c:2:10 71 movl -4(%rbp), %eax 72 .loc 1 2 12 is_stmt 0 # llvm-symbolizer-bbsections-test.c:2:12 73 addl $1, %eax 74 .loc 1 2 3 # llvm-symbolizer-bbsections-test.c:2:3 75 popq %rbp 76 .cfi_def_cfa %rsp, 8 77 retq 78.Ltmp1: 79 .cfi_endproc 80.Lfunc_end0: 81 .size _Z1fi, .Lfunc_end0-_Z1fi 82 # -- End function 83 #.section text.main,"ax",@progbits,unique,4 84main.__part.4: 85 .cfi_startproc 86 .cfi_def_cfa %rbp, 16 87 .cfi_offset %rbp, -16 88 .loc 1 18 17 is_stmt 1 # llvm-symbolizer-bbsections-test.c:18:17 89 cmpl $4, -8(%rbp) 90.Ltmp9: 91 .loc 1 18 12 is_stmt 0 # llvm-symbolizer-bbsections-test.c:18:12 92 jle main.__part.6 93 jmp main.__part.5 94.LBB_END3_4: 95 .size main.__part.4, .LBB_END3_4-main.__part.4 96 .cfi_endproc 97 98 #.section .text._Z1gi,"ax",@progbits 99 .globl _Z1gi # -- Begin function _Z1gi 100 .p2align 4, 0x90 101 .type _Z1gi,@function 102_Z1gi: # @_Z1gi 103.Lfunc_begin1: 104 .loc 1 5 0 is_stmt 1 # llvm-symbolizer-bbsections-test.c:5:0 105 .cfi_startproc 106# %bb.0: 107 pushq %rbp 108 .cfi_def_cfa_offset 16 109 .cfi_offset %rbp, -16 110 movq %rsp, %rbp 111 .cfi_def_cfa_register %rbp 112 movl %edi, -4(%rbp) 113.Ltmp2: 114 .loc 1 6 10 prologue_end # llvm-symbolizer-bbsections-test.c:6:10 115 movl -4(%rbp), %eax 116 .loc 1 6 12 is_stmt 0 # llvm-symbolizer-bbsections-test.c:6:12 117 addl $2, %eax 118 .loc 1 6 3 # llvm-symbolizer-bbsections-test.c:6:3 119 popq %rbp 120 .cfi_def_cfa %rsp, 8 121 retq 122.Ltmp3: 123 .cfi_endproc 124.Lfunc_end1: 125 .size _Z1gi, .Lfunc_end1-_Z1gi 126 # -- End function 127 #.section .text.main,"ax",@progbits 128 .globl main # -- Begin function main 129 .p2align 4, 0x90 130 .type main,@function 131main: # @main 132.Lfunc_begin3: 133 .loc 1 13 0 is_stmt 1 # llvm-symbolizer-bbsections-test.c:13:0 134 .cfi_startproc 135# %bb.0: 136 pushq %rbp 137 .cfi_def_cfa_offset 16 138 .cfi_offset %rbp, -16 139 movq %rsp, %rbp 140 .cfi_def_cfa_register %rbp 141 subq $16, %rsp 142 movl $0, -4(%rbp) 143 movl %edi, -8(%rbp) 144 movq %rsi, -16(%rbp) 145.Ltmp6: 146 .loc 1 14 12 prologue_end # llvm-symbolizer-bbsections-test.c:14:12 147 cmpl $10, -8(%rbp) 148.Ltmp7: 149 .loc 1 14 7 is_stmt 0 # llvm-symbolizer-bbsections-test.c:14:7 150 jle main.__part.2 151 jmp main.__part.1 152 .cfi_endproc 153 #.section .text._Z1hi,"ax",@progbits 154 .globl _Z1hi # -- Begin function _Z1hi 155 .p2align 4, 0x90 156 .type _Z1hi,@function 157_Z1hi: # @_Z1hi 158.Lfunc_begin2: 159 .loc 1 9 0 is_stmt 1 # llvm-symbolizer-bbsections-test.c:9:0 160 .cfi_startproc 161# %bb.0: 162 pushq %rbp 163 .cfi_def_cfa_offset 16 164 .cfi_offset %rbp, -16 165 movq %rsp, %rbp 166 .cfi_def_cfa_register %rbp 167 movl %edi, -4(%rbp) 168.Ltmp4: 169 .loc 1 10 10 prologue_end # llvm-symbolizer-bbsections-test.c:10:10 170 movl -4(%rbp), %eax 171 .loc 1 10 12 is_stmt 0 # llvm-symbolizer-bbsections-test.c:10:12 172 addl $3, %eax 173 .loc 1 10 3 # llvm-symbolizer-bbsections-test.c:10:3 174 popq %rbp 175 .cfi_def_cfa %rsp, 8 176 retq 177.Ltmp5: 178 .cfi_endproc 179.Lfunc_end2: 180 .size _Z1hi, .Lfunc_end2-_Z1hi 181 # -- End function 182 #.section .text.main,"ax",@progbits,unique,5 183main.__part.5: 184 .cfi_startproc 185 .cfi_def_cfa %rbp, 16 186 .cfi_offset %rbp, -16 187 .loc 1 19 14 is_stmt 1 # llvm-symbolizer-bbsections-test.c:19:14 188 movl -8(%rbp), %edi 189 .loc 1 19 12 is_stmt 0 # llvm-symbolizer-bbsections-test.c:19:12 190 callq _Z1hi 191 .loc 1 19 5 # llvm-symbolizer-bbsections-test.c:19:5 192 movl %eax, -4(%rbp) 193 jmp main.__part.9 194.Ltmp10: 195.LBB_END3_5: 196 .size main.__part.5, .LBB_END3_5-main.__part.5 197 .cfi_endproc 198 #.section .text.main,"ax",@progbits,unique,1 199main.__part.1: 200 .cfi_startproc 201 .cfi_def_cfa %rbp, 16 202 .cfi_offset %rbp, -16 203 .loc 1 15 14 is_stmt 1 # llvm-symbolizer-bbsections-test.c:15:14 204 movl -8(%rbp), %edi 205 .loc 1 15 12 is_stmt 0 # llvm-symbolizer-bbsections-test.c:15:12 206 callq _Z1fi 207 .loc 1 15 5 # llvm-symbolizer-bbsections-test.c:15:5 208 movl %eax, -4(%rbp) 209 jmp main.__part.9 210.LBB_END3_1: 211 .size main.__part.1, .LBB_END3_1-main.__part.1 212 .cfi_endproc 213 #.section .text.main,"ax",@progbits,unique,2 214main.__part.2: 215 .cfi_startproc 216 .cfi_def_cfa %rbp, 16 217 .cfi_offset %rbp, -16 218 .loc 1 16 17 is_stmt 1 # llvm-symbolizer-bbsections-test.c:16:17 219 cmpl $8, -8(%rbp) 220.Ltmp8: 221 .loc 1 16 12 is_stmt 0 # llvm-symbolizer-bbsections-test.c:16:12 222 jle main.__part.4 223 jmp main.__part.3 224.LBB_END3_2: 225 .size main.__part.2, .LBB_END3_2-main.__part.2 226 .cfi_endproc 227 #.section .text.main,"ax",@progbits,unique,3 228main.__part.3: 229 .cfi_startproc 230 .cfi_def_cfa %rbp, 16 231 .cfi_offset %rbp, -16 232 .loc 1 17 14 is_stmt 1 # llvm-symbolizer-bbsections-test.c:17:14 233 movl -8(%rbp), %edi 234 .loc 1 17 12 is_stmt 0 # llvm-symbolizer-bbsections-test.c:17:12 235 callq _Z1gi 236 .loc 1 17 5 # llvm-symbolizer-bbsections-test.c:17:5 237 movl %eax, -4(%rbp) 238 jmp main.__part.9 239.LBB_END3_3: 240 .size main.__part.3, .LBB_END3_3-main.__part.3 241 .cfi_endproc 242 #.section .text.main,"ax",@progbits,unique,6 243main.__part.6: 244 .cfi_startproc 245 .cfi_def_cfa %rbp, 16 246 .cfi_offset %rbp, -16 247 .loc 1 0 5 # llvm-symbolizer-bbsections-test.c:0:5 248 jmp main.__part.7 249 jmp main.__part.7 250.LBB_END3_6: 251 .size main.__part.6, .LBB_END3_6-main.__part.6 252 .cfi_endproc 253 #.section .text.main,"ax",@progbits,unique,7 254main.__part.7: 255 .cfi_startproc 256 .cfi_def_cfa %rbp, 16 257 .cfi_offset %rbp, -16 258 jmp main.__part.8 259 jmp main.__part.8 260.LBB_END3_7: 261 .size main.__part.7, .LBB_END3_7-main.__part.7 262 .cfi_endproc 263 #.section .text.main,"ax",@progbits,unique,8 264main.__part.8: 265 .cfi_startproc 266 .cfi_def_cfa %rbp, 16 267 .cfi_offset %rbp, -16 268 .loc 1 20 3 is_stmt 1 # llvm-symbolizer-bbsections-test.c:20:3 269 movl $0, -4(%rbp) 270 jmp main.__part.9 271.LBB_END3_8: 272 .size main.__part.8, .LBB_END3_8-main.__part.8 273 .cfi_endproc 274 #.section .text.main,"ax",@progbits,unique,9 275main.__part.9: 276 .cfi_startproc 277 .cfi_def_cfa %rbp, 16 278 .cfi_offset %rbp, -16 279 .loc 1 21 1 # llvm-symbolizer-bbsections-test.c:21:1 280 movl -4(%rbp), %eax 281 addq $16, %rsp 282 popq %rbp 283 .cfi_def_cfa %rsp, 8 284 retq 285.Ltmp11: 286.LBB_END3_9: 287 .size main.__part.9, .LBB_END3_9-main.__part.9 288 .cfi_endproc 289 #.section .text.main,"ax",@progbits 290.Lfunc_end3: 291 .size main, .Lfunc_end3-main 292 # -- End function 293 .section .debug_abbrev,"",@progbits 294 .byte 1 # Abbreviation Code 295 .byte 17 # DW_TAG_compile_unit 296 .byte 1 # DW_CHILDREN_yes 297 .byte 37 # DW_AT_producer 298 .byte 14 # DW_FORM_strp 299 .byte 19 # DW_AT_language 300 .byte 5 # DW_FORM_data2 301 .byte 3 # DW_AT_name 302 .byte 14 # DW_FORM_strp 303 .byte 16 # DW_AT_stmt_list 304 .byte 23 # DW_FORM_sec_offset 305 .byte 27 # DW_AT_comp_dir 306 .byte 14 # DW_FORM_strp 307 .byte 17 # DW_AT_low_pc 308 .byte 1 # DW_FORM_addr 309 .byte 85 # DW_AT_ranges 310 .byte 23 # DW_FORM_sec_offset 311 .byte 0 # EOM(1) 312 .byte 0 # EOM(2) 313 .byte 2 # Abbreviation Code 314 .byte 46 # DW_TAG_subprogram 315 .byte 1 # DW_CHILDREN_yes 316 .byte 17 # DW_AT_low_pc 317 .byte 1 # DW_FORM_addr 318 .byte 18 # DW_AT_high_pc 319 .byte 6 # DW_FORM_data4 320 .byte 64 # DW_AT_frame_base 321 .byte 24 # DW_FORM_exprloc 322 .byte 110 # DW_AT_linkage_name 323 .byte 14 # DW_FORM_strp 324 .byte 3 # DW_AT_name 325 .byte 14 # DW_FORM_strp 326 .byte 58 # DW_AT_decl_file 327 .byte 11 # DW_FORM_data1 328 .byte 59 # DW_AT_decl_line 329 .byte 11 # DW_FORM_data1 330 .byte 73 # DW_AT_type 331 .byte 19 # DW_FORM_ref4 332 .byte 63 # DW_AT_external 333 .byte 25 # DW_FORM_flag_present 334 .byte 0 # EOM(1) 335 .byte 0 # EOM(2) 336 .byte 3 # Abbreviation Code 337 .byte 5 # DW_TAG_formal_parameter 338 .byte 0 # DW_CHILDREN_no 339 .byte 2 # DW_AT_location 340 .byte 24 # DW_FORM_exprloc 341 .byte 3 # DW_AT_name 342 .byte 14 # DW_FORM_strp 343 .byte 58 # DW_AT_decl_file 344 .byte 11 # DW_FORM_data1 345 .byte 59 # DW_AT_decl_line 346 .byte 11 # DW_FORM_data1 347 .byte 73 # DW_AT_type 348 .byte 19 # DW_FORM_ref4 349 .byte 0 # EOM(1) 350 .byte 0 # EOM(2) 351 .byte 4 # Abbreviation Code 352 .byte 46 # DW_TAG_subprogram 353 .byte 1 # DW_CHILDREN_yes 354 .byte 85 # DW_AT_ranges 355 .byte 23 # DW_FORM_sec_offset 356 .byte 64 # DW_AT_frame_base 357 .byte 24 # DW_FORM_exprloc 358 .byte 3 # DW_AT_name 359 .byte 14 # DW_FORM_strp 360 .byte 58 # DW_AT_decl_file 361 .byte 11 # DW_FORM_data1 362 .byte 59 # DW_AT_decl_line 363 .byte 11 # DW_FORM_data1 364 .byte 73 # DW_AT_type 365 .byte 19 # DW_FORM_ref4 366 .byte 63 # DW_AT_external 367 .byte 25 # DW_FORM_flag_present 368 .byte 0 # EOM(1) 369 .byte 0 # EOM(2) 370 .byte 5 # Abbreviation Code 371 .byte 36 # DW_TAG_base_type 372 .byte 0 # DW_CHILDREN_no 373 .byte 3 # DW_AT_name 374 .byte 14 # DW_FORM_strp 375 .byte 62 # DW_AT_encoding 376 .byte 11 # DW_FORM_data1 377 .byte 11 # DW_AT_byte_size 378 .byte 11 # DW_FORM_data1 379 .byte 0 # EOM(1) 380 .byte 0 # EOM(2) 381 .byte 6 # Abbreviation Code 382 .byte 15 # DW_TAG_pointer_type 383 .byte 0 # DW_CHILDREN_no 384 .byte 73 # DW_AT_type 385 .byte 19 # DW_FORM_ref4 386 .byte 0 # EOM(1) 387 .byte 0 # EOM(2) 388 .byte 0 # EOM(3) 389 .section .debug_info,"",@progbits 390.Lcu_begin0: 391 .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 392.Ldebug_info_start0: 393 .short 4 # DWARF version number 394 .long .debug_abbrev # Offset Into Abbrev. Section 395 .byte 8 # Address Size (in bytes) 396 .byte 1 # Abbrev [1] 0xb:0xea DW_TAG_compile_unit 397 .long .Linfo_string0 # DW_AT_producer 398 .short 33 # DW_AT_language 399 .long .Linfo_string1 # DW_AT_name 400 .long .Lline_table_start0 # DW_AT_stmt_list 401 .long .Linfo_string2 # DW_AT_comp_dir 402 .quad 0 # DW_AT_low_pc 403 .long .Ldebug_ranges1 # DW_AT_ranges 404 .byte 2 # Abbrev [2] 0x2a:0x2c DW_TAG_subprogram 405 .quad .Lfunc_begin0 # DW_AT_low_pc 406 .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 407 .byte 1 # DW_AT_frame_base 408 .byte 86 409 .long .Linfo_string3 # DW_AT_linkage_name 410 .long .Linfo_string4 # DW_AT_name 411 .byte 1 # DW_AT_decl_file 412 .byte 1 # DW_AT_decl_line 413 .long 220 # DW_AT_type 414 # DW_AT_external 415 .byte 3 # Abbrev [3] 0x47:0xe DW_TAG_formal_parameter 416 .byte 2 # DW_AT_location 417 .byte 145 418 .byte 124 419 .long .Linfo_string11 # DW_AT_name 420 .byte 1 # DW_AT_decl_file 421 .byte 1 # DW_AT_decl_line 422 .long 220 # DW_AT_type 423 .byte 0 # End Of Children Mark 424 .byte 2 # Abbrev [2] 0x56:0x2c DW_TAG_subprogram 425 .quad .Lfunc_begin1 # DW_AT_low_pc 426 .long .Lfunc_end1-.Lfunc_begin1 # DW_AT_high_pc 427 .byte 1 # DW_AT_frame_base 428 .byte 86 429 .long .Linfo_string6 # DW_AT_linkage_name 430 .long .Linfo_string7 # DW_AT_name 431 .byte 1 # DW_AT_decl_file 432 .byte 5 # DW_AT_decl_line 433 .long 220 # DW_AT_type 434 # DW_AT_external 435 .byte 3 # Abbrev [3] 0x73:0xe DW_TAG_formal_parameter 436 .byte 2 # DW_AT_location 437 .byte 145 438 .byte 124 439 .long .Linfo_string11 # DW_AT_name 440 .byte 1 # DW_AT_decl_file 441 .byte 5 # DW_AT_decl_line 442 .long 220 # DW_AT_type 443 .byte 0 # End Of Children Mark 444 .byte 2 # Abbrev [2] 0x82:0x2c DW_TAG_subprogram 445 .quad .Lfunc_begin2 # DW_AT_low_pc 446 .long .Lfunc_end2-.Lfunc_begin2 # DW_AT_high_pc 447 .byte 1 # DW_AT_frame_base 448 .byte 86 449 .long .Linfo_string8 # DW_AT_linkage_name 450 .long .Linfo_string9 # DW_AT_name 451 .byte 1 # DW_AT_decl_file 452 .byte 9 # DW_AT_decl_line 453 .long 220 # DW_AT_type 454 # DW_AT_external 455 .byte 3 # Abbrev [3] 0x9f:0xe DW_TAG_formal_parameter 456 .byte 2 # DW_AT_location 457 .byte 145 458 .byte 124 459 .long .Linfo_string11 # DW_AT_name 460 .byte 1 # DW_AT_decl_file 461 .byte 9 # DW_AT_decl_line 462 .long 220 # DW_AT_type 463 .byte 0 # End Of Children Mark 464 .byte 4 # Abbrev [4] 0xae:0x2e DW_TAG_subprogram 465 .long .Ldebug_ranges0 # DW_AT_ranges 466 .byte 1 # DW_AT_frame_base 467 .byte 86 468 .long .Linfo_string10 # DW_AT_name 469 .byte 1 # DW_AT_decl_file 470 .byte 13 # DW_AT_decl_line 471 .long 220 # DW_AT_type 472 # DW_AT_external 473 .byte 3 # Abbrev [3] 0xbf:0xe DW_TAG_formal_parameter 474 .byte 2 # DW_AT_location 475 .byte 145 476 .byte 120 477 .long .Linfo_string12 # DW_AT_name 478 .byte 1 # DW_AT_decl_file 479 .byte 13 # DW_AT_decl_line 480 .long 220 # DW_AT_type 481 .byte 3 # Abbrev [3] 0xcd:0xe DW_TAG_formal_parameter 482 .byte 2 # DW_AT_location 483 .byte 145 484 .byte 112 485 .long .Linfo_string13 # DW_AT_name 486 .byte 1 # DW_AT_decl_file 487 .byte 13 # DW_AT_decl_line 488 .long 227 # DW_AT_type 489 .byte 0 # End Of Children Mark 490 .byte 5 # Abbrev [5] 0xdc:0x7 DW_TAG_base_type 491 .long .Linfo_string5 # DW_AT_name 492 .byte 5 # DW_AT_encoding 493 .byte 4 # DW_AT_byte_size 494 .byte 6 # Abbrev [6] 0xe3:0x5 DW_TAG_pointer_type 495 .long 232 # DW_AT_type 496 .byte 6 # Abbrev [6] 0xe8:0x5 DW_TAG_pointer_type 497 .long 237 # DW_AT_type 498 .byte 5 # Abbrev [5] 0xed:0x7 DW_TAG_base_type 499 .long .Linfo_string14 # DW_AT_name 500 .byte 6 # DW_AT_encoding 501 .byte 1 # DW_AT_byte_size 502 .byte 0 # End Of Children Mark 503.Ldebug_info_end0: 504 .section .debug_ranges,"",@progbits 505.Ldebug_ranges0: 506 .quad main.__part.1 507 .quad .LBB_END3_1 508 .quad main.__part.2 509 .quad .LBB_END3_2 510 .quad main.__part.3 511 .quad .LBB_END3_3 512 .quad main.__part.4 513 .quad .LBB_END3_4 514 .quad main.__part.5 515 .quad .LBB_END3_5 516 .quad main.__part.6 517 .quad .LBB_END3_6 518 .quad main.__part.7 519 .quad .LBB_END3_7 520 .quad main.__part.8 521 .quad .LBB_END3_8 522 .quad main.__part.9 523 .quad .LBB_END3_9 524 .quad .Lfunc_begin3 525 .quad .Lfunc_end3 526 .quad 0 527 .quad 0 528.Ldebug_ranges1: 529 .quad .Lfunc_begin0 530 .quad .Lfunc_end0 531 .quad .Lfunc_begin1 532 .quad .Lfunc_end1 533 .quad .Lfunc_begin2 534 .quad .Lfunc_end2 535 .quad main.__part.1 536 .quad .LBB_END3_1 537 .quad main.__part.2 538 .quad .LBB_END3_2 539 .quad main.__part.3 540 .quad .LBB_END3_3 541 .quad main.__part.4 542 .quad .LBB_END3_4 543 .quad main.__part.5 544 .quad .LBB_END3_5 545 .quad main.__part.6 546 .quad .LBB_END3_6 547 .quad main.__part.7 548 .quad .LBB_END3_7 549 .quad main.__part.8 550 .quad .LBB_END3_8 551 .quad main.__part.9 552 .quad .LBB_END3_9 553 .quad .Lfunc_begin3 554 .quad .Lfunc_end3 555 .quad 0 556 .quad 0 557 .section .debug_str,"MS",@progbits,1 558.Linfo_string0: 559 .asciz "clang version 12.0.0 (git@github.com:llvm/llvm-project.git bfa6ca07a8cda0ab889b7fee0b914907ce594e11)" # string offset=0 560.Linfo_string1: 561 .asciz "llvm-symbolizer-bbsections-test.c" # string offset=101 562.Linfo_string2: 563 .asciz "Examples" # string offset=135 564.Linfo_string3: 565 .asciz "_Z1fi" # string offset=182 566.Linfo_string4: 567 .asciz "f" # string offset=188 568.Linfo_string5: 569 .asciz "int" # string offset=190 570.Linfo_string6: 571 .asciz "_Z1gi" # string offset=194 572.Linfo_string7: 573 .asciz "g" # string offset=200 574.Linfo_string8: 575 .asciz "_Z1hi" # string offset=202 576.Linfo_string9: 577 .asciz "h" # string offset=208 578.Linfo_string10: 579 .asciz "main" # string offset=210 580.Linfo_string11: 581 .asciz "a" # string offset=215 582.Linfo_string12: 583 .asciz "argc" # string offset=217 584.Linfo_string13: 585 .asciz "argv" # string offset=222 586.Linfo_string14: 587 .asciz "char" # string offset=227 588 .ident "clang version 12.0.0 (git@github.com:llvm/llvm-project.git bfa6ca07a8cda0ab889b7fee0b914907ce594e11)" 589 .section ".note.GNU-stack","",@progbits 590 .addrsig 591 .addrsig_sym _Z1fi 592 .addrsig_sym _Z1gi 593 .addrsig_sym _Z1hi 594 .section .debug_line,"",@progbits 595.Lline_table_start0: 596