xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.base/signals.c (revision b725ae7711052a2233e31a66fefb8a752c388d7a)
1e93f7393Sniklas /* Test GDB dealing with stuff like stepping into sigtramp.  */
2e93f7393Sniklas 
3e93f7393Sniklas #include <signal.h>
4*b725ae77Skettenis #include <unistd.h>
5e93f7393Sniklas 
6e93f7393Sniklas #ifdef __sh__
7e93f7393Sniklas #define signal(a,b)	/* Signals not supported on this target - make them go away */
8e93f7393Sniklas #define alarm(a)	/* Ditto for alarm() */
9e93f7393Sniklas #endif
10e93f7393Sniklas 
11e93f7393Sniklas static int count = 0;
12e93f7393Sniklas 
13*b725ae77Skettenis #ifdef PROTOTYPES
14*b725ae77Skettenis static void
handler(int sig)15*b725ae77Skettenis handler (int sig)
16*b725ae77Skettenis #else
17e93f7393Sniklas static void
18e93f7393Sniklas handler (sig)
19e93f7393Sniklas      int sig;
20*b725ae77Skettenis #endif
21e93f7393Sniklas {
22e93f7393Sniklas   signal (sig, handler);
23e93f7393Sniklas   ++count;
24e93f7393Sniklas }
25e93f7393Sniklas 
26e93f7393Sniklas static void
func1()27e93f7393Sniklas func1 ()
28e93f7393Sniklas {
29e93f7393Sniklas   ++count;
30e93f7393Sniklas }
31e93f7393Sniklas 
32e93f7393Sniklas static void
func2()33e93f7393Sniklas func2 ()
34e93f7393Sniklas {
35e93f7393Sniklas   ++count;
36e93f7393Sniklas }
37e93f7393Sniklas 
38e93f7393Sniklas int
main()39e93f7393Sniklas main ()
40e93f7393Sniklas {
41e93f7393Sniklas #ifdef usestubs
42e93f7393Sniklas   set_debug_traps();
43e93f7393Sniklas   breakpoint();
44e93f7393Sniklas #endif
45e93f7393Sniklas #ifdef SIGALRM
46e93f7393Sniklas   signal (SIGALRM, handler);
47e93f7393Sniklas #endif
48e93f7393Sniklas #ifdef SIGUSR1
49e93f7393Sniklas   signal (SIGUSR1, handler);
50e93f7393Sniklas #endif
51e93f7393Sniklas   alarm (1);
52e93f7393Sniklas   ++count; /* first */
53e93f7393Sniklas   alarm (1);
54e93f7393Sniklas   ++count; /* second */
55e93f7393Sniklas   func1 ();
56e93f7393Sniklas   alarm (1);
57e93f7393Sniklas   func2 ();
58e93f7393Sniklas   return count;
59e93f7393Sniklas }
60