watchpoint-reuse-slot.exp: Correctly skip unsupported commands.

Message ID 87pphvhj6i.fsf@br87z6lw.de.ibm.com
State Superseded
Headers

Commit Message

Andreas Arnez June 26, 2014, 1:52 p.m. UTC
  The test case "watchpoint-reuse-slot.exp" yields a lot of failures on
s390/s390x: all instances of awatch, rwatch, and hbreak are performed
even though they aren't supported on these targets.  This is because
the test case ignores non-support error messages when probing for
support of these commands, like:

    (gdb) rwatch buf.byte[0]
    Target does not support this type of hardware watchpoint.

The patch adds handling for this case in the appropriate
gdb_test_multiple invocations.

gdb/testsuite/
	* gdb.base/watchpoint-reuse-slot.exp: Handle the case that the
	target lacks support for watch, awatch, rwatch, or hbreak.
---
 gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
  

Comments

Pedro Alves June 26, 2014, 2:15 p.m. UTC | #1
On 06/26/2014 02:52 PM, Andreas Arnez wrote:
> The test case "watchpoint-reuse-slot.exp" yields a lot of failures on
> s390/s390x: all instances of awatch, rwatch, and hbreak are performed
> even though they aren't supported on these targets.  This is because
> the test case ignores non-support error messages when probing for
> support of these commands, like:
> 
>     (gdb) rwatch buf.byte[0]
>     Target does not support this type of hardware watchpoint.
> 
> The patch adds handling for this case in the appropriate
> gdb_test_multiple invocations.

Thank you.

Looks like I only hacked out target_insert_watchpoint/hw_breakpoint
in my testing to return unsupported, which is what leads to the
"You may have requested too many" regexs in place:

 (top-gdb) awatch args.argc
 Hardware access (read/write) watchpoint 4: args.argc
 Warning:
 Could not insert hardware watchpoint 4.
 Could not insert hardware breakpoints:
 You may have requested too many hardware breakpoints/watchpoints.

We get that that error too when debugging against gdbserver with
Z packets disabled, which I also tested.

We get that alternative error if the target_can_use_hw_breakpoint
method returns false, which I forgot to hack/test.

> 
> gdb/testsuite/
> 	* gdb.base/watchpoint-reuse-slot.exp: Handle the case that the
> 	target lacks support for watch, awatch, rwatch, or hbreak.

s/watch, // , I think, as "watch" falls back to software
watchpoints.

Patch is OK.

Thanks!
  

Patch

diff --git a/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp b/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp
index aa30398..46bfd56 100644
--- a/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp
+++ b/gdb/testsuite/gdb.base/watchpoint-reuse-slot.exp
@@ -103,6 +103,9 @@  foreach cmd {"watch" "awatch" "rwatch"} {
 	-re "You may have requested too many.*$gdb_prompt $" {
 	    unsupported $test
 	}
+	-re "Target does not support.*$gdb_prompt $" {
+	    unsupported $test
+	}
 	-re "$gdb_prompt $" {
 	    pass $test
 	    lappend cmds $cmd
@@ -115,7 +118,10 @@  foreach cmd {"watch" "awatch" "rwatch"} {
 set test "hbreak"
 gdb_test_multiple "hbreak main" $test {
     -re "You may have requested too many.*$gdb_prompt $" {
-	pass $test
+	unsupported $test
+    }
+    -re "No hardware breakpoint support.*$gdb_prompt $" {
+	unsupported $test
     }
     -re "$gdb_prompt $" {
 	pass $test