# Copyright 2009-2020 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 . load_lib valgrind.exp if [is_remote target] { # The test always runs locally. return 0 } standard_testfile .c if {[build_executable $testfile.exp $testfile $srcfile {debug}] == -1} { return -1 } if { [vgdb_start] == -1 } { return -1 } set double_free [gdb_get_line_number "double-free"] set test "continue" gdb_test_multiple "continue" $test { -re "Invalid free\\(\\).*: main \\(${srcfile}:$double_free\\)\r\n.*$gdb_prompt $" { pass $test } -re "Remote connection closed.*\r\n$gdb_prompt $" { fail "$test (remote connection closed)" # Only if valgrind got stuck. kill_wait_spawned_process $valgrind_spawn_id return -1 } -re "The program is not being run\\.\r\n$gdb_prompt $" { fail "$test (valgrind vgdb has terminated)" # Only if valgrind got stuck. kill_wait_spawned_process $valgrind_spawn_id return -1 } -re "\r\n$gdb_prompt $" { pass "$test (false warning)" } } # Initialization from default_gdb_start. gdb_test_no_output "set height 0" gdb_test_no_output "set width 0" gdb_test "bt" "in main \\(.*\\) at .*${srcfile}:$double_free" # Explicitly kill the program so it doesn't dump core when we quit->detach. gdb_test "kill" "" "kill program" "Kill the program being debugged.*y or n. $" "y" vgdb_stop