summaryrefslogtreecommitdiff
path: root/lang/gcc47
diff options
context:
space:
mode:
authormarino <marino>2012-07-12 13:47:23 +0000
committermarino <marino>2012-07-12 13:47:23 +0000
commit3db6fc8394653467e1049ead3ac28e1b33e6a3b0 (patch)
treed73c6cc2de6a5de2725d8e7737c88d4ed3091463 /lang/gcc47
parent647ccdf921547143a57ea27ae79bc75217c78636 (diff)
downloadpkgsrc-3db6fc8394653467e1049ead3ac28e1b33e6a3b0.tar.gz
lang/gcc47: Fix DragonFly32 floating point handling
Like i386-FreeBSD, the i386-DragonFly floating point unit uses a 53-bit mantissa. GCC uses the TARGET_96_ROUND_53_LONG_DOUBLE macro to know which platforms behave this way. Unfortunately, setting this macro to 1 breaks precision on Ada, and leaving it at 0 breaks precision on c/c++ long double handling. However lang/gcc47 likely will never support Ada, so we'll favor c/c++. This is only an issue for i386; the setting on x86_64 should be zero as it uses 64-bit precision.
Diffstat (limited to 'lang/gcc47')
-rw-r--r--lang/gcc47/Makefile4
-rw-r--r--lang/gcc47/distinfo5
-rw-r--r--lang/gcc47/patches/patch-gcc_config_i386_dragonfly.h10
3 files changed, 9 insertions, 10 deletions
diff --git a/lang/gcc47/Makefile b/lang/gcc47/Makefile
index ac6920b3490..368da67e185 100644
--- a/lang/gcc47/Makefile
+++ b/lang/gcc47/Makefile
@@ -1,11 +1,11 @@
-# $NetBSD: Makefile,v 1.3 2012/06/23 22:13:02 marino Exp $
+# $NetBSD: Makefile,v 1.4 2012/07/12 13:47:23 marino Exp $
GCC_PKGNAME= gcc47
.include "version.mk"
DISTNAME= gcc-${GCC_DIST_VERSION}
PKGNAME= ${GCC_PKGNAME}-${GCC_DIST_VERSION}
-PKGREVISION= 2
+PKGREVISION= 3
CATEGORIES= lang
MASTER_SITES= ${MASTER_SITE_GNU:=gcc/gcc-${GCC_DIST_VERSION}/}
EXTRACT_SUFX= .tar.bz2
diff --git a/lang/gcc47/distinfo b/lang/gcc47/distinfo
index 75208c7b043..fb625883772 100644
--- a/lang/gcc47/distinfo
+++ b/lang/gcc47/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.7 2012/06/23 22:13:02 marino Exp $
+$NetBSD: distinfo,v 1.8 2012/07/12 13:47:23 marino Exp $
SHA1 (ecj-4.5.jar) = 58c1d79c64c8cd718550f32a932ccfde8d1e6449
RMD160 (ecj-4.5.jar) = d3f4da657f086b6423f74e93f001132f4855368a
@@ -12,7 +12,7 @@ SHA1 (patch-gcc_config.gcc) = efa4ecabd71bdec14d5dd1f8bb836116c7a9d6e9
SHA1 (patch-gcc_config_dragonfly-stdint.h) = 740dc819b446d5f1476506322c4b280ffdb5a6c0
SHA1 (patch-gcc_config_dragonfly.h) = 82f549cdc7543b4bf413a44d481ef42b10f59c82
SHA1 (patch-gcc_config_dragonfly.opt) = 92f615c73c2e94664bae5b5935ab8b09bca15f73
-SHA1 (patch-gcc_config_i386_dragonfly.h) = f2c46d1b6b51316aa774c2453a69ff2571778dbd
+SHA1 (patch-gcc_config_i386_dragonfly.h) = 0d3f785434c02beb9c4561fe59842a970e8f7896
SHA1 (patch-gcc_config_netbsd-stdint.h) = 025fc883101a187e84ed4c0772406720d645d550
SHA1 (patch-gcc_configure) = a4b670d0c54c410d38715b7a2a572a7048e3ec5e
SHA1 (patch-gcc_fortran_f95-lang.c) = 06470dbee79f8c762675d3060a870b7dd9ba38f8
@@ -37,4 +37,3 @@ SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h) = 9a45ecb4309c50
SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h) = 94879703659b960c7b61122b4b4173e01cec1afc
SHA1 (patch-libstdc++-v3_configure) = 4846c93afac42e4fdd20141234d601517cab7175
SHA1 (patch-libstdc++-v3_configure.host) = 7426ea4a9735e5f886f4a3ffb4a9ba62734178c4
-SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h) = 94879703659b960c7b61122b4b4173e01cec1afc
diff --git a/lang/gcc47/patches/patch-gcc_config_i386_dragonfly.h b/lang/gcc47/patches/patch-gcc_config_i386_dragonfly.h
index c360093a5b8..03c67f11187 100644
--- a/lang/gcc47/patches/patch-gcc_config_i386_dragonfly.h
+++ b/lang/gcc47/patches/patch-gcc_config_i386_dragonfly.h
@@ -1,6 +1,6 @@
-$NetBSD: patch-gcc_config_i386_dragonfly.h,v 1.1 2012/06/23 22:13:02 marino Exp $
+$NetBSD: patch-gcc_config_i386_dragonfly.h,v 1.2 2012/07/12 13:47:23 marino Exp $
---- gcc/config/i386/dragonfly.h.orig 2012-06-22 10:35:29.000000000 +0000
+--- gcc/config/i386/dragonfly.h.orig 2012-07-12 12:01:10.000000000 +0000
+++ gcc/config/i386/dragonfly.h
@@ -0,0 +1,101 @@
+/* Definitions for Intel 386 running DragonFly with ELF format
@@ -88,10 +88,10 @@ $NetBSD: patch-gcc_config_i386_dragonfly.h,v 1.1 2012/06/23 22:13:02 marino Exp
+#undef DEFAULT_PCC_STRUCT_RETURN
+#define DEFAULT_PCC_STRUCT_RETURN 0
+
-+/* DragonFly sets the rounding precision of the FPU to 53 bits, but GNAT
-+ resets it to full precision. */
++/* DragonFly sets the rounding precision of the FPU to 53 bits. Let the
++ compiler get the contents of <float.h> and std::numeric_limits correct. */
+#undef TARGET_96_ROUND_53_LONG_DOUBLE
-+#define TARGET_96_ROUND_53_LONG_DOUBLE 0
++#define TARGET_96_ROUND_53_LONG_DOUBLE (!TARGET_64BIT)
+
+/* Put all *tf routines in libgcc. */
+#undef LIBGCC2_HAS_TF_MODE