gdb/testsuite: make sure to consume the prompt in gdb.base/unwind-on-each-insn.exp
authorSimon Marchi <simon.marchi@efficios.com>
Tue, 25 Oct 2022 13:50:56 +0000 (09:50 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 25 Oct 2022 14:36:23 +0000 (10:36 -0400)
commit7699dfc8d5896556e700bd6cb36d76dd43252e98
treee9cbe9291c0479c44f3413de5aae2d3096b1952b
parent0f2cd53cf4f730136e2b275e8279d8bc348a9a88
gdb/testsuite: make sure to consume the prompt in gdb.base/unwind-on-each-insn.exp

This test fails quite reliably for me when ran as:

    $ taskset -c 1 make check TESTS="gdb.base/unwind-on-each-insn.exp" RUNTESTFLAGS="--target_board=native-gdbserver"

or more simply:

    $ make check-read1 TESTS="gdb.base/unwind-on-each-insn.exp"

The problem is that the gdb_test_multiple call that grabs the frame id
from "maint print frame-id" does not consume the prompt.  Well, it does
sometimes due to the trailing .*, but not always.  If the prompt is not
consumed, the tests that follow get confused:

    FAIL: gdb.base/unwind-on-each-insn.exp: gdb_breakpoint: set breakpoint at *foo
    FAIL: gdb.base/unwind-on-each-insn.exp: disassemble foo
    FAIL: gdb.base/unwind-on-each-insn.exp: get $sp and frame base in foo: get hexadecimal valueof "$sp"
    ... many more ...

Use -wrap to make gdb_test_multiple consume the prompt.

While at it, remove the bit that consumes the command name and do
exp_continue, it's not really necessary.  And for consistency, do the
same changes to the gdb_test_multiple that consumes the stack address,
although that one was fine, it did consume the prompt explicitly.

Change-Id: I2b7328c8844c7e98921ea494c4c05107162619fc
Reviewed-By: Bruno Larsen <blarsen@redhat.com>
gdb/testsuite/gdb.base/unwind-on-each-insn.exp