# This testcase is part of GDB, the GNU debugger. # # Copyright 2013 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 . standard_testfile if { [build_executable ${testfile}.exp ${testfile}] == -1 } { return -1 } proc do_test { pass } { global testfile gdb_prompt binfile pf_prefix if ![runto_main] { return -1 } gdb_breakpoint "${testfile}.c:[gdb_get_line_number "loop-line" ${testfile}.c]" \ temporary # gdb_continue_to_breakpoint would print a pass message. gdb_test "continue" "Temporary breakpoint .* loop-line .*" "" gdb_test_no_output "set range-stepping off" "" gdb_test_no_output "set debug infrun 1" "" set test "run a bit #$pass" set abort 1 gdb_test_multiple "step" $test { -re "infrun: stepping inside range" { # Suppress pass $test verbose -log "$pf_prefix $test" set abort 0 } } if $abort { return } set gdb_pid [exp_pid -i [board_info host fileid]] remote_exec host "kill -TERM ${gdb_pid}" set test "expect eof #$pass" set abort 1 set stepping 0 gdb_test_multiple "" $test { eof { verbose -log "$pf_prefix $test" set abort 0 } -re "infrun: stepping inside range" { incr stepping if { $stepping > 200 } { fail "$test (stepping inside range $stepping times)" } else { exp_continue } } } if $abort { return } } # Testcase was FAILing approx. on 10th pass with unpatched GDB. # 50 runs should be approx. a safe number to be sure it is fixed now. for {set pass 0} {$pass < 50} {incr pass} { clean_restart ${testfile} gdb_test_no_output "set target-async off" "" with_test_prefix "sync" { do_test $pass } clean_restart ${testfile} gdb_test_no_output "set target-async on" "" with_test_prefix "async" { do_test $pass } } pass "$pass SIGTERM passes"