140 lines
4.3 KiB
Text
140 lines
4.3 KiB
Text
|
# Copyright (C) 1992, 1993, 1994 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 2 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, write to the Free Software
|
||
|
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
|
||
|
|
||
|
# Please email any bugs, comments, and/or additions to this file to:
|
||
|
# bug-gdb@prep.ai.mit.edu
|
||
|
|
||
|
# This file was written by Fred Fish. (fnf@cygnus.com)
|
||
|
|
||
|
if $tracelevel then {
|
||
|
strace $tracelevel
|
||
|
}
|
||
|
|
||
|
set prms_id 0
|
||
|
set bug_id 0
|
||
|
|
||
|
# are we on a target board
|
||
|
if ![isnative] then {
|
||
|
warning "corefile test case can't run on a target system"
|
||
|
return
|
||
|
}
|
||
|
|
||
|
|
||
|
set binfile "coremaker"
|
||
|
set srcfile $binfile.c
|
||
|
|
||
|
if ![file exists $objdir/$subdir/$binfile] then {
|
||
|
perror "$objdir/$subdir/$binfile does not exist."
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
if ![file exists $objdir/$subdir/corefile] then {
|
||
|
# Create a core file named "corefile" rather than just "core", to
|
||
|
# avoid problems with sys admin types that like to regularly prune all
|
||
|
# files named "core" from the system.
|
||
|
#
|
||
|
# Some systems append "core" to the name of the program; others append
|
||
|
# the name of the program to "core".
|
||
|
|
||
|
catch "system \"cd $objdir/$subdir; ./$binfile\""
|
||
|
if [file exists $objdir/$subdir/core] then {
|
||
|
catch "exec mv $objdir/$subdir/core $objdir/$subdir/corefile"
|
||
|
} else if [file exists $objdir/$subdir/core.$binfile] {
|
||
|
catch "exec mv $objdir/$subdir/core.$binfile $objdir/$subdir/corefile"
|
||
|
} else if [file exists $objdir/$subdir/$binfile.core] {
|
||
|
catch "exec mv $objdir/$subdir/$binfile.core $objdir/$subdir/corefile"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#
|
||
|
# Test that we can simply startup with a "-core=corefile" command line arg
|
||
|
# and recognize that the core file is a valid, usable core file.
|
||
|
# To do this, we must shutdown the currently running gdb and restart
|
||
|
# with the -core args. We can't use gdb_start because it looks for
|
||
|
# the first gdb prompt, and the message we are looking for occurs
|
||
|
# before the first prompt. Also, we can't include GDBFLAGS because
|
||
|
# if it is empty, this confuses gdb with an empty argument that it
|
||
|
# grumbles about (said grumbling currently being ignored in gdb_start).
|
||
|
# **FIXME**
|
||
|
#
|
||
|
|
||
|
gdb_exit
|
||
|
if $verbose>1 then {
|
||
|
send_user "Spawning $GDB $GDBFLAGS -core=$objdir/$subdir/corefile\n"
|
||
|
}
|
||
|
|
||
|
# The RS/6000 gdb doesn't know how to extract the file name and
|
||
|
# terminating signal from the core file, so all these tests are
|
||
|
# expected to fail.
|
||
|
|
||
|
setup_xfail "rs6000-*-*"
|
||
|
set oldtimeout $timeout
|
||
|
set timeout [expr "$timeout + 60"]
|
||
|
spawn $GDB $GDBFLAGS -core=$objdir/$subdir/corefile
|
||
|
expect {
|
||
|
-re "Core was generated by .*coremaker.*\r
|
||
|
\#0 .*\(\).*\r
|
||
|
$prompt $" { pass "args: -core=corefile" }
|
||
|
-re ".*$prompt $" { fail "args: -core=corefile" }
|
||
|
timeout { fail "(timeout) starting with -core" }
|
||
|
}
|
||
|
|
||
|
|
||
|
#
|
||
|
# Test that startup with both an executable file and -core argument.
|
||
|
# See previous comments above, they are still applicable.
|
||
|
#
|
||
|
|
||
|
gdb_exit
|
||
|
if $verbose>1 then {
|
||
|
send_user "Spawning $GDB $GDBFLAGS $objdir/$subdir/$binfile -core=$objdir/$subdir/corefile\n"
|
||
|
}
|
||
|
|
||
|
|
||
|
setup_xfail "rs6000-*-*"
|
||
|
# This fails in p3, but not in devo.
|
||
|
spawn $GDB $GDBFLAGS $objdir/$subdir/$binfile -core=$objdir/$subdir/corefile
|
||
|
expect {
|
||
|
-re "Core was generated by .*coremaker.*\r
|
||
|
\#0 .*\(\).*\r
|
||
|
$prompt $" { pass "args: execfile -core=corefile" }
|
||
|
-re ".*$prompt $" { fail "args: execfile -core=corefile" }
|
||
|
timeout { fail "(timeout) starting with -core" }
|
||
|
}
|
||
|
set timeout $oldtimeout
|
||
|
|
||
|
|
||
|
# Now restart normally.
|
||
|
|
||
|
gdb_exit
|
||
|
gdb_start
|
||
|
gdb_reinitialize_dir $srcdir/$subdir
|
||
|
gdb_load $objdir/$subdir/$binfile
|
||
|
|
||
|
# Test basic corefile recognition via core-file command.
|
||
|
|
||
|
setup_xfail "rs6000-*-*"
|
||
|
send "core-file $objdir/$subdir/corefile\n"
|
||
|
expect {
|
||
|
-re "Core was generated by .*coremaker.*\r
|
||
|
\#0 .*\(\).*\r
|
||
|
$prompt $" { pass "core-file command" }
|
||
|
-re ".*$prompt $" { fail "core-file command" }
|
||
|
timeout { fail "(timeout) core-file command" }
|
||
|
}
|
||
|
|
||
|
gdb_test "core" "No core file now."
|