xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/testsuite/gdb.base/signals.c (revision a5a4af3bd380a7b58b758d9b311cef9f7c34aeb4)
1*a5a4af3bSchristos /* Test GDB dealing with stuff like stepping into sigtramp.  */
2*a5a4af3bSchristos 
3*a5a4af3bSchristos #include <signal.h>
4*a5a4af3bSchristos #include <unistd.h>
5*a5a4af3bSchristos 
6*a5a4af3bSchristos 
7*a5a4af3bSchristos static int count = 0;
8*a5a4af3bSchristos 
9*a5a4af3bSchristos static void
handler(int sig)10*a5a4af3bSchristos handler (int sig)
11*a5a4af3bSchristos {
12*a5a4af3bSchristos   signal (sig, handler);
13*a5a4af3bSchristos   ++count;
14*a5a4af3bSchristos }
15*a5a4af3bSchristos 
16*a5a4af3bSchristos static void
func1()17*a5a4af3bSchristos func1 ()
18*a5a4af3bSchristos {
19*a5a4af3bSchristos   ++count;
20*a5a4af3bSchristos }
21*a5a4af3bSchristos 
22*a5a4af3bSchristos static void
func2()23*a5a4af3bSchristos func2 ()
24*a5a4af3bSchristos {
25*a5a4af3bSchristos   ++count;
26*a5a4af3bSchristos }
27*a5a4af3bSchristos 
28*a5a4af3bSchristos int
main()29*a5a4af3bSchristos main ()
30*a5a4af3bSchristos {
31*a5a4af3bSchristos #ifdef SIGALRM
32*a5a4af3bSchristos   signal (SIGALRM, handler);
33*a5a4af3bSchristos #endif
34*a5a4af3bSchristos #ifdef SIGUSR1
35*a5a4af3bSchristos   signal (SIGUSR1, handler);
36*a5a4af3bSchristos #endif
37*a5a4af3bSchristos   alarm (1);
38*a5a4af3bSchristos   ++count; /* first */
39*a5a4af3bSchristos   alarm (1);
40*a5a4af3bSchristos   ++count; /* second */
41*a5a4af3bSchristos   func1 ();
42*a5a4af3bSchristos   alarm (1);
43*a5a4af3bSchristos   func2 ();
44*a5a4af3bSchristos   return count;
45*a5a4af3bSchristos }
46