1# Copyright 2004-2013 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16 17# The program sigrepeat.c creates a repeating timer and then waits for 18# it to fire multiple times. The objective is to create a backlog if 19# sigalrm signals and hence cause repeated signal delivery without any 20# cpu advancment. 21 22if [target_info exists gdb,nosignals] { 23 verbose "Skipping sigrepeat.exp because of nosignals." 24 continue 25} 26 27 28set testfile sigrepeat 29set srcfile ${testfile}.c 30set binfile ${objdir}/${subdir}/${testfile} 31if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { 32 untested "Couldn't compile ${srcfile}" 33 return -1 34} 35 36# get things started 37gdb_exit 38gdb_start 39gdb_reinitialize_dir $srcdir/$subdir 40gdb_load ${binfile} 41 42# Advance to main 43if { ![runto_main] } then { 44 gdb_suppress_tests; 45} 46 47# Run to the signal handler wait loop. 48set infinite_loop [gdb_get_line_number {infinite loop}] 49gdb_test "advance $infinite_loop" ".*" "advance to infinite loop" 50 51# Make the first of many signals come pending 52sleep 1 53 54# Try to step off this line 55gdb_test "next" "return 0;.*" 56