[gdb/testsuite] Capture many-headers.exp progress and output in gdb.log
authorTom de Vries <tdevries@suse.de>
Sun, 9 Feb 2020 12:30:03 +0000 (13:30 +0100)
committerTom de Vries <tdevries@suse.de>
Sun, 9 Feb 2020 12:30:03 +0000 (13:30 +0100)
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.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/many-headers.exp

index f6bd172ca992c8856f3d4c679f12b0028d6cb80f..42c8e8f11ef6a7b5dacef90b9febb3be60acc312 100644 (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:
index dc7f8675b895c134b93c9aecffdcdc317070c7cf..eb177d1d82d9204129215cc7afe82aa892a32d10 100644 (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"
 }