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]

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


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