[gdb/testsuite] Capture many-headers.exp progress and output in gdb.log

When running test-case gdb.base/many-headers.exp, we have test output on
stdout/stderr:
...
Running src/gdb/testsuite/gdb.base/many-headers.exp ...
[New LWP 759]
Core was generated by `outputs/gdb.base/many-headers/many'.
Program terminated with signal SIGSEGV, Segmentation fault.
\#0  0x0000000000400688 in ?? ()

                === gdb Summary ===

nr of expected passes            1
...

Furthermore, the only trace in gdb.log that we have of the gdb command issued
is:
...
PASS: gdb.base/many-headers.exp: read core file
...

Fix this by echoing the gdb command in gdb.log, and capturing the
command output and pasting it into gdb.log:
...
( ulimit -s 4096; \
  gdb -nw -nx -data-directory data-directory -batch -core=many-headers.core )
[New LWP 1542]
Core was generated by `many'.
Program terminated with signal SIGSEGV, Segmentation fault.
\#0  0x0000000000400688 in ?? ()
PASS: gdb.base/many-headers.exp: read core file
...

Tested on x86_64-linux.

gdb/testsuite/ChangeLog:

2020-02-09  Tom de Vries  <tdevries@suse.de>

	* gdb.base/many-headers.exp: Echo gdb command to gdb.log.  Capture gdb
	command output and paste it into gdb.log.  If any, paste catch message
	to gdb.log.
This commit is contained in:
Tom de Vries 2020-02-09 13:30:03 +01:00
parent 6bafc8451e
commit 46ce2b6f4c
2 changed files with 20 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2020-02-09 Tom de Vries <tdevries@suse.de>
* gdb.base/many-headers.exp: Echo gdb command to gdb.log. Capture gdb
command output and paste it into gdb.log. If any, paste catch message
to gdb.log.
2020-02-07 Tom Tromey <tromey@adacore.com>
PR breakpoints/24915:

View File

@ -51,17 +51,26 @@ if { "$msg" != "" } {
return -1
}
set cmd \
[concat \
"(" \
"ulimit -s $stack_limit;" \
"$GDB $INTERNAL_GDBFLAGS $GDBFLAGS -batch -core=$corefile" \
")"]
verbose -log $cmd
# Run gdb with stack limit
set output [standard_output_file OUTPUT]
catch {
system [concat \
"(" \
"ulimit -s $stack_limit;" \
"$GDB $INTERNAL_GDBFLAGS $GDBFLAGS -batch -core=$corefile" \
")"]
system "$cmd > $output 2>&1"
} msg
verbose -log [exec cat $output]
file delete $output
set test "read core file"
if { "$msg" == "" } {
pass "$test"
} else {
verbose -log $msg
fail "$test"
}