summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lang/gcc-aux/distinfo5
-rw-r--r--lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h70
-rw-r--r--lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc56
-rw-r--r--lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h13
-rw-r--r--lang/gcc44/distinfo6
-rw-r--r--lang/gcc44/patches/patch-aj26
-rw-r--r--lang/gcc44/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h13
-rw-r--r--lang/gcc44/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h57
-rw-r--r--lang/gcc45/distinfo6
-rw-r--r--lang/gcc45/patches/patch-aj40
-rw-r--r--lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h13
-rw-r--r--lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h57
12 files changed, 338 insertions, 24 deletions
diff --git a/lang/gcc-aux/distinfo b/lang/gcc-aux/distinfo
index c5cc8b3ab94..3a5726da7df 100644
--- a/lang/gcc-aux/distinfo
+++ b/lang/gcc-aux/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.3 2013/04/12 15:40:54 marino Exp $
+$NetBSD: distinfo,v 1.4 2013/04/29 21:34:48 joerg Exp $
SHA1 (gcc-4.7.3.tar.bz2) = 69e02737bd6e1a7c6047d801600d39c32b9427ca
RMD160 (gcc-4.7.3.tar.bz2) = b4ba153b098cad726ecd28195ee445aa542d37ae
@@ -18,3 +18,6 @@ Size (gnat-bootstrap.x86_64.netbsd.tar.bz2) = 30572187 bytes
SHA1 (gnat-bootstrap.i386.solaris.tar.bz2) = 4962657bfc894a20ad3102c1f6fe8e566b47cb51
RMD160 (gnat-bootstrap.i386.solaris.tar.bz2) = ae72e76d0aba94451d99b9a70a3c049c9258cc82
Size (gnat-bootstrap.i386.solaris.tar.bz2) = 43247034 bytes
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h) = cfc0898f37eda462fa27e87ee9e06e5334daedec
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc) = 80154157d9e0ceefe078f1d05b08a9a17bec8503
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = e1215dd90c32d7eabfbf82f3f45b91994a61ecc4
diff --git a/lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h b/lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h
new file mode 100644
index 00000000000..2c4fb48cf80
--- /dev/null
+++ b/lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h
@@ -0,0 +1,70 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h,v 1.1 2013/04/29 21:34:48 joerg Exp $
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2013-04-28 19:33:29.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
+@@ -30,7 +30,7 @@
+ // Full details can be found from the CVS files at:
+ // anoncvs@anoncvs.netbsd.org:/cvsroot/basesrc/include/ctype.h
+ // See www.netbsd.org for details of access.
+-
++
+ namespace std _GLIBCXX_VISIBILITY(default)
+ {
+ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+@@ -43,21 +43,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ // NB: Offsets into ctype<char>::_M_table force a particular size
+ // on the mask type. Because of this, we don't use an enum.
+- typedef unsigned char mask;
+
+-#ifndef _CTYPE_U
+- static const mask upper = _U;
+- static const mask lower = _L;
+- static const mask alpha = _U | _L;
+- static const mask digit = _N;
+- static const mask xdigit = _N | _X;
+- static const mask space = _S;
+- static const mask print = _P | _U | _L | _N | _B;
+- static const mask graph = _P | _U | _L | _N;
+- static const mask cntrl = _C;
+- static const mask punct = _P;
+- static const mask alnum = _U | _L | _N;
+-#else
++#if defined(_CTYPE_BL)
++ typedef unsigned short mask;
++ static const mask upper = _CTYPE_U;
++ static const mask lower = _CTYPE_L;
++ static const mask alpha = _CTYPE_A;
++ static const mask digit = _CTYPE_D;
++ static const mask xdigit = _CTYPE_X;
++ static const mask space = _CTYPE_S;
++ static const mask print = _CTYPE_R;
++ static const mask graph = _CTYPE_G;
++ static const mask cntrl = _CTYPE_C;
++ static const mask punct = _CTYPE_P;
++ static const mask alnum = _CTYPE_A | _CTYPE_D;
++#elif defined(_CTYPE_U)
++ typedef unsigned char mask;
+ static const mask upper = _CTYPE_U;
+ static const mask lower = _CTYPE_L;
+ static const mask alpha = _CTYPE_U | _CTYPE_L;
+@@ -69,6 +70,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ static const mask cntrl = _CTYPE_C;
+ static const mask punct = _CTYPE_P;
+ static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N;
++#else
++ typedef unsigned char mask;
++ static const mask upper = _U;
++ static const mask lower = _L;
++ static const mask alpha = _U | _L;
++ static const mask digit = _N;
++ static const mask xdigit = _N | _X;
++ static const mask space = _S;
++ static const mask print = _P | _U | _L | _N | _B;
++ static const mask graph = _P | _U | _L | _N;
++ static const mask cntrl = _C;
++ static const mask punct = _P;
++ static const mask alnum = _U | _L | _N;
+ #endif
+ };
+
diff --git a/lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc b/lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc
new file mode 100644
index 00000000000..deb9b72fb27
--- /dev/null
+++ b/lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc
@@ -0,0 +1,56 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc,v 1.1 2013/04/29 21:34:48 joerg Exp $
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc.orig 2011-03-31 16:06:12.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
+@@ -38,11 +38,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ // Information as gleaned from /usr/include/ctype.h
+
++#ifndef _CTYPE_BL
+ extern "C" const u_int8_t _C_ctype_[];
++#endif
+
+ const ctype_base::mask*
+ ctype<char>::classic_table() throw()
++#ifdef _CTYPE_BL
++ { return _C_ctype_tab_ + 1; }
++#else
+ { return _C_ctype_ + 1; }
++#endif
+
+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+ size_t __refs)
+@@ -69,14 +75,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ char
+ ctype<char>::do_toupper(char __c) const
+- { return ::toupper((int) __c); }
++ { return ::toupper((int)(unsigned char) __c); }
+
+ const char*
+ ctype<char>::do_toupper(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+- *__low = ::toupper((int) *__low);
++ *__low = ::toupper((int)(unsigned char) *__low);
+ ++__low;
+ }
+ return __high;
+@@ -84,14 +90,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+
+ char
+ ctype<char>::do_tolower(char __c) const
+- { return ::tolower((int) __c); }
++ { return ::tolower((int)(unsigned char) __c); }
+
+ const char*
+ ctype<char>::do_tolower(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+- *__low = ::tolower((int) *__low);
++ *__low = ::tolower((int)(unsigned char) *__low);
+ ++__low;
+ }
+ return __high;
diff --git a/lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h b/lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
new file mode 100644
index 00000000000..1592cfdd948
--- /dev/null
+++ b/lang/gcc-aux/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h,v 1.1 2013/04/29 21:34:48 joerg Exp $
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig 2013-04-28 19:47:14.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
+@@ -48,7 +48,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
+ is(const char* __low, const char* __high, mask* __vec) const
+ {
+ while (__low < __high)
+- *__vec++ = _M_table[*__low++];
++ *__vec++ = _M_table[(unsigned char)*__low++];
+ return __high;
+ }
+
diff --git a/lang/gcc44/distinfo b/lang/gcc44/distinfo
index 7e1d0ede7d0..c27625b7ead 100644
--- a/lang/gcc44/distinfo
+++ b/lang/gcc44/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.16 2013/03/02 18:05:01 joerg Exp $
+$NetBSD: distinfo,v 1.17 2013/04/29 21:34:48 joerg Exp $
SHA1 (gcc-4.4.7.tar.bz2) = a6c834b0c2f58583da1d093de7a81a20ede9af75
RMD160 (gcc-4.4.7.tar.bz2) = 481609ebff38bf8a1fdf9a300dc460c1f425836a
@@ -8,9 +8,11 @@ SHA1 (patch-ad) = 96722d5af63a955e3d9c934b1249e5e8a1173a8c
SHA1 (patch-af) = 12f58f01e973f5684e8443ab402a70291bb6d621
SHA1 (patch-ag) = 0897b7ed75b4dc7d6ad50ecfa886edca7e29703b
SHA1 (patch-ai) = 96ffd5c07761a53dbb036930c49e4c84574455c7
-SHA1 (patch-aj) = efc6e550f2a7b5e0181a9e2fb97b4cb94c6eb2da
+SHA1 (patch-aj) = 9baf098316200a19b2b4553f05b8fa6970a887e7
SHA1 (patch-ak) = 08da661b8b19fdd9fa086f67b185266c1d378658
SHA1 (patch-al) = 462059744f7f057f13d6c472d0aff9d012546082
SHA1 (patch-am) = fcfabcec9e6d0b8e9ada348dc65e8ddb890f96ca
SHA1 (patch-gcc_ginclude_stddef.h) = 867e3ff87f0b8865b37823c42c9b01935b94e5fb
SHA1 (patch-gcc_toplev.h) = 536f52c86635b2a5ba894499fa6c398f9206c82a
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = 768705c3be094cba77ec0b20517ffb8cd579059c
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h) = 8a1b82b95ae1bdd796a5052415023abaf816503d
diff --git a/lang/gcc44/patches/patch-aj b/lang/gcc44/patches/patch-aj
index 1576950cde6..b2b5a37bea3 100644
--- a/lang/gcc44/patches/patch-aj
+++ b/lang/gcc44/patches/patch-aj
@@ -1,12 +1,26 @@
-$NetBSD: patch-aj,v 1.3 2012/06/08 15:42:29 joerg Exp $
+$NetBSD: patch-aj,v 1.4 2013/04/29 21:34:49 joerg Exp $
--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2009-04-09 23:23:07.000000000 +0000
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
-@@ -42,6 +42,19 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
+@@ -41,6 +41,33 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
+
// NB: Offsets into ctype<char>::_M_table force a particular size
// on the mask type. Because of this, we don't use an enum.
- typedef unsigned char mask;
-+#if defined(_CTYPE_U)
++#if defined(_CTYPE_BL)
++ typedef unsigned short mask;
++ static const mask upper = _CTYPE_U;
++ static const mask lower = _CTYPE_L;
++ static const mask alpha = _CTYPE_A;
++ static const mask digit = _CTYPE_D;
++ static const mask xdigit = _CTYPE_X;
++ static const mask space = _CTYPE_S;
++ static const mask print = _CTYPE_R;
++ static const mask graph = _CTYPE_G;
++ static const mask cntrl = _CTYPE_C;
++ static const mask punct = _CTYPE_P;
++ static const mask alnum = _CTYPE_A | _CTYPE_D;
++#elif defined(_CTYPE_U)
++ typedef unsigned char mask;
+ static const mask upper = _CTYPE_U;
+ static const mask lower = _CTYPE_L;
+ static const mask alpha = _CTYPE_U | _CTYPE_L;
@@ -19,10 +33,10 @@ $NetBSD: patch-aj,v 1.3 2012/06/08 15:42:29 joerg Exp $
+ static const mask punct = _CTYPE_P;
+ static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N;
+#else
+ typedef unsigned char mask;
static const mask upper = _U;
static const mask lower = _L;
- static const mask alpha = _U | _L;
-@@ -53,6 +66,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
+@@ -53,6 +80,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
static const mask cntrl = _C;
static const mask punct = _P;
static const mask alnum = _U | _L | _N;
diff --git a/lang/gcc44/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h b/lang/gcc44/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
new file mode 100644
index 00000000000..83458044219
--- /dev/null
+++ b/lang/gcc44/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h,v 1.1 2013/04/29 21:34:49 joerg Exp $
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig 2009-04-09 23:23:07.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
+@@ -46,7 +46,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
+ is(const char* __low, const char* __high, mask* __vec) const
+ {
+ while (__low < __high)
+- *__vec++ = _M_table[*__low++];
++ *__vec++ = _M_table[(unsigned char)*__low++];
+ return __high;
+ }
+
diff --git a/lang/gcc44/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h b/lang/gcc44/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h
new file mode 100644
index 00000000000..b2e67cd6387
--- /dev/null
+++ b/lang/gcc44/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h
@@ -0,0 +1,57 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h,v 1.1 2013/04/29 21:34:49 joerg Exp $
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h.orig 2013-04-28 21:00:32.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h
+@@ -33,11 +33,17 @@
+
+ // Information as gleaned from /usr/include/ctype.h
+
++#ifndef _CTYPE_BL
+ extern "C" const u_int8_t _C_ctype_[];
++#endif
+
+ const ctype_base::mask*
+ ctype<char>::classic_table() throw()
+- { return _C_ctype_ + 1; }
++#ifdef _CTYPE_BL
++ { return _C_ctype_tab_ + 1; }
++#else
++ { return _C_ctype_ + 1; }
++#endif
+
+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+ size_t __refs)
+@@ -64,14 +70,14 @@
+
+ char
+ ctype<char>::do_toupper(char __c) const
+- { return ::toupper((int) __c); }
++ { return ::toupper((int)(unsigned char) __c); }
+
+ const char*
+ ctype<char>::do_toupper(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+- *__low = ::toupper((int) *__low);
++ *__low = ::toupper((int)(unsigned char) *__low);
+ ++__low;
+ }
+ return __high;
+@@ -79,14 +85,14 @@
+
+ char
+ ctype<char>::do_tolower(char __c) const
+- { return ::tolower((int) __c); }
++ { return ::tolower((int)(unsigned char) __c); }
+
+ const char*
+ ctype<char>::do_tolower(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+- *__low = ::tolower((int) *__low);
++ *__low = ::tolower((int)(unsigned char) *__low);
+ ++__low;
+ }
+ return __high;
diff --git a/lang/gcc45/distinfo b/lang/gcc45/distinfo
index 791c3d8be74..0c0ef8529c3 100644
--- a/lang/gcc45/distinfo
+++ b/lang/gcc45/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.6 2012/06/08 15:42:29 joerg Exp $
+$NetBSD: distinfo,v 1.7 2013/04/29 21:34:49 joerg Exp $
SHA1 (gcc-4.5.3.tar.bz2) = 73c45dfda5eef6b124be53e56828b5925198cc1b
RMD160 (gcc-4.5.3.tar.bz2) = d07aa90f2186b4e082dfd5ad5d5188c097fb6247
@@ -10,5 +10,7 @@ SHA1 (patch-ad) = b72c93d8477a567363616717e20eef1b33e7d307
SHA1 (patch-af) = 54fb9fb3438eb7c646b9d51b6b0cf3ded27d4989
SHA1 (patch-ag) = b58f8b82fcf17c60eb2700bc54d6625ca45e542b
SHA1 (patch-ah) = a963394b0434b82494b7510d4b2705f77acfb668
-SHA1 (patch-aj) = e07b71a5fc5e3835d10eaad33fc722d040bcc379
+SHA1 (patch-aj) = 1927ff77d1c51fe9e8927dba582c7d399545ae7b
SHA1 (patch-ak) = 3d8a859ba436a4b204bb99f59cd5331d695aa811
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = e328bc56bbb9c3e0a76c8d98a7c0a7b8b8eda22e
+SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h) = 38dd700202d741de1eeee01c44eee6e2e363b9c5
diff --git a/lang/gcc45/patches/patch-aj b/lang/gcc45/patches/patch-aj
index 60f5247ca31..c8cc10ef40e 100644
--- a/lang/gcc45/patches/patch-aj
+++ b/lang/gcc45/patches/patch-aj
@@ -1,20 +1,26 @@
-$NetBSD: patch-aj,v 1.2 2012/06/08 15:42:29 joerg Exp $
+$NetBSD: patch-aj,v 1.3 2013/04/29 21:34:49 joerg Exp $
---- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2011-02-23 18:48:42.000000000 +0100
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2009-04-09 15:00:19.000000000 +0000
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
-@@ -42,6 +42,7 @@
+@@ -41,6 +41,33 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
+
// NB: Offsets into ctype<char>::_M_table force a particular size
// on the mask type. Because of this, we don't use an enum.
- typedef unsigned char mask;
-+#if !defined(_CTYPE_U)
- static const mask upper = _U;
- static const mask lower = _L;
- static const mask alpha = _U | _L;
-@@ -53,6 +54,19 @@
- static const mask cntrl = _C;
- static const mask punct = _P;
- static const mask alnum = _U | _L | _N;
-+#else
++#if defined(_CTYPE_BL)
++ typedef unsigned short mask;
++ static const mask upper = _CTYPE_U;
++ static const mask lower = _CTYPE_L;
++ static const mask alpha = _CTYPE_A;
++ static const mask digit = _CTYPE_D;
++ static const mask xdigit = _CTYPE_X;
++ static const mask space = _CTYPE_S;
++ static const mask print = _CTYPE_R;
++ static const mask graph = _CTYPE_G;
++ static const mask cntrl = _CTYPE_C;
++ static const mask punct = _CTYPE_P;
++ static const mask alnum = _CTYPE_A | _CTYPE_D;
++#elif defined(_CTYPE_U)
++ typedef unsigned char mask;
+ static const mask upper = _CTYPE_U;
+ static const mask lower = _CTYPE_L;
+ static const mask alpha = _CTYPE_U | _CTYPE_L;
@@ -26,6 +32,14 @@ $NetBSD: patch-aj,v 1.2 2012/06/08 15:42:29 joerg Exp $
+ static const mask cntrl = _CTYPE_C;
+ static const mask punct = _CTYPE_P;
+ static const mask alnum = _CTYPE_U | _CTYPE_L | _CTYPE_N;
++#else
+ typedef unsigned char mask;
+ static const mask upper = _U;
+ static const mask lower = _L;
+@@ -53,6 +80,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
+ static const mask cntrl = _C;
+ static const mask punct = _P;
+ static const mask alnum = _U | _L | _N;
+#endif
};
diff --git a/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
new file mode 100644
index 00000000000..3346b161ee5
--- /dev/null
+++ b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h
@@ -0,0 +1,13 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h,v 1.1 2013/04/29 21:34:49 joerg Exp $
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig 2009-04-09 15:00:19.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
+@@ -46,7 +46,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
+ is(const char* __low, const char* __high, mask* __vec) const
+ {
+ while (__low < __high)
+- *__vec++ = _M_table[*__low++];
++ *__vec++ = _M_table[(unsigned char)*__low++];
+ return __high;
+ }
+
diff --git a/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h
new file mode 100644
index 00000000000..4ab8acac929
--- /dev/null
+++ b/lang/gcc45/patches/patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h
@@ -0,0 +1,57 @@
+$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__noninline.h,v 1.1 2013/04/29 21:34:49 joerg Exp $
+
+--- libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h.orig 2009-04-09 15:00:19.000000000 +0000
++++ libstdc++-v3/config/os/bsd/netbsd/ctype_noninline.h
+@@ -33,11 +33,17 @@
+
+ // Information as gleaned from /usr/include/ctype.h
+
++#ifndef _CTYPE_BL
+ extern "C" const u_int8_t _C_ctype_[];
++#endif
+
+ const ctype_base::mask*
+ ctype<char>::classic_table() throw()
+- { return _C_ctype_ + 1; }
++#ifdef _CTYPE_BL
++ { return _C_ctype_tab_ + 1; }
++#else
++ { return _C_ctype_ + 1; }
++#endif
+
+ ctype<char>::ctype(__c_locale, const mask* __table, bool __del,
+ size_t __refs)
+@@ -64,14 +70,14 @@
+
+ char
+ ctype<char>::do_toupper(char __c) const
+- { return ::toupper((int) __c); }
++ { return ::toupper((int)(unsigned char) __c); }
+
+ const char*
+ ctype<char>::do_toupper(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+- *__low = ::toupper((int) *__low);
++ *__low = ::toupper((int)(unsigned char) *__low);
+ ++__low;
+ }
+ return __high;
+@@ -79,14 +85,14 @@
+
+ char
+ ctype<char>::do_tolower(char __c) const
+- { return ::tolower((int) __c); }
++ { return ::tolower((int)(unsigned char) __c); }
+
+ const char*
+ ctype<char>::do_tolower(char* __low, const char* __high) const
+ {
+ while (__low < __high)
+ {
+- *__low = ::tolower((int) *__low);
++ *__low = ::tolower((int)(unsigned char) *__low);
+ ++__low;
+ }
+ return __high;