From d8b901edd1a9b717bd397400ce498c7a2d9504d0 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Mon, 23 Feb 2015 17:35:09 +0000 Subject: [PATCH] delete_breakpoints: Rewrite using gdb_test_multiple Because delete_breakpoints uses gdb_expect directly, an internal error results in slow timeouts instead of quickly bailing out. This patch rewrites the procedure to use gdb_test_multiple instead, while preserving the existing general logic ("delete breakpoints" + "info breakpoints"). gdb/testsuite/ 2015-02-23 Pedro Alves * lib/gdb.exp (delete_breakpoints): Rewrite using gdb_test_multiple. --- gdb/testsuite/ChangeLog | 5 +++++ gdb/testsuite/lib/gdb.exp | 38 ++++++++++++++++++++++++-------------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 276749e..87f6c98 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2015-02-23 Pedro Alves + * lib/gdb.exp (delete_breakpoints): Rewrite using + gdb_test_multiple. + +2015-02-23 Pedro Alves + * gdb.base/info-os.c: Include stdlib.h. 2015-02-22 Doug Evans diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index bbc657c..08db806 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -181,25 +181,35 @@ proc delete_breakpoints {} { # we need a larger timeout value here or this thing just confuses # itself. May need a better implementation if possible. - guo # - send_gdb "delete breakpoints\n" - gdb_expect 100 { - -re "Delete all breakpoints.*y or n.*$" { + set timeout 100 + + set msg "delete all breakpoints in delete_breakpoints" + set deleted 0 + gdb_test_multiple "delete breakpoints" "$msg" { + -re "Delete all breakpoints.*y or n.*$" { send_gdb "y\n" exp_continue } - -re "$gdb_prompt $" { # This happens if there were no breakpoints - } - timeout { perror "Delete all breakpoints in delete_breakpoints (timeout)" ; return } + -re "$gdb_prompt $" { + set deleted 1 + } } - send_gdb "info breakpoints\n" - gdb_expect 100 { - -re "No breakpoints or watchpoints..*$gdb_prompt $" {} - -re "$gdb_prompt $" { perror "breakpoints not deleted" ; return } - -re "Delete all breakpoints.*or n.*$" { - send_gdb "y\n" - exp_continue + + if {$deleted} { + # Confirm with "info breakpoints". + set deleted 0 + set msg "info breakpoints" + gdb_test_multiple $msg $msg { + -re "No breakpoints or watchpoints..*$gdb_prompt $" { + set deleted 1 + } + -re "$gdb_prompt $" { + } } - timeout { perror "info breakpoints (timeout)" ; return } + } + + if {!$deleted} { + perror "breakpoints not deleted" } } -- 2.7.4