From eaeaf44cfdc9a4096a0dd52fa0606f29d4bfd48e Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Sun, 15 Mar 2020 10:43:43 +0100 Subject: [PATCH] [gdb/testsuite] Fix check-read1 FAIL with gdb.base/maint.exp When running test-case gdb.base/maint.exp with check-read1, I run into: ... FAIL: gdb.base/maint.exp: (timeout) maint print objfiles ... The FAIL happens because command output contains long lines like this: ... file1 at $hex, file2 at $hex, ..., $file$n at $hex, ... F.i., such a line for libc.so.debug contains 82000 chars. Fix this this by reading long lines bit by bit. Also, replace the testing of the command output formulated using a gdb_send combined with gdb_expect-in-a-loop, with a regular gdb_test_multiple with exp_continue. Tested on x86_64-linux, with make targets check and check-read1. gdb/testsuite/ChangeLog: 2020-03-15 Tom de Vries * gdb.base/maint.exp: Use exp_continue in long lines for "maint print objfiles". --- gdb/testsuite/ChangeLog | 5 ++++ gdb/testsuite/gdb.base/maint.exp | 45 ++++++++++++++------------------ 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index a3114d3f574..7c3fd4cf4cb 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-03-15 Tom de Vries + + * gdb.base/maint.exp: Use exp_continue in long lines for "maint print + objfiles". + 2020-03-14 Tom Tromey * gdb.base/cvexpr.exp: Add test for _Atomic and restrict. diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index f6eeb98a205..3431f2c6dc5 100644 --- a/gdb/testsuite/gdb.base/maint.exp +++ b/gdb/testsuite/gdb.base/maint.exp @@ -215,7 +215,7 @@ gdb_expect { # There aren't any ... gdb_test_no_output "maint print dummy-frames" -send_gdb "maint print objfiles\n" + # To avoid timeouts, we avoid expects with many .* patterns that match # many lines. Instead, we keep track of which milestones we've seen @@ -224,31 +224,24 @@ send_gdb "maint print objfiles\n" set header 0 set psymtabs 0 set symtabs 0 -set keep_looking 1 - -while {$keep_looking} { - gdb_expect { - - -re "\r\n" { - set output $expect_out(buffer) - if {[regexp ".*Object file.*maint($EXEEXT)?: Objfile at ${hex}" $output]} { - set header 1 - } - if {[regexp ".*Psymtabs:\[\r\t \]+\n" $output]} { - set psymtabs 1 - } - if {[regexp ".*Symtabs:\[\r\t \]+\n" $output]} { - set symtabs 1 - } - } - - -re ".*$gdb_prompt $" { - set keep_looking 0 - } - timeout { - fail "(timeout) maint print objfiles" - set keep_looking 0 - } +gdb_test_multiple "maint print objfiles" "" -lbl { + -re "\r\nObject file.*maint($EXEEXT)?: Objfile at ${hex}" { + set header 1 + exp_continue + } + -re "\r\nPsymtabs:\[\r\t \]+" { + set psymtabs 1 + exp_continue + } + -re "\r\nSymtabs:\[\r\t \]+\n" { + set symtabs 1 + exp_continue + } + -re " at $hex," { + exp_continue + } + -re -wrap "" { + pass $gdb_test_name } } -- 2.30.2