From 274f47f34a990de0d05c842dbe1a7645f4689654 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 27 Jan 2012 13:58:46 +0000 Subject: 2012-01-27 Pedro Alves * gdb.base/watchpoint.exp (test_watchpoint_in_big_blob): Expect "You may have requested too many hardware breakpoints/watchpoints". --- gdb/testsuite/ChangeLog | 6 ++++++ gdb/testsuite/gdb.base/watchpoint.exp | 40 +++++++++++++++++++++++++++++++++-- 2 files changed, 44 insertions(+), 2 deletions(-) (limited to 'gdb') diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 180d508484..278bf86ff4 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2012-01-27 Pedro Alves + + * gdb.base/watchpoint.exp (test_watchpoint_in_big_blob): Expect + "You may have requested too many hardware + breakpoints/watchpoints". + 2012-01-27 Pedro Alves * gdb.base/watchpoint.exp (maybe_clean_restart) diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp index 1da6f9b839..a4f30b3926 100644 --- a/gdb/testsuite/gdb.base/watchpoint.exp +++ b/gdb/testsuite/gdb.base/watchpoint.exp @@ -769,8 +769,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" } -- cgit v1.2.1