e22f8b7c8c
Switch the license of all .f and .f90 files to GPLv3. Switch the license of all .s and .S files to GPLv3.
116 lines
3.6 KiB
Text
116 lines
3.6 KiB
Text
# Copyright (C) 1992, 1997, 2001, 2007 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Please email any bugs, comments, and/or additions to this file to:
|
|
# bug-gdb@prep.ai.mit.edu
|
|
|
|
# This file was written by Jeff Law. (law@cs.utah.edu)
|
|
|
|
if $tracelevel then {
|
|
strace $tracelevel
|
|
}
|
|
|
|
set prms_id 0
|
|
set bug_id 0
|
|
|
|
set testfile "return"
|
|
set srcfile ${testfile}.c
|
|
set binfile ${objdir}/${subdir}/${testfile}
|
|
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
|
|
untested return.exp
|
|
return -1
|
|
}
|
|
|
|
proc return_tests { } {
|
|
global gdb_prompt
|
|
|
|
|
|
if { ! [ runto func1 ] } then { return 0 }
|
|
send_gdb "return\n"
|
|
gdb_expect {
|
|
-re "Make .* return now.*y or n. $" {
|
|
send_gdb "y\n"
|
|
exp_continue
|
|
}
|
|
-re "func1 ..;.*$gdb_prompt $" {
|
|
send_gdb "step\n"
|
|
exp_continue
|
|
}
|
|
-re ".*in main after func1.*$gdb_prompt $" { pass "simple return" }
|
|
-re "$gdb_prompt $" { fail "simple return" }
|
|
timeout { fail "(timeout) simple return" }
|
|
}
|
|
|
|
# Set breakpoints in other interesting functions.
|
|
gdb_test "break func2" "" "break func2"
|
|
gdb_test "break func3" "" "break func3"
|
|
|
|
gdb_test "continue" "return -5;" "continue to return of -5"
|
|
send_gdb "return 5\n"
|
|
gdb_expect {
|
|
-re "Make .* return now.*y or n. $" {
|
|
send_gdb "y\n"
|
|
exp_continue
|
|
}
|
|
-re ".*tmp2 = func2.*$gdb_prompt $" { }
|
|
-re "$gdb_prompt $" { fail "did not return (integer test)" }
|
|
timeout { fail "(timeout) did not return (integer test)" }
|
|
}
|
|
gdb_test "next" "tmp3 = func3.*" "next over call to func2"
|
|
|
|
gdb_test "p tmp2" ".* = 5" "correct value returned (integer test)"
|
|
|
|
gdb_test "continue" "return -5.0;" "continue to return of -5.0"
|
|
|
|
# Return of a double does not work for 68hc11 (need struct return
|
|
# in memory).
|
|
setup_xfail "m6811-*-*"
|
|
send_gdb "return 5.0\n"
|
|
gdb_expect {
|
|
-re "Make .* return now.*y or n. $" {
|
|
send_gdb "y\n"
|
|
exp_continue
|
|
}
|
|
-re ".*tmp3 = func3.*$gdb_prompt $" { }
|
|
-re "$gdb_prompt $" { fail "did not return (double test)" }
|
|
timeout { fail "(timeout) did not return (double test)" }
|
|
}
|
|
|
|
setup_xfail "m6811-*-*"
|
|
gdb_test "next" "printf.*" "next over call to func3"
|
|
|
|
# This test also fails for sparc Solaris 2.3 & 2.4, but passes under 2.5
|
|
# At the time the `next' is issued, the floating point unit for the
|
|
# process is not yet initialized, and the storing of the floating
|
|
# point value to the floating point return register is ignored.
|
|
# Xfail it for current versions that are known to fail. Presumably
|
|
# if some future version does initialize the floating point unit at
|
|
# process start, making this test pass, it will be for a version that
|
|
# is not xfailed.
|
|
|
|
setup_xfail "sparc-*-solaris2.3*" "sparc-*-solaris2.4*" "m6811-*-*"
|
|
gdb_test "p tmp3" ".* = 5.*" "correct value returned double test (known problem with sparc solaris)"
|
|
}
|
|
|
|
|
|
# Start with a fresh gdb.
|
|
|
|
gdb_exit
|
|
gdb_start
|
|
gdb_reinitialize_dir $srcdir/$subdir
|
|
gdb_load ${binfile}
|
|
|
|
set timeout 30
|
|
return_tests
|