On Mon, Jan 3, 2011 at 12:14 PM, Paul Goyette <696...@bugs.launchpad.net>wrote:
> Public bug reported: > > I recognize that NetBSD is not one of the officially supported host OS. > However, qemu 0.13.0 is available in the NetBSD pkgsrc collection, and > works quite well. Well, with one exception (pun intended): It seems > that Floating Point exceptions don't get reported properly. > > The following code-snippet demonstrates the problem: > > > volatile int flt_signal = 0; > > static sigjmp_buf sigfpe_flt_env; > static void > sigfpe_flt_action(int signo, siginfo_t *info, void *ptr) > { > flt_signal++; > } > > void trigger(void) > { > struct sigaction sa; > double d = strtod("0", NULL); > > if (sigsetjmp(sigfpe_flt_env, 0) == 0) { > sa.sa_flags = SA_SIGINFO; > sa.sa_sigaction = sigfpe_flt_action; > sigemptyset(&sa.sa_mask); > sigaction(SIGFPE, &sa, NULL); > fpsetmask(FP_X_INV|FP_X_DZ|FP_X_OFL|FP_X_UFL|FP_X_IMP); > printf("%g\n", 1 / d); > } > printf("FPE signal handler invoked %d times.\n"); > this printf() does miss an argument :-) > } > > ** Affects: qemu > Importance: Undecided > Status: New > > -- > You received this bug notification because you are a member of qemu- > devel-ml, which is subscribed to QEMU. > https://bugs.launchpad.net/bugs/696834 > > Title: > FP exception reporting not working on NetBSD host > > Status in QEMU: > New > > Bug description: > I recognize that NetBSD is not one of the officially supported host OS. > However, qemu 0.13.0 is available in the NetBSD pkgsrc collection, and > works quite well. Well, with one exception (pun intended): It seems that > Floating Point exceptions don't get reported properly. > > The following code-snippet demonstrates the problem: > > > volatile int flt_signal = 0; > > static sigjmp_buf sigfpe_flt_env; > static void > sigfpe_flt_action(int signo, siginfo_t *info, void *ptr) > { > flt_signal++; > } > > void trigger(void) > { > struct sigaction sa; > double d = strtod("0", NULL); > > if (sigsetjmp(sigfpe_flt_env, 0) == 0) { > sa.sa_flags = SA_SIGINFO; > sa.sa_sigaction = sigfpe_flt_action; > sigemptyset(&sa.sa_mask); > sigaction(SIGFPE, &sa, NULL); > fpsetmask(FP_X_INV|FP_X_DZ|FP_X_OFL|FP_X_UFL|FP_X_IMP); > printf("%g\n", 1 / d); > } > printf("FPE signal handler invoked %d times.\n"); > this printf() does miss an argument :-) > } > > > >