* sim/cris/c/clone5.c, sim/cris/c/mprotect1.c,
[external/binutils.git] / sim / testsuite / sim / cris / c / sigreturn2.c
1 /* Check that TRT happens for spurious sigreturn calls.  Multiple threads.
2 #notarget: cris*-*-elf
3 #cc: additional_flags=-pthread
4 #xerror:
5 #output: Invalid sigreturn syscall: no signal handler active (0x1, 0x2, 0x3, 0x4, 0x5, 0x6)\n
6 #output: program stopped with signal 4.\n
7 */
8
9 #include <stdlib.h>
10 #include <stddef.h>
11 #include <stdio.h>
12 #include <unistd.h>
13 #include <pthread.h>
14 #include <sys/types.h>
15 #include <sys/syscall.h>
16 #include <signal.h>
17 #include <errno.h>
18
19 static void *
20 process (void *arg)
21 {
22   while (1)
23     sched_yield ();
24   return NULL;
25 }
26
27 int main (void)
28 {
29   pthread_t th_a;
30   if (pthread_create (&th_a, NULL, process, (void *) "a") == 0)
31     {
32       int err = syscall (SYS_sigreturn, 1, 2, 3, 4, 5, 6);
33       if (err == -1 && errno == ENOSYS)
34         printf ("ENOSYS\n");
35     }
36   printf ("xyzzy\n");
37   exit (0);
38 }