Pull request: Raise SIGFPE instead of abort in __gmp_exception`
Yichao Yu
yyc1992 at gmail.com
Sat Jan 2 21:57:45 UTC 2016
Hi,
This implements the `Enhancement` for `__gmp_exception`. I'm not sure
how to attach additional information on the signal so I leave that
enhancement there.
We (julia) catches the SIGFPE generated by GMP and raise our own
error. Given the comment in this file, I think this is a reasonable
thing to do.
I'm pretty sure gmail will destroy the formatting of the patch so I
attached a link to a gist of the patch too.
Hopefully this is the right place to suggest patches.
Happy new year.
Yichao Yu
https://gist.github.com/yuyichao/6d8a65ff3e5f8d142593
# HG changeset patch
# User Yichao Yu <yyc1992 at gmail.com>
# Date 1451770649 18000
# Sat Jan 02 16:37:29 2016 -0500
# Node ID 73752db1e2f346a6ee321116ebf2dd88361788a6
# Parent 60c77e71e1d3322567642dbd1919aa8b7531a822
Raise SIGFPE instead of abort in __gmp_exception on platforms that
doesn't do that automatically for integer zero division.
diff -r 60c77e71e1d3 -r 73752db1e2f3 errno.c
--- a/errno.c Fri Jan 01 21:41:57 2016 +0100
+++ b/errno.c Sat Jan 02 16:37:29 2016 -0500
@@ -33,6 +33,7 @@
see https://www.gnu.org/licenses/. */
#include <stdlib.h>
+#include <signal.h>
#include "gmp.h"
#include "gmp-impl.h"
@@ -40,10 +41,9 @@
/* The deliberate divide by zero triggers an exception on most systems. On
- those where it doesn't, for example power and powerpc, use abort instead.
+ those where it doesn't, for example power and powerpc, raise SIGFPE instead.
- Enhancement: Perhaps raise(SIGFPE) (or the same with kill()) would be
- better than abort. Perhaps it'd be possible to get the BSD style
+ Enhancement: Perhaps it'd be possible to get the BSD style
FPE_INTDIV_TRAP parameter in there too. */
void
@@ -51,7 +51,7 @@
{
gmp_errno |= error_bit;
__gmp_junk = 10 / __gmp_0;
- abort ();
+ raise (SIGFPE);
}
More information about the gmp-devel
mailing list