yann@552: Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.0/uclibc/90_all_204-uclibc-locale-wchar_fix.patch yann@552: diff -durN gcc-4.3.0.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.3.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc yann@552: --- gcc-4.3.0.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-06-10 14:45:43.000000000 +0200 yann@552: +++ gcc-4.3.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-06-10 14:45:43.000000000 +0200 yann@552: @@ -401,7 +401,7 @@ yann@552: # ifdef __UCLIBC_HAS_XLOCALE__ yann@552: _M_data->_M_decimal_point = __cloc->decimal_point_wc; yann@552: _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; yann@552: -# else yann@552: +# elif defined __UCLIBC_HAS_LOCALE__ yann@552: _M_data->_M_decimal_point = __global_locale->decimal_point_wc; yann@552: _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; yann@552: # endif yann@552: @@ -556,7 +556,7 @@ yann@552: # ifdef __UCLIBC_HAS_XLOCALE__ yann@552: _M_data->_M_decimal_point = __cloc->decimal_point_wc; yann@552: _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; yann@552: -# else yann@552: +# elif defined __UCLIBC_HAS_LOCALE__ yann@552: _M_data->_M_decimal_point = __global_locale->decimal_point_wc; yann@552: _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; yann@552: # endif yann@552: diff -durN gcc-4.3.0.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.3.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc yann@552: --- gcc-4.3.0.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-06-10 14:45:43.000000000 +0200 yann@552: +++ gcc-4.3.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-06-10 14:45:43.000000000 +0200 yann@552: @@ -127,12 +127,25 @@ yann@552: { yann@552: // Named locale. yann@552: // NB: In the GNU model wchar_t is always 32 bit wide. yann@552: +#ifdef __UCLIBC_MJN3_ONLY__ yann@552: +#warning fix this... should be numeric yann@552: +#endif yann@552: +#ifdef __UCLIBC__ yann@552: +# ifdef __UCLIBC_HAS_XLOCALE__ yann@552: + _M_data->_M_decimal_point = __cloc->decimal_point_wc; yann@552: + _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; yann@552: +# elif defined __UCLIBC_HAS_LOCALE__ yann@552: + _M_data->_M_decimal_point = __global_locale->decimal_point_wc; yann@552: + _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; yann@552: +# endif yann@552: +#else yann@552: union { char *__s; wchar_t __w; } __u; yann@552: __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); yann@552: _M_data->_M_decimal_point = __u.__w; yann@552: yann@552: __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); yann@552: _M_data->_M_thousands_sep = __u.__w; yann@552: +#endif yann@552: yann@552: if (_M_data->_M_thousands_sep == L'\0') yann@552: _M_data->_M_grouping = "";