Date: Monday, December 20, 2010 @ 17:08:45 Author: rtoy Path: /project/cmucl/cvsroot/src/code Tag: cross-sol-x86-branch
Modified: float-trap.lisp
It looks like the sigcontext on solaris/x86 doesn't store the entire x87 state, so just signal a general arithemtic error instead of an error about a SIGFPE but no exceptions.
-----------------+ float-trap.lisp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
Index: src/code/float-trap.lisp diff -u src/code/float-trap.lisp:1.38 src/code/float-trap.lisp:1.38.8.1 --- src/code/float-trap.lisp:1.38 Tue Apr 20 13:57:44 2010 +++ src/code/float-trap.lisp Mon Dec 20 17:08:45 2010 @@ -5,7 +5,7 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /project/cmucl/cvsroot/src/code/float-trap.lisp,v 1.38 2010-04-20 17:57:44 rtoy Rel $") + "$Header: /project/cmucl/cvsroot/src/code/float-trap.lisp,v 1.38.8.1 2010-12-20 22:08:45 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -290,6 +290,13 @@ :operation fop :operands operands)) (t + ;; It looks like the sigcontext on Solaris/x86 doesn't + ;; actually save the status word of the FPU. The + ;; operands also seem to be missing. Signal a general + ;; arithmetic error. + #+solaris + (error 'arithmetic-error :operands operands) + #-solaris (error (intl:gettext "SIGFPE with no exceptions currently enabled?")))))))
;;; WITH-FLOAT-TRAPS-MASKED -- Public