using ::wcslen;
    using ::wcsncat;
    using ::wcsncmp;
+diff -urN gcc-3.3.2-old/libstdc++-v3/config/locale/gnu/ctype_members.cc gcc-3.3.2/libstdc++-v3/config/locale/gnu/ctype_members.cc
+--- gcc-3.3.2-old/libstdc++-v3/config/locale/gnu/ctype_members.cc      2003-10-07 03:40:58.000000000 -0500
++++ gcc-3.3.2/libstdc++-v3/config/locale/gnu/ctype_members.cc  2003-11-10 14:21:45.000000000 -0600
+@@ -36,6 +36,14 @@
+ #include <locale>
+ #include <bits/c++locale_internal.h>
+ 
++#ifdef __UCLIBC_HAS_XLOCALE__
++struct __uclibc_locale_struct_header {
++        const __ctype_mask_t *__ctype_b;
++        const __ctype_touplow_t *__ctype_tolower;
++        const __ctype_touplow_t *__ctype_toupper;
++};
++#endif
++
+ namespace std
+ {
+   // NB: The other ctype<char> specializations are in src/locale.cc and
+@@ -46,9 +54,9 @@
+     {         
+       _S_destroy_c_locale(_M_c_locale_ctype);
+       _S_create_c_locale(_M_c_locale_ctype, __s); 
+-      _M_toupper = _M_c_locale_ctype->__ctype_toupper;
+-      _M_tolower = _M_c_locale_ctype->__ctype_tolower;
+-      _M_table = _M_c_locale_ctype->__ctype_b;
++      _M_toupper = ((struct __uclibc_locale_struct_header *)_M_c_locale_ctype)->__ctype_toupper;
++      _M_tolower = ((struct __uclibc_locale_struct_header *)_M_c_locale_ctype)->__ctype_tolower;
++      _M_table = ((struct __uclibc_locale_struct_header *)_M_c_locale_ctype)->__ctype_b;
+     }
+ 
+ #ifdef _GLIBCPP_USE_WCHAR_T  
+diff -urN gcc-3.3.2-old/libstdc++-v3/config/os/gnu-linux/ctype_noninline.h gcc-3.3.2/libstdc++-v3/config/os/gnu-linux/ctype_noninline.h
+--- gcc-3.3.2-old/libstdc++-v3/config/os/gnu-linux/ctype_noninline.h   2002-10-08 18:32:22.000000000 -0500
++++ gcc-3.3.2/libstdc++-v3/config/os/gnu-linux/ctype_noninline.h       2003-11-10 14:20:37.000000000 -0600
+@@ -35,11 +35,21 @@
+ // Information as gleaned from /usr/include/ctype.h
+ 
+ #if _GLIBCPP_C_LOCALE_GNU
++#ifdef __UCLIBC_HAS_XLOCALE__
++struct __uclibc_locale_struct_header {
++      const __ctype_mask_t *__ctype_b;
++      const __ctype_touplow_t *__ctype_tolower;
++      const __ctype_touplow_t *__ctype_toupper;
++};
++#endif
++#endif
++
++#if _GLIBCPP_C_LOCALE_GNU
+   const ctype_base::mask*
+   ctype<char>::classic_table() throw()
+   {
+     locale::classic();
+-    return _S_c_locale->__ctype_b;
++    return ((struct __uclibc_locale_struct_header *)_S_c_locale)->__ctype_b;
+   }
+ #else
+   const ctype_base::mask*
+@@ -65,9 +75,9 @@
+   : __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del)
+   {
+     _M_c_locale_ctype = _S_clone_c_locale(__cloc);
+-    _M_toupper = _M_c_locale_ctype->__ctype_toupper;
+-    _M_tolower = _M_c_locale_ctype->__ctype_tolower;
+-    _M_table = __table ? __table : _M_c_locale_ctype->__ctype_b;
++    _M_toupper = ((struct __uclibc_locale_struct_header *)_M_c_locale_ctype)->__ctype_toupper;
++    _M_tolower = ((struct __uclibc_locale_struct_header *)_M_c_locale_ctype)->__ctype_tolower;
++    _M_table = __table ? __table : ((struct __uclibc_locale_struct_header *)_M_c_locale_ctype)->__ctype_b;
+   }
+ #else
+   ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
+@@ -96,9 +106,9 @@
+   __ctype_abstract_base<char>(__refs), _M_del(__table != 0 && __del)
+   {
+     _M_c_locale_ctype = _S_c_locale; 
+-    _M_toupper = _M_c_locale_ctype->__ctype_toupper;
+-    _M_tolower = _M_c_locale_ctype->__ctype_tolower;
+-    _M_table = __table ? __table : _M_c_locale_ctype->__ctype_b;
++    _M_toupper = ((struct __uclibc_locale_struct_header *)_M_c_locale_ctype)->__ctype_toupper;
++    _M_tolower = ((struct __uclibc_locale_struct_header *)_M_c_locale_ctype)->__ctype_tolower;
++    _M_table = __table ? __table : ((struct __uclibc_locale_struct_header *)_M_c_locale_ctype)->__ctype_b;
+   }
+ #else
+   ctype<char>::ctype(const mask* __table, bool __del, size_t __refs) :