-# Copyright 2000, 2001 Free Software Foundation, Inc.
+# Copyright 2000-2016 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 2 of the License, or
+# 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, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
# This file was written by Michael Snyder (msnyder@redhat.com)
-if $tracelevel then {
- strace $tracelevel
-}
-set prms_id 0
-set bug_id 0
+standard_testfile .c
-set testfile "return2"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
- gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+ untested return2.exp
+ return -1
}
proc return_1 { type } {
"set break on ${type}_func"
gdb_test "continue" "Breakpoint.* ${type}_func.*" \
"continue to ${type}_func"
- send_gdb "return testval.${type}_testval\n"
- gdb_expect {
- -re "Make ${type}_func return now.*y or n. $" {
- send_gdb "y\n"
- exp_continue
- }
- -re ".*${type}_resultval *= ${type}_func.*$gdb_prompt $" {
- send_gdb "step\n"
- exp_continue
- }
- -re ".*${type}_checkpoint.*$gdb_prompt $" {
- pass "return from ${type}_func"
- }
- -re ".*$gdb_prompt $" {
- fail "return from ${type}_func"
- }
- timeout {
- fail "return from ${type}_func (timeout)"
+
+ gdb_test_multiple "return testval.${type}_testval" \
+ "return from ${type}_func" {
+ -re "Make ${type}_func return now.*y or n. $" {
+ send_gdb "y\n"
+ exp_continue
+ }
+ -re ".*${type}_resultval *= ${type}_func.*$gdb_prompt $" {
+ send_gdb "step\n"
+ exp_continue
+ }
+ -re ".*${type}_checkpoint.*$gdb_prompt $" {
+ pass "return from ${type}_func"
+ }
}
- }
gdb_test "print ${type}_resultval == testval.${type}_testval" ".* = 1" \
"${type} value returned successfully"
gdb_test "print ${type}_resultval != ${type}_returnval" ".* = 1" \
"set break on void_func"
gdb_test "continue" "Breakpoint.* void_func.*" \
"continue to void_func"
- send_gdb "return \n"
- gdb_expect {
+
+ gdb_test_multiple "return" "return from void_func" {
-re "Make void_func return now.*y or n. $" {
send_gdb "y\n"
exp_continue
-re ".*void_checkpoint.*$gdb_prompt $" {
pass "return from void_func"
}
- -re ".*$gdb_prompt $" {
- fail "return from void_func"
- }
- timeout {
- fail "return from void_func (timeout)"
- }
}
gdb_test "print void_test == 0" ".* = 1" \
"void function returned successfully"
proc return2_tests { } {
global gdb_prompt
- if { ! [ runto main ] } then {
- gdb_suppress_entire_file "Run to main failed, so all tests in this file will automatically fail."
+ if { ! [ runto_main ] } then {
+ untested return2.exp
+ return -1
}
return_void
return_1 "short"
return_1 "int"
return_1 "long"
- if { ! [istarget "m6811-*-*"] } then {
+ if { ! [istarget "m6811-*-*"] && ![istarget "h8300*-*"] } then {
return_1 "long_long"
}
- return_1 "float"
- if { ! [istarget "m6811-*-*"] } then {
- return_1 "double"
+ if ![target_info exists gdb,skip_float_tests] {
+ return_1 "float"
+ if { ! [istarget "m6811-*-*"] } then {
+ return_1 "double"
+ }
}
}
# Start with a fresh gdb.
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load ${binfile}
+clean_restart ${binfile}
set timeout 30
return2_tests