aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuis Machado <luis.machado@linaro.org>2021-04-01 17:00:43 -0300
committerLuis Machado <luis.machado@linaro.org>2021-04-27 20:42:07 -0300
commitb9f90c72ee69a31100a7b1b4106f192dde75debf (patch)
treea631f7f6cfa087618bfa73126e24e59db68f63ce
parent4b62a30d5b4dcb24e73c1369d8c0da3dc10a4146 (diff)
downloadfsf-binutils-gdb-b9f90c72ee69a31100a7b1b4106f192dde75debf.zip
fsf-binutils-gdb-b9f90c72ee69a31100a7b1b4106f192dde75debf.tar.gz
fsf-binutils-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.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/psymtab.c3
-rw-r--r--gdb/symmisc.c7
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.base/maint.exp3
-rw-r--r--gdb/testsuite/lib/gdb.exp17
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.