[Openmcl-cvs-notifications] r13943 - /trunk/source/lisp-kernel/x86-exceptions.c

rme at clozure.com rme at clozure.com
Thu Jul 8 23:08:20 CDT 2010


Author: rme
Date: Thu Jul  8 23:08:20 2010
New Revision: 13943

Log:
When we get EXC_ARITHMETIC in catch_exception_raise(), translate a
code of EXC_I386_DIV (1) to FPE_INTDIV (7).

This apparently worked by luck before because FPE_FLTDIV happens to
be 1, and the error callback looked for either FPE_FLTDIV or
FPE_INTDIV.

This change also causes the lisp to enter the kernel debugger right
away when foreign code does an integer /0 (before the change, we would
attempt to invoke the error callback, which got confused.)

(This is all Darwin-specific, of course.)

Modified:
    trunk/source/lisp-kernel/x86-exceptions.c

Modified: trunk/source/lisp-kernel/x86-exceptions.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-exceptions.c (original)
+++ trunk/source/lisp-kernel/x86-exceptions.c Thu Jul  8 23:08:20 2010
@@ -3368,6 +3368,8 @@
         =

       case EXC_ARITHMETIC:
         signum =3D SIGFPE;
+	if (code =3D=3D EXC_I386_DIV)
+	  code =3D FPE_INTDIV;
         break;
         =

       default:



More information about the Openmcl-cvs-notifications mailing list