diff options
author | Luis Machado <luis.machado@linaro.org> | 2021-04-01 17:00:43 -0300 |
---|---|---|
committer | Luis Machado <luis.machado@linaro.org> | 2021-04-27 20:42:07 -0300 |
commit | b9f90c72ee69a31100a7b1b4106f192dde75debf (patch) | |
tree | a631f7f6cfa087618bfa73126e24e59db68f63ce /gdb | |
parent | 4b62a30d5b4dcb24e73c1369d8c0da3dc10a4146 (diff) | |
download | gdb-b9f90c72ee69a31100a7b1b4106f192dde75debf.zip gdb-b9f90c72ee69a31100a7b1b4106f192dde75debf.tar.gz gdb-b9f90c72ee69a31100a7b1b4106f192dde75debf.tar.bz2 |
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
eaeaf44cfdc9a4096a0dd52fa0606f29d4bfd48e). 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.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/psymtab.c | 3 | ||||
-rw-r--r-- | gdb/symmisc.c | 7 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/maint.exp | 3 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 17 |
6 files changed, 26 insertions, 15 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e8f7ce5..6d7b341 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -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> diff --git a/gdb/psymtab.c b/gdb/psymtab.c index 75a307c..fe32486 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -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"); } diff --git a/gdb/symmisc.c b/gdb/symmisc.c index d992c67..e38ceb6 100644 --- a/gdb/symmisc.c +++ b/gdb/symmisc.c @@ -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"); diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 999ab44..d4e02d1 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,10 @@ 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. 2021-04-27 Michael Weghorn <m.weghorn@posteo.de> diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index e723922..6831d1b 100644 --- a/gdb/testsuite/gdb.base/maint.exp +++ b/gdb/testsuite/gdb.base/maint.exp @@ -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 } diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 943112f..36a5fd4 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -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. |