mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
Fix timeout with maint print objfiles
I'm seeing timeouts from gdb.rust/traits.exp when we attempt to print
things with "maint print objfiles".
This happens for two reasons:
1 - GDB does not explicitly split each entry into its own line, but rather
relies on the terminal's width to insert line breaks.
2 - When running the GDB testsuite, such width may be unlimited, which will
prevent GDB from inserting any line breaks.
As a result, the output may be too lengthy and will come in big lines. Tweak
the support library to match the patterns line-by-line, which gives us more
time to match things. Also fix GDB's output to print one entry per line,
regardless of the terminal width.
A similar approach was used in another testcase using the same command (commit
eaeaf44cfd
). With the new line breaks, we don't
need a particular pattern, so clean up that test as well.
gdb/ChangeLog:
2021-04-27 Luis Machado <luis.machado@linaro.org>
* psymtab.c (psymbol_functions::dump): Output newline.
* symmisc.c (dump_objfile): Likewise.
gdb/testsuite/ChangeLog:
2021-04-27 Luis Machado <luis.machado@linaro.org>
* gdb.base/maint.exp: Drop a pattern that is not needed.
* lib/gdb.exp (readnow): Match line-by-line.
This commit is contained in:
parent
4b62a30d5b
commit
b9f90c72ee
@ -1,3 +1,9 @@
|
||||
2021-04-27 Luis Machado <luis.machado@linaro.org>
|
||||
|
||||
* psymtab.c (psymbol_functions::dump): Output newline.
|
||||
Remove wrap.
|
||||
* symmisc.c (dump_objfile): Likewise.
|
||||
|
||||
2021-04-27 Michael Weghorn <m.weghorn@posteo.de>
|
||||
Simon Marchi <simon.marchi@polymtl.ca>
|
||||
|
||||
|
@ -885,8 +885,7 @@ psymbol_functions::dump (struct objfile *objfile)
|
||||
printf_filtered ("%s at ",
|
||||
psymtab->filename);
|
||||
gdb_print_host_address (psymtab, gdb_stdout);
|
||||
printf_filtered (", ");
|
||||
wrap_here (" ");
|
||||
printf_filtered ("\n");
|
||||
}
|
||||
printf_filtered ("\n\n");
|
||||
}
|
||||
|
@ -131,12 +131,9 @@ dump_objfile (struct objfile *objfile)
|
||||
printf_filtered ("%s at ",
|
||||
symtab_to_filename_for_display (symtab));
|
||||
gdb_print_host_address (symtab, gdb_stdout);
|
||||
printf_filtered (", ");
|
||||
if (SYMTAB_OBJFILE (symtab) != objfile)
|
||||
{
|
||||
printf_filtered ("NOT ON CHAIN! ");
|
||||
}
|
||||
wrap_here (" ");
|
||||
printf_filtered (", NOT ON CHAIN!");
|
||||
printf_filtered ("\n");
|
||||
}
|
||||
}
|
||||
printf_filtered ("\n\n");
|
||||
|
@ -1,3 +1,8 @@
|
||||
2021-04-27 Luis Machado <luis.machado@linaro.org>
|
||||
|
||||
* gdb.base/maint.exp: Drop a pattern that is not needed.
|
||||
* lib/gdb.exp (readnow): Match line-by-line.
|
||||
|
||||
2021-04-27 Luis Machado <luis.machado@linaro.org>
|
||||
|
||||
* gdb.xml/tdesc-reload.exp: Pass -lbl.
|
||||
|
@ -230,9 +230,6 @@ gdb_test_multiple "maint print objfiles" "" -lbl {
|
||||
set symtabs 1
|
||||
exp_continue
|
||||
}
|
||||
-re " at $hex," {
|
||||
exp_continue
|
||||
}
|
||||
-re -wrap "" {
|
||||
pass $gdb_test_name
|
||||
}
|
||||
|
@ -7511,17 +7511,24 @@ proc readnow { args } {
|
||||
} else {
|
||||
set re ""
|
||||
}
|
||||
|
||||
set readnow_p 0
|
||||
# Given the listing from the following command can be very verbose, match
|
||||
# the patterns line-by-line. This prevents timeouts from waiting for
|
||||
# too much data to come at once.
|
||||
set cmd "maint print objfiles $re"
|
||||
gdb_test_multiple $cmd "" {
|
||||
-re -wrap "\r\n.gdb_index: faked for \"readnow\"\r\n.*" {
|
||||
return 1
|
||||
gdb_test_multiple $cmd "" -lbl {
|
||||
-re "\r\n.gdb_index: faked for \"readnow\"" {
|
||||
# Record the we've seen the above pattern.
|
||||
set readnow_p 1
|
||||
exp_continue
|
||||
}
|
||||
-re -wrap "" {
|
||||
return 0
|
||||
# We don't care about any other input.
|
||||
}
|
||||
}
|
||||
|
||||
return 0
|
||||
return $readnow_p
|
||||
}
|
||||
|
||||
# Return 1 if partial symbols are available. Otherwise, return 0.
|
||||
|
Loading…
Reference in New Issue
Block a user