old-cross-binutils/gdb/testsuite/gdb.hp/gdb.aCC/watch-cmd.exp
Joel Brobecker e22f8b7c8c Switch the license of all .exp files to GPLv3.
Switch the license of all .f and .f90 files to GPLv3.
        Switch the license of all .s and .S files to GPLv3.
2007-08-23 18:14:19 +00:00

157 lines
4.8 KiB
Text

# Copyright (C) 1998, 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
if $tracelevel then {
strace $tracelevel
}
#
# test special commands
#
set prms_id 0
set bug_id 0
if { [skip_hp_tests] } then { continue }
set testfile "run"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
untested watch-cmd.exp
return -1
}
if [get_compiler_info ${binfile}] {
return -1;
}
if { $gcc_compiled } then { continue }
gdb_exit
gdb_start
delete_breakpoints
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
proc watchpoint_command_test {} {
global gdb_prompt
if [target_info exists noargs] {
verbose "Skipping watchpoint_command_test because of noargs."
return
}
if { ![runto factorial] } then { gdb_suppress_tests }
# Don't depend upon argument passing, since most simulators don't currently
# support it. Bash value variable to be what we want.
gdb_test "p value=6" "" "set value to 6 in watchpoint_command_test"
delete_breakpoints
# Verify that we can create a watchpoint, and give it a commands
# list that continues the inferior. We set the watchpoint on a
# local variable, too, so that it self-deletes when the watched
# data goes out of scope.
#
# What should happen is: Each time the watchpoint triggers, it
# continues the inferior. Eventually, the watchpoint will self-
# delete, when the watched variable is out of scope. But by that
# time, the inferior should have exited. GDB shouldn't crash or
# anything untoward as a result of this.
#
send_gdb "watch local_var\n"
gdb_expect {
-re ".*\[Ww\]atchpoint (\[0-9\]*): local_var.*$gdb_prompt $"\
{ pass "watch local_var"
set wp_id $expect_out(1,string)
send_gdb "commands $wp_id\n"
gdb_expect {
-re "Type commands for when breakpoint $wp_id is hit, one per line.*>"\
{ pass "begin commands on watch"}
-re "$gdb_prompt $"\
{fail "begin commands on watch"}
timeout {fail "(timeout) begin commands on watch"}
}
}
-re "$gdb_prompt $"\
{fail "watch local_var"}
timeout {fail "(timeout) watch local_var"}
}
# set wp_id $expect_out(1,string)
# send_gdb "commands $wp_id\n"
# gdb_expect {
# -re "Type commands for when breakpoint $wp_id is hit, one per line.*>"\
# {pass "begin commands on watch"}
# -re "$gdb_prompt $"\
# {fail "begin commands on watch"}
# timeout {fail "(timeout) begin commands on watch"}
# }
send_gdb "print value\n"
gdb_expect {
-re ">"\
{pass "add print command to watch"}
-re "$gdb_prompt $"\
{fail "add print command to watch"}
timeout {fail "(timeout) add print command to watch"}
}
send_gdb "continue\n"
gdb_expect {
-re ">"\
{pass "add continue command to watch"}
-re "$gdb_prompt $"\
{fail "add continue command to watch"}
timeout {fail "(timeout) add continue command to watch"}
}
send_gdb "end\n"
gdb_expect {
-re "$gdb_prompt $"\
{pass "begin commands on watch"}
timeout {fail "(timeout) begin commands on watch"}
}
send_gdb "continue\n"
gdb_expect {
-re "Continuing.*\[Ww\]atchpoint $wp_id deleted because the program has left the block in.*which its expression is valid.*in main.*$gdb_prompt $"\
{pass "continue with watch"}
-re "$gdb_prompt $"\
{fail "continue with watch"}
timeout {fail "(timeout) continue with watch"}
}
send_gdb "continue\n"
gdb_expect {
-re "Continuing.*$gdb_prompt $"\
{pass "continue until exit"}
-re "$gdb_prompt $"\
{fail "continue until exit"}
timeout {fail "(timeout) continue until exit"}
}
}
watchpoint_command_test