Index: gdb/testsuite/gdb.base/ena-dis-br.exp |
diff --git a/gdb/testsuite/gdb.base/ena-dis-br.exp b/gdb/testsuite/gdb.base/ena-dis-br.exp |
index 2cf3e9a17d2499e1b03176d59e2a0de1016e1dab..4ac1634bb66328af11f56057e456574f6158fc16 100644 |
--- a/gdb/testsuite/gdb.base/ena-dis-br.exp |
+++ b/gdb/testsuite/gdb.base/ena-dis-br.exp |
@@ -1,7 +1,6 @@ |
# This testcase is part of GDB, the GNU debugger. |
-# Copyright 1997-1999, 2003-2004, 2007-2012 Free Software Foundation, |
-# Inc. |
+# Copyright 1997-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 |
@@ -20,42 +19,24 @@ |
# test running programs |
# |
-set testfile "break" |
-set srcfile ${testfile}.c |
-set srcfile1 ${testfile}1.c |
-set binfile ${objdir}/${subdir}/${testfile} |
+standard_testfile break.c break1.c |
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}0.o" object {debug nowarnings}] != "" } { |
- untested ena-dis-br.exp |
- return -1 |
+if {[prepare_for_testing ${testfile}.exp ${testfile} \ |
+ [list $srcfile $srcfile2] {debug nowarnings}]} { |
+ return -1 |
} |
-if { [gdb_compile "${srcdir}/${subdir}/${srcfile1}" "${binfile}1.o" object {debug nowarnings}] != "" } { |
- untested ena-dis-br.exp |
- return -1 |
-} |
- |
-if { [gdb_compile "${binfile}0.o ${binfile}1.o" "${binfile}" executable {debug nowarnings}] != "" } { |
- untested ena-dis-br.exp |
- return -1 |
-} |
- |
-gdb_exit |
-gdb_start |
-gdb_reinitialize_dir $srcdir/$subdir |
-gdb_load ${binfile} |
- |
set bp_location1 [gdb_get_line_number "set breakpoint 1 here"] |
set bp_location7 [gdb_get_line_number "set breakpoint 7 here"] |
-set bp_location8 [gdb_get_line_number "set breakpoint 8 here" $srcfile1] |
-set bp_location9 [gdb_get_line_number "set breakpoint 9 here" $srcfile1] |
+set bp_location8 [gdb_get_line_number "set breakpoint 8 here" $srcfile2] |
+set bp_location9 [gdb_get_line_number "set breakpoint 9 here" $srcfile2] |
set bp_location11 [gdb_get_line_number "set breakpoint 11 here"] |
-set bp_location13 [gdb_get_line_number "set breakpoint 13 here" $srcfile1] |
-set bp_location14 [gdb_get_line_number "set breakpoint 14 here" $srcfile1] |
-set bp_location15 [gdb_get_line_number "set breakpoint 15 here" $srcfile1] |
-set bp_location16 [gdb_get_line_number "set breakpoint 16 here" $srcfile1] |
-set bp_location17 [gdb_get_line_number "set breakpoint 17 here" $srcfile1] |
-set bp_location18 [gdb_get_line_number "set breakpoint 18 here" $srcfile1] |
+set bp_location13 [gdb_get_line_number "set breakpoint 13 here" $srcfile2] |
+set bp_location14 [gdb_get_line_number "set breakpoint 14 here" $srcfile2] |
+set bp_location15 [gdb_get_line_number "set breakpoint 15 here" $srcfile2] |
+set bp_location16 [gdb_get_line_number "set breakpoint 16 here" $srcfile2] |
+set bp_location17 [gdb_get_line_number "set breakpoint 17 here" $srcfile2] |
+set bp_location18 [gdb_get_line_number "set breakpoint 18 here" $srcfile2] |
if ![runto_main] then { fail "enable/disable break tests suppressed" } |
@@ -308,7 +289,7 @@ gdb_test "continue 2" \ |
"continue with ignore count" |
gdb_test "next" ".*$bp_location11\[ \t\]*marker1.*" \ |
- step after continue with ignore count" |
+ "step after continue with ignore count" |
set test "continue with ignore count, not stopped at bpt" |
gdb_test_multiple "continue 2" "$test" { |
@@ -320,5 +301,113 @@ gdb_test_multiple "continue 2" "$test" { |
} |
} |
+# Verify that GDB correctly handles the "enable/disable" command |
+# with arguments, that include multiple locations. |
+# |
+if ![runto_main] then { fail "enable/disable break tests suppressed" } |
+ |
+set b1 0 |
+set b2 0 |
+set b3 0 |
+set b4 0 |
+set b1 [break_at main ""] |
+set b2 [break_at main ""] |
+set b3 [break_at main ""] |
+set b4 [break_at main ""] |
+ |
+# Perform tests for disable/enable commands on multiple |
+# locations and breakpoints. |
+# |
+# WHAT - the command to test (disable/enable). |
+# |
+proc test_ena_dis_br { what } { |
+ global b1 |
+ global b2 |
+ global b3 |
+ global b4 |
+ global gdb_prompt |
+ |
+ # OPPOS - the command opposite to WHAT. |
+ # WHAT_RES - whether breakpoints are expected to end |
+ # up enabled or disabled. |
+ # OPPOS_RES- same as WHAT_RES but opposite. |
+ # P1/P2 - proc to call (pass/fail). Must be |
+ # opposites. |
+ # Set variable values for disable command. |
+ set oppos "enable" |
+ set oppos_res "y" |
+ set what_res "n" |
+ set p1 "pass" |
+ set p2 "fail" |
+ |
+ if { "$what" == "enable" } { |
+ # Set varibale values for enable command. |
+ set oppos "disable" |
+ set oppos_res "n" |
+ set what_res "y" |
+ set p1 "fail" |
+ set p2 "pass" |
+ } |
+ |
+ # Now enable(disable) $b.1 $b2.1. |
+ gdb_test_no_output "$what $b1.1 $b2.1" "$what \$b1.1 \$b2.1" |
+ set test1 "${what}d \$b1.1 and \$b2.1" |
+ |
+ # Now $b1.1 and $b2.1 should be enabled(disabled). |
+ gdb_test_multiple "info break" "$test1" { |
+ -re "(${b1}.1)(\[^\n\r\]*)( n.*)(${b2}.1)(\[^\n\r\]*)( n.*)$gdb_prompt $" { |
+ $p1 "$test1" |
+ } |
+ -re ".*$gdb_prompt $" { |
+ $p2 "$test1" |
+ } |
+ } |
+ |
+ # Now enable(disable) $b1 fooo.1, it should give error on fooo. |
+ gdb_test "$what $b1 fooo.1" \ |
+ "Bad breakpoint number 'fooo'" \ |
+ "$what \$b1 fooo.1" |
+ |
+ # $b1 should be enabled(disabled). |
+ gdb_test "info break" \ |
+ "(${b1})(\[^\n\r]*)( $what_res.*)" \ |
+ "${what}d \$b1" |
+ |
+ gdb_test_no_output "$oppos $b3" "$oppos \$b3" |
+ gdb_test_no_output "$what $b4 $b3.1" "$what \$b4 \$b3.1" |
+ set test1 "${what}d \$b4 and \$b3.1,remain ${oppos}d \$b3" |
+ |
+ # Now $b4 $b3.1 should be enabled(disabled) and |
+ # $b3 should remain disabled(enabled). |
+ gdb_test_multiple "info break" "$test1" { |
+ -re "(${b3})(\[^\n\r]*)( $oppos_res.*)(${b3}.1)(\[^\n\r\]*)( n.*)(${b4})(\[^\n\r\]*)( $what_res.*)$gdb_prompt $" { |
+ $p1 "$test1" |
+ } |
+ -re "(${b3})(\[^\n\r]*)( $oppos_res.*)(${b4})(\[^\n\r\]*)( $what_res.*)$gdb_prompt $" { |
+ $p2 "$test1" |
+ } |
+ } |
+ |
+ # Now enable(disable) $b4.1 fooobaar and |
+ # it should give warning on fooobaar. |
+ gdb_test "$what $b4.1 fooobaar" \ |
+ "warning: bad breakpoint number at or near 'fooobaar'" \ |
+ "$what \$b4.1 fooobar" |
+ set test1 "${what}d \$b4.1" |
+ |
+ # $b4.1 should be enabled(disabled). |
+ gdb_test_multiple "info break" "$test1" { |
+ -re "(${b4}.1)(\[^\n\r\]*)( n.*)$gdb_prompt $" { |
+ $p1 "$test1" |
+ } |
+ -re ".*$gdb_prompt $" { |
+ $p2 "$test1" |
+ } |
+ } |
+} |
+ |
+test_ena_dis_br "disable" |
+test_ena_dis_br "enable" |
+ |
gdb_exit |
return 0 |