[gdb/testsuite] Add -cooked pattern flag to gdb_test_multiple Currently, in order to rewrite: ... gdb_test ... using gdb_test_multiple, we get: ... gdb_test_multiple { -re "\[\r\n\]*(?:)\[\r\n\]+$gdb_prompt $" { pass $gdb_test_name } } ... Add a '-cooked' pattern flag to gdb_test_multiple, that wraps the regexp pattern as gdb_test wraps its message argument. This allows us to rewrite into the more compact: ... gdb_test_multiple { -re -cooked { pass $gdb_test_name } } ... Tested on x86_64-linux. gdb/testsuite/ChangeLog: 2019-10-04 Tom de Vries * lib/gdb.exp (gdb_test_multiple): Add -cooked pattern flag. * gdb.reverse/step-precsave.exp: Rewrite gdb_test_multiple containing kfail using -cooked pattern flag and convenience variable gdb_test_name. --- gdb/testsuite/gdb.reverse/step-precsave.exp | 13 +++++-------- gdb/testsuite/lib/gdb.exp | 14 +++++++++++++- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/gdb/testsuite/gdb.reverse/step-precsave.exp b/gdb/testsuite/gdb.reverse/step-precsave.exp index 2073b8a1542..3ce786fc4c9 100644 --- a/gdb/testsuite/gdb.reverse/step-precsave.exp +++ b/gdb/testsuite/gdb.reverse/step-precsave.exp @@ -46,15 +46,12 @@ gdb_test "break $end_of_main" \ # This can take awhile. with_timeout_factor 20 { - set test "run to end of main" - set pass_pattern "Breakpoint .* end of main .*" - set kfail_pattern "Process record does not support instruction 0xc5 at.*" - gdb_test_multiple "continue" $test { - -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" { - pass $test + gdb_test_multiple "continue" "run to end of main" { + -re -cooked "Breakpoint .* end of main .*" { + pass $gdb_test_name } - -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" { - kfail "record/23188" $test + -re -cooked "Process record does not support instruction 0xc5 at.*" { + kfail "record/23188" $gdb_test_name } } } diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index d23d51572cc..f73313f1cb0 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -821,6 +821,7 @@ proc gdb_test_multiple { command message user_code { prompt_regexp "" } } { set patterns "" set expecting_action 0 set expecting_arg 0 + set cooked 0 foreach item $user_code subst_item $subst_code { if { $item == "-n" || $item == "-notransfer" || $item == "-nocase" } { lappend processed_code $item @@ -835,6 +836,10 @@ proc gdb_test_multiple { command message user_code { prompt_regexp "" } } { lappend processed_code $item continue } + if { $item == "-cooked" } { + set cooked 1 + continue + } if { $expecting_arg } { set expecting_arg 0 lappend processed_code $subst_item @@ -848,7 +853,14 @@ proc gdb_test_multiple { command message user_code { prompt_regexp "" } } { continue } set expecting_action 1 - lappend processed_code $subst_item + if { $cooked } { + # Wrap subst_item as is done for the gdb_test PATTERN argument. + lappend processed_code \ + "\[\r\n\]*(?:$subst_item)\[\r\n\]+$gdb_prompt $" + set cooked 0 + } else { + lappend processed_code $subst_item + } if {$patterns != ""} { append patterns "; " }