patches/gcc/4.2.3/203-uclibc-locale-no__x.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Feb 17 22:08:06 2008 +0000 (2008-02-17)
changeset 431 8bde4c6ea47a
parent 313 patches/gcc/4.2.1/203-uclibc-locale-no__x.patch@2f223aafc7cb
permissions -rw-r--r--
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.
     1 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.cc
     2 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.cc	2007-08-03 20:30:21.000000000 +0200
     3 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.cc	2007-08-03 20:30:53.000000000 +0200
     4 @@ -39,20 +39,6 @@
     5  #include <langinfo.h>
     6  #include <bits/c++locale_internal.h>
     7  
     8 -#ifndef __UCLIBC_HAS_XLOCALE__
     9 -#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
    10 -#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
    11 -#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
    12 -#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
    13 -#define __strtof_l(S, E, L)         strtof((S), (E))
    14 -#define __strtod_l(S, E, L)         strtod((S), (E))
    15 -#define __strtold_l(S, E, L)        strtold((S), (E))
    16 -#warning should dummy __newlocale check for C|POSIX ?
    17 -#define __newlocale(a, b, c)        NULL
    18 -#define __freelocale(a)             ((void)0)
    19 -#define __duplocale(a)              __c_locale()
    20 -#endif
    21 -
    22  namespace std 
    23  {
    24    template<>
    25 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.h
    26 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c_locale.h	2007-08-03 20:30:21.000000000 +0200
    27 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c_locale.h	2007-08-03 20:30:53.000000000 +0200
    28 @@ -68,6 +68,7 @@
    29  {
    30    extern "C" __typeof(uselocale) __uselocale;
    31  }
    32 +#define __uselocale uselocale
    33  #endif
    34  
    35  namespace std
    36 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
    37 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2007-08-03 20:30:21.000000000 +0200
    38 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2007-08-03 20:30:53.000000000 +0200
    39 @@ -60,4 +60,49 @@
    40  extern "C" __typeof(wctype_l) __wctype_l;
    41  #endif 
    42  
    43 +# define __nl_langinfo_l nl_langinfo_l
    44 +# define __strcoll_l strcoll_l
    45 +# define __strftime_l strftime_l
    46 +# define __strtod_l strtod_l
    47 +# define __strtof_l strtof_l
    48 +# define __strtold_l strtold_l
    49 +# define __strxfrm_l strxfrm_l
    50 +# define __newlocale newlocale
    51 +# define __freelocale freelocale
    52 +# define __duplocale duplocale
    53 +# define __uselocale uselocale
    54 +
    55 +# ifdef _GLIBCXX_USE_WCHAR_T
    56 +#  define __iswctype_l iswctype_l
    57 +#  define __towlower_l towlower_l
    58 +#  define __towupper_l towupper_l
    59 +#  define __wcscoll_l wcscoll_l
    60 +#  define __wcsftime_l wcsftime_l
    61 +#  define __wcsxfrm_l wcsxfrm_l
    62 +#  define __wctype_l wctype_l
    63 +# endif
    64 +
    65 +#else
    66 +# define __nl_langinfo_l(N, L)       nl_langinfo((N))
    67 +# define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
    68 +# define __strtod_l(S, E, L)         strtod((S), (E))
    69 +# define __strtof_l(S, E, L)         strtof((S), (E))
    70 +# define __strtold_l(S, E, L)        strtold((S), (E))
    71 +# define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
    72 +# warning should dummy __newlocale check for C|POSIX ?
    73 +# define __newlocale(a, b, c)        NULL
    74 +# define __freelocale(a)             ((void)0)
    75 +# define __duplocale(a)              __c_locale()
    76 +//# define __uselocale ?
    77 +//
    78 +# ifdef _GLIBCXX_USE_WCHAR_T
    79 +#  define __iswctype_l(C, M, L)       iswctype((C), (M))
    80 +#  define __towlower_l(C, L)          towlower((C))
    81 +#  define __towupper_l(C, L)          towupper((C))
    82 +#  define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
    83 +//#  define __wcsftime_l(S, M, F, T, L)  wcsftime((S), (M), (F), (T)) 
    84 +#  define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
    85 +#  define __wctype_l(S, L)            wctype((S))
    86 +# endif
    87 +
    88  #endif // GLIBC 2.3 and later
    89 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/collate_members.cc
    90 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/collate_members.cc	2007-08-03 20:30:21.000000000 +0200
    91 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/collate_members.cc	2007-08-03 20:30:53.000000000 +0200
    92 @@ -36,13 +36,6 @@
    93  #include <locale>
    94  #include <bits/c++locale_internal.h>
    95  
    96 -#ifndef __UCLIBC_HAS_XLOCALE__
    97 -#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
    98 -#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
    99 -#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
   100 -#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
   101 -#endif
   102 -
   103  namespace std
   104  {
   105    // These are basically extensions to char_traits, and perhaps should
   106 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc
   107 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2007-08-03 20:30:21.000000000 +0200
   108 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2007-08-03 20:30:53.000000000 +0200
   109 @@ -38,13 +38,6 @@
   110  #undef _LIBC
   111  #include <bits/c++locale_internal.h>
   112  
   113 -#ifndef __UCLIBC_HAS_XLOCALE__
   114 -#define __wctype_l(S, L)           wctype((S))
   115 -#define __towupper_l(C, L)         towupper((C))
   116 -#define __towlower_l(C, L)         towlower((C))
   117 -#define __iswctype_l(C, M, L)      iswctype((C), (M))
   118 -#endif
   119 -
   120  namespace std
   121  {
   122    // NB: The other ctype<char> specializations are in src/locale.cc and
   123 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.cc
   124 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.cc	2007-08-03 20:30:21.000000000 +0200
   125 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.cc	2007-08-03 20:30:53.000000000 +0200
   126 @@ -39,13 +39,10 @@
   127  #ifdef __UCLIBC_MJN3_ONLY__
   128  #warning fix gettext stuff
   129  #endif
   130 -#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
   131 -extern "C" char *__dcgettext(const char *domainname,
   132 -			     const char *msgid, int category);
   133  #undef gettext
   134 -#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
   135 +#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
   136 +#define gettext(msgid) dcgettext(NULL, msgid, LC_MESSAGES)
   137  #else
   138 -#undef gettext
   139  #define gettext(msgid) (msgid)
   140  #endif
   141  
   142 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.h
   143 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/messages_members.h	2007-08-03 20:30:21.000000000 +0200
   144 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/messages_members.h	2007-08-03 20:30:53.000000000 +0200
   145 @@ -36,15 +36,11 @@
   146  #ifdef __UCLIBC_MJN3_ONLY__
   147  #warning fix prototypes for *textdomain funcs
   148  #endif
   149 -#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
   150 -extern "C" char *__textdomain(const char *domainname);
   151 -extern "C" char *__bindtextdomain(const char *domainname,
   152 -				  const char *dirname);
   153 -#else
   154 -#undef __textdomain
   155 -#undef __bindtextdomain
   156 -#define __textdomain(D)           ((void)0)
   157 -#define __bindtextdomain(D,P)     ((void)0)
   158 +#ifndef __UCLIBC_HAS_GETTEXT_AWARENESS__
   159 +#undef textdomain
   160 +#undef bindtextdomain
   161 +#define textdomain(D)           ((void)0)
   162 +#define bindtextdomain(D,P)     ((void)0)
   163  #endif
   164  
   165    // Non-virtual member functions.
   166 @@ -70,7 +66,7 @@
   167      messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 
   168  			   const char* __dir) const
   169      { 
   170 -      __bindtextdomain(__s.c_str(), __dir);
   171 +      bindtextdomain(__s.c_str(), __dir);
   172        return this->do_open(__s, __loc); 
   173      }
   174  
   175 @@ -90,7 +86,7 @@
   176      { 
   177        // No error checking is done, assume the catalog exists and can
   178        // be used.
   179 -      __textdomain(__s.c_str());
   180 +      textdomain(__s.c_str());
   181        return 0;
   182      }
   183  
   184 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
   185 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2007-08-03 20:30:21.000000000 +0200
   186 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2007-08-03 20:30:53.000000000 +0200
   187 @@ -43,10 +43,6 @@
   188  #warning tailor for stub locale support
   189  #endif
   190  
   191 -#ifndef __UCLIBC_HAS_XLOCALE__
   192 -#define __nl_langinfo_l(N, L)         nl_langinfo((N))
   193 -#endif
   194 -
   195  namespace std
   196  {
   197    // Construct and return valid pattern consisting of some combination of:
   198 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
   199 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2007-08-03 20:30:21.000000000 +0200
   200 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2007-08-03 20:30:53.000000000 +0200
   201 @@ -41,9 +41,6 @@
   202  #ifdef __UCLIBC_MJN3_ONLY__
   203  #warning tailor for stub locale support
   204  #endif
   205 -#ifndef __UCLIBC_HAS_XLOCALE__
   206 -#define __nl_langinfo_l(N, L)         nl_langinfo((N))
   207 -#endif
   208  
   209  namespace std
   210  {
   211 diff -durN gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.2.1/libstdc++-v3/config/locale/uclibc/time_members.cc
   212 --- gcc-4.2.1.orig/libstdc++-v3/config/locale/uclibc/time_members.cc	2007-08-03 20:30:21.000000000 +0200
   213 +++ gcc-4.2.1/libstdc++-v3/config/locale/uclibc/time_members.cc	2007-08-03 20:30:53.000000000 +0200
   214 @@ -40,9 +40,6 @@
   215  #ifdef __UCLIBC_MJN3_ONLY__
   216  #warning tailor for stub locale support
   217  #endif
   218 -#ifndef __UCLIBC_HAS_XLOCALE__
   219 -#define __nl_langinfo_l(N, L)         nl_langinfo((N))
   220 -#endif
   221  
   222  namespace std
   223  {