Public bug reported:

== Comment: #0 - Alexander Efremkin <[email protected]> - 2016-02-17 
12:18:14 ==
With a C program sets FPE handler and triggers an FPE exception, it expects 
that machine-dependent context data, which is passed to the handler, will 
contain sensible values.

In this scenario, however, FPC register was zero and contained no DXC
(Data-Exception Code) indication:

#include <stdio.h>
#include <string.h>
#include <signal.h>

void trapFunction() {
   asm volatile ("lhi %r1,0\n\t"
                 "cit %r1,0,8\n\t");
}

static void sigFPE_handler(int signal, siginfo_t *info, void *context) {
   ucontext_t *uc = context;
   mcontext_t mc = uc->uc_mcontext;
   fpregset_t fpregs = mc.fpregs;
   unsigned int fpc = fpregs.fpc;

   printf("received signal!\n");
   printf("fpc: %08x\n", fpc );
}

int main() {
   struct sigaction action;
   memset(&action, '\0', sizeof(action));

   printf("registering signal handler\n");

   action.sa_flags |= SA_SIGINFO;
   action.sa_sigaction = sigFPE_handler;
   if (sigaction(SIGFPE, &action, NULL))
      printf("error calling sigaction\n");

   printf("firing trap\n");
   trapFunction();
   return 0;
}

This program prints "fpc: 00000000", but the expected output is "fpc:
0000ff00"..

The IBM Java team has encountered test failures around the use of trap
instructions; Linux on z Distribution Test reproduced the issue on the
following system:

z13 LPAR
Ubuntu 16.04
Kernel 4.4.0-4-generic
gcc (Ubuntu 5.3.1-8ubuntu2) 5.3.1 20160205
libc6 2.21-0ubuntu5

Also, similar issue has been found during test of SIMD (vector)
instructions, FPC contents was also zero, whereas it expected at least
an exception mask and vector-defined DXC.

** Affects: ubuntu
     Importance: Undecided
     Assignee: Skipper Bug Screeners (skipper-screen-team)
         Status: New


** Tags: architecture-s39064 bugnameltc-137317 severity-critical 
targetmilestone-inin1604

** Tags added: architecture-s39064 bugnameltc-137317 severity-critical
targetmilestone-inin1604

** Changed in: ubuntu
     Assignee: (unassigned) => Skipper Bug Screeners (skipper-screen-team)

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1548414

Title:
  Floating-point exception handler receives empty Data-Exception Code in
  Floating Point Control register

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+bug/1548414/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to