aboutsummaryrefslogtreecommitdiff
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 +0000
committerYann E. MORIN" <yann.morin.1998@anciens.enib.fr>2008-02-17 22:08:06 +0000
commit8f48d4501885320bfe277021543a7bf40b5f0302 (patch)
treed5dd4797297b07adfdbc07ad000e5126e842919d /patches/gcc/4.2.2/204-uclibc-locale-wchar_fix.patch
parent7b962f013b56121318641aa0b35a5f80fc0d0dde (diff)
downloadcrosstool-ng-8f48d4501885320bfe277021543a7bf40b5f0302.tar.gz
crosstool-ng-8f48d4501885320bfe277021543a7bf40b5f0302.tar.bz2
crosstool-ng-8f48d4501885320bfe277021543a7bf40b5f0302.zip
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 00000000..077bb56b
--- /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 = "";