1# Copyright 2012-2023 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16load_lib dwarf.exp 17 18set test "dw2-op-out-param" 19 20# This test can only be run on targets which support DWARF-2 and use gas. 21if ![dwarf2_support] { 22 return 0 23} 24 25# This test can only be run on x86-64 targets. 26if {![istarget x86_64-*] || ![is_lp64_target]} { 27 return 0 28} 29 30if { [prepare_for_testing "failed to prepare" "${test}" ${test}.S {nodebug}] } { 31 return -1 32} 33 34if ![runto_main] { 35 return -1 36} 37 38gdb_breakpoint "breakpt" 39 40# Change the radix, making it easier to spot 0xdeadbeef in output. 41gdb_test "set output-radix 16" \ 42 "Output radix now set to decimal 16, hex 10, octal 20." 43 44# So we get to see the structure arguments. 45gdb_test_no_output "set print frame-arguments all" 46 47# (1) int_param_single_reg_loc 48gdb_continue_to_breakpoint "Stop in breakpt for test int_param_single_reg_loc" 49gdb_test "bt" "#0 ($hex in )?breakpt \\(\\)\r\n#1 ($hex in )?int_param_single_reg_loc \\(operand0=<optimized out>, operand1=0xdeadbe00deadbe01, operand2=<optimized out>\\)\r\n#2 ($hex in )?main \\(\\)" "backtrace for test int_param_single_reg_loc" 50 51# (2) struct_param_single_reg_loc 52gdb_continue_to_breakpoint "Stop in breakpt for struct_param_single_reg_loc" 53gdb_test "bt" "#0 ($hex in )?breakpt \\(\\)\r\n#1 ($hex in )?struct_param_single_reg_loc \\(operand0={a = 0xdeadbe00deadbe01, b = <optimized out>}, operand1={a = <optimized out>, b = 0xdeadbe04deadbe05}, operand2=<optimized out>\\)\r\n#2 ($hex in )?main \\(\\)" "backtrace for test struct_param_single_reg_loc" 54 55# (3) struct_param_two_reg_pieces 56gdb_continue_to_breakpoint "Stop in breakpt for struct_param_two_reg_pieces" 57gdb_test "bt" "#0 ($hex in )?breakpt \\(\\)\r\n#1 ($hex in )?struct_param_two_reg_pieces \\(operand0={a = 0xdeadbe04deadbe05, b = <optimized out>}, operand1={a = <optimized out>, b = 0xdeadbe00deadbe01}, operand2=<optimized out>\\)\r\n#2 ($hex in )?main \\(\\)" "backtrace for test struct_param_two_reg_pieces" 58 59# (4) int_param_two_reg_pieces 60gdb_continue_to_breakpoint "Stop in breakpt for int_param_two_reg_pieces" 61gdb_test "bt" "#0 ($hex in )?breakpt \\(\\)\r\n#1 ($hex in )?int_param_two_reg_pieces \\(operand0=<optimized out>, operand1=<optimized out>, operand2=<optimized out>\\)\r\n#2 ($hex in )?main \\(\\)" "backtrace for test int_param_two_reg_pieces" 62