From 59435336dca2167937c15387ee03cb540870100b Mon Sep 17 00:00:00 2001 From: marino Date: Thu, 31 Jan 2013 20:07:17 +0000 Subject: lang/gcc47: Fix DragonFly c++ iostream bug --- lang/gcc47-libs/Makefile | 4 +- lang/gcc47/Makefile | 4 +- lang/gcc47/distinfo | 6 +-- ...stdc++-v3_config_os_bsd_dragonfly_ctype__base.h | 4 +- ...dc++-v3_config_os_bsd_dragonfly_ctype__inline.h | 52 ++++++++++++++++++---- 5 files changed, 52 insertions(+), 18 deletions(-) (limited to 'lang') diff --git a/lang/gcc47-libs/Makefile b/lang/gcc47-libs/Makefile index 8dbf2bd5c0f..beb9ea8a6b9 100644 --- a/lang/gcc47-libs/Makefile +++ b/lang/gcc47-libs/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.7 2012/12/01 02:29:32 sbd Exp $ +# $NetBSD: Makefile,v 1.8 2013/01/31 20:07:17 marino Exp $ GCC_PKGNAME= gcc47 .include "../../lang/${GCC_PKGNAME}/version.mk" @@ -8,7 +8,7 @@ PKGNAME= ${GCC_PKGNAME}-libs-${GCC_DIST_VERSION} ## The PKGREVISION of this package needs to be at least 1 more than the ## PKGREVISION of the lang/gcc47 package so that with the dependence pattern ## '{gcc47,gcc47-libs}>=4.7.*' pkg_all will choose gcc47-libs over gcc47. -PKGREVISION= 1 +PKGREVISION= 2 CATEGORIES= lang MASTER_SITES= # empty DISTFILES= # empty diff --git a/lang/gcc47/Makefile b/lang/gcc47/Makefile index acde5671cde..c7cbf6039ac 100644 --- a/lang/gcc47/Makefile +++ b/lang/gcc47/Makefile @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.12 2012/12/01 02:29:32 sbd Exp $ +# $NetBSD: Makefile,v 1.13 2013/01/31 20:07:17 marino Exp $ GCC_PKGNAME= gcc47 .include "version.mk" @@ -8,7 +8,7 @@ PKGNAME= ${GCC_PKGNAME}-${GCC_DIST_VERSION} ## When bumping the PKGREVISION of this package the PKGREVISION of ## lang/gcc47-libs needs to be bump to be at least 1 more than the ## PKGREVISION of this package! -PKGREVISION= +PKGREVISION= 1 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 a9f772d551a..5fc2fad6ec6 100644 --- a/lang/gcc47/distinfo +++ b/lang/gcc47/distinfo @@ -1,4 +1,4 @@ -$NetBSD: distinfo,v 1.12 2012/12/01 02:29:32 sbd Exp $ +$NetBSD: distinfo,v 1.13 2013/01/31 20:07:17 marino Exp $ SHA1 (ecj-4.5.jar) = 58c1d79c64c8cd718550f32a932ccfde8d1e6449 RMD160 (ecj-4.5.jar) = d3f4da657f086b6423f74e93f001132f4855368a @@ -30,9 +30,9 @@ SHA1 (patch-libjava_configure) = 48ea2baffe87e09dda8133d286bd9b1bfe4c3f8a SHA1 (patch-libjava_contrib_rebuild-gcj-db.in) = bb01d738fc7db05046ae37e8ade32574de1d8297 SHA1 (patch-libstdc++-v3_config_locale_dragonfly_c__locale.cc) = 5c0ccc6b90e3508b03ed399e8e9e300a6aa9cbb7 SHA1 (patch-libstdc++-v3_config_locale_dragonfly_ctype__members.cc) = 876a754c7fcb1c4a362ca7b2655da6cdbb784ccc -SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h) = 1c8ee3ea80bd8869222dcb7beb050bf33ff4d3b6 +SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h) = 12b8e3b998ae1c4b6641d8f9e26e7430c58bb7bc SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc) = d5649f42b61ff3c27d60e813cc844b820525aee4 -SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h) = fecd20146d8e0bdebb073c8d64886e36293416fd +SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h) = 3e8cbedb167fc623f184a59b1f4b330544b08939 SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_os__defines.h) = 9a45ecb4309c50ca90008b2fc7d3b44d002698b4 SHA1 (patch-libstdc++-v3_configure) = 7aa0c5fea3b446657aa27f603d99ea50ed1e44c1 SHA1 (patch-libstdc++-v3_configure.host) = 7426ea4a9735e5f886f4a3ffb4a9ba62734178c4 diff --git a/lang/gcc47/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h b/lang/gcc47/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h index 02bc029bd28..6861c74e930 100644 --- a/lang/gcc47/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h +++ b/lang/gcc47/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h @@ -1,4 +1,4 @@ -$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h,v 1.1 2012/06/23 22:13:02 marino Exp $ +$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h,v 1.2 2013/01/31 20:07:17 marino Exp $ --- libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h.orig 2012-06-22 10:35:30.000000000 +0000 +++ libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h @@ -43,7 +43,7 @@ $NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h,v 1.1 2012/06/ + struct ctype_base + { + // Non-standard typedefs. -+ typedef const unsigned char* __to_type; ++ typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. diff --git a/lang/gcc47/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h b/lang/gcc47/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h index c0d6ebf406f..9bacb4f344d 100644 --- a/lang/gcc47/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h +++ b/lang/gcc47/patches/patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h @@ -1,8 +1,8 @@ -$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h,v 1.1 2012/06/23 22:13:02 marino Exp $ +$NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h,v 1.2 2013/01/31 20:07:17 marino Exp $ --- libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h.orig 2012-06-22 10:35:30.000000000 +0000 +++ libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h -@@ -0,0 +1,127 @@ +@@ -0,0 +1,161 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000, 2003, 2004, 2005, 2009, 2010 @@ -47,14 +47,38 @@ $NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h,v 1.1 2012/0 + bool + ctype:: + is(mask __m, char __c) const -+ { return _M_table[(unsigned char)(__c)] & __m; } ++ { ++ if (_M_table) ++ return _M_table[static_cast(__c)] & __m; ++ else ++ return __libc_ctype_ [__c + 1] & __m; ++ } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { -+ while (__low < __high) -+ *__vec++ = _M_table[*__low++]; ++ if (_M_table) ++ while (__low < __high) ++ *__vec++ = _M_table[static_cast(*__low++)]; ++ else ++ for (;__low < __high; ++__vec, ++__low) ++ { ++ mask __m = 0; ++ if (this->is(upper, *__low)) __m |= upper; ++ if (this->is(lower, *__low)) __m |= lower; ++ if (this->is(alpha, *__low)) __m |= alpha; ++ if (this->is(digit, *__low)) __m |= digit; ++ if (this->is(xdigit, *__low)) __m |= xdigit; ++ if (this->is(space, *__low)) __m |= space; ++ if (this->is(print, *__low)) __m |= print; ++ if (this->is(graph, *__low)) __m |= graph; ++ if (this->is(cntrl, *__low)) __m |= cntrl; ++ if (this->is(punct, *__low)) __m |= punct; ++ // Do not include explicit line for alnum mask since it is a ++ // pure composite of masks on DragonFly. ++ *__vec = __m; ++ } + return __high; + } + @@ -62,8 +86,13 @@ $NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h,v 1.1 2012/0 + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { -+ while (__low < __high && !this->is(__m, *__low)) -+ ++__low; ++ if (_M_table) ++ while (__low < __high ++ && !(_M_table[static_cast(*__low)] & __m)) ++ ++__low; ++ else ++ while (__low < __high && !this->is(__m, *__low)) ++ ++__low; + return __low; + } + @@ -71,8 +100,13 @@ $NetBSD: patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__inline.h,v 1.1 2012/0 + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { -+ while (__low < __high && this->is(__m, *__low) != 0) -+ ++__low; ++ if (_M_table) ++ while (__low < __high ++ && (_M_table[static_cast(*__low)] & __m) != 0) ++ ++__low; ++ else ++ while (__low < __high && this->is(__m, *__low) != 0) ++ ++__low; + return __low; + } + -- cgit v1.2.3