Apply _CTYPE_BL fixes to gcc47 and gcc48.

This commit is contained in:
joerg 2013-05-22 13:14:19 +00:00
parent 65a7994825
commit 6af31a2ca7
8 changed files with 222 additions and 2 deletions

View file

@ -1,4 +1,4 @@
$NetBSD: distinfo,v 1.18 2013/04/25 10:54:40 wiz Exp $
$NetBSD: distinfo,v 1.19 2013/05/22 13:14:19 joerg Exp $
SHA1 (ecj-4.5.jar) = 58c1d79c64c8cd718550f32a932ccfde8d1e6449
RMD160 (ecj-4.5.jar) = d3f4da657f086b6423f74e93f001132f4855368a
@ -35,5 +35,8 @@ SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h) = 12b8e3b998ae1c
SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc) = d5649f42b61ff3c27d60e813cc844b820525aee4
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_config_os_bsd_netbsd_ctype__base.h) = ee1566dba7497043106e0549e6a78042c0c338cd
SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc) = 5a7c497babd00f7b906234d40e7dc48471cbe759
SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = 830038744cbbb713ecc3f960a9509bef16176db9
SHA1 (patch-libstdc++-v3_configure) = 7aa0c5fea3b446657aa27f603d99ea50ed1e44c1
SHA1 (patch-libstdc++-v3_configure.host) = 7426ea4a9735e5f886f4a3ffb4a9ba62734178c4

View file

@ -0,0 +1,37 @@
$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h,v 1.3 2013/05/22 13:14:19 joerg Exp $
--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2012-08-06 14:34:27.000000000 +0000
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
@@ -43,9 +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
+#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 = _U;
static const mask lower = _L;
static const mask alpha = _U | _L;
@@ -58,6 +71,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static const mask punct = _P;
static const mask alnum = _U | _L | _N;
#else
+ typedef unsigned char mask;
static const mask upper = _CTYPE_U;
static const mask lower = _CTYPE_L;
static const mask alpha = _CTYPE_U | _CTYPE_L;

View file

@ -0,0 +1,57 @@
$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc,v 1.1 2013/05/22 13:14:19 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()
- { 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)
@@ -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;

View file

@ -0,0 +1,13 @@
$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h,v 1.1 2013/05/22 13:14:19 joerg Exp $
--- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig 2011-01-30 22:39:36.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;
}

View file

@ -1,4 +1,4 @@
$NetBSD: distinfo,v 1.4 2013/04/29 21:34:11 joerg Exp $
$NetBSD: distinfo,v 1.5 2013/05/22 13:14:19 joerg Exp $
SHA1 (ecj-4.5.jar) = 58c1d79c64c8cd718550f32a932ccfde8d1e6449
RMD160 (ecj-4.5.jar) = d3f4da657f086b6423f74e93f001132f4855368a
@ -33,6 +33,9 @@ SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__base.h) = 12b8e3b998ae1c
SHA1 (patch-libstdc++-v3_config_os_bsd_dragonfly_ctype__configure__char.cc) = d5649f42b61ff3c27d60e813cc844b820525aee4
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_config_os_bsd_netbsd_ctype__base.h) = 014d442c885b9c51d1a4af05205279c274a9559d
SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc) = b63c2682336c9b6f0e0d7b900d6f40ad6e7a5ec4
SHA1 (patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h) = 626fc1f9c035ac5cef30a92d525af4e778835ebf
SHA1 (patch-libstdc++-v3_configure) = 3821275fa698221d7665ea3c98b0a24f33954a5a
SHA1 (patch-libstdc++-v3_configure.host) = 7426ea4a9735e5f886f4a3ffb4a9ba62734178c4
SHA1 (patch-libstdc++-v3_libsupc++_unwind-cxx.h) = 9784bfa4323f8498b36565d0fea28fce69ffdbb1

View file

@ -0,0 +1,37 @@
$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__base.h,v 1.1 2013/05/22 13:14:19 joerg Exp $
--- libstdc++-v3/config/os/bsd/netbsd/ctype_base.h.orig 2013-02-03 17:54:05.000000000 +0000
+++ libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
@@ -43,9 +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
+#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 = _U;
static const mask lower = _L;
static const mask alpha = _U | _L;
@@ -58,6 +71,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
static const mask punct = _P;
static const mask alnum = _U | _L | _N;
#else
+ typedef unsigned char mask;
static const mask upper = _CTYPE_U;
static const mask lower = _CTYPE_L;
static const mask alpha = _CTYPE_U | _CTYPE_L;

View file

@ -0,0 +1,57 @@
$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__configure__char.cc,v 1.1 2013/05/22 13:14:19 joerg Exp $
--- libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc.orig 2013-02-03 17:54:05.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()
- { 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)
@@ -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;

View file

@ -0,0 +1,13 @@
$NetBSD: patch-libstdc++-v3_config_os_bsd_netbsd_ctype__inline.h,v 1.1 2013/05/22 13:14:19 joerg Exp $
--- libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h.orig 2013-02-03 17:54:05.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;
}