[Bug target/51921] [4.6/4.7 regression] EH unwinding support is broken
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 10 23:37:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51921
--- Comment #10 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-02-10 23:35:15 UTC ---
Here is a C++ example (which comes from PR 52205 which I marked as a dup of
this bug):
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void
die(const char* msg)
{
perror(msg);
exit(EXIT_FAILURE);
}
void
handler(int signo, siginfo_t* info, void *context)
{
printf("in handler signal %d\n", signo);
throw signo;
}
int
main(int, const char**)
{
struct sigaction act;
memset(&act, 0, sizeof act);
act.sa_sigaction = handler;
sigfillset(&act.sa_mask);
act.sa_flags = SA_SIGINFO;
if (sigaction(SIGSEGV, &act, NULL) != 0)
die("sigaction");
try
{
*reinterpret_cast<char*>(0) = 1;
}
catch (int signo)
{
printf("caught signal %d\n", signo);
exit(EXIT_SUCCESS);
}
printf("did not catch\n");
exit(EXIT_FAILURE);
}
More information about the Gcc-bugs
mailing list