From 623563f79db9c2d576303565f8ba1415c911c452 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Wed, 19 Feb 2020 21:33:39 +0100 Subject: [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. --- gdb/testsuite/ChangeLog | 5 +++ gdb/testsuite/gdb.base/corefile-buildid.exp | 49 ++++++++++++++++++++++++++++- 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index b2f20fe..e599791 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 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. 2020-02-19 Tom de Vries diff --git a/gdb/testsuite/gdb.base/corefile-buildid.exp b/gdb/testsuite/gdb.base/corefile-buildid.exp index 158cbb6..b9844ee 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. -- cgit v1.1