1 # Copyright
(C
) 1992-2023 Free Software Foundation
, Inc.
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.
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.
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
/>.
16 # This file was written by Jeff Law.
(law@cs.utah.edu
)
18 if { [prepare_for_testing
"failed to prepare" "return"] } {
22 set allow_float_test
[allow_float_test
]
24 proc return_tests
{ } {
25 global gdb_prompt allow_float_test
28 if {![runto func1
]} { return 0 }
30 gdb_test_multiple
"return" "simple return" {
31 -re
"Make .* return now.*y or n. $" {
35 -re
"func1 ..;.*$gdb_prompt $" {
39 -re
".*in main after func1.*$gdb_prompt $" {
44 #
Set breakpoints in other interesting functions.
45 gdb_test
"break func2" ".*"
46 gdb_test
"break func3" ".*"
48 gdb_test
"continue" "return -5;" "continue to return of -5"
50 gdb_test_multiple
"return 5" "return value 5" {
51 -re
"Make .* return now.*y or n. $" {
55 -re
".*tmp2 = func2.*$gdb_prompt $" {
56 # pass without comment
60 gdb_test
"next" "tmp3 = func3.*" "next over call to func2"
62 gdb_test
"p tmp2" ".* = 5" "correct value returned (integer test)"
64 gdb_test
"continue" "return -5.0;" "continue to return of -5.0"
66 #
Return of a double does not work
for 68hc11
(need struct
return
68 setup_xfail
"m6811-*-*"
70 gdb_test_multiple
"return 5.0" "return value 5.0" {
71 -re
"Make .* return now.*y or n. $" {
75 -re
".*tmp3 = func3.*$gdb_prompt $" {
76 # pass without comment
80 setup_xfail
"m6811-*-*"
81 gdb_test
"next" "printf.*" "next over call to func3"
83 # This test also fails
for sparc Solaris
2.3 & 2.4, but passes under
2.5
84 # At the time the `next
' is issued, the floating point unit for the
85 # process is not yet initialized, and the storing of the floating
86 # point value to the floating point return register is ignored.
87 # Xfail it for current versions that are known to fail. Presumably
88 # if some future version does initialize the floating point unit at
89 # process start, making this test pass, it will be for a version that
92 setup_xfail "sparc-*-solaris2.3*" "sparc-*-solaris2.4*" "m6811-*-*"
93 if {$allow_float_test} {
94 gdb_test "p tmp3" ".* = 5.*" \
95 "correct value returned double test (known problem with sparc solaris)"
99 set prev_timeout $timeout
102 set timeout $prev_timeout