1/* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2012-2023 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 g++ -o gdb.arch/amd64-tailcall-cxx1.S gdb.arch/amd64-tailcall-cxx1.cc -Wall -S -dA -O2 -g 20 Fedora GCC was used here to also test the case of missing DW_AT_linkage_name. 21 */ 22 23 .file "amd64-tailcall-cxx1.cc" 24 .text 25.Ltext0: 26 .p2align 4,,15 27 .globl _Z1gi 28 .type _Z1gi, @function 29_Z1gi: 30.LFB0: 31 .file 1 "gdb.arch/amd64-tailcall-cxx1.cc" 32 # gdb.arch/amd64-tailcall-cxx1.cc:22 33 .loc 1 22 0 34 .cfi_startproc 35.LVL0: 36# BLOCK 2 freq:10000 seq:0 37# PRED: ENTRY [100.0%] (FALLTHRU) 38 # gdb.arch/amd64-tailcall-cxx1.cc:23 39 .loc 1 23 0 40 movl %edi, v(%rip) 41# SUCC: EXIT [100.0%] 42 ret 43 .cfi_endproc 44.LFE0: 45 .size _Z1gi, .-_Z1gi 46 .section .text.startup,"ax",@progbits 47 .p2align 4,,15 48 .globl main 49 .type main, @function 50main: 51.LFB1: 52 # gdb.arch/amd64-tailcall-cxx1.cc:30 53 .loc 1 30 0 54 .cfi_startproc 55# BLOCK 2 freq:10000 seq:0 56# PRED: ENTRY [100.0%] (FALLTHRU) 57 subq $8, %rsp 58 .cfi_def_cfa_offset 16 59 # gdb.arch/amd64-tailcall-cxx1.cc:31 60 .loc 1 31 0 61 movl $1, %edi 62 call _Z1fi 63.LVL1: 64 # gdb.arch/amd64-tailcall-cxx1.cc:32 65 .loc 1 32 0 66 xorl %eax, %eax 67 addq $8, %rsp 68 .cfi_def_cfa_offset 8 69# SUCC: EXIT [100.0%] 70 ret 71 .cfi_endproc 72.LFE1: 73 .size main, .-main 74 .globl v 75 .bss 76 .align 4 77 .type v, @object 78 .size v, 4 79v: 80 .zero 4 81 .text 82.Letext0: 83 .section .debug_info,"",@progbits 84.Ldebug_info0: 85 .long 0xb4 # Length of Compilation Unit Info 86 .value 0x4 # DWARF version number 87 .long .Ldebug_abbrev0 # Offset Into Abbrev. Section 88 .byte 0x8 # Pointer Size (in bytes) 89 .uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit) 90 .long .LASF1 # DW_AT_producer: "GNU C++ 4.8.0 20130220 (Red Hat 4.8.0-0.14) -mtune=generic -march=x86-64 -g -O2" 91 .byte 0x4 # DW_AT_language 92 .long .LASF2 # DW_AT_name: "gdb.arch/amd64-tailcall-cxx1.cc" 93 .long .LASF3 # DW_AT_comp_dir: "" 94 .long .Ldebug_ranges0+0 # DW_AT_ranges 95 .quad 0 # DW_AT_low_pc 96 .long .Ldebug_line0 # DW_AT_stmt_list 97 .uleb128 0x2 # (DIE (0x29) DW_TAG_subprogram) 98 # DW_AT_external 99 .ascii "g\0" # DW_AT_name 100 .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc) 101 .byte 0x15 # DW_AT_decl_line 102 .long .LASF4 # DW_AT_linkage_name: "_Z1gi" 103 .quad .LFB0 # DW_AT_low_pc 104 .quad .LFE0-.LFB0 # DW_AT_high_pc 105 .uleb128 0x1 # DW_AT_frame_base 106 .byte 0x9c # DW_OP_call_frame_cfa 107 # DW_AT_GNU_all_call_sites 108 .long 0x54 # DW_AT_sibling 109 .uleb128 0x3 # (DIE (0x48) DW_TAG_formal_parameter) 110 .ascii "x\0" # DW_AT_name 111 .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc) 112 .byte 0x15 # DW_AT_decl_line 113 .long 0x54 # DW_AT_type 114 .uleb128 0x1 # DW_AT_location 115 .byte 0x55 # DW_OP_reg5 116 .byte 0 # end of children of DIE 0x29 117 .uleb128 0x4 # (DIE (0x54) DW_TAG_base_type) 118 .byte 0x4 # DW_AT_byte_size 119 .byte 0x5 # DW_AT_encoding 120 .ascii "int\0" # DW_AT_name 121 .uleb128 0x5 # (DIE (0x5b) DW_TAG_subprogram) 122 # DW_AT_external 123 .long .LASF0 # DW_AT_name: "main" 124 .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc) 125 .byte 0x1d # DW_AT_decl_line 126 .long 0x54 # DW_AT_type 127 .quad .LFB1 # DW_AT_low_pc 128 .quad .LFE1-.LFB1 # DW_AT_high_pc 129 .uleb128 0x1 # DW_AT_frame_base 130 .byte 0x9c # DW_OP_call_frame_cfa 131 # DW_AT_GNU_all_call_sites 132 .long 0x90 # DW_AT_sibling 133 .uleb128 0x6 # (DIE (0x7c) DW_TAG_GNU_call_site) 134 .quad .LVL1 # DW_AT_low_pc 135 .long 0xa8 # DW_AT_abstract_origin 136 .uleb128 0x7 # (DIE (0x89) DW_TAG_GNU_call_site_parameter) 137 .uleb128 0x1 # DW_AT_location 138 .byte 0x55 # DW_OP_reg5 139 .uleb128 0x1 # DW_AT_GNU_call_site_value 140 .byte 0x31 # DW_OP_lit1 141 .byte 0 # end of children of DIE 0x7c 142 .byte 0 # end of children of DIE 0x5b 143 .uleb128 0x8 # (DIE (0x90) DW_TAG_variable) 144 .ascii "v\0" # DW_AT_name 145 .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc) 146 .byte 0x12 # DW_AT_decl_line 147 .long 0xa3 # DW_AT_type 148 # DW_AT_external 149 .uleb128 0x9 # DW_AT_location 150 .byte 0x3 # DW_OP_addr 151 .quad v 152 .uleb128 0x9 # (DIE (0xa3) DW_TAG_volatile_type) 153 .long 0x54 # DW_AT_type 154 .uleb128 0xa # (DIE (0xa8) DW_TAG_subprogram) 155 # DW_AT_external 156 .ascii "f\0" # DW_AT_name 157 .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc) 158 .byte 0x1a # DW_AT_decl_line 159 .long .LASF5 # DW_AT_linkage_name: "_Z1fi" 160 # DW_AT_declaration 161 .uleb128 0xb # (DIE (0xb1) DW_TAG_formal_parameter) 162 .long 0x54 # DW_AT_type 163 .byte 0 # end of children of DIE 0xa8 164 .byte 0 # end of children of DIE 0xb 165 .section .debug_abbrev,"",@progbits 166.Ldebug_abbrev0: 167 .uleb128 0x1 # (abbrev code) 168 .uleb128 0x11 # (TAG: DW_TAG_compile_unit) 169 .byte 0x1 # DW_children_yes 170 .uleb128 0x25 # (DW_AT_producer) 171 .uleb128 0xe # (DW_FORM_strp) 172 .uleb128 0x13 # (DW_AT_language) 173 .uleb128 0xb # (DW_FORM_data1) 174 .uleb128 0x3 # (DW_AT_name) 175 .uleb128 0xe # (DW_FORM_strp) 176 .uleb128 0x1b # (DW_AT_comp_dir) 177 .uleb128 0xe # (DW_FORM_strp) 178 .uleb128 0x55 # (DW_AT_ranges) 179 .uleb128 0x17 # (DW_FORM_sec_offset) 180 .uleb128 0x11 # (DW_AT_low_pc) 181 .uleb128 0x1 # (DW_FORM_addr) 182 .uleb128 0x10 # (DW_AT_stmt_list) 183 .uleb128 0x17 # (DW_FORM_sec_offset) 184 .byte 0 185 .byte 0 186 .uleb128 0x2 # (abbrev code) 187 .uleb128 0x2e # (TAG: DW_TAG_subprogram) 188 .byte 0x1 # DW_children_yes 189 .uleb128 0x3f # (DW_AT_external) 190 .uleb128 0x19 # (DW_FORM_flag_present) 191 .uleb128 0x3 # (DW_AT_name) 192 .uleb128 0x8 # (DW_FORM_string) 193 .uleb128 0x3a # (DW_AT_decl_file) 194 .uleb128 0xb # (DW_FORM_data1) 195 .uleb128 0x3b # (DW_AT_decl_line) 196 .uleb128 0xb # (DW_FORM_data1) 197 .uleb128 0x6e # (DW_AT_linkage_name) 198 .uleb128 0xe # (DW_FORM_strp) 199 .uleb128 0x11 # (DW_AT_low_pc) 200 .uleb128 0x1 # (DW_FORM_addr) 201 .uleb128 0x12 # (DW_AT_high_pc) 202 .uleb128 0x7 # (DW_FORM_data8) 203 .uleb128 0x40 # (DW_AT_frame_base) 204 .uleb128 0x18 # (DW_FORM_exprloc) 205 .uleb128 0x2117 # (DW_AT_GNU_all_call_sites) 206 .uleb128 0x19 # (DW_FORM_flag_present) 207 .uleb128 0x1 # (DW_AT_sibling) 208 .uleb128 0x13 # (DW_FORM_ref4) 209 .byte 0 210 .byte 0 211 .uleb128 0x3 # (abbrev code) 212 .uleb128 0x5 # (TAG: DW_TAG_formal_parameter) 213 .byte 0 # DW_children_no 214 .uleb128 0x3 # (DW_AT_name) 215 .uleb128 0x8 # (DW_FORM_string) 216 .uleb128 0x3a # (DW_AT_decl_file) 217 .uleb128 0xb # (DW_FORM_data1) 218 .uleb128 0x3b # (DW_AT_decl_line) 219 .uleb128 0xb # (DW_FORM_data1) 220 .uleb128 0x49 # (DW_AT_type) 221 .uleb128 0x13 # (DW_FORM_ref4) 222 .uleb128 0x2 # (DW_AT_location) 223 .uleb128 0x18 # (DW_FORM_exprloc) 224 .byte 0 225 .byte 0 226 .uleb128 0x4 # (abbrev code) 227 .uleb128 0x24 # (TAG: DW_TAG_base_type) 228 .byte 0 # DW_children_no 229 .uleb128 0xb # (DW_AT_byte_size) 230 .uleb128 0xb # (DW_FORM_data1) 231 .uleb128 0x3e # (DW_AT_encoding) 232 .uleb128 0xb # (DW_FORM_data1) 233 .uleb128 0x3 # (DW_AT_name) 234 .uleb128 0x8 # (DW_FORM_string) 235 .byte 0 236 .byte 0 237 .uleb128 0x5 # (abbrev code) 238 .uleb128 0x2e # (TAG: DW_TAG_subprogram) 239 .byte 0x1 # DW_children_yes 240 .uleb128 0x3f # (DW_AT_external) 241 .uleb128 0x19 # (DW_FORM_flag_present) 242 .uleb128 0x3 # (DW_AT_name) 243 .uleb128 0xe # (DW_FORM_strp) 244 .uleb128 0x3a # (DW_AT_decl_file) 245 .uleb128 0xb # (DW_FORM_data1) 246 .uleb128 0x3b # (DW_AT_decl_line) 247 .uleb128 0xb # (DW_FORM_data1) 248 .uleb128 0x49 # (DW_AT_type) 249 .uleb128 0x13 # (DW_FORM_ref4) 250 .uleb128 0x11 # (DW_AT_low_pc) 251 .uleb128 0x1 # (DW_FORM_addr) 252 .uleb128 0x12 # (DW_AT_high_pc) 253 .uleb128 0x7 # (DW_FORM_data8) 254 .uleb128 0x40 # (DW_AT_frame_base) 255 .uleb128 0x18 # (DW_FORM_exprloc) 256 .uleb128 0x2117 # (DW_AT_GNU_all_call_sites) 257 .uleb128 0x19 # (DW_FORM_flag_present) 258 .uleb128 0x1 # (DW_AT_sibling) 259 .uleb128 0x13 # (DW_FORM_ref4) 260 .byte 0 261 .byte 0 262 .uleb128 0x6 # (abbrev code) 263 .uleb128 0x4109 # (TAG: DW_TAG_GNU_call_site) 264 .byte 0x1 # DW_children_yes 265 .uleb128 0x11 # (DW_AT_low_pc) 266 .uleb128 0x1 # (DW_FORM_addr) 267 .uleb128 0x31 # (DW_AT_abstract_origin) 268 .uleb128 0x13 # (DW_FORM_ref4) 269 .byte 0 270 .byte 0 271 .uleb128 0x7 # (abbrev code) 272 .uleb128 0x410a # (TAG: DW_TAG_GNU_call_site_parameter) 273 .byte 0 # DW_children_no 274 .uleb128 0x2 # (DW_AT_location) 275 .uleb128 0x18 # (DW_FORM_exprloc) 276 .uleb128 0x2111 # (DW_AT_GNU_call_site_value) 277 .uleb128 0x18 # (DW_FORM_exprloc) 278 .byte 0 279 .byte 0 280 .uleb128 0x8 # (abbrev code) 281 .uleb128 0x34 # (TAG: DW_TAG_variable) 282 .byte 0 # DW_children_no 283 .uleb128 0x3 # (DW_AT_name) 284 .uleb128 0x8 # (DW_FORM_string) 285 .uleb128 0x3a # (DW_AT_decl_file) 286 .uleb128 0xb # (DW_FORM_data1) 287 .uleb128 0x3b # (DW_AT_decl_line) 288 .uleb128 0xb # (DW_FORM_data1) 289 .uleb128 0x49 # (DW_AT_type) 290 .uleb128 0x13 # (DW_FORM_ref4) 291 .uleb128 0x3f # (DW_AT_external) 292 .uleb128 0x19 # (DW_FORM_flag_present) 293 .uleb128 0x2 # (DW_AT_location) 294 .uleb128 0x18 # (DW_FORM_exprloc) 295 .byte 0 296 .byte 0 297 .uleb128 0x9 # (abbrev code) 298 .uleb128 0x35 # (TAG: DW_TAG_volatile_type) 299 .byte 0 # DW_children_no 300 .uleb128 0x49 # (DW_AT_type) 301 .uleb128 0x13 # (DW_FORM_ref4) 302 .byte 0 303 .byte 0 304 .uleb128 0xa # (abbrev code) 305 .uleb128 0x2e # (TAG: DW_TAG_subprogram) 306 .byte 0x1 # DW_children_yes 307 .uleb128 0x3f # (DW_AT_external) 308 .uleb128 0x19 # (DW_FORM_flag_present) 309 .uleb128 0x3 # (DW_AT_name) 310 .uleb128 0x8 # (DW_FORM_string) 311 .uleb128 0x3a # (DW_AT_decl_file) 312 .uleb128 0xb # (DW_FORM_data1) 313 .uleb128 0x3b # (DW_AT_decl_line) 314 .uleb128 0xb # (DW_FORM_data1) 315 .uleb128 0x6e # (DW_AT_linkage_name) 316 .uleb128 0xe # (DW_FORM_strp) 317 .uleb128 0x3c # (DW_AT_declaration) 318 .uleb128 0x19 # (DW_FORM_flag_present) 319 .byte 0 320 .byte 0 321 .uleb128 0xb # (abbrev code) 322 .uleb128 0x5 # (TAG: DW_TAG_formal_parameter) 323 .byte 0 # DW_children_no 324 .uleb128 0x49 # (DW_AT_type) 325 .uleb128 0x13 # (DW_FORM_ref4) 326 .byte 0 327 .byte 0 328 .byte 0 329 .section .debug_aranges,"",@progbits 330 .long 0x3c # Length of Address Ranges Info 331 .value 0x2 # DWARF Version 332 .long .Ldebug_info0 # Offset of Compilation Unit Info 333 .byte 0x8 # Size of Address 334 .byte 0 # Size of Segment Descriptor 335 .value 0 # Pad to 16 byte boundary 336 .value 0 337 .quad .Ltext0 # Address 338 .quad .Letext0-.Ltext0 # Length 339 .quad .LFB1 # Address 340 .quad .LFE1-.LFB1 # Length 341 .quad 0 342 .quad 0 343 .section .debug_ranges,"",@progbits 344.Ldebug_ranges0: 345 .quad .Ltext0 # Offset 0 346 .quad .Letext0 347 .quad .LFB1 # Offset 0x10 348 .quad .LFE1 349 .quad 0 350 .quad 0 351 .section .debug_line,"",@progbits 352.Ldebug_line0: 353 .section .debug_str,"MS",@progbits,1 354.LASF4: 355 .string "_Z1gi" 356.LASF3: 357 .string "" 358.LASF2: 359 .string "gdb.arch/amd64-tailcall-cxx1.cc" 360.LASF1: 361 .string "GNU C++ 4.8.0 20130220 (Red Hat 4.8.0-0.14) -mtune=generic -march=x86-64 -g -O2" 362.LASF0: 363 .string "main" 364.LASF5: 365 .string "_Z1fi" 366 .ident "GCC: (GNU) 4.8.0 20130220 (Red Hat 4.8.0-0.14)" 367 .section .note.GNU-stack,"",@progbits 368