aboutsummaryrefslogtreecommitdiffstats
path: root/lang
diff options
context:
space:
mode:
authordeischen <deischen@FreeBSD.org>2000-06-27 19:27:25 +0800
committerdeischen <deischen@FreeBSD.org>2000-06-27 19:27:25 +0800
commitd6a5b4a9a5b5be2d266fcd53fe8597ea66e3a5aa (patch)
treefa73738168d0f5b8614b184b9d06cf8fcab26a45 /lang
parent64322fd38e5c0ab203bf94da92365918ad53d78b (diff)
downloadfreebsd-ports-gnome-d6a5b4a9a5b5be2d266fcd53fe8597ea66e3a5aa.tar.gz
freebsd-ports-gnome-d6a5b4a9a5b5be2d266fcd53fe8597ea66e3a5aa.tar.zst
freebsd-ports-gnome-d6a5b4a9a5b5be2d266fcd53fe8597ea66e3a5aa.zip
When initializing the GNAT (i386) run-time, initialize the floating point
control word to use 64-bit (extended) precision instead of FreeBSDs default 53-bit (double) precision. Submitted by: Sune Falck <sunef@hem.passagen.se>
Diffstat (limited to 'lang')
-rw-r--r--lang/gnat/files/patch-ai30
1 files changed, 28 insertions, 2 deletions
diff --git a/lang/gnat/files/patch-ai b/lang/gnat/files/patch-ai
index 0e6593362a79..f0a487f505f0 100644
--- a/lang/gnat/files/patch-ai
+++ b/lang/gnat/files/patch-ai
@@ -1,8 +1,8 @@
*** ./ada/a-init.c.orig Fri Sep 24 08:42:43 1999
---- ./ada/a-init.c Sat Nov 6 16:22:51 1999
+--- ./ada/a-init.c Mon Jun 26 21:43:54 2000
***************
*** 1445,1450 ****
---- 1445,1523 ----
+--- 1445,1532 ----
}
@@ -73,12 +73,38 @@
+ (void) sigaction (SIGBUS, &act, NULL);
+ }
+
++ void __gnat_init_float ();
++
+ void
+ __gnat_initialize ()
+ {
+ __gnat_install_handler ();
++
++ /* XXX - Initialize floating-point coprocessor. This call is
++ needed because FreeBSD defaults to 53-bit precision instead
++ of 64-bit precision. We require the full precision for
++ proper operation, given that we have set Max_Digits etc
++ with this in mind. */
++ __gnat_init_float ();
+ }
+
/***************************************/
/* __gnat_initialize (default version) */
/***************************************/
+***************
+*** 1470,1476 ****
+ defined in all Win32 versions, but only actually does something on
+ the i386 version, where it properly initializes the FPU for GNAT use. */
+
+! #if defined (_WIN32) || defined (__INTERIX)
+ void
+ __gnat_init_float ()
+ {
+--- 1552,1558 ----
+ defined in all Win32 versions, but only actually does something on
+ the i386 version, where it properly initializes the FPU for GNAT use. */
+
+! #if defined (_WIN32) || defined (__INTERIX) || defined (__FreeBSD__)
+ void
+ __gnat_init_float ()
+ {