[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".
This commit is contained in:
Tom de Vries
2020-03-15 10:43:43 +01:00
parent 3293bbaffa
commit eaeaf44cfd
2 changed files with 24 additions and 26 deletions

View File

@@ -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.

View File

@@ -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
}
}