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
19static void *
20process (void *arg)
21{
22  while (1)
23    sched_yield ();
24  return NULL;
25}
26
27int 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}
39