1ccbf28b0SAlexander Yermolovich# REQUIRES: system-linux 2ccbf28b0SAlexander Yermolovich 3ccbf28b0SAlexander Yermolovich# RUN: llvm-mc -dwarf-version=4 -filetype=obj -triple x86_64-unknown-linux %s -o %tmain.o 42afc90a2SAlexander Yermolovich# RUN: %clang %cflags -dwarf-4 %tmain.o -o %t.exe -Wl,-q 52afc90a2SAlexander Yermolovich# RUN: llvm-bolt %t.exe -o %t.bolt --update-debug-sections --use-old-text 62afc90a2SAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.bolt > %t.txt 72afc90a2SAlexander Yermolovich# RUN: llvm-dwarfdump --show-form --verbose --debug-info %t.exe >> %t.txt 82afc90a2SAlexander Yermolovich# RUN: cat %t.txt | FileCheck --check-prefix=CHECK %s 9ccbf28b0SAlexander Yermolovich 10ccbf28b0SAlexander Yermolovich# CHECK: DW_TAG_inlined_subroutine 11ccbf28b0SAlexander Yermolovich# CHECK: DW_AT_low_pc [DW_FORM_addr] (0x[[#%.16x,ADDR:]]) 1275f770a6SAlexander Yermolovich# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000000) 13ccbf28b0SAlexander Yermolovich 142afc90a2SAlexander Yermolovich# CHECK: DW_TAG_inlined_subroutine 152afc90a2SAlexander Yermolovich# CHECK-NOT: DW_AT_low_pc [DW_FORM_addr] (0x[[#ADDR]]) 1675f770a6SAlexander Yermolovich# CHECK: DW_AT_high_pc [DW_FORM_data4] (0x00000000) 172afc90a2SAlexander Yermolovich 18ccbf28b0SAlexander Yermolovich 19*11791ae7SSayhaan Siddiqui## Testing BOLT handles correctly when size of DW_AT_inlined_subroutine is 0. 20*11791ae7SSayhaan Siddiqui## In other words DW_AT_high_pc is 0 or DW_AT_low_pc == DW_AT_high_pc. 21ccbf28b0SAlexander Yermolovich 22ccbf28b0SAlexander Yermolovich# Modified assembly manually to set DW_AT_high_pc to 0. 232afc90a2SAlexander Yermolovich# clang++ -g2 -gdwarf-4 main.cpp -O1 -S -o main4.s 242afc90a2SAlexander Yermolovich 25ccbf28b0SAlexander Yermolovich# static int helper(int i) { 26ccbf28b0SAlexander Yermolovich# return ++i; 27ccbf28b0SAlexander Yermolovich# } 282afc90a2SAlexander Yermolovich# void may_not_exist(void) __attribute__ ((weak)); 29ccbf28b0SAlexander Yermolovich# int main(int argc, char *argv[]) { 302afc90a2SAlexander Yermolovich# if (may_not_exist) 312afc90a2SAlexander Yermolovich# may_not_exist(); 322afc90a2SAlexander Yermolovich# int j = 0; 332afc90a2SAlexander Yermolovich# [[clang::always_inline]] j = helper(argc); 342afc90a2SAlexander Yermolovich# return j; 35ccbf28b0SAlexander Yermolovich# } 36ccbf28b0SAlexander Yermolovich 372afc90a2SAlexander Yermolovich 38ccbf28b0SAlexander Yermolovich .text 39ccbf28b0SAlexander Yermolovich .file "main.cpp" 40ccbf28b0SAlexander Yermolovich .globl main # -- Begin function main 41ccbf28b0SAlexander Yermolovich .p2align 4, 0x90 42ccbf28b0SAlexander Yermolovich .type main,@function 43ccbf28b0SAlexander Yermolovichmain: # @main 442afc90a2SAlexander Yermolovich.Lfunc_begin0: 452afc90a2SAlexander Yermolovich .file 1 "." "main.cpp" 462afc90a2SAlexander Yermolovich .loc 1 5 0 # main.cpp:5:0 47ccbf28b0SAlexander Yermolovich .cfi_startproc 48ccbf28b0SAlexander Yermolovich# %bb.0: # %entry 49ccbf28b0SAlexander Yermolovich #DEBUG_VALUE: main:argc <- $edi 50ccbf28b0SAlexander Yermolovich #DEBUG_VALUE: main:argv <- $rsi 512afc90a2SAlexander Yermolovich pushq %rbx 522afc90a2SAlexander Yermolovich .cfi_def_cfa_offset 16 532afc90a2SAlexander Yermolovich .cfi_offset %rbx, -16 542afc90a2SAlexander Yermolovich movl %edi, %ebx 552afc90a2SAlexander Yermolovich.Ltmp0: 562afc90a2SAlexander Yermolovich .loc 1 6 7 prologue_end # main.cpp:6:7 572afc90a2SAlexander Yermolovich cmpq $0, _Z13may_not_existv@GOTPCREL(%rip) 582afc90a2SAlexander Yermolovich je .LBB0_2 592afc90a2SAlexander Yermolovich.Ltmp1: 602afc90a2SAlexander Yermolovich# %bb.1: # %if.then 612afc90a2SAlexander Yermolovich #DEBUG_VALUE: main:argc <- $ebx 622afc90a2SAlexander Yermolovich #DEBUG_VALUE: main:argv <- $rsi 632afc90a2SAlexander Yermolovich .loc 1 7 5 # main.cpp:7:5 642afc90a2SAlexander Yermolovich callq _Z13may_not_existv@PLT 65ccbf28b0SAlexander Yermolovich.Ltmp2: 662afc90a2SAlexander Yermolovich #DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi 672afc90a2SAlexander Yermolovich.LBB0_2: # %if.end 682afc90a2SAlexander Yermolovich #DEBUG_VALUE: main:argc <- $ebx 692afc90a2SAlexander Yermolovich #DEBUG_VALUE: main:argv <- [DW_OP_LLVM_entry_value 1] $rsi 702afc90a2SAlexander Yermolovich #DEBUG_VALUE: main:j <- 0 712afc90a2SAlexander Yermolovich #DEBUG_VALUE: helper:i <- $ebx 722afc90a2SAlexander Yermolovich .loc 1 2 10 # main.cpp:2:10 732afc90a2SAlexander Yermolovich incl %ebx 74ccbf28b0SAlexander Yermolovich.Ltmp3: 752afc90a2SAlexander Yermolovich #DEBUG_VALUE: main:argc <- [DW_OP_LLVM_entry_value 1] $edi 762afc90a2SAlexander Yermolovich #DEBUG_VALUE: helper:i <- $ebx 772afc90a2SAlexander Yermolovich #DEBUG_VALUE: main:j <- $ebx 782afc90a2SAlexander Yermolovich .loc 1 10 3 # main.cpp:10:3 792afc90a2SAlexander Yermolovich movl %ebx, %eax 802afc90a2SAlexander Yermolovich popq %rbx 812afc90a2SAlexander Yermolovich.Ltmp4: 822afc90a2SAlexander Yermolovich #DEBUG_VALUE: helper:i <- $eax 832afc90a2SAlexander Yermolovich #DEBUG_VALUE: main:j <- $eax 842afc90a2SAlexander Yermolovich .cfi_def_cfa_offset 8 852afc90a2SAlexander Yermolovich retq 862afc90a2SAlexander Yermolovich.Ltmp5: 872afc90a2SAlexander Yermolovich.Lfunc_end0: 882afc90a2SAlexander Yermolovich .size main, .Lfunc_end0-main 89ccbf28b0SAlexander Yermolovich .cfi_endproc 90ccbf28b0SAlexander Yermolovich # -- End function 91ccbf28b0SAlexander Yermolovich .section .debug_loc,"",@progbits 92ccbf28b0SAlexander Yermolovich.Ldebug_loc0: 93ccbf28b0SAlexander Yermolovich .quad .Lfunc_begin0-.Lfunc_begin0 942afc90a2SAlexander Yermolovich .quad .Ltmp1-.Lfunc_begin0 95ccbf28b0SAlexander Yermolovich .short 1 # Loc expr size 96ccbf28b0SAlexander Yermolovich .byte 85 # super-register DW_OP_reg5 972afc90a2SAlexander Yermolovich .quad .Ltmp1-.Lfunc_begin0 982afc90a2SAlexander Yermolovich .quad .Ltmp3-.Lfunc_begin0 99ccbf28b0SAlexander Yermolovich .short 1 # Loc expr size 1002afc90a2SAlexander Yermolovich .byte 83 # super-register DW_OP_reg3 1012afc90a2SAlexander Yermolovich .quad .Ltmp3-.Lfunc_begin0 1022afc90a2SAlexander Yermolovich .quad .Lfunc_end0-.Lfunc_begin0 1032afc90a2SAlexander Yermolovich .short 4 # Loc expr size 1042afc90a2SAlexander Yermolovich .byte 243 # DW_OP_GNU_entry_value 1052afc90a2SAlexander Yermolovich .byte 1 # 1 1062afc90a2SAlexander Yermolovich .byte 85 # super-register DW_OP_reg5 1072afc90a2SAlexander Yermolovich .byte 159 # DW_OP_stack_value 108ccbf28b0SAlexander Yermolovich .quad 0 109ccbf28b0SAlexander Yermolovich .quad 0 110ccbf28b0SAlexander Yermolovich.Ldebug_loc1: 1112afc90a2SAlexander Yermolovich .quad .Lfunc_begin0-.Lfunc_begin0 112ccbf28b0SAlexander Yermolovich .quad .Ltmp2-.Lfunc_begin0 113ccbf28b0SAlexander Yermolovich .short 1 # Loc expr size 1142afc90a2SAlexander Yermolovich .byte 84 # DW_OP_reg4 115ccbf28b0SAlexander Yermolovich .quad .Ltmp2-.Lfunc_begin0 1162afc90a2SAlexander Yermolovich .quad .Lfunc_end0-.Lfunc_begin0 1172afc90a2SAlexander Yermolovich .short 4 # Loc expr size 1182afc90a2SAlexander Yermolovich .byte 243 # DW_OP_GNU_entry_value 1192afc90a2SAlexander Yermolovich .byte 1 # 1 1202afc90a2SAlexander Yermolovich .byte 84 # DW_OP_reg4 1212afc90a2SAlexander Yermolovich .byte 159 # DW_OP_stack_value 1222afc90a2SAlexander Yermolovich .quad 0 1232afc90a2SAlexander Yermolovich .quad 0 1242afc90a2SAlexander Yermolovich.Ldebug_loc2: 1252afc90a2SAlexander Yermolovich .quad .Ltmp2-.Lfunc_begin0 1262afc90a2SAlexander Yermolovich .quad .Ltmp3-.Lfunc_begin0 1272afc90a2SAlexander Yermolovich .short 3 # Loc expr size 1282afc90a2SAlexander Yermolovich .byte 17 # DW_OP_consts 1292afc90a2SAlexander Yermolovich .byte 0 # 0 1302afc90a2SAlexander Yermolovich .byte 159 # DW_OP_stack_value 1312afc90a2SAlexander Yermolovich .quad .Ltmp3-.Lfunc_begin0 1322afc90a2SAlexander Yermolovich .quad .Ltmp4-.Lfunc_begin0 1332afc90a2SAlexander Yermolovich .short 1 # Loc expr size 1342afc90a2SAlexander Yermolovich .byte 83 # super-register DW_OP_reg3 1352afc90a2SAlexander Yermolovich .quad .Ltmp4-.Lfunc_begin0 1362afc90a2SAlexander Yermolovich .quad .Lfunc_end0-.Lfunc_begin0 137ccbf28b0SAlexander Yermolovich .short 1 # Loc expr size 138ccbf28b0SAlexander Yermolovich .byte 80 # super-register DW_OP_reg0 139ccbf28b0SAlexander Yermolovich .quad 0 140ccbf28b0SAlexander Yermolovich .quad 0 141ccbf28b0SAlexander Yermolovich .section .debug_abbrev,"",@progbits 142ccbf28b0SAlexander Yermolovich .byte 1 # Abbreviation Code 143ccbf28b0SAlexander Yermolovich .byte 17 # DW_TAG_compile_unit 144ccbf28b0SAlexander Yermolovich .byte 1 # DW_CHILDREN_yes 145ccbf28b0SAlexander Yermolovich .byte 37 # DW_AT_producer 146ccbf28b0SAlexander Yermolovich .byte 14 # DW_FORM_strp 147ccbf28b0SAlexander Yermolovich .byte 19 # DW_AT_language 148ccbf28b0SAlexander Yermolovich .byte 5 # DW_FORM_data2 149ccbf28b0SAlexander Yermolovich .byte 3 # DW_AT_name 150ccbf28b0SAlexander Yermolovich .byte 14 # DW_FORM_strp 151ccbf28b0SAlexander Yermolovich .byte 16 # DW_AT_stmt_list 152ccbf28b0SAlexander Yermolovich .byte 23 # DW_FORM_sec_offset 153ccbf28b0SAlexander Yermolovich .byte 27 # DW_AT_comp_dir 154ccbf28b0SAlexander Yermolovich .byte 14 # DW_FORM_strp 155ccbf28b0SAlexander Yermolovich .byte 17 # DW_AT_low_pc 156ccbf28b0SAlexander Yermolovich .byte 1 # DW_FORM_addr 157ccbf28b0SAlexander Yermolovich .byte 18 # DW_AT_high_pc 158ccbf28b0SAlexander Yermolovich .byte 6 # DW_FORM_data4 159ccbf28b0SAlexander Yermolovich .byte 0 # EOM(1) 160ccbf28b0SAlexander Yermolovich .byte 0 # EOM(2) 161ccbf28b0SAlexander Yermolovich .byte 2 # Abbreviation Code 162ccbf28b0SAlexander Yermolovich .byte 46 # DW_TAG_subprogram 163ccbf28b0SAlexander Yermolovich .byte 1 # DW_CHILDREN_yes 164ccbf28b0SAlexander Yermolovich .byte 110 # DW_AT_linkage_name 165ccbf28b0SAlexander Yermolovich .byte 14 # DW_FORM_strp 166ccbf28b0SAlexander Yermolovich .byte 3 # DW_AT_name 167ccbf28b0SAlexander Yermolovich .byte 14 # DW_FORM_strp 168ccbf28b0SAlexander Yermolovich .byte 58 # DW_AT_decl_file 169ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 170ccbf28b0SAlexander Yermolovich .byte 59 # DW_AT_decl_line 171ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 172ccbf28b0SAlexander Yermolovich .byte 73 # DW_AT_type 173ccbf28b0SAlexander Yermolovich .byte 19 # DW_FORM_ref4 174ccbf28b0SAlexander Yermolovich .byte 32 # DW_AT_inline 175ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 176ccbf28b0SAlexander Yermolovich .byte 0 # EOM(1) 177ccbf28b0SAlexander Yermolovich .byte 0 # EOM(2) 1782afc90a2SAlexander Yermolovich .byte 3 # Abbreviation Code 179ccbf28b0SAlexander Yermolovich .byte 5 # DW_TAG_formal_parameter 180ccbf28b0SAlexander Yermolovich .byte 0 # DW_CHILDREN_no 181ccbf28b0SAlexander Yermolovich .byte 3 # DW_AT_name 182ccbf28b0SAlexander Yermolovich .byte 14 # DW_FORM_strp 183ccbf28b0SAlexander Yermolovich .byte 58 # DW_AT_decl_file 184ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 185ccbf28b0SAlexander Yermolovich .byte 59 # DW_AT_decl_line 186ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 187ccbf28b0SAlexander Yermolovich .byte 73 # DW_AT_type 188ccbf28b0SAlexander Yermolovich .byte 19 # DW_FORM_ref4 189ccbf28b0SAlexander Yermolovich .byte 0 # EOM(1) 190ccbf28b0SAlexander Yermolovich .byte 0 # EOM(2) 1912afc90a2SAlexander Yermolovich .byte 4 # Abbreviation Code 192ccbf28b0SAlexander Yermolovich .byte 36 # DW_TAG_base_type 193ccbf28b0SAlexander Yermolovich .byte 0 # DW_CHILDREN_no 194ccbf28b0SAlexander Yermolovich .byte 3 # DW_AT_name 195ccbf28b0SAlexander Yermolovich .byte 14 # DW_FORM_strp 196ccbf28b0SAlexander Yermolovich .byte 62 # DW_AT_encoding 197ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 198ccbf28b0SAlexander Yermolovich .byte 11 # DW_AT_byte_size 199ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 200ccbf28b0SAlexander Yermolovich .byte 0 # EOM(1) 201ccbf28b0SAlexander Yermolovich .byte 0 # EOM(2) 2022afc90a2SAlexander Yermolovich .byte 5 # Abbreviation Code 203ccbf28b0SAlexander Yermolovich .byte 46 # DW_TAG_subprogram 204ccbf28b0SAlexander Yermolovich .byte 1 # DW_CHILDREN_yes 205ccbf28b0SAlexander Yermolovich .byte 17 # DW_AT_low_pc 206ccbf28b0SAlexander Yermolovich .byte 1 # DW_FORM_addr 207ccbf28b0SAlexander Yermolovich .byte 18 # DW_AT_high_pc 208ccbf28b0SAlexander Yermolovich .byte 6 # DW_FORM_data4 209ccbf28b0SAlexander Yermolovich .byte 64 # DW_AT_frame_base 210ccbf28b0SAlexander Yermolovich .byte 24 # DW_FORM_exprloc 211ccbf28b0SAlexander Yermolovich .ascii "\227B" # DW_AT_GNU_all_call_sites 212ccbf28b0SAlexander Yermolovich .byte 25 # DW_FORM_flag_present 213ccbf28b0SAlexander Yermolovich .byte 3 # DW_AT_name 214ccbf28b0SAlexander Yermolovich .byte 14 # DW_FORM_strp 215ccbf28b0SAlexander Yermolovich .byte 58 # DW_AT_decl_file 216ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 217ccbf28b0SAlexander Yermolovich .byte 59 # DW_AT_decl_line 218ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 219ccbf28b0SAlexander Yermolovich .byte 73 # DW_AT_type 220ccbf28b0SAlexander Yermolovich .byte 19 # DW_FORM_ref4 221ccbf28b0SAlexander Yermolovich .byte 63 # DW_AT_external 222ccbf28b0SAlexander Yermolovich .byte 25 # DW_FORM_flag_present 223ccbf28b0SAlexander Yermolovich .byte 0 # EOM(1) 224ccbf28b0SAlexander Yermolovich .byte 0 # EOM(2) 2252afc90a2SAlexander Yermolovich .byte 6 # Abbreviation Code 226ccbf28b0SAlexander Yermolovich .byte 5 # DW_TAG_formal_parameter 227ccbf28b0SAlexander Yermolovich .byte 0 # DW_CHILDREN_no 228ccbf28b0SAlexander Yermolovich .byte 2 # DW_AT_location 2292afc90a2SAlexander Yermolovich .byte 23 # DW_FORM_sec_offset 230ccbf28b0SAlexander Yermolovich .byte 3 # DW_AT_name 231ccbf28b0SAlexander Yermolovich .byte 14 # DW_FORM_strp 232ccbf28b0SAlexander Yermolovich .byte 58 # DW_AT_decl_file 233ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 234ccbf28b0SAlexander Yermolovich .byte 59 # DW_AT_decl_line 235ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 236ccbf28b0SAlexander Yermolovich .byte 73 # DW_AT_type 237ccbf28b0SAlexander Yermolovich .byte 19 # DW_FORM_ref4 238ccbf28b0SAlexander Yermolovich .byte 0 # EOM(1) 239ccbf28b0SAlexander Yermolovich .byte 0 # EOM(2) 2402afc90a2SAlexander Yermolovich .byte 7 # Abbreviation Code 2412afc90a2SAlexander Yermolovich .byte 52 # DW_TAG_variable 2422afc90a2SAlexander Yermolovich .byte 0 # DW_CHILDREN_no 2432afc90a2SAlexander Yermolovich .byte 2 # DW_AT_location 2442afc90a2SAlexander Yermolovich .byte 23 # DW_FORM_sec_offset 2452afc90a2SAlexander Yermolovich .byte 3 # DW_AT_name 2462afc90a2SAlexander Yermolovich .byte 14 # DW_FORM_strp 2472afc90a2SAlexander Yermolovich .byte 58 # DW_AT_decl_file 2482afc90a2SAlexander Yermolovich .byte 11 # DW_FORM_data1 2492afc90a2SAlexander Yermolovich .byte 59 # DW_AT_decl_line 2502afc90a2SAlexander Yermolovich .byte 11 # DW_FORM_data1 2512afc90a2SAlexander Yermolovich .byte 73 # DW_AT_type 2522afc90a2SAlexander Yermolovich .byte 19 # DW_FORM_ref4 2532afc90a2SAlexander Yermolovich .byte 0 # EOM(1) 2542afc90a2SAlexander Yermolovich .byte 0 # EOM(2) 2552afc90a2SAlexander Yermolovich .byte 8 # Abbreviation Code 256ccbf28b0SAlexander Yermolovich .byte 29 # DW_TAG_inlined_subroutine 257ccbf28b0SAlexander Yermolovich .byte 1 # DW_CHILDREN_yes 258ccbf28b0SAlexander Yermolovich .byte 49 # DW_AT_abstract_origin 259ccbf28b0SAlexander Yermolovich .byte 19 # DW_FORM_ref4 260ccbf28b0SAlexander Yermolovich .byte 17 # DW_AT_low_pc 261ccbf28b0SAlexander Yermolovich .byte 1 # DW_FORM_addr 262ccbf28b0SAlexander Yermolovich .byte 18 # DW_AT_high_pc 263ccbf28b0SAlexander Yermolovich .byte 6 # DW_FORM_data4 264ccbf28b0SAlexander Yermolovich .byte 88 # DW_AT_call_file 265ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 266ccbf28b0SAlexander Yermolovich .byte 89 # DW_AT_call_line 267ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 268ccbf28b0SAlexander Yermolovich .byte 87 # DW_AT_call_column 269ccbf28b0SAlexander Yermolovich .byte 11 # DW_FORM_data1 270ccbf28b0SAlexander Yermolovich .byte 0 # EOM(1) 271ccbf28b0SAlexander Yermolovich .byte 0 # EOM(2) 2722afc90a2SAlexander Yermolovich .byte 9 # Abbreviation Code 2732afc90a2SAlexander Yermolovich .byte 5 # DW_TAG_formal_parameter 2742afc90a2SAlexander Yermolovich .byte 0 # DW_CHILDREN_no 2752afc90a2SAlexander Yermolovich .byte 2 # DW_AT_location 2762afc90a2SAlexander Yermolovich .byte 24 # DW_FORM_exprloc 2772afc90a2SAlexander Yermolovich .byte 49 # DW_AT_abstract_origin 2782afc90a2SAlexander Yermolovich .byte 19 # DW_FORM_ref4 2792afc90a2SAlexander Yermolovich .byte 0 # EOM(1) 2802afc90a2SAlexander Yermolovich .byte 0 # EOM(2) 281ccbf28b0SAlexander Yermolovich .byte 10 # Abbreviation Code 2822afc90a2SAlexander Yermolovich .ascii "\211\202\001" # DW_TAG_GNU_call_site 2832afc90a2SAlexander Yermolovich .byte 0 # DW_CHILDREN_no 2842afc90a2SAlexander Yermolovich .byte 49 # DW_AT_abstract_origin 2852afc90a2SAlexander Yermolovich .byte 19 # DW_FORM_ref4 2862afc90a2SAlexander Yermolovich .byte 17 # DW_AT_low_pc 2872afc90a2SAlexander Yermolovich .byte 1 # DW_FORM_addr 2882afc90a2SAlexander Yermolovich .byte 0 # EOM(1) 2892afc90a2SAlexander Yermolovich .byte 0 # EOM(2) 2902afc90a2SAlexander Yermolovich .byte 11 # Abbreviation Code 2912afc90a2SAlexander Yermolovich .byte 46 # DW_TAG_subprogram 2922afc90a2SAlexander Yermolovich .byte 0 # DW_CHILDREN_no 2932afc90a2SAlexander Yermolovich .byte 110 # DW_AT_linkage_name 2942afc90a2SAlexander Yermolovich .byte 14 # DW_FORM_strp 2952afc90a2SAlexander Yermolovich .byte 3 # DW_AT_name 2962afc90a2SAlexander Yermolovich .byte 14 # DW_FORM_strp 2972afc90a2SAlexander Yermolovich .byte 58 # DW_AT_decl_file 2982afc90a2SAlexander Yermolovich .byte 11 # DW_FORM_data1 2992afc90a2SAlexander Yermolovich .byte 59 # DW_AT_decl_line 3002afc90a2SAlexander Yermolovich .byte 11 # DW_FORM_data1 3012afc90a2SAlexander Yermolovich .byte 60 # DW_AT_declaration 3022afc90a2SAlexander Yermolovich .byte 25 # DW_FORM_flag_present 3032afc90a2SAlexander Yermolovich .byte 63 # DW_AT_external 3042afc90a2SAlexander Yermolovich .byte 25 # DW_FORM_flag_present 3052afc90a2SAlexander Yermolovich .byte 0 # EOM(1) 3062afc90a2SAlexander Yermolovich .byte 0 # EOM(2) 3072afc90a2SAlexander Yermolovich .byte 12 # Abbreviation Code 308ccbf28b0SAlexander Yermolovich .byte 15 # DW_TAG_pointer_type 309ccbf28b0SAlexander Yermolovich .byte 0 # DW_CHILDREN_no 310ccbf28b0SAlexander Yermolovich .byte 73 # DW_AT_type 311ccbf28b0SAlexander Yermolovich .byte 19 # DW_FORM_ref4 312ccbf28b0SAlexander Yermolovich .byte 0 # EOM(1) 313ccbf28b0SAlexander Yermolovich .byte 0 # EOM(2) 314ccbf28b0SAlexander Yermolovich .byte 0 # EOM(3) 315ccbf28b0SAlexander Yermolovich .section .debug_info,"",@progbits 316ccbf28b0SAlexander Yermolovich.Lcu_begin0: 317ccbf28b0SAlexander Yermolovich .long .Ldebug_info_end0-.Ldebug_info_start0 # Length of Unit 318ccbf28b0SAlexander Yermolovich.Ldebug_info_start0: 319ccbf28b0SAlexander Yermolovich .short 4 # DWARF version number 320ccbf28b0SAlexander Yermolovich .long .debug_abbrev # Offset Into Abbrev. Section 321ccbf28b0SAlexander Yermolovich .byte 8 # Address Size (in bytes) 3222afc90a2SAlexander Yermolovich .byte 1 # Abbrev [1] 0xb:0xcf DW_TAG_compile_unit 323ccbf28b0SAlexander Yermolovich .long .Linfo_string0 # DW_AT_producer 324ccbf28b0SAlexander Yermolovich .short 33 # DW_AT_language 325ccbf28b0SAlexander Yermolovich .long .Linfo_string1 # DW_AT_name 326ccbf28b0SAlexander Yermolovich .long .Lline_table_start0 # DW_AT_stmt_list 327ccbf28b0SAlexander Yermolovich .long .Linfo_string2 # DW_AT_comp_dir 328ccbf28b0SAlexander Yermolovich .quad .Lfunc_begin0 # DW_AT_low_pc 3292afc90a2SAlexander Yermolovich .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 3302afc90a2SAlexander Yermolovich .byte 2 # Abbrev [2] 0x2a:0x1c DW_TAG_subprogram 3312afc90a2SAlexander Yermolovich .long .Linfo_string3 # DW_AT_linkage_name 3322afc90a2SAlexander Yermolovich .long .Linfo_string4 # DW_AT_name 3332afc90a2SAlexander Yermolovich .byte 1 # DW_AT_decl_file 3342afc90a2SAlexander Yermolovich .byte 1 # DW_AT_decl_line 3352afc90a2SAlexander Yermolovich .long 70 # DW_AT_type 3362afc90a2SAlexander Yermolovich .byte 1 # DW_AT_inline 3372afc90a2SAlexander Yermolovich .byte 3 # Abbrev [3] 0x3a:0xb DW_TAG_formal_parameter 3382afc90a2SAlexander Yermolovich .long .Linfo_string6 # DW_AT_name 3392afc90a2SAlexander Yermolovich .byte 1 # DW_AT_decl_file 3402afc90a2SAlexander Yermolovich .byte 1 # DW_AT_decl_line 3412afc90a2SAlexander Yermolovich .long 70 # DW_AT_type 3422afc90a2SAlexander Yermolovich .byte 0 # End Of Children Mark 3432afc90a2SAlexander Yermolovich .byte 4 # Abbrev [4] 0x46:0x7 DW_TAG_base_type 3442afc90a2SAlexander Yermolovich .long .Linfo_string5 # DW_AT_name 3452afc90a2SAlexander Yermolovich .byte 5 # DW_AT_encoding 3462afc90a2SAlexander Yermolovich .byte 4 # DW_AT_byte_size 3472afc90a2SAlexander Yermolovich .byte 5 # Abbrev [5] 0x4d:0x70 DW_TAG_subprogram 348ccbf28b0SAlexander Yermolovich .quad .Lfunc_begin0 # DW_AT_low_pc 349ccbf28b0SAlexander Yermolovich .long .Lfunc_end0-.Lfunc_begin0 # DW_AT_high_pc 350ccbf28b0SAlexander Yermolovich .byte 1 # DW_AT_frame_base 351ccbf28b0SAlexander Yermolovich .byte 87 352ccbf28b0SAlexander Yermolovich # DW_AT_GNU_all_call_sites 353ccbf28b0SAlexander Yermolovich .long .Linfo_string9 # DW_AT_name 354ccbf28b0SAlexander Yermolovich .byte 1 # DW_AT_decl_file 355ccbf28b0SAlexander Yermolovich .byte 5 # DW_AT_decl_line 3562afc90a2SAlexander Yermolovich .long 70 # DW_AT_type 3572afc90a2SAlexander Yermolovich # DW_AT_external 3582afc90a2SAlexander Yermolovich .byte 6 # Abbrev [6] 0x66:0xf DW_TAG_formal_parameter 3592afc90a2SAlexander Yermolovich .long .Ldebug_loc0 # DW_AT_location 360ccbf28b0SAlexander Yermolovich .long .Linfo_string10 # DW_AT_name 3612afc90a2SAlexander Yermolovich .byte 1 # DW_AT_decl_file 3622afc90a2SAlexander Yermolovich .byte 5 # DW_AT_decl_line 3632afc90a2SAlexander Yermolovich .long 70 # DW_AT_type 3642afc90a2SAlexander Yermolovich .byte 6 # Abbrev [6] 0x75:0xf DW_TAG_formal_parameter 3652afc90a2SAlexander Yermolovich .long .Ldebug_loc1 # DW_AT_location 3662afc90a2SAlexander Yermolovich .long .Linfo_string11 # DW_AT_name 3672afc90a2SAlexander Yermolovich .byte 1 # DW_AT_decl_file 3682afc90a2SAlexander Yermolovich .byte 5 # DW_AT_decl_line 3692afc90a2SAlexander Yermolovich .long 200 # DW_AT_type 3702afc90a2SAlexander Yermolovich .byte 7 # Abbrev [7] 0x84:0xf DW_TAG_variable 3712afc90a2SAlexander Yermolovich .long .Ldebug_loc2 # DW_AT_location 3722afc90a2SAlexander Yermolovich .long .Linfo_string13 # DW_AT_name 3732afc90a2SAlexander Yermolovich .byte 1 # DW_AT_decl_file 3742afc90a2SAlexander Yermolovich .byte 8 # DW_AT_decl_line 3752afc90a2SAlexander Yermolovich .long 70 # DW_AT_type 3762afc90a2SAlexander Yermolovich .byte 8 # Abbrev [8] 0x93:0x1c DW_TAG_inlined_subroutine 3772afc90a2SAlexander Yermolovich .long 42 # DW_AT_abstract_origin 3782afc90a2SAlexander Yermolovich .quad .Ltmp2 # DW_AT_low_pc 3792afc90a2SAlexander Yermolovich .long 0 # DW_AT_high_pc Manually modified 3802afc90a2SAlexander Yermolovich .byte 1 # DW_AT_call_file 3812afc90a2SAlexander Yermolovich .byte 9 # DW_AT_call_line 3822afc90a2SAlexander Yermolovich .byte 32 # DW_AT_call_column 3832afc90a2SAlexander Yermolovich .byte 9 # Abbrev [9] 0xa7:0x7 DW_TAG_formal_parameter 3842afc90a2SAlexander Yermolovich .byte 1 # DW_AT_location 3852afc90a2SAlexander Yermolovich .byte 83 3862afc90a2SAlexander Yermolovich .long 58 # DW_AT_abstract_origin 3872afc90a2SAlexander Yermolovich .byte 0 # End Of Children Mark 3882afc90a2SAlexander Yermolovich .byte 10 # Abbrev [10] 0xaf:0xd DW_TAG_GNU_call_site 3892afc90a2SAlexander Yermolovich .long 189 # DW_AT_abstract_origin 3902afc90a2SAlexander Yermolovich .quad .Ltmp2 # DW_AT_low_pc 3912afc90a2SAlexander Yermolovich .byte 0 # End Of Children Mark 3922afc90a2SAlexander Yermolovich .byte 11 # Abbrev [11] 0xbd:0xb DW_TAG_subprogram 3932afc90a2SAlexander Yermolovich .long .Linfo_string7 # DW_AT_linkage_name 3942afc90a2SAlexander Yermolovich .long .Linfo_string8 # DW_AT_name 3952afc90a2SAlexander Yermolovich .byte 1 # DW_AT_decl_file 3962afc90a2SAlexander Yermolovich .byte 4 # DW_AT_decl_line 3972afc90a2SAlexander Yermolovich # DW_AT_declaration 3982afc90a2SAlexander Yermolovich # DW_AT_external 3992afc90a2SAlexander Yermolovich .byte 12 # Abbrev [12] 0xc8:0x5 DW_TAG_pointer_type 4002afc90a2SAlexander Yermolovich .long 205 # DW_AT_type 4012afc90a2SAlexander Yermolovich .byte 12 # Abbrev [12] 0xcd:0x5 DW_TAG_pointer_type 4022afc90a2SAlexander Yermolovich .long 210 # DW_AT_type 4032afc90a2SAlexander Yermolovich .byte 4 # Abbrev [4] 0xd2:0x7 DW_TAG_base_type 4042afc90a2SAlexander Yermolovich .long .Linfo_string12 # DW_AT_name 405ccbf28b0SAlexander Yermolovich .byte 6 # DW_AT_encoding 406ccbf28b0SAlexander Yermolovich .byte 1 # DW_AT_byte_size 407ccbf28b0SAlexander Yermolovich .byte 0 # End Of Children Mark 408ccbf28b0SAlexander Yermolovich.Ldebug_info_end0: 409ccbf28b0SAlexander Yermolovich .section .debug_str,"MS",@progbits,1 410ccbf28b0SAlexander Yermolovich.Linfo_string0: 4112afc90a2SAlexander Yermolovich .asciz "clang version 16.0.0" # string offset=0 412ccbf28b0SAlexander Yermolovich.Linfo_string1: 4132afc90a2SAlexander Yermolovich .asciz "main.cpp" # string offset=105 414ccbf28b0SAlexander Yermolovich.Linfo_string2: 4152afc90a2SAlexander Yermolovich .asciz "." # string offset=114 416ccbf28b0SAlexander Yermolovich.Linfo_string3: 4172afc90a2SAlexander Yermolovich .asciz "_ZL6helperi" # string offset=152 418ccbf28b0SAlexander Yermolovich.Linfo_string4: 4192afc90a2SAlexander Yermolovich .asciz "helper" # string offset=164 420ccbf28b0SAlexander Yermolovich.Linfo_string5: 4212afc90a2SAlexander Yermolovich .asciz "int" # string offset=171 422ccbf28b0SAlexander Yermolovich.Linfo_string6: 4232afc90a2SAlexander Yermolovich .asciz "i" # string offset=175 424ccbf28b0SAlexander Yermolovich.Linfo_string7: 4252afc90a2SAlexander Yermolovich .asciz "_Z13may_not_existv" # string offset=177 426ccbf28b0SAlexander Yermolovich.Linfo_string8: 4272afc90a2SAlexander Yermolovich .asciz "may_not_exist" # string offset=196 428ccbf28b0SAlexander Yermolovich.Linfo_string9: 4292afc90a2SAlexander Yermolovich .asciz "main" # string offset=210 430ccbf28b0SAlexander Yermolovich.Linfo_string10: 4312afc90a2SAlexander Yermolovich .asciz "argc" # string offset=215 4322afc90a2SAlexander Yermolovich.Linfo_string11: 4332afc90a2SAlexander Yermolovich .asciz "argv" # string offset=220 4342afc90a2SAlexander Yermolovich.Linfo_string12: 4352afc90a2SAlexander Yermolovich .asciz "char" # string offset=225 4362afc90a2SAlexander Yermolovich.Linfo_string13: 4372afc90a2SAlexander Yermolovich .asciz "j" # string offset=230 4382afc90a2SAlexander Yermolovich .weak _Z13may_not_existv 4392afc90a2SAlexander Yermolovich .ident "clang version 16.0.0" 440ccbf28b0SAlexander Yermolovich .section ".note.GNU-stack","",@progbits 441ccbf28b0SAlexander Yermolovich .addrsig 4422afc90a2SAlexander Yermolovich .addrsig_sym _Z13may_not_existv 443ccbf28b0SAlexander Yermolovich .section .debug_line,"",@progbits 444ccbf28b0SAlexander Yermolovich.Lline_table_start0: 445