qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [Bug 696834] [NEW] FP exception reporting not working o


From: Paulo Cezar
Subject: Re: [Qemu-devel] [Bug 696834] [NEW] FP exception reporting not working on NetBSD host
Date: Mon, 3 Jan 2011 12:27:58 -0300

On Mon, Jan 3, 2011 at 12:14 PM, Paul Goyette <address@hidden> 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 :-)
 
}





reply via email to

[Prev in Thread] Current Thread [Next in Thread]