yann@552: Original patch from gentoo: gentoo/src/patchsets/gcc/4.3.1/uclibc/90_all_203-uclibc-locale-no__x.patch yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -60,4 +60,49 @@ yann@552: extern "C" __typeof(wctype_l) __wctype_l; yann@552: #endif yann@552: yann@552: +# define __nl_langinfo_l nl_langinfo_l yann@552: +# define __strcoll_l strcoll_l yann@552: +# define __strftime_l strftime_l yann@552: +# define __strtod_l strtod_l yann@552: +# define __strtof_l strtof_l yann@552: +# define __strtold_l strtold_l yann@552: +# define __strxfrm_l strxfrm_l yann@552: +# define __newlocale newlocale yann@552: +# define __freelocale freelocale yann@552: +# define __duplocale duplocale yann@552: +# define __uselocale uselocale yann@552: + yann@552: +# ifdef _GLIBCXX_USE_WCHAR_T yann@552: +# define __iswctype_l iswctype_l yann@552: +# define __towlower_l towlower_l yann@552: +# define __towupper_l towupper_l yann@552: +# define __wcscoll_l wcscoll_l yann@552: +# define __wcsftime_l wcsftime_l yann@552: +# define __wcsxfrm_l wcsxfrm_l yann@552: +# define __wctype_l wctype_l yann@552: +# endif yann@552: + yann@552: +#else yann@552: +# define __nl_langinfo_l(N, L) nl_langinfo((N)) yann@552: +# define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) yann@552: +# define __strtod_l(S, E, L) strtod((S), (E)) yann@552: +# define __strtof_l(S, E, L) strtof((S), (E)) yann@552: +# define __strtold_l(S, E, L) strtold((S), (E)) yann@552: +# define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) yann@552: +# warning should dummy __newlocale check for C|POSIX ? yann@552: +# define __newlocale(a, b, c) NULL yann@552: +# define __freelocale(a) ((void)0) yann@552: +# define __duplocale(a) __c_locale() yann@552: +//# define __uselocale ? yann@552: +// yann@552: +# ifdef _GLIBCXX_USE_WCHAR_T yann@552: +# define __iswctype_l(C, M, L) iswctype((C), (M)) yann@552: +# define __towlower_l(C, L) towlower((C)) yann@552: +# define __towupper_l(C, L) towupper((C)) yann@552: +# define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) yann@552: +//# define __wcsftime_l(S, M, F, T, L) wcsftime((S), (M), (F), (T)) yann@552: +# define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) yann@552: +# define __wctype_l(S, L) wctype((S)) yann@552: +# endif yann@552: + yann@552: #endif // GLIBC 2.3 and later yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.cc yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -39,20 +39,6 @@ yann@552: #include yann@552: #include yann@552: yann@552: -#ifndef __UCLIBC_HAS_XLOCALE__ yann@552: -#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) yann@552: -#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) yann@552: -#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) yann@552: -#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) yann@552: -#define __strtof_l(S, E, L) strtof((S), (E)) yann@552: -#define __strtod_l(S, E, L) strtod((S), (E)) yann@552: -#define __strtold_l(S, E, L) strtold((S), (E)) yann@552: -#warning should dummy __newlocale check for C|POSIX ? yann@552: -#define __newlocale(a, b, c) NULL yann@552: -#define __freelocale(a) ((void)0) yann@552: -#define __duplocale(a) __c_locale() yann@552: -#endif yann@552: - yann@552: namespace std yann@552: { yann@552: template<> yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.h yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -68,6 +68,7 @@ yann@552: { yann@552: extern "C" __typeof(uselocale) __uselocale; yann@552: } yann@552: +#define __uselocale uselocale yann@552: #endif yann@552: yann@552: namespace std yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.3.1/libstdc++-v3/config/locale/uclibc/collate_members.cc yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/collate_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -36,13 +36,6 @@ yann@552: #include yann@552: #include yann@552: yann@552: -#ifndef __UCLIBC_HAS_XLOCALE__ yann@552: -#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) yann@552: -#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) yann@552: -#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) yann@552: -#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) yann@552: -#endif yann@552: - yann@552: namespace std yann@552: { yann@552: // These are basically extensions to char_traits, and perhaps should yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.3.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -38,13 +38,6 @@ yann@552: #undef _LIBC yann@552: #include yann@552: yann@552: -#ifndef __UCLIBC_HAS_XLOCALE__ yann@552: -#define __wctype_l(S, L) wctype((S)) yann@552: -#define __towupper_l(C, L) towupper((C)) yann@552: -#define __towlower_l(C, L) towlower((C)) yann@552: -#define __iswctype_l(C, M, L) iswctype((C), (M)) yann@552: -#endif yann@552: - yann@552: namespace std yann@552: { yann@552: // NB: The other ctype specializations are in src/locale.cc and yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.cc yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -39,13 +39,10 @@ yann@552: #ifdef __UCLIBC_MJN3_ONLY__ yann@552: #warning fix gettext stuff yann@552: #endif yann@552: -#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ yann@552: -extern "C" char *__dcgettext(const char *domainname, yann@552: - const char *msgid, int category); yann@552: #undef gettext yann@552: -#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) yann@552: +#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ yann@552: +#define gettext(msgid) dcgettext(NULL, msgid, LC_MESSAGES) yann@552: #else yann@552: -#undef gettext yann@552: #define gettext(msgid) (msgid) yann@552: #endif yann@552: yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.h yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -36,15 +36,11 @@ yann@552: #ifdef __UCLIBC_MJN3_ONLY__ yann@552: #warning fix prototypes for *textdomain funcs yann@552: #endif yann@552: -#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ yann@552: -extern "C" char *__textdomain(const char *domainname); yann@552: -extern "C" char *__bindtextdomain(const char *domainname, yann@552: - const char *dirname); yann@552: -#else yann@552: -#undef __textdomain yann@552: -#undef __bindtextdomain yann@552: -#define __textdomain(D) ((void)0) yann@552: -#define __bindtextdomain(D,P) ((void)0) yann@552: +#ifndef __UCLIBC_HAS_GETTEXT_AWARENESS__ yann@552: +#undef textdomain yann@552: +#undef bindtextdomain yann@552: +#define textdomain(D) ((void)0) yann@552: +#define bindtextdomain(D,P) ((void)0) yann@552: #endif yann@552: yann@552: // Non-virtual member functions. yann@552: @@ -70,7 +66,7 @@ yann@552: messages<_CharT>::open(const basic_string& __s, const locale& __loc, yann@552: const char* __dir) const yann@552: { yann@552: - __bindtextdomain(__s.c_str(), __dir); yann@552: + bindtextdomain(__s.c_str(), __dir); yann@552: return this->do_open(__s, __loc); yann@552: } yann@552: yann@552: @@ -90,7 +86,7 @@ yann@552: { yann@552: // No error checking is done, assume the catalog exists and can yann@552: // be used. yann@552: - __textdomain(__s.c_str()); yann@552: + textdomain(__s.c_str()); yann@552: return 0; yann@552: } yann@552: yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.3.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -43,10 +43,6 @@ yann@552: #warning tailor for stub locale support yann@552: #endif yann@552: yann@552: -#ifndef __UCLIBC_HAS_XLOCALE__ yann@552: -#define __nl_langinfo_l(N, L) nl_langinfo((N)) yann@552: -#endif yann@552: - yann@552: namespace std yann@552: { yann@552: // Construct and return valid pattern consisting of some combination of: yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.3.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -41,9 +41,6 @@ yann@552: #ifdef __UCLIBC_MJN3_ONLY__ yann@552: #warning tailor for stub locale support yann@552: #endif yann@552: -#ifndef __UCLIBC_HAS_XLOCALE__ yann@552: -#define __nl_langinfo_l(N, L) nl_langinfo((N)) yann@552: -#endif yann@552: yann@552: namespace std yann@552: { yann@552: diff -durN gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.3.1/libstdc++-v3/config/locale/uclibc/time_members.cc yann@552: --- gcc-4.3.1.orig/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: +++ gcc-4.3.1/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-06-10 14:58:43.000000000 +0200 yann@552: @@ -40,9 +40,6 @@ yann@552: #ifdef __UCLIBC_MJN3_ONLY__ yann@552: #warning tailor for stub locale support yann@552: #endif yann@552: -#ifndef __UCLIBC_HAS_XLOCALE__ yann@552: -#define __nl_langinfo_l(N, L) nl_langinfo((N)) yann@552: -#endif yann@552: yann@552: namespace std yann@552: {