xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/cris/c/sig2.c (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1*4b169a6bSchristos /*
2*4b169a6bSchristos #progos: linux
3*4b169a6bSchristos */
4*4b169a6bSchristos 
5*4b169a6bSchristos #include <stdio.h>
6*4b169a6bSchristos #include <signal.h>
7*4b169a6bSchristos #include <stdlib.h>
8*4b169a6bSchristos 
9*4b169a6bSchristos /* Like sig1.c, but using sigaction.  */
10*4b169a6bSchristos 
11*4b169a6bSchristos void
leave(int n,siginfo_t * info,void * x)12*4b169a6bSchristos leave (int n, siginfo_t *info, void *x)
13*4b169a6bSchristos {
14*4b169a6bSchristos   abort ();
15*4b169a6bSchristos }
16*4b169a6bSchristos 
17*4b169a6bSchristos int
main(void)18*4b169a6bSchristos main (void)
19*4b169a6bSchristos {
20*4b169a6bSchristos   struct sigaction sa;
21*4b169a6bSchristos   sa.sa_sigaction = leave;
22*4b169a6bSchristos   sa.sa_flags = SA_RESTART | SA_SIGINFO;
23*4b169a6bSchristos   sigemptyset (&sa.sa_mask);
24*4b169a6bSchristos 
25*4b169a6bSchristos   /* Check that the sigaction syscall (for signal) is interpreted, though
26*4b169a6bSchristos      possibly ignored.  */
27*4b169a6bSchristos   if (sigaction (SIGFPE, &sa, NULL) != 0)
28*4b169a6bSchristos     abort ();
29*4b169a6bSchristos 
30*4b169a6bSchristos   printf ("pass\n");
31*4b169a6bSchristos   exit (0);
32*4b169a6bSchristos }
33