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