xref: /llvm-project/bolt/test/X86/dwarf4-size-0-inlined_subroutine.s (revision 11791ae7b0b05b8bd8d806331ff51da618912cf8)
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