diff options
Diffstat (limited to 'gdb/testsuite/gdb.base/save-bp.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/save-bp.exp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/save-bp.exp b/gdb/testsuite/gdb.base/save-bp.exp new file mode 100644 index 0000000..1ab8646 --- /dev/null +++ b/gdb/testsuite/gdb.base/save-bp.exp @@ -0,0 +1,69 @@ +# Copyright (C) 2011 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/>. + +set testfile save-bp +set srcfile ${testfile}.c + +if { [prepare_for_testing ${testfile}.exp ${testfile}] } { + return -1 +} + +if ![runto_main] { + untested ${testfile}.exp + return -1 +} +# Delete all breakpoints so that the "runto_main" breakpoint above +# does not interfere with our testing. +delete_breakpoints + +# Insert a bunch of breakpoints... The goal is to create breakpoints +# that we are going to try to save in a file and then reload. So +# try to create a good variety of them. +gdb_breakpoint "break_me" + +set loc_bp2 [gdb_get_line_number "BREAK HERE"] +gdb_breakpoint ${srcfile}:${loc_bp2} + +set loc_bp3 [gdb_get_line_number "thread-specific"] +gdb_breakpoint "${srcfile}:${loc_bp3} thread 1" + +set loc_bp4 [gdb_get_line_number "condition"] +gdb_breakpoint "${srcfile}:${loc_bp4} if i == 1" + +set loc_bp5 [gdb_get_line_number "with commands"] +gdb_breakpoint ${srcfile}:${loc_bp5} +gdb_test "commands\nsilent\nend" "End with.*" "add breakpoint commands" + +# Now, save the breakpoints into a file... +remote_file host delete "bps" +gdb_test "save breakpoint bps" + +# Now start a new debugger session... +clean_restart $testfile +if ![runto_main] { + fail "cannot restart program" + return -1 +} +# Delete all breakpoints so that the "runto_main" breakpoint above +# does not interfere with our testing. +delete_breakpoints + +# ... and restore the breakpoints. +gdb_test "source bps" + +# Now, verify that all breakpoints have been created correctly... +set bp_row_start "\[0-9\]+ +breakpoint +keep +y +0x\[0-9a-f\]+ +in" +gdb_test "info break" \ + " *Num +Type +Disp +Enb +Address +What\r\n$bp_row_start break_me at .*$srcfile:\[0-9\]+\r\n$bp_row_start main at .*$srcfile:$loc_bp2\r\n$bp_row_start main at .*$srcfile:$loc_bp3 +thread 1\r\n\[ \t]+stop only in thread 1\r\n$bp_row_start main at .*$srcfile:$loc_bp4\r\n\[ \t\]+stop only if i == 1\r\n$bp_row_start main at .*$srcfile:$loc_bp5\r\n\[ \t\]+silent" |