From: Tom de Vries Date: Wed, 19 Feb 2020 20:33:39 +0000 (+0100) Subject: [gdb/testsuite] Fix corefile-buildid.exp with check-read1 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=623563f79db9c2d576303565f8ba1415c911c452;p=binutils-gdb.git [gdb/testsuite] Fix corefile-buildid.exp with check-read1 When running gdb.base/corefile-buildid.exp using check-read1, I run into: ... FAIL: gdb.base/corefile-buildid.exp: shared: info files (timeout) FAIL: gdb.base/corefile-buildid.exp: symlink shared: info files (timeout) FAIL: gdb.base/corefile-buildid.exp: shared sepdebug: info files (timeout) FAIL: gdb.base/corefile-buildid.exp: symlink shared sepdebug: info files \ (timeout) ... This is caused by attempting to match the output of an "info files" command using a single gdb_test in check_exec_file. Fix this by doing line-by-line matching in check_exec_file. Tested on x86_64-linux, using make targets check and check-read1. gdb/testsuite/ChangeLog: 2020-02-19 Tom de Vries * gdb.base/corefile-buildid.exp (check_exec_file): Match info files output line-by-line. --- diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b2f20fe38b1..e599791f58a 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2020-02-19 Tom de Vries + + * gdb.base/corefile-buildid.exp (check_exec_file): Match info files + output line-by-line. + 2020-02-19 Tom de Vries * gdb.cp/cpexprs.exp: Remove c++/14186 kfail. diff --git a/gdb/testsuite/gdb.base/corefile-buildid.exp b/gdb/testsuite/gdb.base/corefile-buildid.exp index 158cbb6dc6d..b9844ee3548 100644 --- a/gdb/testsuite/gdb.base/corefile-buildid.exp +++ b/gdb/testsuite/gdb.base/corefile-buildid.exp @@ -108,8 +108,55 @@ proc append_debug_dir {debugdir} { # FILE. proc check_exec_file {file} { + global gdb_prompt send_log "expecting exec file \"$file\"\n" - gdb_test "info files" "Local exec file:\[\r\n\t\ \]+`[string_to_regexp $file]'.*" + + # Get line with "Local exec file:". + set ok 0 + gdb_test_multiple "info files" "" { + -re "^Local exec file:\r\n" { + set test_name $gdb_test_name + set ok 1 + } + -re "^$gdb_prompt $" { + fail $gdb_test_name + } + -re "^\[^\r\n\]*\r\n" { + exp_continue + } + } + + if { $ok == 0 } { + return + } + + # Get subsequent line with $file. + set ok 0 + gdb_test_multiple "" $test_name { + -re "^\[\t\ \]+`[string_to_regexp $file]'\[^\r\n\]*\r\n" { + set ok 1 + } + -re "^$gdb_prompt $" { + fail $gdb_test_name + } + -re "^\[^\r\n\]*\r\n" { + exp_continue + } + } + + if { $ok == 0 } { + return + } + + # Skip till prompt. + gdb_test_multiple "" $test_name { + -re "^$gdb_prompt $" { + pass $gdb_test_name + } + -re "^\[^\r\n\]*\r\n" { + exp_continue + } + } } # Test whether gdb can find an exec file from a core file's build-id.