gdb: Fix DUPLICATE and PATH regressions throughout
authorPedro Alves <pedro@palves.net>
Wed, 18 May 2022 12:22:02 +0000 (13:22 +0100)
committerPedro Alves <pedro@palves.net>
Wed, 25 May 2022 12:44:12 +0000 (13:44 +0100)
commitcce0ae568c7e30e0a7b8d1bd77f8c4b7d7b8ce7b
tree14e4c08fb31df4412278a62a4bdf5f739be6d698
parentaee9dcf8a836fe08e3d7f1b58a8b6dd2e16d9b68
gdb: Fix DUPLICATE and PATH regressions throughout

The previous patch to add -prompt/-lbl to gdb_test introduced a
regression: Before, you could specify an explicit empty message to
indicate you didn't want to PASS, like so:

  gdb_test COMMAND PATTERN ""

After said patch, gdb_test no longer distinguishes
no-message-specified vs empty-message, so tests that previously would
be silent on PASS, now started emitting PASS messages based on
COMMAND.  This in turn introduced a number of PATH/DUPLICATE
violations in the testsuite.

This commit fixes all the regressions I could see.

This patch uses the new -nopass feature introduced in the previous
commit, but tries to avoid it if possible.  Most of the patch fixes
DUPLICATE issues the usual way, of using with_test_prefix or explicit
unique messages.

See previous commit's log for more info.

In addition to looking for DUPLICATEs, I also looked for cases where
we would now end up with an empty message in gdb.sum, due to a
gdb_test being passed both no message and empty command.  E.g., this
in gdb.ada/bp_reset.exp:

 gdb_run_cmd
 gdb_test "" "Breakpoint $decimal, foo\\.nested_sub \\(\\).*"

was resulting in this in gdb.sum:

 PASS: gdb.ada/bp_reset.exp:

I fixed such cases by passing an explicit message.  We may want to
make such cases error out.

Tested on x86_64 GNU/Linux, native and native-extended-gdbserver.  I
see zero PATH cases now.  I get zero DUPLICATEs with native testing
now.  I still see some DUPLICATEs with native-extended-gdbserver, but
those were preexisting, unrelated to the gdb_test change.

Change-Id: I5375f23f073493e0672190a0ec2e847938a580b2
38 files changed:
gdb/testsuite/gdb.ada/bp_reset.exp
gdb/testsuite/gdb.ada/exec_changed.exp
gdb/testsuite/gdb.ada/expr_delims.exp
gdb/testsuite/gdb.ada/out_of_line_in_inlined.exp
gdb/testsuite/gdb.base/break-probes.exp
gdb/testsuite/gdb.base/break.exp
gdb/testsuite/gdb.base/checkpoint.exp
gdb/testsuite/gdb.base/gdb-sigterm.exp
gdb/testsuite/gdb.base/info-macros.exp
gdb/testsuite/gdb.base/pie-execl.exp
gdb/testsuite/gdb.base/setvar.exp
gdb/testsuite/gdb.base/sizeof.exp
gdb/testsuite/gdb.base/style.exp
gdb/testsuite/gdb.base/watchpoint-unaligned.exp
gdb/testsuite/gdb.base/watchpoint.exp
gdb/testsuite/gdb.cp/cpexprs.exp.tcl
gdb/testsuite/gdb.cp/static-method.exp
gdb/testsuite/gdb.reverse/insn-reverse.exp
gdb/testsuite/gdb.reverse/machinestate-precsave.exp
gdb/testsuite/gdb.reverse/machinestate.exp
gdb/testsuite/gdb.threads/access-mem-running-thread-exit.exp
gdb/testsuite/gdb.threads/attach-into-signal.exp
gdb/testsuite/gdb.threads/sigstep-threads.exp
gdb/testsuite/gdb.trace/actions.exp
gdb/testsuite/gdb.trace/backtrace.exp
gdb/testsuite/gdb.trace/collection.exp
gdb/testsuite/gdb.trace/infotrace.exp
gdb/testsuite/gdb.trace/passc-dyn.exp
gdb/testsuite/gdb.trace/report.exp
gdb/testsuite/gdb.trace/tfind.exp
gdb/testsuite/gdb.trace/tspeed.exp
gdb/testsuite/gdb.trace/while-dyn.exp
gdb/testsuite/gdb.trace/while-stepping.exp
gdb/testsuite/lib/completion-support.exp
gdb/testsuite/lib/gdb-guile.exp
gdb/testsuite/lib/gdb.exp
gdb/testsuite/lib/range-stepping-support.exp
gdb/testsuite/lib/trace-support.exp