aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2011-07-26 19:39:59 +0000
committerPedro Alves <palves@redhat.com>2011-07-26 19:39:59 +0000
commitefa80663c6860c65971ea1d3e6284c2676074d10 (patch)
tree7140b58d4636a9ec58c40ae048f27e8b62d0148b
parentffdd6afc609db5cc7f86bdb2169ff7ad2eb3875f (diff)
downloadgdb-efa80663c6860c65971ea1d3e6284c2676074d10.zip
gdb-efa80663c6860c65971ea1d3e6284c2676074d10.tar.gz
gdb-efa80663c6860c65971ea1d3e6284c2676074d10.tar.bz2
2011-07-26 Pedro Alves <pedro@codesourcery.com>
gdb/ * breakpoint.c (works_in_software_mode_watchpoint): Also return true for software watchpoints. gdb/testsuite/ * gdb.base/watchpoint.exp (test_disable_enable_software_watchpoint): New procedure. (top level): Run it.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/breakpoint.c3
-rw-r--r--gdb/testsuite/ChangeLog6
-rw-r--r--gdb/testsuite/gdb.base/watchpoint.exp19
4 files changed, 32 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index a0d3606..96f527b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-26 Pedro Alves <pedro@codesourcery.com>
+
+ * breakpoint.c (works_in_software_mode_watchpoint): Also return
+ true for software watchpoints.
+
2011-07-26 Joel Brobecker <brobecker@adacore.com>
GDB 7.3 released.
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
index 5afda31..00fe748 100644
--- a/gdb/breakpoint.c
+++ b/gdb/breakpoint.c
@@ -8637,7 +8637,8 @@ resources_needed_watchpoint (const struct bp_location *bl)
static int
works_in_software_mode_watchpoint (const struct breakpoint *b)
{
- return b->type == bp_hardware_watchpoint;
+ /* Read and access watchpoints only work with hardware support. */
+ return b->type == bp_watchpoint || b->type == bp_hardware_watchpoint;
}
static enum print_stop_action
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 1eeeeb2..8011247 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2011-07-26 Pedro Alves <pedro@codesourcery.com>
+
+ * gdb.base/watchpoint.exp
+ (test_disable_enable_software_watchpoint): New procedure.
+ (top level): Run it.
+
2011-07-26 Ulrich Weigand <ulrich.weigand@linaro.org>
* gdb.python/py-mi.exp: Avoid '+' in filenames. Call C version of
diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp
index 1d8c5bc..331b181 100644
--- a/gdb/testsuite/gdb.base/watchpoint.exp
+++ b/gdb/testsuite/gdb.base/watchpoint.exp
@@ -630,6 +630,23 @@ proc test_constant_watchpoint {} {
gdb_test_no_output "delete \$bpnum" "delete watchpoint `7 + count'"
}
+proc test_disable_enable_software_watchpoint {} {
+ # This is regression test for a bug that caused `enable' to fail
+ # for software watchpoints.
+
+ # Watch something not memory to force a software watchpoint.
+ gdb_test {watch $pc} ".*atchpoint \[0-9\]+: .pc"
+
+ gdb_test_no_output "disable \$bpnum" "disable watchpoint `\$pc'"
+ gdb_test_no_output "enable \$bpnum" "reenable watchpoint `\$pc'"
+
+ gdb_test "info watchpoint \$bpnum" \
+ ".*watchpoint\[ \t\]+keep\[ \t\]+y\[ \t\]+.pc.*" \
+ "watchpoint `\$pc' is enabled"
+
+ gdb_test_no_output "delete \$bpnum" "delete watchpoint `\$pc'"
+}
+
proc test_watch_location {} {
gdb_breakpoint [gdb_get_line_number "func5 breakpoint here"]
gdb_continue_to_breakpoint "func5 breakpoint here"
@@ -903,6 +920,8 @@ if [initialize] then {
test_constant_watchpoint
+ test_disable_enable_software_watchpoint
+
test_watch_location
}