Commit 41e31056 authored by Mark Lodato's avatar Mark Lodato

freeze: include FreeBSD fix from Python's main()

Copy the fix for floating point exceptions on FreeBSD from Python's
Module/python.c.
parent c3edacbf
...@@ -41,6 +41,10 @@ print """\ ...@@ -41,6 +41,10 @@ print """\
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#ifdef __FreeBSD__
#include <floatingpoint.h>
#endif
#if PY_MAJOR_VERSION < 3 #if PY_MAJOR_VERSION < 3
# define MODINIT(name) init ## name # define MODINIT(name) init ## name
#else #else
...@@ -77,6 +81,17 @@ if not options.pymain: ...@@ -77,6 +81,17 @@ if not options.pymain:
int r = 0; int r = 0;
""", """,
print """\ print """\
/* 754 requires that FP exceptions run in "no stop" mode by default,
* and until C vendors implement C99's ways to control FP exceptions,
* Python requires non-stop mode. Alas, some platforms enable FP
* exceptions by default. Here we disable them.
*/
#ifdef __FreeBSD__
fp_except_t m;
m = fpgetmask();
fpsetmask(m & ~FP_X_OFL);
#endif
if (PyImport_ExtendInittab(inittab)) { if (PyImport_ExtendInittab(inittab)) {
fprintf(stderr, "No memory\\n"); fprintf(stderr, "No memory\\n");
exit(1); exit(1);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment