On Wed, 28 Jun 2023 at 16:58, Tom Tromey via Libstdc++ < libstdc++@gcc.gnu.org> wrote: > The libstdc++ test suite checks whether gdb type printers are > available like so: > > set do_whatis_tests [gdb_batch_check "python print(gdb.type_printers)" > \ > "\\\[\\\]"] > > This regexp assumes that the list of printers is empty. However, > sometimes it's convenient to ship a gdb that comes with some default > printers, causing this to erroneously report that gdb is "too old". > > I believe the intent of this check is to ensure that gdb.type_printers > exists -- not to check its starting value. This patch changes the > check to accept any Python list as output. > > Note that the patch doesn't look for the trailing "]". I tried this > but in my case the output was too long for expect. It seemed fine to > just check the start, as the point really is to reject the case where > the command prints an error message. > Looks good. OK for trunk, and OK to backport after some soak time on trunk. Thanks. > * testsuite/lib/gdb-test.exp (gdb-test): Relax type-printer > regexp. > --- > libstdc++-v3/testsuite/lib/gdb-test.exp | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/libstdc++-v3/testsuite/lib/gdb-test.exp > b/libstdc++-v3/testsuite/lib/gdb-test.exp > index 3728a060aa4..d8e572ef7b3 100644 > --- a/libstdc++-v3/testsuite/lib/gdb-test.exp > +++ b/libstdc++-v3/testsuite/lib/gdb-test.exp > @@ -107,8 +107,12 @@ proc gdb-test { marker {selector {}} {load_xmethods > 0} } { > } > } > > + # A very old version of gdb will not have the type_printers > + # global. Some organizations may ship a gdb that has some default > + # type printers, so accept any list output as indication that the > + # global exists. > set do_whatis_tests [gdb_batch_check "python > print(gdb.type_printers)" \ > - "\\\[\\\]"] > + "\\\[.+"] > if {!$do_whatis_tests} { > send_log "skipping 'whatis' tests - gdb too old" > } > -- > 2.40.1 > >