summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base/async.exp
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/testsuite/gdb.base/async.exp')
-rw-r--r--gdb/testsuite/gdb.base/async.exp153
1 files changed, 153 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/async.exp b/gdb/testsuite/gdb.base/async.exp
new file mode 100644
index 00000000000..4a97f9cc7a8
--- /dev/null
+++ b/gdb/testsuite/gdb.base/async.exp
@@ -0,0 +1,153 @@
+# Copyright (C) 1999
+# 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
+# (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
+
+
+if $tracelevel then {
+ strace $tracelevel
+}
+
+#
+# test running programs
+#
+set prms_id 0
+set bug_id 0
+
+set testfile "async"
+set srcfile ${testfile}.c
+set binfile ${objdir}/${subdir}/${testfile}
+
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
+ gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
+}
+
+if [get_compiler_info ${binfile}] {
+ return -1
+}
+
+########################################
+##
+## Don't do any of these tests until we reach consensus on this file.
+##
+return 0
+########################################
+
+set board [target_info name]
+set current_target [target_info gdb_protocol]
+if { $current_target == "remote" } {
+ unset_board_info "gdb_protocol"
+ set_board_info "gdb_protocol" "async"
+ } else {
+ return 0
+ }
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+if [target_info exists gdb_stub] {
+ gdb_step_for_stub;
+}
+
+#
+# set it up at a breakpoint so we can play with it
+#
+if ![runto_main] then {
+ perror "couldn't run to breakpoint"
+ continue
+}
+
+gdb_test "break baz" "" ""
+
+#
+# Make sure we get a 'completed' message when the target is done.
+#
+gdb_test "set display-exec-done on" "" ""
+
+
+send_gdb "next&\n"
+gdb_expect {
+ -re "^next&\r\n$gdb_prompt.*z = 9.*completed\.\r\n" { pass "next &" }
+ -re "$gdb_prompt.*completed\.$" { fail "next &" }
+ timeout { fail "(timeout) next &" }
+}
+
+send_gdb "step&\n"
+gdb_expect {
+ -re "^step&\r\n$gdb_prompt.*y = foo \\(\\).*completed\.\r\n" { pass "step &" }
+ -re "$gdb_prompt.*completed\.$" { fail "step &" }
+ timeout { fail "(timeout) step &" }
+}
+
+send_gdb "step&\n"
+gdb_expect {
+ -re "^step&\r\n$gdb_prompt foo \\(\\) at .*async.c.*x = 5.*completed\.\r\n" \
+ { pass "step &" }
+ -re "$gdb_prompt.*completed\.$" { fail "step &" }
+ timeout { fail "(timeout) step &" }
+}
+
+send_gdb "stepi&\n"
+gdb_expect {
+ -re "^stepi&\r\n$gdb_prompt.*$hex.*x = 5.*completed\.\r\n" { pass "stepi &" }
+ -re "$gdb_prompt.*completed\.$" { fail "stepi &" }
+ timeout { fail "(timeout) stepi &" }
+}
+
+send_gdb "nexti&\n"
+gdb_expect {
+ -re "^nexti&\r\n$gdb_prompt.*y = 3.*completed\.\r\n" { pass "nexti &" }
+ -re "$gdb_prompt.*completed\.$" { fail "nexti &" }
+ timeout { fail "(timeout) nexti &" }
+}
+
+send_gdb "finish&\n"
+gdb_expect {
+ -re "^finish&\r\nRun till exit from #0 foo \\(\\) at.*async.c.*\r\n$gdb_prompt.*$hex in main \\(\\) at.*async.c.*y = foo \\(\\).*Value returned is.*= 8.*completed\.\r\n" \
+ { pass "finish &" }
+ -re "$gdb_prompt.*completed\.$" { fail "finish &" }
+ timeout { fail "(timeout) finish &" }
+}
+
+send_gdb "jump 33&\n"
+gdb_expect {
+ -re "^jump 33&.*Continuing at $hex.*$gdb_prompt.*Breakpoint 2, baz \\(\\) at.*async.c.*return 5.*completed\.\r\n" \
+ { pass "jump &" }
+ -re ".*$gdb_prompt.*completed\.$" { fail "jump &" }
+ timeout { fail "(timeout) jump &" }
+}
+
+send_gdb "until 35&\n"
+gdb_expect {
+ -re "^until 35&.*$gdb_prompt.*$hex in main \\(\\) at.*async.c.*y = baz \\(\\).*completed\.\r\n" \
+ { pass "until &" }
+ -re "$gdb_prompt.*completed\.$" { fail "until &" }
+ timeout { fail "(timeout) until &" }
+}
+
+gdb_test "set display-exec-done off" "" ""
+
+unset_board_info "gdb_protocol"
+set_board_info "gdb_protocol" "remote"
+
+
+
+
+
+