1 /* This testcase is part of GDB, the GNU debugger. 2 3 Copyright 2008-2015 Free Software Foundation, Inc. 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 17 18 /* Support program for testing handling of inferior function calls 19 in the presence of signals. */ 20 21 #include <stdio.h> 22 #include <signal.h> 23 #include <unistd.h> 24 25 void 26 handle_signal (int sig) 27 { 28 } 29 30 void 31 gen_signal () 32 { 33 /* According to sigall.exp, SIGABRT is always supported. */ 34 kill (getpid (), SIGABRT); 35 /* If we get here we couldn't generate a signal, tell dejagnu. */ 36 printf ("no signal\n"); 37 } 38 39 /* Easy place to set a breakpoint. */ 40 41 void 42 stop_one () 43 { 44 } 45 46 void 47 stop_two () 48 { 49 } 50 51 void 52 null_hand_call () 53 { 54 } 55 56 int 57 main () 58 { 59 #ifdef SIG_SETMASK 60 /* Ensure all the signals aren't blocked. 61 The environment in which the testsuite is run may have blocked some 62 for whatever reason. */ 63 { 64 sigset_t newset; 65 sigemptyset (&newset); 66 sigprocmask (SIG_SETMASK, &newset, NULL); 67 } 68 #endif 69 70 signal (SIGABRT, handle_signal); 71 72 /* Stop here so we can hand-call gen_signal. */ 73 stop_one (); 74 75 /* When we're resumed stop here. */ 76 stop_two (); 77 78 /* When we're resumed we generate a signal ourselves. */ 79 gen_signal (); 80 81 return 0; 82 } 83