mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
46ce2b6f4c
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.
77 lines
1.9 KiB
Plaintext
77 lines
1.9 KiB
Plaintext
# Copyright 2018-2020 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Test if gdb can read a core file with a program header size of 4MB, if the
|
|
# stack size is limited to 4MB.
|
|
|
|
if { [target_info gdb_protocol] != "" } {
|
|
# Even though the feature under features being tested are supported by
|
|
# gdbserver, the way this test is written doesn't make it easy with a
|
|
# remote target.
|
|
unsupported "not native"
|
|
return
|
|
}
|
|
|
|
standard_testfile
|
|
|
|
if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
|
|
return -1
|
|
}
|
|
|
|
# Generate core file.
|
|
set corefile [core_find $binfile]
|
|
if {$corefile == ""} {
|
|
return 0
|
|
}
|
|
|
|
# Limit is in kb, so this is 4MB.
|
|
set stack_limit 4096
|
|
|
|
# Verify if we can set the stack limit.
|
|
catch {
|
|
system [concat \
|
|
"(" \
|
|
"ulimit -s $stack_limit;" \
|
|
")"]
|
|
} msg
|
|
if { "$msg" != "" } {
|
|
untested "Can't set stack limit"
|
|
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 "$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"
|
|
}
|