aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2020-03-15 10:43:43 +0100
committerTom de Vries <tdevries@suse.de>2020-03-15 10:43:43 +0100
commiteaeaf44cfdc9a4096a0dd52fa0606f29d4bfd48e (patch)
tree14c6421249eecab364e76099b1c1abe5c65a51ec
parent3293bbaffac9a22fc6d1a08ac6602a4a63b5e68b (diff)
downloadgdb-eaeaf44cfdc9a4096a0dd52fa0606f29d4bfd48e.zip
gdb-eaeaf44cfdc9a4096a0dd52fa0606f29d4bfd48e.tar.gz
gdb-eaeaf44cfdc9a4096a0dd52fa0606f29d4bfd48e.tar.bz2
[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 <tdevries@suse.de> * gdb.base/maint.exp: Use exp_continue in long lines for "maint print objfiles".
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.base/maint.exp45
2 files changed, 24 insertions, 26 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index a3114d3..7c3fd4c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-03-15 Tom de Vries <tdevries@suse.de>
+
+ * gdb.base/maint.exp: Use exp_continue in long lines for "maint print
+ objfiles".
+
2020-03-14 Tom Tromey <tom@tromey.com>
* 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 f6eeb98..3431f2c 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
}
}