xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/testsuite/gdb.btrace/i686-tailcall.S (revision aef5eb5f59cdfe8314f1b5f78ac04eb144e44010)
1/* This testcase is part of GDB, the GNU debugger.
2
3   Copyright 2013-2019 Free Software Foundation, Inc.
4
5   Contributed by Intel Corp. <markus.t.metzger@intel.com>
6
7   This program is free software; you can redistribute it and/or modify
8   it under the terms of the GNU General Public License as published by
9   the Free Software Foundation; either version 3 of the License, or
10   (at your option) any later version.
11
12   This program is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   GNU General Public License for more details.
16
17   You should have received a copy of the GNU General Public License
18   along with this program.  If not, see <http://www.gnu.org/licenses/>.
19
20
21   This file has been generated using:
22   gcc -S -O2 -dA -g tailcall.c -o i686-tailcall.S  */
23
24	.file	"tailcall.c"
25	.text
26.Ltext0:
27	.p2align 4,,15
28	.type	bar, @function
29bar:
30.LFB0:
31	.file 1 "tailcall.c"
32	# tailcall.c:22
33	.loc 1 22 0
34	.cfi_startproc
35# BLOCK 2 freq:10000 seq:0
36# PRED: ENTRY [100.0%]  (FALLTHRU)
37	# tailcall.c:24
38	.loc 1 24 0
39	movl	$42, %eax
40# SUCC: EXIT [100.0%]
41	ret
42	.cfi_endproc
43.LFE0:
44	.size	bar, .-bar
45	.p2align 4,,15
46	.type	foo, @function
47foo:
48.LFB1:
49	# tailcall.c:28
50	.loc 1 28 0
51	.cfi_startproc
52# BLOCK 2 freq:10000 seq:0
53# PRED: ENTRY [100.0%]  (FALLTHRU)
54	# tailcall.c:29
55	.loc 1 29 0
56	jmp	bar
57# SUCC: EXIT [100.0%]  (ABNORMAL,SIBCALL)
58.LVL0:
59	.cfi_endproc
60.LFE1:
61	.size	foo, .-foo
62	.section	.text.startup,"ax",@progbits
63	.p2align 4,,15
64	.globl	main
65	.type	main, @function
66main:
67.LFB2:
68	# tailcall.c:34
69	.loc 1 34 0
70	.cfi_startproc
71# BLOCK 2 freq:10000 seq:0
72# PRED: ENTRY [100.0%]  (FALLTHRU)
73	# tailcall.c:37
74	.loc 1 37 0
75	call	foo
76.LVL1:
77	# tailcall.c:38
78	.loc 1 38 0
79	addl	$1, %eax
80.LVL2:
81# SUCC: EXIT [100.0%]
82	# tailcall.c:41
83	.loc 1 41 0
84	ret
85	.cfi_endproc
86.LFE2:
87	.size	main, .-main
88	.text
89.Letext0:
90	.section	.debug_info,"",@progbits
91.Ldebug_info0:
92	.long	0x8f	# Length of Compilation Unit Info
93	.value	0x4	# DWARF version number
94	.long	.Ldebug_abbrev0	# Offset Into Abbrev. Section
95	.byte	0x4	# Pointer Size (in bytes)
96	.uleb128 0x1	# (DIE (0xb) DW_TAG_compile_unit)
97	.long	.LASF0	# DW_AT_producer: "GNU C 4.8.3 20140911 (Red Hat 4.8.3-7) -mtune=generic -march=i686 -g -O2"
98	.byte	0x1	# DW_AT_language
99	.long	.LASF1	# DW_AT_name: "tailcall.c"
100	.long	.LASF2	# DW_AT_comp_dir: ""
101	.long	.Ldebug_ranges0+0	# DW_AT_ranges
102	.long	0	# DW_AT_low_pc
103	.long	.Ldebug_line0	# DW_AT_stmt_list
104	.uleb128 0x2	# (DIE (0x25) DW_TAG_subprogram)
105	.ascii "bar\0"	# DW_AT_name
106	.byte	0x1	# DW_AT_decl_file (tailcall.c)
107	.byte	0x15	# DW_AT_decl_line
108			# DW_AT_prototyped
109	.long	0x3a	# DW_AT_type
110	.long	.LFB0	# DW_AT_low_pc
111	.long	.LFE0-.LFB0	# DW_AT_high_pc
112	.uleb128 0x1	# DW_AT_frame_base
113	.byte	0x9c	# DW_OP_call_frame_cfa
114			# DW_AT_GNU_all_call_sites
115	.uleb128 0x3	# (DIE (0x3a) DW_TAG_base_type)
116	.byte	0x4	# DW_AT_byte_size
117	.byte	0x5	# DW_AT_encoding
118	.ascii "int\0"	# DW_AT_name
119	.uleb128 0x4	# (DIE (0x41) DW_TAG_subprogram)
120	.ascii "foo\0"	# DW_AT_name
121	.byte	0x1	# DW_AT_decl_file (tailcall.c)
122	.byte	0x1b	# DW_AT_decl_line
123			# DW_AT_prototyped
124	.long	0x3a	# DW_AT_type
125	.long	.LFB1	# DW_AT_low_pc
126	.long	.LFE1-.LFB1	# DW_AT_high_pc
127	.uleb128 0x1	# DW_AT_frame_base
128	.byte	0x9c	# DW_OP_call_frame_cfa
129			# DW_AT_GNU_all_call_sites
130	.long	0x64	# DW_AT_sibling
131	.uleb128 0x5	# (DIE (0x5a) DW_TAG_GNU_call_site)
132	.long	.LVL0	# DW_AT_low_pc
133			# DW_AT_GNU_tail_call
134	.long	0x25	# DW_AT_abstract_origin
135	.byte	0	# end of children of DIE 0x41
136	.uleb128 0x6	# (DIE (0x64) DW_TAG_subprogram)
137			# DW_AT_external
138	.long	.LASF3	# DW_AT_name: "main"
139	.byte	0x1	# DW_AT_decl_file (tailcall.c)
140	.byte	0x21	# DW_AT_decl_line
141			# DW_AT_prototyped
142	.long	0x3a	# DW_AT_type
143	.long	.LFB2	# DW_AT_low_pc
144	.long	.LFE2-.LFB2	# DW_AT_high_pc
145	.uleb128 0x1	# DW_AT_frame_base
146	.byte	0x9c	# DW_OP_call_frame_cfa
147			# DW_AT_GNU_all_call_sites
148	.uleb128 0x7	# (DIE (0x79) DW_TAG_variable)
149	.long	.LASF4	# DW_AT_name: "answer"
150	.byte	0x1	# DW_AT_decl_file (tailcall.c)
151	.byte	0x23	# DW_AT_decl_line
152	.long	0x3a	# DW_AT_type
153	.long	.LLST0	# DW_AT_location
154	.uleb128 0x8	# (DIE (0x88) DW_TAG_GNU_call_site)
155	.long	.LVL1	# DW_AT_low_pc
156	.long	0x41	# DW_AT_abstract_origin
157	.byte	0	# end of children of DIE 0x64
158	.byte	0	# end of children of DIE 0xb
159	.section	.debug_abbrev,"",@progbits
160.Ldebug_abbrev0:
161	.uleb128 0x1	# (abbrev code)
162	.uleb128 0x11	# (TAG: DW_TAG_compile_unit)
163	.byte	0x1	# DW_children_yes
164	.uleb128 0x25	# (DW_AT_producer)
165	.uleb128 0xe	# (DW_FORM_strp)
166	.uleb128 0x13	# (DW_AT_language)
167	.uleb128 0xb	# (DW_FORM_data1)
168	.uleb128 0x3	# (DW_AT_name)
169	.uleb128 0xe	# (DW_FORM_strp)
170	.uleb128 0x1b	# (DW_AT_comp_dir)
171	.uleb128 0xe	# (DW_FORM_strp)
172	.uleb128 0x55	# (DW_AT_ranges)
173	.uleb128 0x17	# (DW_FORM_sec_offset)
174	.uleb128 0x11	# (DW_AT_low_pc)
175	.uleb128 0x1	# (DW_FORM_addr)
176	.uleb128 0x10	# (DW_AT_stmt_list)
177	.uleb128 0x17	# (DW_FORM_sec_offset)
178	.byte	0
179	.byte	0
180	.uleb128 0x2	# (abbrev code)
181	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
182	.byte	0	# DW_children_no
183	.uleb128 0x3	# (DW_AT_name)
184	.uleb128 0x8	# (DW_FORM_string)
185	.uleb128 0x3a	# (DW_AT_decl_file)
186	.uleb128 0xb	# (DW_FORM_data1)
187	.uleb128 0x3b	# (DW_AT_decl_line)
188	.uleb128 0xb	# (DW_FORM_data1)
189	.uleb128 0x27	# (DW_AT_prototyped)
190	.uleb128 0x19	# (DW_FORM_flag_present)
191	.uleb128 0x49	# (DW_AT_type)
192	.uleb128 0x13	# (DW_FORM_ref4)
193	.uleb128 0x11	# (DW_AT_low_pc)
194	.uleb128 0x1	# (DW_FORM_addr)
195	.uleb128 0x12	# (DW_AT_high_pc)
196	.uleb128 0x6	# (DW_FORM_data4)
197	.uleb128 0x40	# (DW_AT_frame_base)
198	.uleb128 0x18	# (DW_FORM_exprloc)
199	.uleb128 0x2117	# (DW_AT_GNU_all_call_sites)
200	.uleb128 0x19	# (DW_FORM_flag_present)
201	.byte	0
202	.byte	0
203	.uleb128 0x3	# (abbrev code)
204	.uleb128 0x24	# (TAG: DW_TAG_base_type)
205	.byte	0	# DW_children_no
206	.uleb128 0xb	# (DW_AT_byte_size)
207	.uleb128 0xb	# (DW_FORM_data1)
208	.uleb128 0x3e	# (DW_AT_encoding)
209	.uleb128 0xb	# (DW_FORM_data1)
210	.uleb128 0x3	# (DW_AT_name)
211	.uleb128 0x8	# (DW_FORM_string)
212	.byte	0
213	.byte	0
214	.uleb128 0x4	# (abbrev code)
215	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
216	.byte	0x1	# DW_children_yes
217	.uleb128 0x3	# (DW_AT_name)
218	.uleb128 0x8	# (DW_FORM_string)
219	.uleb128 0x3a	# (DW_AT_decl_file)
220	.uleb128 0xb	# (DW_FORM_data1)
221	.uleb128 0x3b	# (DW_AT_decl_line)
222	.uleb128 0xb	# (DW_FORM_data1)
223	.uleb128 0x27	# (DW_AT_prototyped)
224	.uleb128 0x19	# (DW_FORM_flag_present)
225	.uleb128 0x49	# (DW_AT_type)
226	.uleb128 0x13	# (DW_FORM_ref4)
227	.uleb128 0x11	# (DW_AT_low_pc)
228	.uleb128 0x1	# (DW_FORM_addr)
229	.uleb128 0x12	# (DW_AT_high_pc)
230	.uleb128 0x6	# (DW_FORM_data4)
231	.uleb128 0x40	# (DW_AT_frame_base)
232	.uleb128 0x18	# (DW_FORM_exprloc)
233	.uleb128 0x2117	# (DW_AT_GNU_all_call_sites)
234	.uleb128 0x19	# (DW_FORM_flag_present)
235	.uleb128 0x1	# (DW_AT_sibling)
236	.uleb128 0x13	# (DW_FORM_ref4)
237	.byte	0
238	.byte	0
239	.uleb128 0x5	# (abbrev code)
240	.uleb128 0x4109	# (TAG: DW_TAG_GNU_call_site)
241	.byte	0	# DW_children_no
242	.uleb128 0x11	# (DW_AT_low_pc)
243	.uleb128 0x1	# (DW_FORM_addr)
244	.uleb128 0x2115	# (DW_AT_GNU_tail_call)
245	.uleb128 0x19	# (DW_FORM_flag_present)
246	.uleb128 0x31	# (DW_AT_abstract_origin)
247	.uleb128 0x13	# (DW_FORM_ref4)
248	.byte	0
249	.byte	0
250	.uleb128 0x6	# (abbrev code)
251	.uleb128 0x2e	# (TAG: DW_TAG_subprogram)
252	.byte	0x1	# DW_children_yes
253	.uleb128 0x3f	# (DW_AT_external)
254	.uleb128 0x19	# (DW_FORM_flag_present)
255	.uleb128 0x3	# (DW_AT_name)
256	.uleb128 0xe	# (DW_FORM_strp)
257	.uleb128 0x3a	# (DW_AT_decl_file)
258	.uleb128 0xb	# (DW_FORM_data1)
259	.uleb128 0x3b	# (DW_AT_decl_line)
260	.uleb128 0xb	# (DW_FORM_data1)
261	.uleb128 0x27	# (DW_AT_prototyped)
262	.uleb128 0x19	# (DW_FORM_flag_present)
263	.uleb128 0x49	# (DW_AT_type)
264	.uleb128 0x13	# (DW_FORM_ref4)
265	.uleb128 0x11	# (DW_AT_low_pc)
266	.uleb128 0x1	# (DW_FORM_addr)
267	.uleb128 0x12	# (DW_AT_high_pc)
268	.uleb128 0x6	# (DW_FORM_data4)
269	.uleb128 0x40	# (DW_AT_frame_base)
270	.uleb128 0x18	# (DW_FORM_exprloc)
271	.uleb128 0x2117	# (DW_AT_GNU_all_call_sites)
272	.uleb128 0x19	# (DW_FORM_flag_present)
273	.byte	0
274	.byte	0
275	.uleb128 0x7	# (abbrev code)
276	.uleb128 0x34	# (TAG: DW_TAG_variable)
277	.byte	0	# DW_children_no
278	.uleb128 0x3	# (DW_AT_name)
279	.uleb128 0xe	# (DW_FORM_strp)
280	.uleb128 0x3a	# (DW_AT_decl_file)
281	.uleb128 0xb	# (DW_FORM_data1)
282	.uleb128 0x3b	# (DW_AT_decl_line)
283	.uleb128 0xb	# (DW_FORM_data1)
284	.uleb128 0x49	# (DW_AT_type)
285	.uleb128 0x13	# (DW_FORM_ref4)
286	.uleb128 0x2	# (DW_AT_location)
287	.uleb128 0x17	# (DW_FORM_sec_offset)
288	.byte	0
289	.byte	0
290	.uleb128 0x8	# (abbrev code)
291	.uleb128 0x4109	# (TAG: DW_TAG_GNU_call_site)
292	.byte	0	# DW_children_no
293	.uleb128 0x11	# (DW_AT_low_pc)
294	.uleb128 0x1	# (DW_FORM_addr)
295	.uleb128 0x31	# (DW_AT_abstract_origin)
296	.uleb128 0x13	# (DW_FORM_ref4)
297	.byte	0
298	.byte	0
299	.byte	0
300	.section	.debug_loc,"",@progbits
301.Ldebug_loc0:
302.LLST0:
303	.long	.LVL1	# Location list begin address (*.LLST0)
304	.long	.LVL2	# Location list end address (*.LLST0)
305	.value	0x3	# Location expression size
306	.byte	0x70	# DW_OP_breg0
307	.sleb128 1
308	.byte	0x9f	# DW_OP_stack_value
309	.long	.LVL2	# Location list begin address (*.LLST0)
310	.long	.LFE2	# Location list end address (*.LLST0)
311	.value	0x1	# Location expression size
312	.byte	0x50	# DW_OP_reg0
313	.long	0	# Location list terminator begin (*.LLST0)
314	.long	0	# Location list terminator end (*.LLST0)
315	.section	.debug_aranges,"",@progbits
316	.long	0x24	# Length of Address Ranges Info
317	.value	0x2	# DWARF Version
318	.long	.Ldebug_info0	# Offset of Compilation Unit Info
319	.byte	0x4	# Size of Address
320	.byte	0	# Size of Segment Descriptor
321	.value	0	# Pad to 8 byte boundary
322	.value	0
323	.long	.Ltext0	# Address
324	.long	.Letext0-.Ltext0	# Length
325	.long	.LFB2	# Address
326	.long	.LFE2-.LFB2	# Length
327	.long	0
328	.long	0
329	.section	.debug_ranges,"",@progbits
330.Ldebug_ranges0:
331	.long	.Ltext0	# Offset 0
332	.long	.Letext0
333	.long	.LFB2	# Offset 0x8
334	.long	.LFE2
335	.long	0
336	.long	0
337	.section	.debug_line,"",@progbits
338.Ldebug_line0:
339	.section	.debug_str,"MS",@progbits,1
340.LASF1:
341	.string	"tailcall.c"
342.LASF3:
343	.string	"main"
344.LASF0:
345	.string	"GNU C 4.8.3 20140911 (Red Hat 4.8.3-7) -mtune=generic -march=i686 -g -O2"
346.LASF4:
347	.string	"answer"
348.LASF2:
349	.string	""
350	.ident	"GCC: (GNU) 4.8.3 20140911 (Red Hat 4.8.3-7)"
351	.section	.note.GNU-stack,"",@progbits
352