1 // { dg-do run { target { *-*-aix5* i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } } 2 // { dg-options "-fexceptions -fnon-call-exceptions" } 3 4 #include <signal.h> 5 #include <stdlib.h> 6 sighandler(int signo,siginfo_t * si,void * uc)7void sighandler (int signo, siginfo_t * si, void * uc) 8 { 9 throw (5); 10 } 11 dosegv()12char * dosegv () 13 { 14 * ((volatile int *)0) = 12; 15 } 16 main()17int main () 18 { 19 struct sigaction sa; 20 int status; 21 22 sa.sa_sigaction = sighandler; 23 sa.sa_flags = SA_SIGINFO; 24 25 status = sigaction (SIGSEGV, & sa, NULL); 26 status = sigaction (SIGBUS, & sa, NULL); 27 28 try { 29 dosegv (); 30 } 31 catch (int x) { 32 return (x != 5); 33 } 34 35 return 1; 36 } 37 38 39