1# Copyright 2008, 2009, 2010, 2011 Free Software Foundation, Inc. 2 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. 7# 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. 12# 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/>. 15 16set testfile "hook-stop-continue" 17set srcfile ${testfile}.c 18set binfile ${objdir}/${subdir}/${testfile} 19 20if { [prepare_for_testing ${testfile}.exp "${testfile}" "${testfile}.c" {debug nowarnings}] } { 21 return -1 22} 23 24gdb_exit 25gdb_start 26gdb_reinitialize_dir $srcdir/$subdir 27gdb_load ${binfile} 28 29if ![runto_main] then { 30 perror "Couldn't run to main" 31} 32 33set bp_location [gdb_get_line_number "set breakpoint here"] 34 35gdb_test "break $bp_location" \ 36 "Breakpoint.*at.* file .*$srcfile, line $bp_location\\." \ 37 "breakpoint line number" 38 39gdb_test "print \$do_continue = 1" "1" 40 41send_gdb "define hook-stop\n" 42gdb_expect { 43 -re "Type commands for definition of \"hook-stop\".\r\nEnd with a line saying just \"end\".\r\n>$"\ 44 {send_gdb "if \$do_continue\nset \$do_continue = 0\ncontinue\nend\nend\n" 45 gdb_expect { 46 -re "$gdb_prompt $"\ 47 {pass "define hook-stop command"} 48 timeout {fail "(timeout) define hook-stop command"} 49 } 50 } 51 -re "$gdb_prompt $"\ 52 {fail "define hook-stop command"} 53 timeout {fail "(timeout) define hook-stop command"} 54} 55 56gdb_test "next" "Breakpoint.*funbreak \\(i=5\\) at .*:$bp_location\r\n$bp_location.*set breakpoint here \\*/" \ 57 "next triggering hook-stop" 58 59gdb_test "next" "i = i \\+ 10;" "next no hook-stop" 60