This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[commit] Respect gdb,no_hardware_watchpoints in all test cases
- From: "Ulrich Weigand" <uweigand at de dot ibm dot com>
- To: gdb-patches at sourceware dot org
- Date: Thu, 4 Sep 2008 02:52:21 +0200 (CEST)
- Subject: [commit] Respect gdb,no_hardware_watchpoints in all test cases
Hello,
watchpoint.exp respects the gdb,no_hardware_watchpoints target_info
property by issuing the "set can-use-hw-watchpoints 0" command before
running tests.
However, a couple of other test cases that use watchpoints did not
do that, and therefore fail on a PowerPC gdbserver target.
The following patch adds support for gdb,no_hardware_watchpoints
and updates the tests as appropriate to handle software watchpoints.
Tested on a powerpc-linux local gdbserver target; regression-tested
on a powerpc-linux native target.
Note that watchpoint-solib.exp still fails for the gdbserver target,
but now because a real bug is exposed: breakpoint_re_set apparently
does not handle software watchpoints correctly.
Committed to mainline.
Bye,
Ulrich
ChangeLog:
* gdb.base/value-double-free.exp: Respect gdb,no_hardware_watchpoints.
* gdb.base/watchpoint-solib.exp: Likewise. Update tests to handle
software watchpoints.
* gdb.base/watch_thread_num.exp: Likewise.
diff -urNp gdb-orig/gdb/testsuite/gdb.base/value-double-free.exp gdb-head/gdb/testsuite/gdb.base/value-double-free.exp
--- gdb-orig/gdb/testsuite/gdb.base/value-double-free.exp 2008-07-08 00:39:59.000000000 +0200
+++ gdb-head/gdb/testsuite/gdb.base/value-double-free.exp 2008-09-03 23:33:23.716362586 +0200
@@ -31,6 +31,12 @@ gdb_load ${binfile}
if ![runto_main] {
return -1
}
+
+# Disable hardware watchpoints if necessary.
+if [target_info exists gdb,no_hardware_watchpoints] {
+ gdb_test "set can-use-hw-watchpoints 0" "" ""
+}
+
gdb_test "watch var" "atchpoint \[0-9\]+: var"
gdb_test "continue" "atchpoint \[0-9\]+: var.*Old value = 0.*New value = \[12\].*"
gdb_test "print empty()" " = void"
diff -urNp gdb-orig/gdb/testsuite/gdb.base/watchpoint-solib.exp gdb-head/gdb/testsuite/gdb.base/watchpoint-solib.exp
--- gdb-orig/gdb/testsuite/gdb.base/watchpoint-solib.exp 2008-01-29 18:52:47.000000000 +0100
+++ gdb-head/gdb/testsuite/gdb.base/watchpoint-solib.exp 2008-09-03 23:44:46.096987739 +0200
@@ -69,6 +69,11 @@ if [target_info exists gdb_stub] {
runto_main
+# Disable hardware watchpoints if necessary.
+if [target_info exists gdb,no_hardware_watchpoints] {
+ gdb_test "set can-use-hw-watchpoints 0" "" ""
+}
+
# Test that if we set a watchpoint on a global variable
# in a explicitly loaded shared library, and then
# re-run the application, gdb does not crash.
@@ -79,7 +84,7 @@ gdb_test_multiple "break foo" "set pendi
}
gdb_test "continue" ".*Breakpoint 2.*foo.*" "continue to foo"
-gdb_test "watch g" "Hardware watchpoint 3: g" "set watchpoint on g"
+gdb_test "watch g" "atchpoint 3: g" "set watchpoint on g"
gdb_test "continue" ".*New value = 1.*" "continue to watchpoint hit"
rerun_to_main
gdb_test "continue" ".*Breakpoint 2.*foo.*" "continue to foo again"
diff -urNp gdb-orig/gdb/testsuite/gdb.base/watch_thread_num.exp gdb-head/gdb/testsuite/gdb.base/watch_thread_num.exp
--- gdb-orig/gdb/testsuite/gdb.base/watch_thread_num.exp 2008-05-14 15:57:30.000000000 +0200
+++ gdb-head/gdb/testsuite/gdb.base/watch_thread_num.exp 2008-09-03 23:35:11.786334968 +0200
@@ -47,6 +47,11 @@ if { ![runto main] } then {
return
}
+# Disable hardware watchpoints if necessary.
+if [target_info exists gdb,no_hardware_watchpoints] {
+ gdb_test "set can-use-hw-watchpoints 0" "" ""
+}
+
gdb_test "watch shared_var thread 0" "Unknown thread 0\." "Watchpoint on invalid thread"
gdb_test "watch shared_var thread" "A syntax error in expression, near `thread'\." "Invalid watch syntax"
@@ -67,19 +72,14 @@ gdb_expect {
set thread_num "$expect_out(1,string)"
gdb_test "disable 2" "" "Disable breakpoint 2"
-gdb_test "watch shared_var thread $thread_num" "Hardware watchpoint 3: shared_var" "Watchpoint on shared variable"
+gdb_test "watch shared_var thread $thread_num" "atchpoint 3: shared_var" "Watchpoint on shared variable"
gdb_test "info breakpoint 3" "stop only in thread $thread_num"
for {set i 1} {$i <= 10} {incr i 1} {
set watchpoint "Watchpoint triggered iteration $i"
set check "Check thread that triggered iteration $i"
- if {[target_info exists gdb,no_hardware_watchpoints]} {
- unsupported $watchpoint
- unsupported $check
- } else {
- gdb_test "continue" "Hardware watchpoint 3: shared_var.*" $watchpoint
- gdb_test "thread" ".*Current thread is $thread_num .*" $check
- }
+ gdb_test "continue" "atchpoint 3: shared_var.*" $watchpoint
+ gdb_test "thread" ".*Current thread is $thread_num .*" $check
}
--
Dr. Ulrich Weigand
GNU Toolchain for Linux on System z and Cell BE
Ulrich.Weigand@de.ibm.com