* TODO: Add note about "handle all nostop".

* gdb.base/{sigall.c, sigall.exp}: New test.
	* gdb.base/Makefile.in: Add it.
This commit is contained in:
Jim Kingdon 1995-01-08 23:03:28 +00:00
parent 3b55fbe386
commit d71511fbd3
4 changed files with 1556 additions and 0 deletions

View File

@ -1,3 +1,10 @@
Wed Jan 4 11:35:19 1995 Jim Kingdon (kingdon@lioth.cygnus.com)
* TODO: Add note about "handle all nostop".
* gdb.base/{sigall.c, sigall.exp}: New test.
* gdb.base/Makefile.in: Add it.
Thu Jan 5 17:34:03 1995 Stan Shebs <shebs@andros.cygnus.com>
* lib/gdb.exp, gdb.base/corefile.exp: Supply -nw as argument

View File

@ -183,6 +183,10 @@ compiler dependencies.
Test more obscure wait_for_inferior cases, expanding on the tests in
watchpoint.exp, signals.exp, etc.
Test "handle all nostop". Right now this is buggy--it (a) prints "?"
for "Unknown signal", (b) prints signal zero (bug or feature?), (c)
dumps core when it is done.
Test that the copyright year in the startup message matches the
current year (would produce a single spurious FAIL on old GDB's, but
probably still a good idea).

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,177 @@
# Copyright (C) 1995 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. */
if $tracelevel then {
strace $tracelevel
}
set prms_id 0
set bug_id 0
gdb_reinitialize_dir $srcdir/$subdir
set binfile $objdir/$subdir/sigall
if ![file exists $binfile] then {
perror "$binfile does not exist."
return 0
}
# Make the first signal SIGABRT because it is always supported.
set sig_supported 1
set thissig "ABRT"
proc test_one_sig {nextsig} {
global sig_supported
global prompt
global thissig
set this_sig_supported $sig_supported
gdb_test "handle SIG$thissig stop print" \
"SIG$thissig\[ \t\]*Yes\[ \t\]*Yes\[ \t\]*Yes"
gdb_test "b handle_$thissig" "Breakpoint \[0-9\]"
gdb_test "b gen_$nextsig" "Breakpoint \[0-9\]"
if $this_sig_supported then {
if {"$thissig" == "POLL"} then {
# If SIGIO and SIGPOLL are the same signal it gets reported
# as SIGIO; it is a feature for GDB to always use the "preferred"
# name (the POSIX name if there is one, etc.); I suspect that is
# SIGIO in this case but I'm not sure.
set pattern "(POLL|IO)"
} else {
set pattern $thissig
}
gdb_test "continue" \
"Continuing.*Program received signal SIG$pattern" \
"get signal $thissig"
}
if {"$thissig" == "IO"} then {
# SIGIO and SIGPOLL might be the same signal.
# If so we end up at handle_POLL because we
# establish the handler for SIGPOLL after SIGIO.
set pattern "Breakpoint.*handle_(POLL|IO)"
} else {
set pattern "Breakpoint.*handle_$thissig"
}
gdb_test "continue" $pattern "send signal $thissig"
send "continue\n"
expect {
-re "Breakpoint.*gen_$nextsig.*kill.*$prompt $" {
pass "advance to $nextsig"
set sig_supported 1
}
-re "Breakpoint.*gen_$nextsig.*handle.*$prompt $" {
pass "advance to $nextsig"
set sig_supported 0
}
-re ".*$prompt $" { fail "advance to $nextsig" }
default { fail "advance to $nextsig (eof or timeout)" }
}
set thissig $nextsig
}
gdb_load $binfile
runto gen_ABRT
test_one_sig HUP
test_one_sig QUIT
test_one_sig ILL
test_one_sig EMT
test_one_sig FPE
test_one_sig BUS
test_one_sig SEGV
test_one_sig SYS
test_one_sig PIPE
test_one_sig ALRM
test_one_sig URG
test_one_sig TSTP
test_one_sig CONT
test_one_sig CHLD
test_one_sig TTIN
test_one_sig TTOU
test_one_sig IO
# Set an extra breakpoint at handle_POLL, to deal with the fact that
# SIGIO and SIGPOLL might be the same signal.
gdb_test "b handle_POLL" "Breakpoint \[0-9\]" \
"set extra handle_POLL breakpoint"
test_one_sig XCPU
test_one_sig XFSZ
test_one_sig VTALRM
test_one_sig PROF
test_one_sig WINCH
test_one_sig LOST
test_one_sig USR1
test_one_sig USR2
test_one_sig PWR
test_one_sig POLL
test_one_sig WIND
test_one_sig PHONE
test_one_sig WAITING
test_one_sig LWP
test_one_sig DANGER
test_one_sig GRANT
test_one_sig RETRACT
test_one_sig MSG
test_one_sig SOUND
test_one_sig SAK
test_one_sig PRIO
test_one_sig 33
test_one_sig 34
test_one_sig 35
test_one_sig 36
test_one_sig 37
test_one_sig 38
test_one_sig 39
test_one_sig 40
test_one_sig 41
test_one_sig 42
test_one_sig 43
test_one_sig 44
test_one_sig 45
test_one_sig 46
test_one_sig 47
test_one_sig 48
test_one_sig 49
test_one_sig 50
test_one_sig 51
test_one_sig 52
test_one_sig 53
test_one_sig 54
test_one_sig 55
test_one_sig 56
test_one_sig 57
test_one_sig 58
test_one_sig 59
test_one_sig 60
test_one_sig 61
test_one_sig 62
test_one_sig 63
test_one_sig TERM
# The last signal (SIGTERM) gets handled slightly differently because
# we are not setting up for another test.
gdb_test "handle SIGTERM stop print" \
"SIGTERM\[ \t\]*Yes\[ \t\]*Yes\[ \t\]*Yes"
gdb_test "b handle_TERM" "Breakpoint \[0-9\]"
gdb_test "continue" \
"Continuing.*Program received signal SIGTERM" \
"get signal TERM"
gdb_test "continue" "Breakpoint.*handle_TERM" "send signal TERM"
gdb_test "continue" "Program exited normally" "continue to sigall exit"
return 0