This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: mi*-watch.exp: Test both hardware and software watchpoints
On Tue, 11 Sep 2007, Daniel Jacobowitz wrote:
> It isn't generally sufficient, either. It's implemented on PowerPC
> but the test still fails. The frame pointer is corrupted one
> instruction before the epilogue is detected, and I couldn't come up
> with a reasonable way of making it work.
Hmm, extending the range of the epilogue? Just an obvious thought -- I
have no competence with PowerPC.
> In principle, I think so, but give it a day or two to see if anyone
> objects. How about xfailing the out of scope test for software
> watchpoints?
Well, should I take it as a declaration of no intent to fix them?
> In practice, there's one problem. You're going to create lots of
> tests with duplicated test names. The usual way to fix this is to
> pass a prefix around and apply it everywhere. The clever way to
> fix this, inspired by Jan's recent change to sepdebug.exp, is to
> modify the global pf_prefix.
Indeed -- thanks for the hint.
> If you do that please leave the default prefix present though; save
> the value at the beginning of the test (i.e. after default_gdb_init)
> and append to it.
Yes, of course -- I had a look at sepdebug.exp and was quite annoyed by
the output having the script name swallowed at one point.
Here is an updated version. This change has been tested natively for
mips-linux-gnu and i386-linux-gnu and remotely for mipsisa32-sde-elf, with
mips-sim-sde32/-EB and mips-sim-sde32/-EL.
2007-09-14 Maciej W. Rozycki <macro@mips.com>
* gdb.mi/mi-watch.exp (test_watchpoint_all): New function.
Move all the tests here and run them twice, once using software
watchpoints and once using hardware watchpoints.
* gdb.mi/mi2-watch.exp (test_watchpoint_all): Likewise.
OK to apply?
Maciej
14678.diff
Index: binutils-quilt/ChangeLog-14678
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ binutils-quilt/ChangeLog-14678 2007-09-14 14:35:32.000000000 +0100
@@ -0,0 +1,7 @@
+2006-09-18 Maciej W. Rozycki <macro@mips.com>
+
+ [mti-fix-scope]
+ * gdb.mi/mi-watch.exp (test_watchpoint_all): New function.
+ Move all the tests here and run them twice, once using software
+ watchpoints and once using hardware watchpoints.
+ * gdb.mi/mi2-watch.exp (test_watchpoint_all): Likewise.
Index: binutils-quilt/src/gdb/testsuite/gdb.mi/mi2-watch.exp
===================================================================
--- binutils-quilt.orig/src/gdb/testsuite/gdb.mi/mi2-watch.exp 2007-09-14 14:07:28.000000000 +0100
+++ binutils-quilt/src/gdb/testsuite/gdb.mi/mi2-watch.exp 2007-09-14 14:36:48.000000000 +0100
@@ -41,10 +41,6 @@
return -1
}
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
proc test_watchpoint_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
@@ -167,16 +163,48 @@
}
}
-# Disable hardware watchpoints if necessary.
+proc test_watchpoint_all {type} {
+ global pf_prefix
+ upvar srcdir srcdir
+ upvar subdir subdir
+ upvar binfile binfile
+
+ set old_prefix $pf_prefix
+ set pf_prefix "$pf_prefix $type: "
+
+ mi_delete_breakpoints
+ mi_gdb_reinitialize_dir $srcdir/$subdir
+ mi_gdb_load ${binfile}
+
+ mi_runto callee4
+ test_watchpoint_creation_and_listing
+ #test_rwatch_creation_and_listing
+ #test_awatch_creation_and_listing
+ test_watchpoint_triggering
+
+ set pf_prefix $old_prefix
+}
+
+# Run the tests twice, once using software watchpoints...
+mi_gdb_test "567-gdb-set can-use-hw-watchpoints 0" \
+ "567\\^done" \
+ "hw watchpoints toggle (1)"
+test_watchpoint_all sw
+
+mi_gdb_exit
+
+# ... and unless requested otherwise...
if [target_info exists gdb,no_hardware_watchpoints] {
- mi_gdb_test "-gdb-set can-use-hw-watchpoints 0" "\\^done" ""
+ return 0
}
-mi_runto callee4
-test_watchpoint_creation_and_listing
-#test_rwatch_creation_and_listing
-#test_awatch_creation_and_listing
-test_watchpoint_triggering
+mi_gdb_start
+
+# ... once using hardware watchpoints (if available).
+mi_gdb_test "890-gdb-set can-use-hw-watchpoints 1" \
+ "890\\^done" \
+ "hw watchpoints toggle (2)"
+test_watchpoint_all hw
mi_gdb_exit
return 0
Index: binutils-quilt/src/gdb/testsuite/gdb.mi/mi-watch.exp
===================================================================
--- binutils-quilt.orig/src/gdb/testsuite/gdb.mi/mi-watch.exp 2007-09-14 14:07:28.000000000 +0100
+++ binutils-quilt/src/gdb/testsuite/gdb.mi/mi-watch.exp 2007-09-14 14:32:27.000000000 +0100
@@ -41,10 +41,6 @@
return -1
}
-mi_delete_breakpoints
-mi_gdb_reinitialize_dir $srcdir/$subdir
-mi_gdb_load ${binfile}
-
proc test_watchpoint_creation_and_listing {} {
global mi_gdb_prompt
global srcfile
@@ -167,16 +163,48 @@
}
}
-# Disable hardware watchpoints if necessary.
+proc test_watchpoint_all {type} {
+ global pf_prefix
+ upvar srcdir srcdir
+ upvar subdir subdir
+ upvar binfile binfile
+
+ set old_prefix $pf_prefix
+ set pf_prefix "$pf_prefix $type: "
+
+ mi_delete_breakpoints
+ mi_gdb_reinitialize_dir $srcdir/$subdir
+ mi_gdb_load ${binfile}
+
+ mi_runto callee4
+ test_watchpoint_creation_and_listing
+ #test_rwatch_creation_and_listing
+ #test_awatch_creation_and_listing
+ test_watchpoint_triggering
+
+ set pf_prefix $old_prefix
+}
+
+# Run the tests twice, once using software watchpoints...
+mi_gdb_test "567-gdb-set can-use-hw-watchpoints 0" \
+ "567\\^done" \
+ "hw watchpoints toggle (1)"
+test_watchpoint_all sw
+
+mi_gdb_exit
+
+# ... and unless requested otherwise...
if [target_info exists gdb,no_hardware_watchpoints] {
- mi_gdb_test "-gdb-set can-use-hw-watchpoints 0" "\\^done" ""
+ return 0
}
-mi_runto callee4
-test_watchpoint_creation_and_listing
-#test_rwatch_creation_and_listing
-#test_awatch_creation_and_listing
-test_watchpoint_triggering
+mi_gdb_start
+
+# ... once using hardware watchpoints (if available).
+mi_gdb_test "890-gdb-set can-use-hw-watchpoints 1" \
+ "890\\^done" \
+ "hw watchpoints toggle (2)"
+test_watchpoint_all hw
mi_gdb_exit
return 0