* lib/gdb.exp (default_gdb_start): Fix typo.

* gdb.base/corefile.exp: Allow "Core was generated by ..."
	messages to not include the full program name that caused
	the core dump since some systems (such as solaris) apparently
	truncate this path to about 80 characters.
	When generating a core file first try increasing the core file
	size limit to unlimited since some systems may default it to
	zero, and it is harmless to try it.  Move the test for failing
	to generate a core file to where it will actually get executed.
	* gdb.c++/templates.exp (test_ptype_of_templates): Accept
	new gdb result from g++ debug info improvements and make old
	pattern obsolescent.  Also account for size_t differences
	(may be int or long).
	* gdb.base/a1-selftest.exp (test_with_self): Check for case where
	initialization before function call is placed in the delay slot
	and thus appears to be skipped over by commands such as "next".
This commit is contained in:
Fred Fish 1995-12-30 22:27:24 +00:00
parent dcd6706b1a
commit 89e6c70d53
3 changed files with 86 additions and 41 deletions

View File

@ -1,3 +1,22 @@
Sat Dec 30 12:59:12 1995 Fred Fish <fnf@cygnus.com>
* lib/gdb.exp (default_gdb_start): Fix typo.
* gdb.base/corefile.exp: Allow "Core was generated by ..."
messages to not include the full program name that caused
the core dump since some systems (such as solaris) apparently
truncate this path to about 80 characters.
When generating a core file first try increasing the core file
size limit to unlimited since some systems may default it to
zero, and it is harmless to try it. Move the test for failing
to generate a core file to where it will actually get executed.
* gdb.c++/templates.exp (test_ptype_of_templates): Accept
new gdb result from g++ debug info improvements and make old
pattern obsolescent. Also account for size_t differences
(may be int or long).
* gdb.base/a1-selftest.exp (test_with_self): Check for case where
initialization before function call is placed in the delay slot
and thus appears to be skipped over by commands such as "next".
Fri Dec 29 16:09:20 1995 Stan Shebs <shebs@andros.cygnus.com>
* gdb.base/a1-selftest.exp (test_with_self): Run without windows.

View File

@ -196,12 +196,17 @@ proc test_with_self {} {
}
}
set ttyarg_in_delay_slot 0
set description "step over cdarg initialization"
send "step\n"
expect {
-re "char \[*\]ttyarg = NULL;.*$prompt $" {
pass "$description"
}
-re ".*time_at_startup = get_run_time .*$prompt $" {
pass "$description"
set ttyarg_in_delay_slot 1
}
-re ".*No such file or directory.\r\n$prompt $" {
pass "$description (no source available)"
}
@ -217,22 +222,26 @@ proc test_with_self {} {
}
set description "step over ttyarg initialization"
send "step\n"
expect {
-re ".*time_at_startup = get_run_time .*$prompt $" {
pass "$description"
}
-re ".*No such file or directory.\r\n$prompt $" {
pass "$description (no source available)"
}
-re ".*A file or directory .* does not exist..\r\n$prompt $" {
pass "$description (no source available)"
}
-re ".*$prompt $" {
fail "$description"
}
timeout {
fail "$description (timeout)"
if $ttyarg_in_delay_slot==1 then {
pass "$description (in delay slot)"
} else {
send "step\n"
expect {
-re ".*time_at_startup = get_run_time .*$prompt $" {
pass "$description"
}
-re ".*No such file or directory.\r\n$prompt $" {
pass "$description (no source available)"
}
-re ".*A file or directory .* does not exist..\r\n$prompt $" {
pass "$description (no source available)"
}
-re ".*$prompt $" {
fail "$description"
}
timeout {
fail "$description (timeout)"
}
}
}

View File

@ -32,9 +32,9 @@ if ![isnative] then {
}
set testfile "coremaker"
set srcfile ${srcdir}/${subdir}/${testfile}.c
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if { [compile "${srcfile} -g -o ${binfile}"] != "" } {
if { [compile "${srcdir}/${subdir}/${srcfile} -g -o ${binfile}"] != "" } {
perror "Couldn't compile ${srcfile}"
return -1
}
@ -50,11 +50,15 @@ if ![file exists ${objdir}/${subdir}/corefile] then {
# avoid problems with sys admin types that like to regularly prune all
# files named "core" from the system.
#
# Arbitrarily try setting the core size limit to "unlimited" since
# this does not hurt on systems where the command does not work and
# allows us to generate a core on systems where it does.
#
# Some systems append "core" to the name of the program; others append
# the name of the program to "core".
set found 0
catch "system \"cd ${objdir}/${subdir}; ${binfile}\""
# execute_anywhere "./${binfile}"
catch "system \"cd ${objdir}/${subdir}; ulimit -c unlimited; ${binfile}\""
# execute_anywhere "${binfile}"
foreach i "${objdir}/${subdir}/core ${objdir}/${subdir}/core.coremaker.c ${binfile}.core" {
set exec_output [execute_anywhere "ls $i"]
if [ regexp "No such file or directory" ${exec_output} ] {
@ -63,10 +67,10 @@ if ![file exists ${objdir}/${subdir}/corefile] then {
execute_anywhere "mv $i ${objdir}/${subdir}/corefile"
set found 1
}
if { $found == 0 } {
warning "can't generate a core file - core tests suppressed - check ulimit -c"
return 0
}
}
if { $found == 0 } {
warning "can't generate a core file - core tests suppressed - check ulimit -c"
return 0
}
}
@ -81,6 +85,10 @@ if ![file exists ${objdir}/${subdir}/corefile] then {
# grumbles about (said grumbling currently being ignored in gdb_start).
# **FIXME**
#
# Another problem is that on some systems (solaris for example), there
# is apparently a limit on the length of a fully specified path to
# the coremaker executable, at about 80 chars. For this case, consider
# it a pass, but note that the program name is bad.
gdb_exit
if $verbose>1 then {
@ -91,11 +99,14 @@ set oldtimeout $timeout
set timeout [expr "$timeout + 60"]
eval "spawn $GDB -nw $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" }
-re "Core was generated by .*coremaker.*\r\n\#0 .*\(\).*\r\n$prompt $" {
pass "args: -core=corefile"
}
-re "Core was generated by .*\r\n\#0 .*\(\).*\r\n$prompt $" {
pass "args: -core=corefile (with bad program name)"
}
-re ".*$prompt $" { fail "args: -core=corefile" }
timeout { fail "(timeout) starting with -core" }
}
@ -106,17 +117,20 @@ $prompt $" { pass "args: -core=corefile" }
gdb_exit
if $verbose>1 then {
send_user "Spawning $GDB -nw $GDBFLAGS $objdir/$subdir/$binfile -core=$objdir/$subdir/corefile\n"
send_user "Spawning $GDB -nw $GDBFLAGS $binfile -core=$objdir/$subdir/corefile\n"
}
spawn $GDB -nw $GDBFLAGS $objdir/$subdir/$binfile -core=$objdir/$subdir/corefile
spawn $GDB -nw $GDBFLAGS $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" }
-re "Core was generated by .*coremaker.*\r\n\#0 .*\(\).*\r\n$prompt $" {
pass "args: execfile -core=corefile"
}
-re "Core was generated by .*\r\n\#0 .*\(\).*\r\n$prompt $" {
pass "args: execfile -core=corefile (with bad program name)"
}
-re ".*$prompt $" { fail "args: execfile -core=corefile" }
timeout { fail "(timeout) starting with -core" }
}
set timeout $oldtimeout
@ -134,11 +148,14 @@ source gdb.base/coremaker.ci
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" }
-re "Core was generated by .*coremaker.*\r\n\#0 .*\(\).*\r\n$prompt $" {
pass "core-file command"
}
-re "Core was generated by .*\r\n\#0 .*\(\).*\r\n$prompt $" {
pass "core-file command (with bad program name)"
}
-re ".*$prompt $" { fail "core-file command" }
timeout { fail "(timeout) core-file command" }
}
# Test correct mapping of corefile sections by printing some variables.