# Copyright 2003, 2007, 2008, 2009 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 for PR gdb/1056.
# 2003-10-18  Michael Chastain <mec@shout.net>

if $tracelevel then {
    strace $tracelevel
}

# test SIGFPE (such as division by 0) inside gdb itself

set prms_id 0
set bug_id 0

gdb_start

# When SIGFPE happens, the operating system may restart the
# offending instruction after the signal handler returns,
# rather than proceeding to the next instruction.  This happens
# on i686-pc-linux-gnu with a linux kernel.  If gdb has a naive
# signal handler that just returns, then it will restart the
# broken instruction and gdb gets an endless stream of SIGFPE's
# and makes no progress.
#
# On a broken gdb this test will just time out.

gdb_test_multiple "print 1/0" "" {
    -re ".*$gdb_prompt $" {
	pass "print 1/0"
    }
    timeout {
	kfail "gdb/1056" "print 1/0"
    }
}
gdb_test "print 1U/0" ".*Division by zero.*" "Test unsigned division by zero"

