summaryrefslogtreecommitdiff
path: root/patches/gcc/4.2.2/204-uclibc-locale-wchar_fix.patch
diff options
context:
space:
mode:
authorYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-02-17 22:08:06 (GMT)
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-02-17 22:08:06 (GMT)
commit8f48d4501885320bfe277021543a7bf40b5f0302 (patch)
treed5dd4797297b07adfdbc07ad000e5126e842919d /patches/gcc/4.2.2/204-uclibc-locale-wchar_fix.patch
parent7b962f013b56121318641aa0b35a5f80fc0d0dde (diff)
Robert P. J. DAY says:
apparently, the patchset for gcc 4.2.1 applies properly to the source for gcc 4.2.2 and gcc 4.2.3. so, if you want, you can simply add support for those last two just by augmenting menuconfig and adding a couple symlinks for those two directories. seems like a cheap way to add a couple new versions.
Diffstat (limited to 'patches/gcc/4.2.2/204-uclibc-locale-wchar_fix.patch')
-rw-r--r--patches/gcc/4.2.2/204-uclibc-locale-wchar_fix.patch50
1 files changed, 50 insertions, 0 deletions
diff --git a/patches/gcc/4.2.2/204-uclibc-locale-wchar_fix.patch b/patches/gcc/4.2.2/204-uclibc-locale-wchar_fix.patch
new file mode 100644
index 0000000..077bb56
--- /dev/null
+++ b/patches/gcc/4.2.2/204-uclibc-locale-wchar_fix.patch
@@ -0,0 +1,50 @@
+diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc
+--- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2007-08-03 20:30:53.000000000 +0200
++++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2007-08-03 20:31:24.000000000 +0200
+@@ -401,7 +401,7 @@
+ # ifdef __UCLIBC_HAS_XLOCALE__
+ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
+-# else
++# elif defined __UCLIBC_HAS_LOCALE__
+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
+ # endif
+@@ -556,7 +556,7 @@
+ # ifdef __UCLIBC_HAS_XLOCALE__
+ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
+-# else
++# elif defined __UCLIBC_HAS_LOCALE__
+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
+ # endif
+diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc
+--- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2007-08-03 20:30:53.000000000 +0200
++++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2007-08-03 20:31:24.000000000 +0200
+@@ -127,12 +127,25 @@
+ {
+ // Named locale.
+ // NB: In the GNU model wchar_t is always 32 bit wide.
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this... should be numeric
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# elif defined __UCLIBC_HAS_LOCALE__
++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
+ union { char *__s; wchar_t __w; } __u;
+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
+ _M_data->_M_decimal_point = __u.__w;
+
+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
+ _M_data->_M_thousands_sep = __u.__w;
++#endif
+
+ if (_M_data->_M_thousands_sep == L'\0')
+ _M_data->_M_grouping = "";