This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]