diff options
author | Richard Purdie <rpurdie@linux.intel.com> | 2009-09-14 20:22:34 +0100 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2009-09-14 20:22:34 +0100 |
commit | 2e7e072f58f4dd47edc4e54d96b79bd9ff92ee7e (patch) | |
tree | 63225a230143108a02d1b972931e20c9d92d9886 /meta/packages/gcc/gcc-4.3.3/200-uclibc-locale.patch | |
parent | 8f96edfb16e593264a49b04eade98d4e2094d1b1 (diff) | |
download | poky-2e7e072f58f4dd47edc4e54d96b79bd9ff92ee7e.tar.gz |
gcc-4.3.3: Sync patchset with OE.dev
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
Diffstat (limited to 'meta/packages/gcc/gcc-4.3.3/200-uclibc-locale.patch')
-rw-r--r-- | meta/packages/gcc/gcc-4.3.3/200-uclibc-locale.patch | 423 |
1 files changed, 233 insertions, 190 deletions
diff --git a/meta/packages/gcc/gcc-4.3.3/200-uclibc-locale.patch b/meta/packages/gcc/gcc-4.3.3/200-uclibc-locale.patch index ea21388b75..70ba98eed7 100644 --- a/meta/packages/gcc/gcc-4.3.3/200-uclibc-locale.patch +++ b/meta/packages/gcc/gcc-4.3.3/200-uclibc-locale.patch | |||
@@ -1,6 +1,8 @@ | |||
1 | --- gcc/libstdc++-v3/acinclude.m4 | 1 | Index: gcc-4.3.2/libstdc++-v3/acinclude.m4 |
2 | +++ gcc/libstdc++-v3/acinclude.m4 | 2 | =================================================================== |
3 | @@ -1369,7 +1369,7 @@ | 3 | --- gcc-4.3.2.orig/libstdc++-v3/acinclude.m4 2008-04-25 09:52:57.000000000 -0700 |
4 | +++ gcc-4.3.2/libstdc++-v3/acinclude.m4 2008-08-28 17:55:56.000000000 -0700 | ||
5 | @@ -1349,7 +1349,7 @@ | ||
4 | AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ | 6 | AC_DEFUN([GLIBCXX_ENABLE_CLOCALE], [ |
5 | GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], | 7 | GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], |
6 | [use MODEL for target locale package], | 8 | [use MODEL for target locale package], |
@@ -9,7 +11,7 @@ | |||
9 | 11 | ||
10 | # Deal with gettext issues. Default to not using it (=no) until we detect | 12 | # Deal with gettext issues. Default to not using it (=no) until we detect |
11 | # support for it later. Let the user turn it off via --e/d, but let that | 13 | # support for it later. Let the user turn it off via --e/d, but let that |
12 | @@ -1385,6 +1385,9 @@ | 14 | @@ -1370,6 +1370,9 @@ |
13 | # Default to "generic". | 15 | # Default to "generic". |
14 | if test $enable_clocale_flag = auto; then | 16 | if test $enable_clocale_flag = auto; then |
15 | case ${target_os} in | 17 | case ${target_os} in |
@@ -17,9 +19,9 @@ | |||
17 | + enable_clocale_flag=uclibc | 19 | + enable_clocale_flag=uclibc |
18 | + ;; | 20 | + ;; |
19 | linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) | 21 | linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) |
20 | AC_EGREP_CPP([_GLIBCXX_ok], [ | 22 | enable_clocale_flag=gnu |
21 | #include <features.h> | 23 | ;; |
22 | @@ -1528,6 +1531,40 @@ | 24 | @@ -1541,6 +1544,40 @@ |
23 | CTIME_CC=config/locale/generic/time_members.cc | 25 | CTIME_CC=config/locale/generic/time_members.cc |
24 | CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h | 26 | CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h |
25 | ;; | 27 | ;; |
@@ -60,8 +62,10 @@ | |||
60 | esac | 62 | esac |
61 | 63 | ||
62 | # This is where the testsuite looks for locale catalogs, using the | 64 | # This is where the testsuite looks for locale catalogs, using the |
63 | --- gcc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h | 65 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h |
64 | +++ gcc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h | 66 | =================================================================== |
67 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
68 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2008-08-28 17:55:56.000000000 -0700 | ||
65 | @@ -0,0 +1,63 @@ | 69 | @@ -0,0 +1,63 @@ |
66 | +// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- | 70 | +// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- |
67 | + | 71 | + |
@@ -102,7 +106,7 @@ | |||
102 | +#endif | 106 | +#endif |
103 | + | 107 | + |
104 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 108 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
105 | + | 109 | + |
106 | +extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; | 110 | +extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; |
107 | +extern "C" __typeof(strcoll_l) __strcoll_l; | 111 | +extern "C" __typeof(strcoll_l) __strcoll_l; |
108 | +extern "C" __typeof(strftime_l) __strftime_l; | 112 | +extern "C" __typeof(strftime_l) __strftime_l; |
@@ -123,11 +127,13 @@ | |||
123 | +extern "C" __typeof(wcsftime_l) __wcsftime_l; | 127 | +extern "C" __typeof(wcsftime_l) __wcsftime_l; |
124 | +extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; | 128 | +extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; |
125 | +extern "C" __typeof(wctype_l) __wctype_l; | 129 | +extern "C" __typeof(wctype_l) __wctype_l; |
126 | +#endif | 130 | +#endif |
127 | + | 131 | + |
128 | +#endif // GLIBC 2.3 and later | 132 | +#endif // GLIBC 2.3 and later |
129 | --- gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc | 133 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc |
130 | +++ gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc | 134 | =================================================================== |
135 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
136 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc 2008-08-28 17:55:56.000000000 -0700 | ||
131 | @@ -0,0 +1,160 @@ | 137 | @@ -0,0 +1,160 @@ |
132 | +// Wrapper for underlying C-language localization -*- C++ -*- | 138 | +// Wrapper for underlying C-language localization -*- C++ -*- |
133 | + | 139 | + |
@@ -184,11 +190,11 @@ | |||
184 | +#define __duplocale(a) __c_locale() | 190 | +#define __duplocale(a) __c_locale() |
185 | +#endif | 191 | +#endif |
186 | + | 192 | + |
187 | +namespace std | 193 | +namespace std |
188 | +{ | 194 | +{ |
189 | + template<> | 195 | + template<> |
190 | + void | 196 | + void |
191 | + __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, | 197 | + __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, |
192 | + const __c_locale& __cloc) | 198 | + const __c_locale& __cloc) |
193 | + { | 199 | + { |
194 | + if (!(__err & ios_base::failbit)) | 200 | + if (!(__err & ios_base::failbit)) |
@@ -205,7 +211,7 @@ | |||
205 | + | 211 | + |
206 | + template<> | 212 | + template<> |
207 | + void | 213 | + void |
208 | + __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, | 214 | + __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, |
209 | + const __c_locale& __cloc) | 215 | + const __c_locale& __cloc) |
210 | + { | 216 | + { |
211 | + if (!(__err & ios_base::failbit)) | 217 | + if (!(__err & ios_base::failbit)) |
@@ -238,7 +244,7 @@ | |||
238 | + } | 244 | + } |
239 | + | 245 | + |
240 | + void | 246 | + void |
241 | + locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, | 247 | + locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, |
242 | + __c_locale __old) | 248 | + __c_locale __old) |
243 | + { | 249 | + { |
244 | + __cloc = __newlocale(1 << LC_ALL, __s, __old); | 250 | + __cloc = __newlocale(1 << LC_ALL, __s, __old); |
@@ -251,12 +257,12 @@ | |||
251 | + } | 257 | + } |
252 | +#endif | 258 | +#endif |
253 | + } | 259 | + } |
254 | + | 260 | + |
255 | + void | 261 | + void |
256 | + locale::facet::_S_destroy_c_locale(__c_locale& __cloc) | 262 | + locale::facet::_S_destroy_c_locale(__c_locale& __cloc) |
257 | + { | 263 | + { |
258 | + if (_S_get_c_locale() != __cloc) | 264 | + if (_S_get_c_locale() != __cloc) |
259 | + __freelocale(__cloc); | 265 | + __freelocale(__cloc); |
260 | + } | 266 | + } |
261 | + | 267 | + |
262 | + __c_locale | 268 | + __c_locale |
@@ -268,19 +274,19 @@ | |||
268 | +{ | 274 | +{ |
269 | + const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = | 275 | + const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = |
270 | + { | 276 | + { |
271 | + "LC_CTYPE", | 277 | + "LC_CTYPE", |
272 | + "LC_NUMERIC", | 278 | + "LC_NUMERIC", |
273 | + "LC_TIME", | 279 | + "LC_TIME", |
274 | + "LC_COLLATE", | 280 | + "LC_COLLATE", |
275 | + "LC_MONETARY", | 281 | + "LC_MONETARY", |
276 | + "LC_MESSAGES", | 282 | + "LC_MESSAGES", |
277 | +#if _GLIBCXX_NUM_CATEGORIES != 0 | 283 | +#if _GLIBCXX_NUM_CATEGORIES != 0 |
278 | + "LC_PAPER", | 284 | + "LC_PAPER", |
279 | + "LC_NAME", | 285 | + "LC_NAME", |
280 | + "LC_ADDRESS", | 286 | + "LC_ADDRESS", |
281 | + "LC_TELEPHONE", | 287 | + "LC_TELEPHONE", |
282 | + "LC_MEASUREMENT", | 288 | + "LC_MEASUREMENT", |
283 | + "LC_IDENTIFICATION" | 289 | + "LC_IDENTIFICATION" |
284 | +#endif | 290 | +#endif |
285 | + }; | 291 | + }; |
286 | +} | 292 | +} |
@@ -289,8 +295,10 @@ | |||
289 | +{ | 295 | +{ |
290 | + const char* const* const locale::_S_categories = __gnu_cxx::category_names; | 296 | + const char* const* const locale::_S_categories = __gnu_cxx::category_names; |
291 | +} // namespace std | 297 | +} // namespace std |
292 | --- gcc/libstdc++-v3/config/locale/uclibc/c_locale.h | 298 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h |
293 | +++ gcc/libstdc++-v3/config/locale/uclibc/c_locale.h | 299 | =================================================================== |
300 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
301 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h 2008-08-28 17:55:56.000000000 -0700 | ||
294 | @@ -0,0 +1,117 @@ | 302 | @@ -0,0 +1,117 @@ |
295 | +// Wrapper for underlying C-language localization -*- C++ -*- | 303 | +// Wrapper for underlying C-language localization -*- C++ -*- |
296 | + | 304 | + |
@@ -356,7 +364,7 @@ | |||
356 | +#endif | 364 | +#endif |
357 | +// #define _GLIBCXX_NUM_CATEGORIES 6 | 365 | +// #define _GLIBCXX_NUM_CATEGORIES 6 |
358 | +#define _GLIBCXX_NUM_CATEGORIES 0 | 366 | +#define _GLIBCXX_NUM_CATEGORIES 0 |
359 | + | 367 | + |
360 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 368 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
361 | +namespace __gnu_cxx | 369 | +namespace __gnu_cxx |
362 | +{ | 370 | +{ |
@@ -378,7 +386,7 @@ | |||
378 | + // be avoided. | 386 | + // be avoided. |
379 | + template<typename _Tv> | 387 | + template<typename _Tv> |
380 | + int | 388 | + int |
381 | + __convert_from_v(char* __out, | 389 | + __convert_from_v(char* __out, |
382 | + const int __size __attribute__ ((__unused__)), | 390 | + const int __size __attribute__ ((__unused__)), |
383 | + const char* __fmt, | 391 | + const char* __fmt, |
384 | +#ifdef __UCLIBC_HAS_XCLOCALE__ | 392 | +#ifdef __UCLIBC_HAS_XCLOCALE__ |
@@ -409,9 +417,11 @@ | |||
409 | +} | 417 | +} |
410 | + | 418 | + |
411 | +#endif | 419 | +#endif |
412 | --- gcc/libstdc++-v3/config/locale/uclibc/codecvt_members.cc | 420 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc |
413 | +++ gcc/libstdc++-v3/config/locale/uclibc/codecvt_members.cc | 421 | =================================================================== |
414 | @@ -0,0 +1,306 @@ | 422 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 |
423 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2008-08-28 17:55:56.000000000 -0700 | ||
424 | @@ -0,0 +1,308 @@ | ||
415 | +// std::codecvt implementation details, GNU version -*- C++ -*- | 425 | +// std::codecvt implementation details, GNU version -*- C++ -*- |
416 | + | 426 | + |
417 | +// Copyright (C) 2002, 2003 Free Software Foundation, Inc. | 427 | +// Copyright (C) 2002, 2003 Free Software Foundation, Inc. |
@@ -448,6 +458,8 @@ | |||
448 | +// Written by Benjamin Kosnik <bkoz@redhat.com> | 458 | +// Written by Benjamin Kosnik <bkoz@redhat.com> |
449 | + | 459 | + |
450 | +#include <locale> | 460 | +#include <locale> |
461 | +#include <cstdlib> // For MB_CUR_MAX | ||
462 | +#include <climits> // For MB_LEN_MAX | ||
451 | +#include <bits/c++locale_internal.h> | 463 | +#include <bits/c++locale_internal.h> |
452 | + | 464 | + |
453 | +namespace std | 465 | +namespace std |
@@ -456,7 +468,7 @@ | |||
456 | +#ifdef _GLIBCXX_USE_WCHAR_T | 468 | +#ifdef _GLIBCXX_USE_WCHAR_T |
457 | + codecvt_base::result | 469 | + codecvt_base::result |
458 | + codecvt<wchar_t, char, mbstate_t>:: | 470 | + codecvt<wchar_t, char, mbstate_t>:: |
459 | + do_out(state_type& __state, const intern_type* __from, | 471 | + do_out(state_type& __state, const intern_type* __from, |
460 | + const intern_type* __from_end, const intern_type*& __from_next, | 472 | + const intern_type* __from_end, const intern_type*& __from_next, |
461 | + extern_type* __to, extern_type* __to_end, | 473 | + extern_type* __to, extern_type* __to_end, |
462 | + extern_type*& __to_next) const | 474 | + extern_type*& __to_next) const |
@@ -526,12 +538,12 @@ | |||
526 | + __uselocale(__old); | 538 | + __uselocale(__old); |
527 | +#endif | 539 | +#endif |
528 | + | 540 | + |
529 | + return __ret; | 541 | + return __ret; |
530 | + } | 542 | + } |
531 | + | 543 | + |
532 | + codecvt_base::result | 544 | + codecvt_base::result |
533 | + codecvt<wchar_t, char, mbstate_t>:: | 545 | + codecvt<wchar_t, char, mbstate_t>:: |
534 | + do_in(state_type& __state, const extern_type* __from, | 546 | + do_in(state_type& __state, const extern_type* __from, |
535 | + const extern_type* __from_end, const extern_type*& __from_next, | 547 | + const extern_type* __from_end, const extern_type*& __from_next, |
536 | + intern_type* __to, intern_type* __to_end, | 548 | + intern_type* __to, intern_type* __to_end, |
537 | + intern_type*& __to_next) const | 549 | + intern_type*& __to_next) const |
@@ -575,12 +587,12 @@ | |||
575 | + break; | 587 | + break; |
576 | + } | 588 | + } |
577 | + __from_next = __from; | 589 | + __from_next = __from; |
578 | + __state = __tmp_state; | 590 | + __state = __tmp_state; |
579 | + __ret = error; | 591 | + __ret = error; |
580 | + } | 592 | + } |
581 | + else if (__from_next && __from_next < __from_chunk_end) | 593 | + else if (__from_next && __from_next < __from_chunk_end) |
582 | + { | 594 | + { |
583 | + // It is unclear what to return in this case (see DR 382). | 595 | + // It is unclear what to return in this case (see DR 382). |
584 | + __to_next += __conv; | 596 | + __to_next += __conv; |
585 | + __ret = partial; | 597 | + __ret = partial; |
586 | + } | 598 | + } |
@@ -595,7 +607,7 @@ | |||
595 | + if (__to_next < __to_end) | 607 | + if (__to_next < __to_end) |
596 | + { | 608 | + { |
597 | + // XXX Probably wrong for stateful encodings | 609 | + // XXX Probably wrong for stateful encodings |
598 | + __tmp_state = __state; | 610 | + __tmp_state = __state; |
599 | + ++__from_next; | 611 | + ++__from_next; |
600 | + *__to_next++ = L'\0'; | 612 | + *__to_next++ = L'\0'; |
601 | + } | 613 | + } |
@@ -608,10 +620,10 @@ | |||
608 | + __uselocale(__old); | 620 | + __uselocale(__old); |
609 | +#endif | 621 | +#endif |
610 | + | 622 | + |
611 | + return __ret; | 623 | + return __ret; |
612 | + } | 624 | + } |
613 | + | 625 | + |
614 | + int | 626 | + int |
615 | + codecvt<wchar_t, char, mbstate_t>:: | 627 | + codecvt<wchar_t, char, mbstate_t>:: |
616 | + do_encoding() const throw() | 628 | + do_encoding() const throw() |
617 | + { | 629 | + { |
@@ -627,9 +639,9 @@ | |||
627 | + __uselocale(__old); | 639 | + __uselocale(__old); |
628 | +#endif | 640 | +#endif |
629 | + return __ret; | 641 | + return __ret; |
630 | + } | 642 | + } |
631 | + | 643 | + |
632 | + int | 644 | + int |
633 | + codecvt<wchar_t, char, mbstate_t>:: | 645 | + codecvt<wchar_t, char, mbstate_t>:: |
634 | + do_max_length() const throw() | 646 | + do_max_length() const throw() |
635 | + { | 647 | + { |
@@ -643,8 +655,8 @@ | |||
643 | +#endif | 655 | +#endif |
644 | + return __ret; | 656 | + return __ret; |
645 | + } | 657 | + } |
646 | + | 658 | + |
647 | + int | 659 | + int |
648 | + codecvt<wchar_t, char, mbstate_t>:: | 660 | + codecvt<wchar_t, char, mbstate_t>:: |
649 | + do_length(state_type& __state, const extern_type* __from, | 661 | + do_length(state_type& __state, const extern_type* __from, |
650 | + const extern_type* __end, size_t __max) const | 662 | + const extern_type* __end, size_t __max) const |
@@ -659,10 +671,10 @@ | |||
659 | + // mbsnrtowcs is *very* fast but stops if encounters NUL characters: | 671 | + // mbsnrtowcs is *very* fast but stops if encounters NUL characters: |
660 | + // in case we advance past it and then continue, in a loop. | 672 | + // in case we advance past it and then continue, in a loop. |
661 | + // NB: mbsnrtowcs is a GNU extension | 673 | + // NB: mbsnrtowcs is a GNU extension |
662 | + | 674 | + |
663 | + // A dummy internal buffer is needed in order for mbsnrtocws to consider | 675 | + // A dummy internal buffer is needed in order for mbsnrtocws to consider |
664 | + // its fourth parameter (it wouldn't with NULL as first parameter). | 676 | + // its fourth parameter (it wouldn't with NULL as first parameter). |
665 | + wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t) | 677 | + wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t) |
666 | + * __max)); | 678 | + * __max)); |
667 | + while (__from < __end && __max) | 679 | + while (__from < __end && __max) |
668 | + { | 680 | + { |
@@ -696,7 +708,7 @@ | |||
696 | + } | 708 | + } |
697 | + if (!__from) | 709 | + if (!__from) |
698 | + __from = __from_chunk_end; | 710 | + __from = __from_chunk_end; |
699 | + | 711 | + |
700 | + __ret += __from - __tmp_from; | 712 | + __ret += __from - __tmp_from; |
701 | + __max -= __conv; | 713 | + __max -= __conv; |
702 | + | 714 | + |
@@ -714,12 +726,14 @@ | |||
714 | + __uselocale(__old); | 726 | + __uselocale(__old); |
715 | +#endif | 727 | +#endif |
716 | + | 728 | + |
717 | + return __ret; | 729 | + return __ret; |
718 | + } | 730 | + } |
719 | +#endif | 731 | +#endif |
720 | +} | 732 | +} |
721 | --- gcc/libstdc++-v3/config/locale/uclibc/collate_members.cc | 733 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/collate_members.cc |
722 | +++ gcc/libstdc++-v3/config/locale/uclibc/collate_members.cc | 734 | =================================================================== |
735 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
736 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/collate_members.cc 2008-08-28 17:55:56.000000000 -0700 | ||
723 | @@ -0,0 +1,80 @@ | 737 | @@ -0,0 +1,80 @@ |
724 | +// std::collate implementation details, GNU version -*- C++ -*- | 738 | +// std::collate implementation details, GNU version -*- C++ -*- |
725 | + | 739 | + |
@@ -771,29 +785,29 @@ | |||
771 | + // These are basically extensions to char_traits, and perhaps should | 785 | + // These are basically extensions to char_traits, and perhaps should |
772 | + // be put there instead of here. | 786 | + // be put there instead of here. |
773 | + template<> | 787 | + template<> |
774 | + int | 788 | + int |
775 | + collate<char>::_M_compare(const char* __one, const char* __two) const | 789 | + collate<char>::_M_compare(const char* __one, const char* __two) const |
776 | + { | 790 | + { |
777 | + int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); | 791 | + int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); |
778 | + return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); | 792 | + return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); |
779 | + } | 793 | + } |
780 | + | 794 | + |
781 | + template<> | 795 | + template<> |
782 | + size_t | 796 | + size_t |
783 | + collate<char>::_M_transform(char* __to, const char* __from, | 797 | + collate<char>::_M_transform(char* __to, const char* __from, |
784 | + size_t __n) const | 798 | + size_t __n) const |
785 | + { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } | 799 | + { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } |
786 | + | 800 | + |
787 | +#ifdef _GLIBCXX_USE_WCHAR_T | 801 | +#ifdef _GLIBCXX_USE_WCHAR_T |
788 | + template<> | 802 | + template<> |
789 | + int | 803 | + int |
790 | + collate<wchar_t>::_M_compare(const wchar_t* __one, | 804 | + collate<wchar_t>::_M_compare(const wchar_t* __one, |
791 | + const wchar_t* __two) const | 805 | + const wchar_t* __two) const |
792 | + { | 806 | + { |
793 | + int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); | 807 | + int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); |
794 | + return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); | 808 | + return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); |
795 | + } | 809 | + } |
796 | + | 810 | + |
797 | + template<> | 811 | + template<> |
798 | + size_t | 812 | + size_t |
799 | + collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from, | 813 | + collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from, |
@@ -801,8 +815,10 @@ | |||
801 | + { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } | 815 | + { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } |
802 | +#endif | 816 | +#endif |
803 | +} | 817 | +} |
804 | --- gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc | 818 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc |
805 | +++ gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc | 819 | =================================================================== |
820 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
821 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2008-08-28 17:55:56.000000000 -0700 | ||
806 | @@ -0,0 +1,300 @@ | 822 | @@ -0,0 +1,300 @@ |
807 | +// std::ctype implementation details, GNU version -*- C++ -*- | 823 | +// std::ctype implementation details, GNU version -*- C++ -*- |
808 | + | 824 | + |
@@ -857,12 +873,12 @@ | |||
857 | + // various /config/os/* files. | 873 | + // various /config/os/* files. |
858 | + template<> | 874 | + template<> |
859 | + ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) | 875 | + ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) |
860 | + : ctype<char>(0, false, __refs) | 876 | + : ctype<char>(0, false, __refs) |
861 | + { | 877 | + { |
862 | + if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) | 878 | + if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) |
863 | + { | 879 | + { |
864 | + this->_S_destroy_c_locale(this->_M_c_locale_ctype); | 880 | + this->_S_destroy_c_locale(this->_M_c_locale_ctype); |
865 | + this->_S_create_c_locale(this->_M_c_locale_ctype, __s); | 881 | + this->_S_create_c_locale(this->_M_c_locale_ctype, __s); |
866 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 882 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
867 | + this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; | 883 | + this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; |
868 | + this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; | 884 | + this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; |
@@ -871,7 +887,7 @@ | |||
871 | + } | 887 | + } |
872 | + } | 888 | + } |
873 | + | 889 | + |
874 | +#ifdef _GLIBCXX_USE_WCHAR_T | 890 | +#ifdef _GLIBCXX_USE_WCHAR_T |
875 | + ctype<wchar_t>::__wmask_type | 891 | + ctype<wchar_t>::__wmask_type |
876 | + ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const | 892 | + ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const |
877 | + { | 893 | + { |
@@ -916,7 +932,7 @@ | |||
916 | + } | 932 | + } |
917 | + return __ret; | 933 | + return __ret; |
918 | + } | 934 | + } |
919 | + | 935 | + |
920 | + wchar_t | 936 | + wchar_t |
921 | + ctype<wchar_t>::do_toupper(wchar_t __c) const | 937 | + ctype<wchar_t>::do_toupper(wchar_t __c) const |
922 | + { return __towupper_l(__c, _M_c_locale_ctype); } | 938 | + { return __towupper_l(__c, _M_c_locale_ctype); } |
@@ -931,11 +947,11 @@ | |||
931 | + } | 947 | + } |
932 | + return __hi; | 948 | + return __hi; |
933 | + } | 949 | + } |
934 | + | 950 | + |
935 | + wchar_t | 951 | + wchar_t |
936 | + ctype<wchar_t>::do_tolower(wchar_t __c) const | 952 | + ctype<wchar_t>::do_tolower(wchar_t __c) const |
937 | + { return __towlower_l(__c, _M_c_locale_ctype); } | 953 | + { return __towlower_l(__c, _M_c_locale_ctype); } |
938 | + | 954 | + |
939 | + const wchar_t* | 955 | + const wchar_t* |
940 | + ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const | 956 | + ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const |
941 | + { | 957 | + { |
@@ -950,11 +966,11 @@ | |||
950 | + bool | 966 | + bool |
951 | + ctype<wchar_t>:: | 967 | + ctype<wchar_t>:: |
952 | + do_is(mask __m, wchar_t __c) const | 968 | + do_is(mask __m, wchar_t __c) const |
953 | + { | 969 | + { |
954 | + // Highest bitmask in ctype_base == 10, but extra in "C" | 970 | + // Highest bitmask in ctype_base == 10, but extra in "C" |
955 | + // library for blank. | 971 | + // library for blank. |
956 | + bool __ret = false; | 972 | + bool __ret = false; |
957 | + const size_t __bitmasksize = 11; | 973 | + const size_t __bitmasksize = 11; |
958 | + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) | 974 | + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) |
959 | + if (__m & _M_bit[__bitcur] | 975 | + if (__m & _M_bit[__bitcur] |
960 | + && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) | 976 | + && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) |
@@ -962,10 +978,10 @@ | |||
962 | + __ret = true; | 978 | + __ret = true; |
963 | + break; | 979 | + break; |
964 | + } | 980 | + } |
965 | + return __ret; | 981 | + return __ret; |
966 | + } | 982 | + } |
967 | + | 983 | + |
968 | + const wchar_t* | 984 | + const wchar_t* |
969 | + ctype<wchar_t>:: | 985 | + ctype<wchar_t>:: |
970 | + do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const | 986 | + do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const |
971 | + { | 987 | + { |
@@ -973,7 +989,7 @@ | |||
973 | + { | 989 | + { |
974 | + // Highest bitmask in ctype_base == 10, but extra in "C" | 990 | + // Highest bitmask in ctype_base == 10, but extra in "C" |
975 | + // library for blank. | 991 | + // library for blank. |
976 | + const size_t __bitmasksize = 11; | 992 | + const size_t __bitmasksize = 11; |
977 | + mask __m = 0; | 993 | + mask __m = 0; |
978 | + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) | 994 | + for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) |
979 | + if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) | 995 | + if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) |
@@ -982,8 +998,8 @@ | |||
982 | + } | 998 | + } |
983 | + return __hi; | 999 | + return __hi; |
984 | + } | 1000 | + } |
985 | + | 1001 | + |
986 | + const wchar_t* | 1002 | + const wchar_t* |
987 | + ctype<wchar_t>:: | 1003 | + ctype<wchar_t>:: |
988 | + do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const | 1004 | + do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const |
989 | + { | 1005 | + { |
@@ -1006,7 +1022,7 @@ | |||
1006 | + do_widen(char __c) const | 1022 | + do_widen(char __c) const |
1007 | + { return _M_widen[static_cast<unsigned char>(__c)]; } | 1023 | + { return _M_widen[static_cast<unsigned char>(__c)]; } |
1008 | + | 1024 | + |
1009 | + const char* | 1025 | + const char* |
1010 | + ctype<wchar_t>:: | 1026 | + ctype<wchar_t>:: |
1011 | + do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const | 1027 | + do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const |
1012 | + { | 1028 | + { |
@@ -1032,12 +1048,12 @@ | |||
1032 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 1048 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
1033 | + __uselocale(__old); | 1049 | + __uselocale(__old); |
1034 | +#endif | 1050 | +#endif |
1035 | + return (__c == EOF ? __dfault : static_cast<char>(__c)); | 1051 | + return (__c == EOF ? __dfault : static_cast<char>(__c)); |
1036 | + } | 1052 | + } |
1037 | + | 1053 | + |
1038 | + const wchar_t* | 1054 | + const wchar_t* |
1039 | + ctype<wchar_t>:: | 1055 | + ctype<wchar_t>:: |
1040 | + do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, | 1056 | + do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, |
1041 | + char* __dest) const | 1057 | + char* __dest) const |
1042 | + { | 1058 | + { |
1043 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 1059 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
@@ -1094,7 +1110,7 @@ | |||
1094 | + _M_widen[__j] = btowc(__j); | 1110 | + _M_widen[__j] = btowc(__j); |
1095 | + | 1111 | + |
1096 | + for (size_t __k = 0; __k <= 11; ++__k) | 1112 | + for (size_t __k = 0; __k <= 11; ++__k) |
1097 | + { | 1113 | + { |
1098 | + _M_bit[__k] = static_cast<mask>(_ISbit(__k)); | 1114 | + _M_bit[__k] = static_cast<mask>(_ISbit(__k)); |
1099 | + _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); | 1115 | + _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); |
1100 | + } | 1116 | + } |
@@ -1104,8 +1120,10 @@ | |||
1104 | + } | 1120 | + } |
1105 | +#endif // _GLIBCXX_USE_WCHAR_T | 1121 | +#endif // _GLIBCXX_USE_WCHAR_T |
1106 | +} | 1122 | +} |
1107 | --- gcc/libstdc++-v3/config/locale/uclibc/messages_members.cc | 1123 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.cc |
1108 | +++ gcc/libstdc++-v3/config/locale/uclibc/messages_members.cc | 1124 | =================================================================== |
1125 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
1126 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.cc 2008-08-28 17:55:56.000000000 -0700 | ||
1109 | @@ -0,0 +1,100 @@ | 1127 | @@ -0,0 +1,100 @@ |
1110 | +// std::messages implementation details, GNU version -*- C++ -*- | 1128 | +// std::messages implementation details, GNU version -*- C++ -*- |
1111 | + | 1129 | + |
@@ -1207,8 +1225,10 @@ | |||
1207 | + } | 1225 | + } |
1208 | +#endif | 1226 | +#endif |
1209 | +} | 1227 | +} |
1210 | --- gcc/libstdc++-v3/config/locale/uclibc/messages_members.h | 1228 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h |
1211 | +++ gcc/libstdc++-v3/config/locale/uclibc/messages_members.h | 1229 | =================================================================== |
1230 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
1231 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h 2008-08-28 17:55:56.000000000 -0700 | ||
1212 | @@ -0,0 +1,118 @@ | 1232 | @@ -0,0 +1,118 @@ |
1213 | +// std::messages implementation details, GNU version -*- C++ -*- | 1233 | +// std::messages implementation details, GNU version -*- C++ -*- |
1214 | + | 1234 | + |
@@ -1262,13 +1282,13 @@ | |||
1262 | + // Non-virtual member functions. | 1282 | + // Non-virtual member functions. |
1263 | + template<typename _CharT> | 1283 | + template<typename _CharT> |
1264 | + messages<_CharT>::messages(size_t __refs) | 1284 | + messages<_CharT>::messages(size_t __refs) |
1265 | + : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), | 1285 | + : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), |
1266 | + _M_name_messages(_S_get_c_name()) | 1286 | + _M_name_messages(_S_get_c_name()) |
1267 | + { } | 1287 | + { } |
1268 | + | 1288 | + |
1269 | + template<typename _CharT> | 1289 | + template<typename _CharT> |
1270 | + messages<_CharT>::messages(__c_locale __cloc, const char* __s, | 1290 | + messages<_CharT>::messages(__c_locale __cloc, const char* __s, |
1271 | + size_t __refs) | 1291 | + size_t __refs) |
1272 | + : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), | 1292 | + : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), |
1273 | + _M_name_messages(__s) | 1293 | + _M_name_messages(__s) |
1274 | + { | 1294 | + { |
@@ -1278,28 +1298,28 @@ | |||
1278 | + } | 1298 | + } |
1279 | + | 1299 | + |
1280 | + template<typename _CharT> | 1300 | + template<typename _CharT> |
1281 | + typename messages<_CharT>::catalog | 1301 | + typename messages<_CharT>::catalog |
1282 | + messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, | 1302 | + messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, |
1283 | + const char* __dir) const | 1303 | + const char* __dir) const |
1284 | + { | 1304 | + { |
1285 | + __bindtextdomain(__s.c_str(), __dir); | 1305 | + __bindtextdomain(__s.c_str(), __dir); |
1286 | + return this->do_open(__s, __loc); | 1306 | + return this->do_open(__s, __loc); |
1287 | + } | 1307 | + } |
1288 | + | 1308 | + |
1289 | + // Virtual member functions. | 1309 | + // Virtual member functions. |
1290 | + template<typename _CharT> | 1310 | + template<typename _CharT> |
1291 | + messages<_CharT>::~messages() | 1311 | + messages<_CharT>::~messages() |
1292 | + { | 1312 | + { |
1293 | + if (_M_name_messages != _S_get_c_name()) | 1313 | + if (_M_name_messages != _S_get_c_name()) |
1294 | + delete [] _M_name_messages; | 1314 | + delete [] _M_name_messages; |
1295 | + _S_destroy_c_locale(_M_c_locale_messages); | 1315 | + _S_destroy_c_locale(_M_c_locale_messages); |
1296 | + } | 1316 | + } |
1297 | + | 1317 | + |
1298 | + template<typename _CharT> | 1318 | + template<typename _CharT> |
1299 | + typename messages<_CharT>::catalog | 1319 | + typename messages<_CharT>::catalog |
1300 | + messages<_CharT>::do_open(const basic_string<char>& __s, | 1320 | + messages<_CharT>::do_open(const basic_string<char>& __s, |
1301 | + const locale&) const | 1321 | + const locale&) const |
1302 | + { | 1322 | + { |
1303 | + // No error checking is done, assume the catalog exists and can | 1323 | + // No error checking is done, assume the catalog exists and can |
1304 | + // be used. | 1324 | + // be used. |
1305 | + __textdomain(__s.c_str()); | 1325 | + __textdomain(__s.c_str()); |
@@ -1307,15 +1327,15 @@ | |||
1307 | + } | 1327 | + } |
1308 | + | 1328 | + |
1309 | + template<typename _CharT> | 1329 | + template<typename _CharT> |
1310 | + void | 1330 | + void |
1311 | + messages<_CharT>::do_close(catalog) const | 1331 | + messages<_CharT>::do_close(catalog) const |
1312 | + { } | 1332 | + { } |
1313 | + | 1333 | + |
1314 | + // messages_byname | 1334 | + // messages_byname |
1315 | + template<typename _CharT> | 1335 | + template<typename _CharT> |
1316 | + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) | 1336 | + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) |
1317 | + : messages<_CharT>(__refs) | 1337 | + : messages<_CharT>(__refs) |
1318 | + { | 1338 | + { |
1319 | + if (this->_M_name_messages != locale::facet::_S_get_c_name()) | 1339 | + if (this->_M_name_messages != locale::facet::_S_get_c_name()) |
1320 | + delete [] this->_M_name_messages; | 1340 | + delete [] this->_M_name_messages; |
1321 | + char* __tmp = new char[std::strlen(__s) + 1]; | 1341 | + char* __tmp = new char[std::strlen(__s) + 1]; |
@@ -1325,11 +1345,13 @@ | |||
1325 | + if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) | 1345 | + if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) |
1326 | + { | 1346 | + { |
1327 | + this->_S_destroy_c_locale(this->_M_c_locale_messages); | 1347 | + this->_S_destroy_c_locale(this->_M_c_locale_messages); |
1328 | + this->_S_create_c_locale(this->_M_c_locale_messages, __s); | 1348 | + this->_S_create_c_locale(this->_M_c_locale_messages, __s); |
1329 | + } | 1349 | + } |
1330 | + } | 1350 | + } |
1331 | --- gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc | 1351 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc |
1332 | +++ gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc | 1352 | =================================================================== |
1353 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
1354 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2008-08-28 17:55:56.000000000 -0700 | ||
1333 | @@ -0,0 +1,692 @@ | 1355 | @@ -0,0 +1,692 @@ |
1334 | +// std::moneypunct implementation details, GNU version -*- C++ -*- | 1356 | +// std::moneypunct implementation details, GNU version -*- C++ -*- |
1335 | + | 1357 | + |
@@ -1386,7 +1408,7 @@ | |||
1386 | + // space none symbol sign value | 1408 | + // space none symbol sign value |
1387 | + money_base::pattern | 1409 | + money_base::pattern |
1388 | + money_base::_S_construct_pattern(char __precedes, char __space, char __posn) | 1410 | + money_base::_S_construct_pattern(char __precedes, char __space, char __posn) |
1389 | + { | 1411 | + { |
1390 | + pattern __ret; | 1412 | + pattern __ret; |
1391 | + | 1413 | + |
1392 | + // This insanely complicated routine attempts to construct a valid | 1414 | + // This insanely complicated routine attempts to construct a valid |
@@ -1394,7 +1416,7 @@ | |||
1394 | + | 1416 | + |
1395 | + // if (__precedes) symbol -> value | 1417 | + // if (__precedes) symbol -> value |
1396 | + // else value -> symbol | 1418 | + // else value -> symbol |
1397 | + | 1419 | + |
1398 | + // if (__space) space | 1420 | + // if (__space) space |
1399 | + // else none | 1421 | + // else none |
1400 | + | 1422 | + |
@@ -1479,7 +1501,7 @@ | |||
1479 | + if (__precedes) | 1501 | + if (__precedes) |
1480 | + { | 1502 | + { |
1481 | + __ret.field[0] = sign; | 1503 | + __ret.field[0] = sign; |
1482 | + __ret.field[1] = symbol; | 1504 | + __ret.field[1] = symbol; |
1483 | + if (__space) | 1505 | + if (__space) |
1484 | + { | 1506 | + { |
1485 | + __ret.field[2] = space; | 1507 | + __ret.field[2] = space; |
@@ -1487,7 +1509,7 @@ | |||
1487 | + } | 1509 | + } |
1488 | + else | 1510 | + else |
1489 | + { | 1511 | + { |
1490 | + __ret.field[2] = value; | 1512 | + __ret.field[2] = value; |
1491 | + __ret.field[3] = none; | 1513 | + __ret.field[3] = none; |
1492 | + } | 1514 | + } |
1493 | + } | 1515 | + } |
@@ -1548,9 +1570,9 @@ | |||
1548 | + return __ret; | 1570 | + return __ret; |
1549 | + } | 1571 | + } |
1550 | + | 1572 | + |
1551 | + template<> | 1573 | + template<> |
1552 | + void | 1574 | + void |
1553 | + moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, | 1575 | + moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, |
1554 | + const char*) | 1576 | + const char*) |
1555 | + { | 1577 | + { |
1556 | + if (!_M_data) | 1578 | + if (!_M_data) |
@@ -1579,9 +1601,9 @@ | |||
1579 | + else | 1601 | + else |
1580 | + { | 1602 | + { |
1581 | + // Named locale. | 1603 | + // Named locale. |
1582 | + _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, | 1604 | + _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, |
1583 | + __cloc)); | 1605 | + __cloc)); |
1584 | + _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, | 1606 | + _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, |
1585 | + __cloc)); | 1607 | + __cloc)); |
1586 | + _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); | 1608 | + _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); |
1587 | + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); | 1609 | + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); |
@@ -1592,30 +1614,30 @@ | |||
1592 | + if (!__nposn) | 1614 | + if (!__nposn) |
1593 | + _M_data->_M_negative_sign = "()"; | 1615 | + _M_data->_M_negative_sign = "()"; |
1594 | + else | 1616 | + else |
1595 | + _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, | 1617 | + _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, |
1596 | + __cloc); | 1618 | + __cloc); |
1597 | + _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); | 1619 | + _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); |
1598 | + | 1620 | + |
1599 | + // _Intl == true | 1621 | + // _Intl == true |
1600 | + _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); | 1622 | + _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); |
1601 | + _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); | 1623 | + _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); |
1602 | + _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, | 1624 | + _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, |
1603 | + __cloc)); | 1625 | + __cloc)); |
1604 | + char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); | 1626 | + char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); |
1605 | + char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); | 1627 | + char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); |
1606 | + char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); | 1628 | + char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); |
1607 | + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, | 1629 | + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, |
1608 | + __pposn); | 1630 | + __pposn); |
1609 | + char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); | 1631 | + char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); |
1610 | + char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); | 1632 | + char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); |
1611 | + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, | 1633 | + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, |
1612 | + __nposn); | 1634 | + __nposn); |
1613 | + } | 1635 | + } |
1614 | + } | 1636 | + } |
1615 | + | 1637 | + |
1616 | + template<> | 1638 | + template<> |
1617 | + void | 1639 | + void |
1618 | + moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, | 1640 | + moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, |
1619 | + const char*) | 1641 | + const char*) |
1620 | + { | 1642 | + { |
1621 | + if (!_M_data) | 1643 | + if (!_M_data) |
@@ -1644,9 +1666,9 @@ | |||
1644 | + else | 1666 | + else |
1645 | + { | 1667 | + { |
1646 | + // Named locale. | 1668 | + // Named locale. |
1647 | + _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, | 1669 | + _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, |
1648 | + __cloc)); | 1670 | + __cloc)); |
1649 | + _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, | 1671 | + _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, |
1650 | + __cloc)); | 1672 | + __cloc)); |
1651 | + _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); | 1673 | + _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); |
1652 | + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); | 1674 | + _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); |
@@ -1668,27 +1690,27 @@ | |||
1668 | + char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); | 1690 | + char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); |
1669 | + char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); | 1691 | + char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); |
1670 | + char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); | 1692 | + char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); |
1671 | + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, | 1693 | + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, |
1672 | + __pposn); | 1694 | + __pposn); |
1673 | + char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); | 1695 | + char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); |
1674 | + char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); | 1696 | + char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); |
1675 | + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, | 1697 | + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, |
1676 | + __nposn); | 1698 | + __nposn); |
1677 | + } | 1699 | + } |
1678 | + } | 1700 | + } |
1679 | + | 1701 | + |
1680 | + template<> | 1702 | + template<> |
1681 | + moneypunct<char, true>::~moneypunct() | 1703 | + moneypunct<char, true>::~moneypunct() |
1682 | + { delete _M_data; } | 1704 | + { delete _M_data; } |
1683 | + | 1705 | + |
1684 | + template<> | 1706 | + template<> |
1685 | + moneypunct<char, false>::~moneypunct() | 1707 | + moneypunct<char, false>::~moneypunct() |
1686 | + { delete _M_data; } | 1708 | + { delete _M_data; } |
1687 | + | 1709 | + |
1688 | +#ifdef _GLIBCXX_USE_WCHAR_T | 1710 | +#ifdef _GLIBCXX_USE_WCHAR_T |
1689 | + template<> | 1711 | + template<> |
1690 | + void | 1712 | + void |
1691 | + moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, | 1713 | + moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, |
1692 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 1714 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
1693 | + const char*) | 1715 | + const char*) |
1694 | +#else | 1716 | +#else |
@@ -1775,12 +1797,12 @@ | |||
1775 | + else | 1797 | + else |
1776 | + _M_data->_M_positive_sign = L""; | 1798 | + _M_data->_M_positive_sign = L""; |
1777 | + _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); | 1799 | + _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); |
1778 | + | 1800 | + |
1779 | + __len = strlen(__cnegsign); | 1801 | + __len = strlen(__cnegsign); |
1780 | + if (!__nposn) | 1802 | + if (!__nposn) |
1781 | + _M_data->_M_negative_sign = L"()"; | 1803 | + _M_data->_M_negative_sign = L"()"; |
1782 | + else if (__len) | 1804 | + else if (__len) |
1783 | + { | 1805 | + { |
1784 | + ++__len; | 1806 | + ++__len; |
1785 | + memset(&__state, 0, sizeof(mbstate_t)); | 1807 | + memset(&__state, 0, sizeof(mbstate_t)); |
1786 | + __wcs_ns = new wchar_t[__len]; | 1808 | + __wcs_ns = new wchar_t[__len]; |
@@ -1790,7 +1812,7 @@ | |||
1790 | + else | 1812 | + else |
1791 | + _M_data->_M_negative_sign = L""; | 1813 | + _M_data->_M_negative_sign = L""; |
1792 | + _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); | 1814 | + _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); |
1793 | + | 1815 | + |
1794 | + // _Intl == true. | 1816 | + // _Intl == true. |
1795 | + __len = strlen(__ccurr); | 1817 | + __len = strlen(__ccurr); |
1796 | + if (__len) | 1818 | + if (__len) |
@@ -1810,7 +1832,7 @@ | |||
1810 | + delete _M_data; | 1832 | + delete _M_data; |
1811 | + _M_data = 0; | 1833 | + _M_data = 0; |
1812 | + delete __wcs_ps; | 1834 | + delete __wcs_ps; |
1813 | + delete __wcs_ns; | 1835 | + delete __wcs_ns; |
1814 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 1836 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
1815 | + __uselocale(__old); | 1837 | + __uselocale(__old); |
1816 | +#else | 1838 | +#else |
@@ -1818,18 +1840,18 @@ | |||
1818 | + free(__old); | 1840 | + free(__old); |
1819 | +#endif | 1841 | +#endif |
1820 | + __throw_exception_again; | 1842 | + __throw_exception_again; |
1821 | + } | 1843 | + } |
1822 | + | 1844 | + |
1823 | + _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, | 1845 | + _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, |
1824 | + __cloc)); | 1846 | + __cloc)); |
1825 | + char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); | 1847 | + char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); |
1826 | + char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); | 1848 | + char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); |
1827 | + char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); | 1849 | + char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); |
1828 | + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, | 1850 | + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, |
1829 | + __pposn); | 1851 | + __pposn); |
1830 | + char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); | 1852 | + char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); |
1831 | + char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); | 1853 | + char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); |
1832 | + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, | 1854 | + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, |
1833 | + __nposn); | 1855 | + __nposn); |
1834 | + | 1856 | + |
1835 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 1857 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
@@ -1841,7 +1863,7 @@ | |||
1841 | + } | 1863 | + } |
1842 | + } | 1864 | + } |
1843 | + | 1865 | + |
1844 | + template<> | 1866 | + template<> |
1845 | + void | 1867 | + void |
1846 | + moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc, | 1868 | + moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc, |
1847 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 1869 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
@@ -1931,12 +1953,12 @@ | |||
1931 | + else | 1953 | + else |
1932 | + _M_data->_M_positive_sign = L""; | 1954 | + _M_data->_M_positive_sign = L""; |
1933 | + _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); | 1955 | + _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); |
1934 | + | 1956 | + |
1935 | + __len = strlen(__cnegsign); | 1957 | + __len = strlen(__cnegsign); |
1936 | + if (!__nposn) | 1958 | + if (!__nposn) |
1937 | + _M_data->_M_negative_sign = L"()"; | 1959 | + _M_data->_M_negative_sign = L"()"; |
1938 | + else if (__len) | 1960 | + else if (__len) |
1939 | + { | 1961 | + { |
1940 | + ++__len; | 1962 | + ++__len; |
1941 | + memset(&__state, 0, sizeof(mbstate_t)); | 1963 | + memset(&__state, 0, sizeof(mbstate_t)); |
1942 | + __wcs_ns = new wchar_t[__len]; | 1964 | + __wcs_ns = new wchar_t[__len]; |
@@ -1966,7 +1988,7 @@ | |||
1966 | + delete _M_data; | 1988 | + delete _M_data; |
1967 | + _M_data = 0; | 1989 | + _M_data = 0; |
1968 | + delete __wcs_ps; | 1990 | + delete __wcs_ps; |
1969 | + delete __wcs_ns; | 1991 | + delete __wcs_ns; |
1970 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 1992 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
1971 | + __uselocale(__old); | 1993 | + __uselocale(__old); |
1972 | +#else | 1994 | +#else |
@@ -1980,11 +2002,11 @@ | |||
1980 | + char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); | 2002 | + char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); |
1981 | + char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); | 2003 | + char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); |
1982 | + char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); | 2004 | + char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); |
1983 | + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, | 2005 | + _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, |
1984 | + __pposn); | 2006 | + __pposn); |
1985 | + char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); | 2007 | + char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); |
1986 | + char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); | 2008 | + char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); |
1987 | + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, | 2009 | + _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, |
1988 | + __nposn); | 2010 | + __nposn); |
1989 | + | 2011 | + |
1990 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 2012 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
@@ -1996,7 +2018,7 @@ | |||
1996 | + } | 2018 | + } |
1997 | + } | 2019 | + } |
1998 | + | 2020 | + |
1999 | + template<> | 2021 | + template<> |
2000 | + moneypunct<wchar_t, true>::~moneypunct() | 2022 | + moneypunct<wchar_t, true>::~moneypunct() |
2001 | + { | 2023 | + { |
2002 | + if (_M_data->_M_positive_sign_size) | 2024 | + if (_M_data->_M_positive_sign_size) |
@@ -2009,7 +2031,7 @@ | |||
2009 | + delete _M_data; | 2031 | + delete _M_data; |
2010 | + } | 2032 | + } |
2011 | + | 2033 | + |
2012 | + template<> | 2034 | + template<> |
2013 | + moneypunct<wchar_t, false>::~moneypunct() | 2035 | + moneypunct<wchar_t, false>::~moneypunct() |
2014 | + { | 2036 | + { |
2015 | + if (_M_data->_M_positive_sign_size) | 2037 | + if (_M_data->_M_positive_sign_size) |
@@ -2023,8 +2045,10 @@ | |||
2023 | + } | 2045 | + } |
2024 | +#endif | 2046 | +#endif |
2025 | +} | 2047 | +} |
2026 | --- gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc | 2048 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc |
2027 | +++ gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc | 2049 | =================================================================== |
2050 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
2051 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2008-08-28 17:55:56.000000000 -0700 | ||
2028 | @@ -0,0 +1,160 @@ | 2052 | @@ -0,0 +1,160 @@ |
2029 | +// std::numpunct implementation details, GNU version -*- C++ -*- | 2053 | +// std::numpunct implementation details, GNU version -*- C++ -*- |
2030 | + | 2054 | + |
@@ -2075,7 +2099,7 @@ | |||
2075 | + | 2099 | + |
2076 | +namespace std | 2100 | +namespace std |
2077 | +{ | 2101 | +{ |
2078 | + template<> | 2102 | + template<> |
2079 | + void | 2103 | + void |
2080 | + numpunct<char>::_M_initialize_numpunct(__c_locale __cloc) | 2104 | + numpunct<char>::_M_initialize_numpunct(__c_locale __cloc) |
2081 | + { | 2105 | + { |
@@ -2101,9 +2125,9 @@ | |||
2101 | + else | 2125 | + else |
2102 | + { | 2126 | + { |
2103 | + // Named locale. | 2127 | + // Named locale. |
2104 | + _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, | 2128 | + _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, |
2105 | + __cloc)); | 2129 | + __cloc)); |
2106 | + _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, | 2130 | + _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, |
2107 | + __cloc)); | 2131 | + __cloc)); |
2108 | + | 2132 | + |
2109 | + // Check for NULL, which implies no grouping. | 2133 | + // Check for NULL, which implies no grouping. |
@@ -2122,13 +2146,13 @@ | |||
2122 | + _M_data->_M_falsename = "false"; | 2146 | + _M_data->_M_falsename = "false"; |
2123 | + _M_data->_M_falsename_size = 5; | 2147 | + _M_data->_M_falsename_size = 5; |
2124 | + } | 2148 | + } |
2125 | + | 2149 | + |
2126 | + template<> | 2150 | + template<> |
2127 | + numpunct<char>::~numpunct() | 2151 | + numpunct<char>::~numpunct() |
2128 | + { delete _M_data; } | 2152 | + { delete _M_data; } |
2129 | + | 2153 | + |
2130 | +#ifdef _GLIBCXX_USE_WCHAR_T | 2154 | +#ifdef _GLIBCXX_USE_WCHAR_T |
2131 | + template<> | 2155 | + template<> |
2132 | + void | 2156 | + void |
2133 | + numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc) | 2157 | + numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc) |
2134 | + { | 2158 | + { |
@@ -2181,13 +2205,15 @@ | |||
2181 | + _M_data->_M_falsename_size = 5; | 2205 | + _M_data->_M_falsename_size = 5; |
2182 | + } | 2206 | + } |
2183 | + | 2207 | + |
2184 | + template<> | 2208 | + template<> |
2185 | + numpunct<wchar_t>::~numpunct() | 2209 | + numpunct<wchar_t>::~numpunct() |
2186 | + { delete _M_data; } | 2210 | + { delete _M_data; } |
2187 | + #endif | 2211 | + #endif |
2188 | +} | 2212 | +} |
2189 | --- gcc/libstdc++-v3/config/locale/uclibc/time_members.cc | 2213 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc |
2190 | +++ gcc/libstdc++-v3/config/locale/uclibc/time_members.cc | 2214 | =================================================================== |
2215 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
2216 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc 2008-08-28 17:55:56.000000000 -0700 | ||
2191 | @@ -0,0 +1,406 @@ | 2217 | @@ -0,0 +1,406 @@ |
2192 | +// std::time_get, std::time_put implementation, GNU version -*- C++ -*- | 2218 | +// std::time_get, std::time_put implementation, GNU version -*- C++ -*- |
2193 | + | 2219 | + |
@@ -2240,7 +2266,7 @@ | |||
2240 | + template<> | 2266 | + template<> |
2241 | + void | 2267 | + void |
2242 | + __timepunct<char>:: | 2268 | + __timepunct<char>:: |
2243 | + _M_put(char* __s, size_t __maxlen, const char* __format, | 2269 | + _M_put(char* __s, size_t __maxlen, const char* __format, |
2244 | + const tm* __tm) const | 2270 | + const tm* __tm) const |
2245 | + { | 2271 | + { |
2246 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 2272 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
@@ -2258,7 +2284,7 @@ | |||
2258 | + __s[0] = '\0'; | 2284 | + __s[0] = '\0'; |
2259 | + } | 2285 | + } |
2260 | + | 2286 | + |
2261 | + template<> | 2287 | + template<> |
2262 | + void | 2288 | + void |
2263 | + __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc) | 2289 | + __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc) |
2264 | + { | 2290 | + { |
@@ -2328,7 +2354,7 @@ | |||
2328 | + } | 2354 | + } |
2329 | + else | 2355 | + else |
2330 | + { | 2356 | + { |
2331 | + _M_c_locale_timepunct = _S_clone_c_locale(__cloc); | 2357 | + _M_c_locale_timepunct = _S_clone_c_locale(__cloc); |
2332 | + | 2358 | + |
2333 | + _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); | 2359 | + _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); |
2334 | + _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); | 2360 | + _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); |
@@ -2393,7 +2419,7 @@ | |||
2393 | + template<> | 2419 | + template<> |
2394 | + void | 2420 | + void |
2395 | + __timepunct<wchar_t>:: | 2421 | + __timepunct<wchar_t>:: |
2396 | + _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, | 2422 | + _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, |
2397 | + const tm* __tm) const | 2423 | + const tm* __tm) const |
2398 | + { | 2424 | + { |
2399 | +#ifdef __UCLIBC_HAS_XLOCALE__ | 2425 | +#ifdef __UCLIBC_HAS_XLOCALE__ |
@@ -2412,7 +2438,7 @@ | |||
2412 | + __s[0] = L'\0'; | 2438 | + __s[0] = L'\0'; |
2413 | + } | 2439 | + } |
2414 | + | 2440 | + |
2415 | + template<> | 2441 | + template<> |
2416 | + void | 2442 | + void |
2417 | + __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc) | 2443 | + __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc) |
2418 | + { | 2444 | + { |
@@ -2484,7 +2510,7 @@ | |||
2484 | +#if 0 | 2510 | +#if 0 |
2485 | + else | 2511 | + else |
2486 | + { | 2512 | + { |
2487 | + _M_c_locale_timepunct = _S_clone_c_locale(__cloc); | 2513 | + _M_c_locale_timepunct = _S_clone_c_locale(__cloc); |
2488 | + | 2514 | + |
2489 | + union { char *__s; wchar_t *__w; } __u; | 2515 | + union { char *__s; wchar_t *__w; } __u; |
2490 | + | 2516 | + |
@@ -2595,8 +2621,10 @@ | |||
2595 | + } | 2621 | + } |
2596 | +#endif | 2622 | +#endif |
2597 | +} | 2623 | +} |
2598 | --- gcc/libstdc++-v3/config/locale/uclibc/time_members.h | 2624 | Index: gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.h |
2599 | +++ gcc/libstdc++-v3/config/locale/uclibc/time_members.h | 2625 | =================================================================== |
2626 | --- /dev/null 1970-01-01 00:00:00.000000000 +0000 | ||
2627 | +++ gcc-4.3.2/libstdc++-v3/config/locale/uclibc/time_members.h 2008-08-28 17:55:56.000000000 -0700 | ||
2600 | @@ -0,0 +1,68 @@ | 2628 | @@ -0,0 +1,68 @@ |
2601 | +// std::time_get, std::time_put implementation, GNU version -*- C++ -*- | 2629 | +// std::time_get, std::time_put implementation, GNU version -*- C++ -*- |
2602 | + | 2630 | + |
@@ -2635,40 +2663,42 @@ | |||
2635 | +// Written by Benjamin Kosnik <bkoz@redhat.com> | 2663 | +// Written by Benjamin Kosnik <bkoz@redhat.com> |
2636 | + | 2664 | + |
2637 | + template<typename _CharT> | 2665 | + template<typename _CharT> |
2638 | + __timepunct<_CharT>::__timepunct(size_t __refs) | 2666 | + __timepunct<_CharT>::__timepunct(size_t __refs) |
2639 | + : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), | 2667 | + : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), |
2640 | + _M_name_timepunct(_S_get_c_name()) | 2668 | + _M_name_timepunct(_S_get_c_name()) |
2641 | + { _M_initialize_timepunct(); } | 2669 | + { _M_initialize_timepunct(); } |
2642 | + | 2670 | + |
2643 | + template<typename _CharT> | 2671 | + template<typename _CharT> |
2644 | + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) | 2672 | + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) |
2645 | + : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), | 2673 | + : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), |
2646 | + _M_name_timepunct(_S_get_c_name()) | 2674 | + _M_name_timepunct(_S_get_c_name()) |
2647 | + { _M_initialize_timepunct(); } | 2675 | + { _M_initialize_timepunct(); } |
2648 | + | 2676 | + |
2649 | + template<typename _CharT> | 2677 | + template<typename _CharT> |
2650 | + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, | 2678 | + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, |
2651 | + size_t __refs) | 2679 | + size_t __refs) |
2652 | + : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), | 2680 | + : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), |
2653 | + _M_name_timepunct(__s) | 2681 | + _M_name_timepunct(__s) |
2654 | + { | 2682 | + { |
2655 | + char* __tmp = new char[std::strlen(__s) + 1]; | 2683 | + char* __tmp = new char[std::strlen(__s) + 1]; |
2656 | + std::strcpy(__tmp, __s); | 2684 | + std::strcpy(__tmp, __s); |
2657 | + _M_name_timepunct = __tmp; | 2685 | + _M_name_timepunct = __tmp; |
2658 | + _M_initialize_timepunct(__cloc); | 2686 | + _M_initialize_timepunct(__cloc); |
2659 | + } | 2687 | + } |
2660 | + | 2688 | + |
2661 | + template<typename _CharT> | 2689 | + template<typename _CharT> |
2662 | + __timepunct<_CharT>::~__timepunct() | 2690 | + __timepunct<_CharT>::~__timepunct() |
2663 | + { | 2691 | + { |
2664 | + if (_M_name_timepunct != _S_get_c_name()) | 2692 | + if (_M_name_timepunct != _S_get_c_name()) |
2665 | + delete [] _M_name_timepunct; | 2693 | + delete [] _M_name_timepunct; |
2666 | + delete _M_data; | 2694 | + delete _M_data; |
2667 | + _S_destroy_c_locale(_M_c_locale_timepunct); | 2695 | + _S_destroy_c_locale(_M_c_locale_timepunct); |
2668 | + } | 2696 | + } |
2669 | --- gcc/libstdc++-v3/configure | 2697 | Index: gcc-4.3.2/libstdc++-v3/configure |
2670 | +++ gcc/libstdc++-v3/configure | 2698 | =================================================================== |
2671 | @@ -5764,7 +5764,7 @@ | 2699 | --- gcc-4.3.2.orig/libstdc++-v3/configure 2008-07-07 12:49:54.000000000 -0700 |
2700 | +++ gcc-4.3.2/libstdc++-v3/configure 2008-08-28 18:02:13.000000000 -0700 | ||
2701 | @@ -14003,7 +14003,7 @@ | ||
2672 | enableval="$enable_clocale" | 2702 | enableval="$enable_clocale" |
2673 | 2703 | ||
2674 | case "$enableval" in | 2704 | case "$enableval" in |
@@ -2677,17 +2707,17 @@ | |||
2677 | *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 | 2707 | *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 |
2678 | echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} | 2708 | echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} |
2679 | { (exit 1); exit 1; }; } ;; | 2709 | { (exit 1); exit 1; }; } ;; |
2680 | @@ -5789,6 +5789,9 @@ | 2710 | @@ -14036,6 +14036,9 @@ |
2681 | # Default to "generic". | 2711 | # Default to "generic". |
2682 | if test $enable_clocale_flag = auto; then | 2712 | if test $enable_clocale_flag = auto; then |
2683 | case ${target_os} in | 2713 | case ${target_os} in |
2684 | + linux-uclibc*) | 2714 | + *-uclibc*) |
2685 | + enable_clocale_flag=uclibc | 2715 | + enable_clocale_flag=uclibc |
2686 | + ;; | 2716 | + ;; |
2687 | linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) | 2717 | linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) |
2688 | cat >conftest.$ac_ext <<_ACEOF | 2718 | enable_clocale_flag=gnu |
2689 | /* confdefs.h. */ | 2719 | ;; |
2690 | @@ -6019,6 +6022,76 @@ | 2720 | @@ -14424,6 +14427,76 @@ |
2691 | CTIME_CC=config/locale/generic/time_members.cc | 2721 | CTIME_CC=config/locale/generic/time_members.cc |
2692 | CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h | 2722 | CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h |
2693 | ;; | 2723 | ;; |
@@ -2764,9 +2794,20 @@ | |||
2764 | esac | 2794 | esac |
2765 | 2795 | ||
2766 | # This is where the testsuite looks for locale catalogs, using the | 2796 | # This is where the testsuite looks for locale catalogs, using the |
2767 | --- gcc/libstdc++-v3/include/c_compatibility/wchar.h | 2797 | @@ -17016,7 +17089,7 @@ |
2768 | +++ gcc/libstdc++-v3/include/c_compatibility/wchar.h | 2798 | |
2769 | @@ -101,7 +101,9 @@ | 2799 | # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. |
2800 | cat > conftest.$ac_ext << EOF | ||
2801 | -#line 17019 "configure" | ||
2802 | +#line 17092 "configure" | ||
2803 | int main() | ||
2804 | { | ||
2805 | // NB: _Atomic_word not necessarily int. | ||
2806 | Index: gcc-4.3.2/libstdc++-v3/include/c_compatibility/wchar.h | ||
2807 | =================================================================== | ||
2808 | --- gcc-4.3.2.orig/libstdc++-v3/include/c_compatibility/wchar.h 2007-03-04 14:59:49.000000000 -0800 | ||
2809 | +++ gcc-4.3.2/libstdc++-v3/include/c_compatibility/wchar.h 2008-08-28 17:55:56.000000000 -0700 | ||
2810 | @@ -106,7 +106,9 @@ | ||
2770 | using std::wmemcpy; | 2811 | using std::wmemcpy; |
2771 | using std::wmemmove; | 2812 | using std::wmemmove; |
2772 | using std::wmemset; | 2813 | using std::wmemset; |
@@ -2776,8 +2817,10 @@ | |||
2776 | 2817 | ||
2777 | #if _GLIBCXX_USE_C99 | 2818 | #if _GLIBCXX_USE_C99 |
2778 | using std::wcstold; | 2819 | using std::wcstold; |
2779 | --- gcc/libstdc++-v3/include/c_std/std_cwchar.h | 2820 | Index: gcc-4.3.2/libstdc++-v3/include/c_std/cwchar |
2780 | +++ gcc/libstdc++-v3/include/c_std/std_cwchar.h | 2821 | =================================================================== |
2822 | --- gcc-4.3.2.orig/libstdc++-v3/include/c_std/cwchar 2007-05-27 07:50:21.000000000 -0700 | ||
2823 | +++ gcc-4.3.2/libstdc++-v3/include/c_std/cwchar 2008-08-28 17:55:56.000000000 -0700 | ||
2781 | @@ -182,7 +182,9 @@ | 2824 | @@ -182,7 +182,9 @@ |
2782 | using ::wcscoll; | 2825 | using ::wcscoll; |
2783 | using ::wcscpy; | 2826 | using ::wcscpy; |