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]

[06/10] watchpoint.exp: Expect "You may have requested too many hardware breakpoints/watchpoints".


The big blob test currently always happens to run with hardware watchpoints
disabled.  Once we fix that, we start seeing failures on x86_64
GNU/Linux gdbserver.  In order to avoid temporarily introducing the
failures in the tree, I'm adjusting the test to copy before making it
run with hardware watchpoints.

2012-01-26  Pedro Alves  <palves@redhat.com>

	* gdb.base/watchpoint.exp (test_watchpoint_in_big_blob): Expect
	"You may have requested too many hardware
	breakpoints/watchpoints".
---

 gdb/testsuite/gdb.base/watchpoint.exp |   40 +++++++++++++++++++++++++++++++--
 1 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp
index 75ca8cc..a7bac05 100644
--- a/gdb/testsuite/gdb.base/watchpoint.exp
+++ b/gdb/testsuite/gdb.base/watchpoint.exp
@@ -770,8 +770,44 @@ proc test_inaccessible_watchpoint {} {
 proc test_watchpoint_in_big_blob {} {
     global gdb_prompt

-    gdb_test "watch buf" ".*atchpoint \[0-9\]+: buf"
-    gdb_test "cont" "Continuing.*atchpoint \[0-9\]+: buf\r\n\r\nOld value = .*testte\".*" "watchpoint on buf hit"
+    # On native targets where we do hardware resource accounting, this
+    # may end up as a software watchpoint.
+    set ok 0
+    set test "watch buf"
+    gdb_test_multiple "watch buf" $test {
+	-re "Hardware watchpoint \[0-9\]+: buf.*You may have requested too many hardware breakpoints/watchpoints.*$gdb_prompt $" {
+	    # This may happen with remote targets (where we don't do
+	    # resource accounting) that support hardware watchpoints,
+	    # when breakpoint always-inserted is on.  The watchpoint
+	    # was too large, for example.  If GDB is ever adjusted to
+	    # downgrade the watchpoint automatically in this case,
+	    # this match should be removed.  Note the breakpoint has
+	    # been created, and is in the list, so it needs deleting.
+	    pass $test
+	}
+	-re ".*atchpoint \[0-9\]+: buf.*$gdb_prompt $" {
+	    pass $test
+	    set ok 1
+	}
+    }
+
+    if { $ok } {
+	set test "watchpoint on buf hit"
+	gdb_test_multiple "cont" $test {
+	    -re "Continuing.*atchpoint \[0-9\]+: buf\r\n\r\nOld value = .*testte\".*$gdb_prompt $" {
+		pass $test
+	    }
+	    -re "Could not insert hardware breakpoints:.*You may have requested too many hardware breakpoints/watchpoints.*$gdb_prompt $" {
+		# This may happen with remote targets that support
+		# hardware watchpoints.  We only find out the
+		# watchpoint was too large, for example, at insert
+		# time.  If GDB is ever adjusted to downgrade the
+		# watchpoint automatically in this case, this match
+		# should be removed.
+		pass $test
+	    }
+	}
+    }

     gdb_test_no_output "delete \$bpnum" "delete watch buf"
 }


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