1/* Check that TRT happens for spurious sigreturn calls. Multiple threads. 2#progos: linux 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