From cee3371c5f808806adc9ee148362d46e7fd28ced Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Sun, 1 May 2005 00:43:16 +0000 Subject: [PATCH] Weed out older, no longer maintained versions of gcc --- .../gcc/2.95/050-debian-subset.patch.bz2 | Bin 125297 -> 0 bytes toolchain/gcc/2.95/100-uclibc-conf.patch | 291 -- toolchain/gcc/2.95/STLport-4.5.3.patch | 407 --- toolchain/gcc/3.3.4/100-uclibc-conf.patch | 1635 --------- toolchain/gcc/3.3.4/110-uclibc-conf.patch | 55 - toolchain/gcc/3.3.4/120-softfloat.patch | 14 - toolchain/gcc/3.3.4/200-uclibc-locale.patch | 3021 --------------- toolchain/gcc/3.3.4/500-loop.patch | 10 - toolchain/gcc/3.3.4/800-arm-bigendian.patch | 68 - .../gcc/3.3.4/810-arm-bigendian-uclibc.patch | 25 - .../gcc/3.3.4/820-no-mips-empic-relocs.patch | 59 - toolchain/gcc/3.3.4/specs-arm-soft-float | 124 - toolchain/gcc/3.3.4/specs-mips-soft-float | 145 - toolchain/gcc/3.3.4/specs-mipsel-soft-float | 145 - toolchain/gcc/3.3.4/specs-powerpc-soft-float | 352 -- toolchain/gcc/3.4.0/100-uclibc-conf.patch | 442 --- toolchain/gcc/3.4.0/200-uclibc-locale.patch | 3246 ----------------- .../gcc/3.4.0/820-no-mips-empic-relocs.patch | 83 - .../gcc/3.4.0/arm-softfloat.patch.conditional | 256 -- toolchain/gcc/3.4.1/100-uclibc-conf.patch | 442 --- toolchain/gcc/3.4.1/200-uclibc-locale.patch | 3241 ---------------- toolchain/gcc/3.4.1/400-mips-delay-slot.patch | 46 - toolchain/gcc/3.4.1/800-arm-bigendian.patch | 70 - .../gcc/3.4.1/810-arm-bigendian-uclibc.patch | 27 - .../gcc/3.4.1/arm-softfloat.patch.conditional | 270 -- toolchain/gcc/Config.in | 19 - toolchain/gcc/gcc-uclibc-2.95.mk | 277 -- toolchain/gcc/gcc-uclibc-3.x.mk | 2 - 28 files changed, 14772 deletions(-) delete mode 100644 toolchain/gcc/2.95/050-debian-subset.patch.bz2 delete mode 100644 toolchain/gcc/2.95/100-uclibc-conf.patch delete mode 100644 toolchain/gcc/2.95/STLport-4.5.3.patch delete mode 100644 toolchain/gcc/3.3.4/100-uclibc-conf.patch delete mode 100644 toolchain/gcc/3.3.4/110-uclibc-conf.patch delete mode 100644 toolchain/gcc/3.3.4/120-softfloat.patch delete mode 100644 toolchain/gcc/3.3.4/200-uclibc-locale.patch delete mode 100644 toolchain/gcc/3.3.4/500-loop.patch delete mode 100644 toolchain/gcc/3.3.4/800-arm-bigendian.patch delete mode 100644 toolchain/gcc/3.3.4/810-arm-bigendian-uclibc.patch delete mode 100644 toolchain/gcc/3.3.4/820-no-mips-empic-relocs.patch delete mode 100644 toolchain/gcc/3.3.4/specs-arm-soft-float delete mode 100644 toolchain/gcc/3.3.4/specs-mips-soft-float delete mode 100644 toolchain/gcc/3.3.4/specs-mipsel-soft-float delete mode 100644 toolchain/gcc/3.3.4/specs-powerpc-soft-float delete mode 100644 toolchain/gcc/3.4.0/100-uclibc-conf.patch delete mode 100644 toolchain/gcc/3.4.0/200-uclibc-locale.patch delete mode 100644 toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch delete mode 100644 toolchain/gcc/3.4.0/arm-softfloat.patch.conditional delete mode 100644 toolchain/gcc/3.4.1/100-uclibc-conf.patch delete mode 100644 toolchain/gcc/3.4.1/200-uclibc-locale.patch delete mode 100644 toolchain/gcc/3.4.1/400-mips-delay-slot.patch delete mode 100644 toolchain/gcc/3.4.1/800-arm-bigendian.patch delete mode 100644 toolchain/gcc/3.4.1/810-arm-bigendian-uclibc.patch delete mode 100644 toolchain/gcc/3.4.1/arm-softfloat.patch.conditional delete mode 100644 toolchain/gcc/gcc-uclibc-2.95.mk diff --git a/toolchain/gcc/2.95/050-debian-subset.patch.bz2 b/toolchain/gcc/2.95/050-debian-subset.patch.bz2 deleted file mode 100644 index 4dffd849b6f04932803a1bab09990953c6691399..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125297 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 t&-jAej)~hul(~0_hoQIS3 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

tK?hXX=R4dcNM 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

)YUsTDeRW~>ei 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/dev/null; then diff --git a/toolchain/gcc/2.95/STLport-4.5.3.patch b/toolchain/gcc/2.95/STLport-4.5.3.patch deleted file mode 100644 index fee65f9200..0000000000 --- a/toolchain/gcc/2.95/STLport-4.5.3.patch +++ /dev/null @@ -1,407 +0,0 @@ -diff -urN STLport-4.5.3/Makefile STLport-4.5.3-devel/Makefile ---- STLport-4.5.3/Makefile Wed Dec 31 17:00:00 1969 -+++ STLport-4.5.3-devel/Makefile Tue Jan 7 15:28:08 2003 -@@ -0,0 +1,44 @@ -+# Makefile to compile stlport with uClibc -+# -+# Copyright (C) 2002 Erik Andersen -+# -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ -+ARCH:=i386 -+PREFIX:=/usr/$(ARCH)-linux-uclibc -+CROSS:= $(PREFIX)/../bin/$(ARCH)-linux-uclibc- -+CC=$(CROSS)gcc -+CXX=$(CROSS)g++ -+AR = $(CROSS)ar -+STRIP = $(CROSS)strip --remove-section=.comment --remove-section=.note --strip-unneeded -+.EXPORT_ALL_VARIABLES: -+ -+all: -+ rm -f lib/lib* -+ make -C src -f gcc-uClibc.mak all -+ (cd lib; rm -f libstdc++_debug.so; \ -+ ln -fs libstdc++.so.4.5 libstdc++.so; \ -+ ln -fs libstdc++.so.4.5 libstdc++.so.0;) -+ $(STRIP) lib/libstdc++.so.4.5; -+ -+clean: -+ make -C src -f gcc-uClibc.mak clean -+ rm -rf lib/* -+ -+install: -+ (cd lib; \ -+ cp -a libstdc++.a $(PREFIX)/lib; \ -+ cp -a libstdc++.so libstdc++.so.0 libstdc++.so.4.5 $(PREFIX)/lib;) -+ cp -a stlport $(PREFIX)/include/c++ -diff -urN STLport-4.5.3/src/dll_main.cpp STLport-4.5.3-devel/src/dll_main.cpp ---- STLport-4.5.3/src/dll_main.cpp Sat Feb 2 16:11:56 2002 -+++ STLport-4.5.3-devel/src/dll_main.cpp Tue Jan 7 15:28:08 2003 -@@ -52,7 +52,7 @@ - # include - # endif - --# if defined (_STLP_UNIX) -+# if defined (_STLP_UNIX) && defined (_STLP_PTHREADS) && ! defined (_STLP_USE_UCLIBC) - # define _STLP_HAS_PERTHREAD_ALLOCATOR - # include - # endif -diff -urN STLport-4.5.3/src/gcc-uClibc.mak STLport-4.5.3-devel/src/gcc-uClibc.mak ---- STLport-4.5.3/src/gcc-uClibc.mak Wed Dec 31 17:00:00 1969 -+++ STLport-4.5.3-devel/src/gcc-uClibc.mak Tue Jan 7 15:28:08 2003 -@@ -0,0 +1,61 @@ -+# -+# Basename for libraries -+# -+LIB_BASENAME:=libstdc++ -+LIB_SHAREDNAME:=$(LIB_BASENAME).so -+LIB_SHAREDNAME_FULL:=$(LIB_SHAREDNAME).0 -+ -+# -+# guts for common stuff -+# -+# -+LINK:=$(AR) -cr -+#DYN_LINK:=$(CC) -fno-exceptions -lpthread -lm -shared -Wl,-soname=$(LIB_SHAREDNAME_FULL) -o -+DYN_LINK:=$(CC) -fno-exceptions -shared -Wl,-soname=$(LIB_SHAREDNAME_FULL) -o -+ -+OBJEXT=o -+DYNEXT=so -+STEXT=a -+RM=rm -rf -+PATH_SEP=/ -+MKDIR=mkdir -p -+COMP=GCC$(ARCH) -+INSTALL_STEP = install_unix -+ -+all: release_dynamic release_static -+#all: all_dynamic all_static symbolic_links -+ -+include common_macros.mak -+STLDEBUG_NAME:=$(LIB_BASENAME).debug -+ -+# Lets disable exception support, since this saves over 200k... -+DEFINE_FLAGS:= -fno-exceptions -+#DEFINE_FLAGS:= -D_STLP_NO_EXCEPTIONS -fno-exceptions -DSTL_NO_EXCEPTIONS -+ -+#DEFINE_FLAGS+= -D_STLP_USE_UCLIBC -D_STLP_NO_WCHAR_T \ -+# -DUSE_SPRINTF_INSTEAD -D_ISOC99_SOURCE -+ -+WARNING_FLAGS:= -W -Wno-sign-compare -Wno-unused -Wno-uninitialized -+INCLUDE_FLAGS = -I${STLPORT_DIR} -+CXXFLAGS_COMMON = $(WARNING_FLAGS) $(DEFINE_FLAGS) $(INCLUDE_FLAGS) -+ -+CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -Os -+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -Os -fPIC -+ -+CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -O -g -+CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -O -g -fPIC -+ -+CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG -+CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG -fPIC -+ -+include common_percent_rules.mak -+include common_rules.mak -+ -+ -+#install: all -+# cp -p $(LIB_TARGET) ${D_LIB_TARGET} ../lib -+ -+#%.s: %.cpp -+# $(CXX) $(CXXFLAGS) -O4 -S -pto $< -o $@ -+ -+ -diff -urN STLport-4.5.3/src/num_put_float.cpp STLport-4.5.3-devel/src/num_put_float.cpp ---- STLport-4.5.3/src/num_put_float.cpp Fri Jan 18 15:06:52 2002 -+++ STLport-4.5.3-devel/src/num_put_float.cpp Tue Jan 7 15:28:08 2003 -@@ -65,6 +65,12 @@ - - # endif - -+# if defined(_STLP_USE_UCLIBC) -+# define __USE_ISOC99 1 -+# include -+# include -+# endif -+ - # include - - #if defined (_MSC_VER) || defined (__MINGW32__) || defined (__BORLANDC__) || defined (__DJGPP) || defined (_STLP_SCO_OPENSERVER) || defined (__NCR_SVR) -@@ -209,7 +215,7 @@ - - #ifdef USE_SPRINTF_INSTEAD - --#elif defined (__hpux) || defined (__DJGPP) || ( defined(_STLP_USE_GLIBC) && ! defined (__MSL__) ) -+#elif defined (__hpux) || defined (__DJGPP) || ( defined(_STLP_USE_GLIBC) && ! defined (__MSL__) ) || defined (_STLP_USE_UCLIBC) - # if defined (isfinite) - inline bool _Stl_is_nan_or_inf(double x) { return !isfinite(x); } - # else -@@ -238,7 +244,7 @@ - } - inline bool _Stl_is_neg_inf(double x) { return _fpclass(x) == _FPCLASS_NINF; } - inline bool _Stl_is_neg_nan(double x) { return _isnan(x) && _copysign(1., x) < 0 ; } --#elif defined(__MRC__) || defined(__SC__) //*TY 02/24/2000 - added support for MPW -+#elif defined(__MRC__) || defined(__SC__) - bool _Stl_is_nan_or_inf(double x) { return isnan(x) || !isfinite(x); } - bool _Stl_is_inf(double x) { return !isfinite(x); } - bool _Stl_is_neg_inf(double x) { return !isfinite(x) && signbit(x); } -@@ -280,7 +286,7 @@ - inline char* _Stl_qfcvtR(long double x, int n, int* pt, int* sign, char* buf) - { return fcvtbuf(x, n, pt, sign, buf); } - # endif --#elif defined (_STLP_USE_GLIBC) -+#elif defined (_STLP_USE_GLIBC) || defined(_STLP_USE_UCLIBC) - inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf) - { return buf + ecvt_r(x, n, pt, sign, buf, NDIG+2); } - inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf) -diff -urN STLport-4.5.3/src/stdio_streambuf.cpp STLport-4.5.3-devel/src/stdio_streambuf.cpp ---- STLport-4.5.3/src/stdio_streambuf.cpp Thu Jan 10 11:41:52 2002 -+++ STLport-4.5.3-devel/src/stdio_streambuf.cpp Tue Jan 7 15:28:08 2003 -@@ -82,7 +82,7 @@ - _STLP_VENDOR_CSTD::fgetpos(_M_file, &pos); - // added 21 june 00 mdb,rjf,wjs: glibc 2.2 changed fpos_t to be a struct instead - // of a primitive type --#if (defined(__GLIBC__) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) ) -+#if defined(_STLP_USE_UCLIBC) || (defined(__GLIBC__) && defined(_STLP_USE_GLIBC) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) ) - return pos_type((streamoff)pos.__pos); - #elif defined(__ISCPP__) || defined(__MVS__) || (__OS400__) - return pos_type(pos.__fpos_elem[ 0 ]); -@@ -101,13 +101,16 @@ - - // added 21 june 00 mdb,rjf,wjs: glibc 2.2 changed fpos_t to be a struct instead - // of a primitive type --#if (defined(__GLIBC__) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) ) -+#if (defined(__GLIBC__) && defined(_STLP_USE_GLIBC) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) ) - fpos_t p; - p.__pos = pos; - memset( &(p.__state), 0, sizeof(p.__state) ); - #elif defined(__MVS__) || (__OS400__) - fpos_t p; - p.__fpos_elem[0] = pos; -+#elif defined(_STLP_USE_UCLIBC) -+ fpos_t p; -+ p.__pos = pos; - #else - fpos_t p(pos); - #endif -diff -urN STLport-4.5.3/stlport/config/_prolog.h STLport-4.5.3-devel/stlport/config/_prolog.h ---- STLport-4.5.3/stlport/config/_prolog.h Sun Oct 28 13:26:44 2001 -+++ STLport-4.5.3-devel/stlport/config/_prolog.h Tue Jan 7 15:28:08 2003 -@@ -1,3 +1,8 @@ -+/* Evil hack to make sure everything behaves itself */ -+#define _STLP_USE_UCLIBC -+//#define _STLP_NO_WCHAR_T -+//#define _ISOC99_SOURCE -+//#define USE_SPRINTF_INSTEAD - - #if defined (_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__) - -diff -urN STLport-4.5.3/stlport/config/stl_gcc.h STLport-4.5.3-devel/stlport/config/stl_gcc.h ---- STLport-4.5.3/stlport/config/stl_gcc.h Thu Jan 10 11:41:58 2002 -+++ STLport-4.5.3-devel/stlport/config/stl_gcc.h Tue Jan 7 15:28:08 2003 -@@ -3,7 +3,7 @@ - */ - - /* Systems having GLIBC installed have different traits */ --#if ! defined (_STLP_USE_GLIBC) && ( defined (__linux__) || defined (__CYGWIN__) ) -+#if ! defined (_STLP_USE_GLIBC) && ! defined (_STLP_USE_UCLIBC) && ( defined (__linux__) || defined (__CYGWIN__) ) - # define _STLP_USE_GLIBC - #endif - -diff -urN STLport-4.5.3/stlport/cstdlib STLport-4.5.3-devel/stlport/cstdlib ---- STLport-4.5.3/stlport/cstdlib Thu Aug 23 15:51:54 2001 -+++ STLport-4.5.3-devel/stlport/cstdlib Tue Jan 7 15:28:08 2003 -@@ -55,9 +55,11 @@ - using _STLP_VENDOR_CSTD::atof; - using _STLP_VENDOR_CSTD::atoi; - using _STLP_VENDOR_CSTD::atol; -+# ifndef _STLP_USE_UCLIBC - using _STLP_VENDOR_CSTD::mblen; - using _STLP_VENDOR_CSTD::mbstowcs; - using _STLP_VENDOR_CSTD::mbtowc; -+# endif - using _STLP_VENDOR_CSTD::strtod; - using _STLP_VENDOR_CSTD::strtol; - using _STLP_VENDOR_CSTD::strtoul; -diff -urN STLport-4.5.3/stlport/stl/_config.h STLport-4.5.3-devel/stlport/stl/_config.h ---- STLport-4.5.3/stlport/stl/_config.h Fri Jan 18 15:08:36 2002 -+++ STLport-4.5.3-devel/stlport/stl/_config.h Tue Jan 7 15:28:08 2003 -@@ -26,6 +26,16 @@ - #ifndef _STLP_CONFIG_H - # define _STLP_CONFIG_H - -+/* Make the STLport headers provide uClibc support by default */ -+#define _STLP_NO_EXCEPTIONS 1 -+#define STL_NO_EXCEPTIONS 1 -+#define _STLP_USE_UCLIBC 1 -+//#define _STLP_NO_WCHAR_T 1 -+#define _STLP_NO_LONG_DOUBLE 1 -+#define USE_SPRINTF_INSTEAD 1 -+#define _ISOC99_SOURCE 1 -+#define _STLP_NO_ANACHRONISMS 1 -+ - /* - * Purpose of this file : - * -@@ -164,7 +174,7 @@ - /* Operating system recognition (basic) */ - # if defined (__unix) || defined (__linux__) || defined (__QNX__) || defined (_AIX) || defined (__NetBSD__) || defined (__Lynx__) - # define _STLP_UNIX 1 --# if defined (__linux__) && ! defined (_STLP_USE_GLIBC) -+# if defined (__linux__) && ! defined (_STLP_USE_GLIBC) && ! defined (_STLP_USE_UCLIBC) - # define _STLP_USE_GLIBC 1 - # endif - # elif defined(macintosh) || defined (_MAC) -diff -urN STLport-4.5.3/stlport/stl/_stdio_file.h STLport-4.5.3-devel/stlport/stl/_stdio_file.h ---- STLport-4.5.3/stlport/stl/_stdio_file.h Fri Jan 18 15:07:00 2002 -+++ STLport-4.5.3-devel/stlport/stl/_stdio_file.h Tue Jan 7 15:28:08 2003 -@@ -634,6 +634,112 @@ - } - # define _STLP_FILE_I_O_IDENTICAL - -+#elif defined(_STLP_USE_UCLIBC) -+ -+#if defined(__MASK_READING) -+ -+inline int _FILE_fd(const FILE *__f) { return __f->__filedes; } -+ -+// Returns a pointer to the beginning of the buffer. -+inline char* _FILE_I_begin(const FILE *__f) { return (char*) __f->__bufstart; } -+ -+// Returns the current read/write position within the buffer. -+inline char* _FILE_I_next(const FILE *__f) { return (char*) __f->__bufpos; } -+ -+// Returns a pointer immediately past the end of the buffer. -+inline char* _FILE_I_end(const FILE *__f) { return (char*)__f->__bufend; } -+ -+// Returns the number of characters remaining in the buffer, i.e. -+// _FILE_[IO]_end(__f) - _FILE_[IO]_next(__f). -+inline ptrdiff_t _FILE_I_avail(const FILE *__f) -+ { return __f->__bufgetc_u - __f->__bufpos; } -+ -+// Increments the current read/write position by 1, returning the -+// character at the old position. -+inline char& _FILE_I_preincr(FILE *__f) { return *(char*)(++__f->__bufpos); } -+ -+// Increments the current read/write position by 1, returning the -+// character at the old position. -+inline char& _FILE_I_postincr(FILE *__f) { return *(char*)(__f->__bufpos++); } -+ -+// Decrements the current read/write position by 1, returning the -+// character at the old position. -+inline char& _FILE_I_predecr(FILE *__f) { return *(char*)(--__f->__bufpos); } -+ -+// Decrements the current read/write position by 1, returning the -+// character at the old position. -+inline char& _FILE_I_postdecr(FILE *__f) { return *(char*)(__f->__bufpos--); } -+ -+// Increments the current read/write position by __n. -+inline void _FILE_I_bump(FILE *__f, int __n) { __f->__bufpos += __n; } -+ -+// Sets the beginning of the bufer to __begin, the current read/write -+// position to __next, and the buffer's past-the-end pointer to __end. -+// If any of those pointers is null, then all of them must be null. -+inline void _FILE_I_set(FILE *__f, char* __begin, char* __next, char* __end) -+{ -+ __f->__bufstart = (unsigned char*)__begin; -+ __f->__bufpos = (unsigned char*)__next; -+ __f->__bufend = (unsigned char*)__end; -+ __f->__bufgetc_u = (unsigned char*)__begin; -+ __f->__bufputc_u = (unsigned char*)__end; -+} -+ -+# define _STLP_FILE_I_O_IDENTICAL -+ -+#else // Support old stdio for a little while. -+ -+inline int _FILE_fd(const FILE *__f) { return __f->filedes; } -+ -+// Returns a pointer to the beginning of the buffer. -+inline char* _FILE_I_begin(const FILE *__f) { return (char*) __f->bufstart; } -+ -+// Returns the current read/write position within the buffer. -+inline char* _FILE_I_next(const FILE *__f) { return (char*) __f->bufpos; } -+ -+// Returns a pointer immediately past the end of the buffer. -+inline char* _FILE_I_end(const FILE *__f) { return (char*)__f->bufend; } -+ -+// Returns the number of characters remaining in the buffer, i.e. -+// _FILE_[IO]_end(__f) - _FILE_[IO]_next(__f). -+inline ptrdiff_t _FILE_I_avail(const FILE *__f) -+ { return __f->bufgetc - __f->bufpos; } -+ -+// Increments the current read/write position by 1, returning the -+// character at the old position. -+inline char& _FILE_I_preincr(FILE *__f) { return *(char*)(++__f->bufpos); } -+ -+// Increments the current read/write position by 1, returning the -+// character at the old position. -+inline char& _FILE_I_postincr(FILE *__f) { return *(char*)(__f->bufpos++); } -+ -+// Decrements the current read/write position by 1, returning the -+// character at the old position. -+inline char& _FILE_I_predecr(FILE *__f) { return *(char*)(--__f->bufpos); } -+ -+// Decrements the current read/write position by 1, returning the -+// character at the old position. -+inline char& _FILE_I_postdecr(FILE *__f) { return *(char*)(__f->bufpos--); } -+ -+// Increments the current read/write position by __n. -+inline void _FILE_I_bump(FILE *__f, int __n) { __f->bufpos += __n; } -+ -+// Sets the beginning of the bufer to __begin, the current read/write -+// position to __next, and the buffer's past-the-end pointer to __end. -+// If any of those pointers is null, then all of them must be null. -+inline void _FILE_I_set(FILE *__f, char* __begin, char* __next, char* __end) -+{ -+ __f->bufstart = (unsigned char*)__begin; -+ __f->bufpos = (unsigned char*)__next; -+ __f->bufend = (unsigned char*)__end; -+ __f->bufgetc = (unsigned char*)__begin; -+ __f->bufputc = (unsigned char*)__end; -+} -+ -+# define _STLP_FILE_I_O_IDENTICAL -+ -+#endif -+ - #else /* A C library that we don't have an implementation for. */ - - # error The C++ I/O library is not configured for this compiler -diff -urN STLport-4.5.3/stlport/stl/c_locale.h STLport-4.5.3-devel/stlport/stl/c_locale.h ---- STLport-4.5.3/stlport/stl/c_locale.h Fri Jan 18 15:07:00 2002 -+++ STLport-4.5.3-devel/stlport/stl/c_locale.h Wed Jan 8 10:58:10 2003 -@@ -401,6 +401,21 @@ - # define _Locale_SPACE _S - # define _Locale_PRINT (_P | _U | _L | _N | _B) - # define _Locale_ALPHA (_U | _L) -+ -+# elif defined(_STLP_USE_UCLIBC) /* linux, using the gnu compiler */ -+ -+# define _Locale_CNTRL _IScntrl -+# define _Locale_UPPER _ISupper -+# define _Locale_LOWER _ISlower -+# define _Locale_DIGIT _ISdigit -+# define _Locale_XDIGIT _ISxdigit -+# define _Locale_PUNCT _ISpunct -+# define _Locale_SPACE _ISspace -+# define _Locale_PRINT _ISprint -+# define _Locale_ALPHA _ISalpha -+ -+#else -+# error Unknown Locale - #endif - - # endif /* _STLP_C_LOCALE_H */ diff --git a/toolchain/gcc/3.3.4/100-uclibc-conf.patch b/toolchain/gcc/3.3.4/100-uclibc-conf.patch deleted file mode 100644 index 4bbe21b7aa..0000000000 --- a/toolchain/gcc/3.3.4/100-uclibc-conf.patch +++ /dev/null @@ -1,1635 +0,0 @@ -diff -urN gcc-3.3.3-dist/boehm-gc/config.sub gcc-3.3.3/boehm-gc/config.sub ---- gcc-3.3.3-dist/boehm-gc/config.sub 2002-02-11 22:37:53.000000000 -0600 -+++ gcc-3.3.3/boehm-gc/config.sub 2004-08-12 04:47:51.000000000 -0500 -@@ -118,7 +118,7 @@ - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-*) -+ nto-qnx* | linux-gnu* | linux-uclibc* | storm-chaos* | os2-emx* | windows32-*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; -@@ -1089,7 +1089,8 @@ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -+ | -mingw32* | -linux-gnu* | -linux-uclibc* \ -+ | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -diff -urN gcc-3.3.3-dist/boehm-gc/configure gcc-3.3.3/boehm-gc/configure ---- gcc-3.3.3-dist/boehm-gc/configure 2004-02-14 14:34:20.000000000 -0600 -+++ gcc-3.3.3/boehm-gc/configure 2004-08-12 04:47:51.000000000 -0500 -@@ -1940,6 +1940,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -diff -urN gcc-3.3.3-dist/config.sub gcc-3.3.3/config.sub ---- gcc-3.3.3-dist/config.sub 2003-01-30 17:25:36.000000000 -0600 -+++ gcc-3.3.3/config.sub 2004-08-12 04:47:51.000000000 -0500 -@@ -118,7 +118,7 @@ - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) -+ nto-qnx* | linux-gnu* | linux-uclibc* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; -@@ -1112,7 +1112,8 @@ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -- | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -+ | -mingw32* | -linux-gnu* | -linux-uclibc* \ -+ | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -diff -urN gcc-3.3.3-dist/gcc/config/arm/linux-elf.h gcc-3.3.3/gcc/config/arm/linux-elf.h ---- gcc-3.3.3-dist/gcc/config/arm/linux-elf.h 2003-09-16 10:39:23.000000000 -0500 -+++ gcc-3.3.3/gcc/config/arm/linux-elf.h 2004-08-12 04:47:51.000000000 -0500 -@@ -78,6 +78,18 @@ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC "%{h*} %{version:-v} \ -+ %{b} %{Wl,*:%*} \ -+ %{static:-Bstatic} \ -+ %{shared:-shared} \ -+ %{symbolic:-Bsymbolic} \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \ -+ -X \ -+ %{mbig-endian:-EB}" \ -+ SUBTARGET_EXTRA_LINK_SPEC -+#else - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ -@@ -88,6 +100,7 @@ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC -+#endif - - #define TARGET_OS_CPP_BUILTINS() \ - do { \ -diff -urN gcc-3.3.3-dist/gcc/config/cris/linux.h gcc-3.3.3/gcc/config/cris/linux.h ---- gcc-3.3.3-dist/gcc/config/cris/linux.h 2003-03-10 21:01:35.000000000 -0600 -+++ gcc-3.3.3/gcc/config/cris/linux.h 2004-08-12 04:47:51.000000000 -0500 -@@ -81,6 +81,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -95,6 +114,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - -diff -urN gcc-3.3.3-dist/gcc/config/cris/t-linux-uclibc gcc-3.3.3/gcc/config/cris/t-linux-uclibc ---- gcc-3.3.3-dist/gcc/config/cris/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.3/gcc/config/cris/t-linux-uclibc 2004-08-12 04:47:51.000000000 -0500 -@@ -0,0 +1,3 @@ -+T_CFLAGS = -DUSE_UCLIBC -+TARGET_LIBGCC2_CFLAGS += -fPIC -+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS) -diff -urN gcc-3.3.3-dist/gcc/config/i386/linux.h gcc-3.3.3/gcc/config/i386/linux.h ---- gcc-3.3.3-dist/gcc/config/i386/linux.h 2003-11-14 00:46:12.000000000 -0600 -+++ gcc-3.3.3/gcc/config/i386/linux.h 2004-08-12 04:47:51.000000000 -0500 -@@ -136,6 +136,15 @@ - %{static:-static}}}" - #endif - #else -+#if defined USE_UCLIBC -+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC "-m elf_i386 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ -@@ -144,6 +153,7 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif -+#endif - - /* A C statement (sans semicolon) to output to the stdio stream - FILE the assembler definition of uninitialized global DECL named -diff -urN gcc-3.3.3-dist/gcc/config/mips/linux.h gcc-3.3.3/gcc/config/mips/linux.h ---- gcc-3.3.3-dist/gcc/config/mips/linux.h 2003-12-23 02:58:00.000000000 -0600 -+++ gcc-3.3.3/gcc/config/mips/linux.h 2004-08-12 04:47:51.000000000 -0500 -@@ -175,6 +175,17 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC \ -+ "%(endian_spec) \ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ -@@ -184,6 +195,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ - %{static:-static}}}" -+#endif - - #undef SUBTARGET_ASM_SPEC - #define SUBTARGET_ASM_SPEC "\ -diff -urN gcc-3.3.3-dist/gcc/config/sh/linux.h gcc-3.3.3/gcc/config/sh/linux.h ---- gcc-3.3.3-dist/gcc/config/sh/linux.h 2003-11-06 17:13:33.000000000 -0600 -+++ gcc-3.3.3/gcc/config/sh/linux.h 2004-08-12 04:47:51.000000000 -0500 -@@ -44,12 +44,21 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define SUBTARGET_LINK_SPEC \ -+ "%{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}" -+#else - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}" -+#endif - - /* The GNU C++ standard library requires that these macros be defined. */ - #undef CPLUSPLUS_CPP_SPEC -diff -urN gcc-3.3.3-dist/gcc/config/sh/t-linux-uclibc gcc-3.3.3/gcc/config/sh/t-linux-uclibc ---- gcc-3.3.3-dist/gcc/config/sh/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.3/gcc/config/sh/t-linux-uclibc 2004-08-12 04:47:51.000000000 -0500 -@@ -0,0 +1,16 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+# Don't run fixproto -+STMP_FIXPROTO = -+ -+TARGET_LIBGCC2_CFLAGS = -fpic -+LIB1ASMFUNCS_CACHE = _ic_invalidate -+ -+LIB2FUNCS_EXTRA= -+ -+MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) m3e/m4 -+MULTILIB_DIRNAMES= -+MULTILIB_MATCHES = -+MULTILIB_EXCEPTIONS= -+ -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o -diff -urN gcc-3.3.3-dist/gcc/config/sh/t-sh64-uclibc gcc-3.3.3/gcc/config/sh/t-sh64-uclibc ---- gcc-3.3.3-dist/gcc/config/sh/t-sh64-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.3/gcc/config/sh/t-sh64-uclibc 2004-08-12 04:47:51.000000000 -0500 -@@ -0,0 +1,13 @@ -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o -+ -+LIB1ASMFUNCS = \ -+ _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ -+ _shcompact_call_trampoline _shcompact_return_trampoline \ -+ _shcompact_incoming_args _ic_invalidate _nested_trampoline \ -+ _push_pop_shmedia_regs \ -+ _udivdi3 _divdi3 _umoddi3 _moddi3 -+ -+MULTILIB_OPTIONS = $(MULTILIB_ENDIAN) m5-32media-nofpu/m5-compact/m5-compact-nofpu/m5-64media/m5-64media-nofpu -+MULTILIB_DIRNAMES= $(MULTILIB_ENDIAN) nofpu compact nofpu/compact media64 nofpu/media64 -+MULTILIB_MATCHES= -+MULTILIB_EXCEPTIONS= -diff -urN gcc-3.3.3-dist/gcc/config/t-linux-uclibc gcc-3.3.3/gcc/config/t-linux-uclibc ---- gcc-3.3.3-dist/gcc/config/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.3/gcc/config/t-linux-uclibc 2004-08-12 04:47:51.000000000 -0500 -@@ -0,0 +1,23 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+# Don't run fixproto -+STMP_FIXPROTO = -+ -+# Compile crtbeginS.o and crtendS.o with pic. -+CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC -+# Compile libgcc2.a with pic. -+TARGET_LIBGCC2_CFLAGS = -fPIC -+ -+# Override t-slibgcc-elf-ver to export some libgcc symbols with -+# the symbol versions that glibc used. -+SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver -+ -+# Use unwind-dw2-fde-glibc -+#LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde-glibc.c \ -+# $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c -+#LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h unwind-dw2-fde.c -+ -+# Use unwind-dw2-fde -+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \ -+ $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c -+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h -diff -urN gcc-3.3.3-dist/gcc/config.gcc gcc-3.3.3/gcc/config.gcc ---- gcc-3.3.3-dist/gcc/config.gcc 2004-01-21 00:06:00.000000000 -0600 -+++ gcc-3.3.3/gcc/config.gcc 2004-08-12 04:47:51.000000000 -0500 -@@ -697,6 +697,17 @@ - extra_parts="" - use_collect2=yes - ;; -+arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc -+ tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" -+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+ gnu_ld=yes -+ case x${enable_threads} in -+ x | xyes | xpthreads | xposix) -+ thread_file='posix' -+ ;; -+ esac -+ ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h" - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" -@@ -772,6 +783,10 @@ - tmake_file="cris/t-cris cris/t-elfmulti" - gas=yes - ;; -+cris-*-linux-uclibc*) -+ tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" -+ tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux-uclibc" -+ ;; - cris-*-linux*) - tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" - tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux" -@@ -1173,6 +1188,11 @@ - thread_file='single' - fi - ;; -+i[34567]86-*-linux*uclibc*) # Intel 80386's running GNU/Linux -+ # with ELF format using uClibc -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc i386/t-crtstuff" -+ ;; - i[34567]86-*-linux*) # Intel 80386's running GNU/Linux - # with ELF format using glibc 2 - # aka GNU/Linux C library 6 -@@ -1883,6 +1903,16 @@ - tm_file="elfos.h ${tm_file} mips/netbsd.h" - tmake_file="${tmake_file} mips/t-netbsd" - ;; -+mips*-*-linux-uclibc*) # Linux MIPS, either endian. uClibc -+ tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" -+ case $machine in -+ mipsisa32*-*) -+ target_cpu_default="MASK_SOFT_FLOAT" -+ tm_defines="MIPS_ISA_DEFAULT=32" -+ ;; -+ esac -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc mips/t-linux" -+ ;; - mips*-*-linux*) # Linux MIPS, either endian. - tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" - case $machine in -@@ -2129,6 +2159,11 @@ - out_file=rs6000/rs6000.c - tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" - ;; -+powerpc-*-linux-uclibc*) -+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" -+ out_file=rs6000/rs6000.c -+ tmake_file="rs6000/t-ppcos t-slibgcc-elf-ver t-linux-uclibc rs6000/t-ppccomm" -+ ;; - powerpc-*-linux*) - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" - out_file=rs6000/rs6000.c -@@ -2313,10 +2348,18 @@ - tmake_file="${tmake_file} sh/t-le" - ;; - esac -- tmake_file="${tmake_file} sh/t-linux" -+ case $machine in -+ *-*-linux-uclibc*) tmake_file="${tmake_file} sh/t-linux-uclibc" ;; -+ *) tmake_file="${tmake_file} sh/t-linux" ;; -+ esac - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h" - gas=yes gnu_ld=yes - case $machine in -+ sh64*-*-linux-uclibc*) -+ tmake_file="${tmake_file} sh/t-sh64-uclibc" -+ tm_file="${tm_file} sh/sh64.h" -+ extra_headers="shmedia.h ushmedia.h sshmedia.h" -+ ;; - sh64*) - tmake_file="${tmake_file} sh/t-sh64" - tm_file="${tm_file} sh/sh64.h" -diff -urN gcc-3.3.3-dist/libstdc++-v3/aclocal.m4 gcc-3.3.3/libstdc++-v3/aclocal.m4 ---- gcc-3.3.3-dist/libstdc++-v3/aclocal.m4 2004-01-12 10:18:44.000000000 -0600 -+++ gcc-3.3.3/libstdc++-v3/aclocal.m4 2004-08-12 04:47:51.000000000 -0500 -@@ -1216,6 +1216,9 @@ - dnl Default to "generic" - if test x$enable_clocale_flag = xno; then - case x${target_os} in -+ xlinux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu*) - AC_EGREP_CPP([_GLIBCPP_ok], [ - #include -@@ -1339,6 +1342,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ xuclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcpp_MOFILES="$glibcpp_MOFILES $ling.mo"; \ -+ glibcpp_POFILES="$glibcpp_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcpp_MOFILES) -+ AC_SUBST(glibcpp_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/uclibc/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - *) - echo "$enable_clocale is an unknown locale package" 1>&2 - exit 1 -diff -urN gcc-3.3.3-dist/libstdc++-v3/configure gcc-3.3.3/libstdc++-v3/configure ---- gcc-3.3.3-dist/libstdc++-v3/configure 2004-01-12 10:18:45.000000000 -0600 -+++ gcc-3.3.3/libstdc++-v3/configure 2004-08-12 04:49:13.000000000 -0500 -@@ -2010,6 +2010,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -2996,6 +3001,9 @@ - - if test x$enable_clocale_flag = xno; then - case x${target_os} in -+ xlinux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu*) - cat > conftest.$ac_ext <&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -+echo "configure:3117: checking for $ac_word" >&5 -+if eval "test \"`echo '$''{'ac_cv_prog_check_msgfmt'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" -+ ac_dummy="$PATH" -+ for ac_dir in $ac_dummy; do -+ test -z "$ac_dir" && ac_dir=. -+ if test -f $ac_dir/$ac_word; then -+ ac_cv_prog_check_msgfmt="yes" -+ break -+ fi -+ done -+ IFS="$ac_save_ifs" -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt="$ac_cv_prog_check_msgfmt" -+if test -n "$check_msgfmt"; then -+ echo "$ac_t""$check_msgfmt" 1>&6 -+else -+ echo "$ac_t""no" 1>&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcpp_MOFILES="$glibcpp_MOFILES $ling.mo"; \ -+ glibcpp_POFILES="$glibcpp_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/uclibc/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - *) - echo "$enable_clocale is an unknown locale package" 1>&2 - exit 1 -@@ -4212,6 +4284,968 @@ - # GLIBCPP_CHECK_MATH_SUPPORT - - case "$target" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ for ac_hdr in nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h locale.h float.h inttypes.h -+do -+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -+echo "configure:4224: checking for $ac_hdr" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` -+ cat >> confdefs.h <&6 -+fi -+done -+ -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ -+ -+ # If we're not using GNU ld, then there's no point in even trying these -+ # tests. Check for that first. We should have already tested for gld -+ # by now (in libtool), but require it now just to be safe... -+ test -z "$SECTION_LDFLAGS" && SECTION_LDFLAGS='' -+ test -z "$OPT_LDFLAGS" && OPT_LDFLAGS='' -+ -+ -+ # The name set by libtool depends on the version of libtool. Shame on us -+ # for depending on an impl detail, but c'est la vie. Older versions used -+ # ac_cv_prog_gnu_ld, but now it's lt_cv_prog_gnu_ld, and is copied back on -+ # top of with_gnu_ld (which is also set by --with-gnu-ld, so that actually -+ # makes sense). We'll test with_gnu_ld everywhere else, so if that isn't -+ # set (hence we're using an older libtool), then set it. -+ if test x${with_gnu_ld+set} != xset; then -+ if test x${ac_cv_prog_gnu_ld+set} != xset; then -+ # We got through "ac_require(ac_prog_ld)" and still not set? Huh? -+ with_gnu_ld=no -+ else -+ with_gnu_ld=$ac_cv_prog_gnu_ld -+ fi -+ fi -+ -+ # Start by getting the version number. I think the libtool test already -+ # does some of this, but throws away the result. -+ -+ ldver=`$LD --version 2>/dev/null | head -1 | \ -+ sed -e 's/GNU ld version \([0-9.][0-9.]*\).*/\1/'` -+ -+ glibcpp_gnu_ld_version=`echo $ldver | \ -+ $AWK -F. '{ if (NF<3) $3=0; print ($1*100+$2)*100+$3 }'` -+ -+ # Set --gc-sections. -+ if test "$with_gnu_ld" = "notbroken"; then -+ # GNU ld it is! Joy and bunny rabbits! -+ -+ # All these tests are for C++; save the language and the compiler flags. -+ # Need to do this so that g++ won't try to link in libstdc++ -+ ac_test_CFLAGS="${CFLAGS+set}" -+ ac_save_CFLAGS="$CFLAGS" -+ CFLAGS='-x c++ -Wl,--gc-sections' -+ -+ # Check for -Wl,--gc-sections -+ # XXX This test is broken at the moment, as symbols required for -+ # linking are now in libsupc++ (not built yet.....). In addition, -+ # this test has cored on solaris in the past. In addition, -+ # --gc-sections doesn't really work at the moment (keeps on discarding -+ # used sections, first .eh_frame and now some of the glibc sections for -+ # iconv). Bzzzzt. Thanks for playing, maybe next time. -+ echo $ac_n "checking for ld that supports -Wl,--gc-sections""... $ac_c" 1>&6 -+echo "configure:4312: checking for ld that supports -Wl,--gc-sections" >&5 -+ if test "$cross_compiling" = yes; then -+ ac_sectionLDflags=yes -+else -+ cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -+then -+ ac_sectionLDflags=yes -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -fr conftest* -+ ac_sectionLDflags=no -+fi -+rm -fr conftest* -+fi -+ -+ if test "$ac_test_CFLAGS" = set; then -+ CFLAGS="$ac_save_CFLAGS" -+ else -+ # this is the suspicious part -+ CFLAGS='' -+ fi -+ if test "$ac_sectionLDflags" = "yes"; then -+ SECTION_LDFLAGS="-Wl,--gc-sections $SECTION_LDFLAGS" -+ fi -+ echo "$ac_t""$ac_sectionLDflags" 1>&6 -+ fi -+ -+ # Set linker optimization flags. -+ if test x"$with_gnu_ld" = x"yes"; then -+ OPT_LDFLAGS="-Wl,-O1 $OPT_LDFLAGS" -+ fi -+ -+ -+ -+ -+ -+ echo $ac_n "checking for main in -lm""... $ac_c" 1>&6 -+echo "configure:4362: checking for main in -lm" >&5 -+ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-lm $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_lib=HAVE_LIB`echo m | sed -e 's/[^a-zA-Z0-9_]/_/g' \ -+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` -+ cat >> confdefs.h <&6 -+fi -+ -+ for ac_func in nan copysignf -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4407: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4435: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+LIBMATHOBJS="$LIBMATHOBJS ${ac_func}.lo" -+fi -+done -+ -+ -+ for ac_func in __signbit -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4464: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+LIBMATHOBJS="$LIBMATHOBJS signbit.lo" -+fi -+done -+ -+ for ac_func in __signbitf -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4520: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4548: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+LIBMATHOBJS="$LIBMATHOBJS signbitf.lo" -+fi -+done -+ -+ -+ if test x$ac_cv_func_copysignl = x"yes"; then -+ for ac_func in __signbitl -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4578: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+LIBMATHOBJS="$LIBMATHOBJS signbitl.lo" -+fi -+done -+ -+ fi -+ -+ if test -n "$LIBMATHOBJS"; then -+ need_libmath=yes -+ fi -+ -+ -+ -+if test "$need_libmath" = yes; then -+ GLIBCPP_BUILD_LIBMATH_TRUE= -+ GLIBCPP_BUILD_LIBMATH_FALSE='#' -+else -+ GLIBCPP_BUILD_LIBMATH_TRUE='#' -+ GLIBCPP_BUILD_LIBMATH_FALSE= -+fi -+ -+ -+ enable_wchar_t=no -+ -+ echo $ac_n "checking for mbstate_t""... $ac_c" 1>&6 -+echo "configure:4651: checking for mbstate_t" >&5 -+ cat > conftest.$ac_ext < -+int main() { -+mbstate_t teststate; -+; return 0; } -+EOF -+if { (eval echo configure:4660: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+ rm -rf conftest* -+ have_mbstate_t=yes -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ have_mbstate_t=no -+fi -+rm -f conftest* -+ echo "$ac_t""$have_mbstate_t" 1>&6 -+ if test x"$have_mbstate_t" = xyes; then -+ cat >> confdefs.h <<\EOF -+#define HAVE_MBSTATE_T 1 -+EOF -+ -+ fi -+ -+ for ac_hdr in wchar.h -+do -+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -+echo "configure:4682: checking for $ac_hdr" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4692: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` -+ cat >> confdefs.h <&6 -+ac_has_wchar_h=no -+fi -+done -+ -+ for ac_hdr in wctype.h -+do -+ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -+echo "configure:4723: checking for $ac_hdr" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4733: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` -+ cat >> confdefs.h <&6 -+ac_has_wctype_h=no -+fi -+done -+ -+ -+ if test x"$ac_has_wchar_h" = xyes && -+ test x"$ac_has_wctype_h" = xyes && -+ test x"$enable_c_mbchar" != xno; then -+ -+ echo $ac_n "checking for WCHAR_MIN and WCHAR_MAX""... $ac_c" 1>&6 -+echo "configure:4766: checking for WCHAR_MIN and WCHAR_MAX" >&5 -+ cat > conftest.$ac_ext < -+int main() { -+int i = WCHAR_MIN; int j = WCHAR_MAX; -+; return 0; } -+EOF -+if { (eval echo configure:4775: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+ rm -rf conftest* -+ has_wchar_minmax=yes -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ has_wchar_minmax=no -+fi -+rm -f conftest* -+ echo "$ac_t""$has_wchar_minmax" 1>&6 -+ -+ echo $ac_n "checking for WEOF""... $ac_c" 1>&6 -+echo "configure:4788: checking for WEOF" >&5 -+ cat > conftest.$ac_ext < -+ #include -+int main() { -+wint_t i = WEOF; -+; return 0; } -+EOF -+if { (eval echo configure:4799: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+ rm -rf conftest* -+ has_weof=yes -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ has_weof=no -+fi -+rm -f conftest* -+ echo "$ac_t""$has_weof" 1>&6 -+ -+ ac_wfuncs=yes -+ for ac_func in wcslen wmemchr wmemcmp wmemcpy wmemmove wmemset -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4815: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+\ -+ ac_wfuncs=no -+fi -+done -+ -+ -+ for ac_func in btowc wctob fgetwc fgetws fputwc fputws fwide \ -+ fwprintf fwscanf swprintf swscanf vfwprintf vfwscanf vswprintf vswscanf \ -+ vwprintf vwscanf wprintf wscanf getwc getwchar mbsinit mbrlen mbrtowc \ -+ mbsrtowcs wcsrtombs putwc putwchar ungetwc wcrtomb wcstod wcstof wcstol \ -+ wcstoul wcscpy wcsncpy wcscat wcsncat wcscmp wcscoll wcsncmp wcsxfrm \ -+ wcscspn wcsspn wcstok wcsftime wcschr wcspbrk wcsrchr wcsstr -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:4878: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:4906: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+\ -+ ac_wfuncs=no -+fi -+done -+ -+ -+ echo $ac_n "checking for ISO C99 wchar_t support""... $ac_c" 1>&6 -+echo "configure:4934: checking for ISO C99 wchar_t support" >&5 -+ if test x"$has_weof" = xyes && -+ test x"$has_wchar_minmax" = xyes && -+ test x"$ac_wfuncs" = xyes; then -+ ac_isoC99_wchar_t=yes -+ else -+ ac_isoC99_wchar_t=no -+ fi -+ echo "$ac_t""$ac_isoC99_wchar_t" 1>&6 -+ -+ ac_safe=`echo "iconv.h" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for iconv.h""... $ac_c" 1>&6 -+echo "configure:4946: checking for iconv.h" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4956: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_has_iconv_h=yes -+else -+ echo "$ac_t""no" 1>&6 -+ac_has_iconv_h=no -+fi -+ -+ ac_safe=`echo "langinfo.h" | sed 'y%./+-%__p_%'` -+echo $ac_n "checking for langinfo.h""... $ac_c" 1>&6 -+echo "configure:4980: checking for langinfo.h" >&5 -+if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+EOF -+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -+{ (eval echo configure:4990: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` -+if test -z "$ac_err"; then -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=yes" -+else -+ echo "$ac_err" >&5 -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_header_$ac_safe=no" -+fi -+rm -f conftest* -+fi -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_has_langinfo_h=yes -+else -+ echo "$ac_t""no" 1>&6 -+ac_has_langinfo_h=no -+fi -+ -+ -+ echo $ac_n "checking for iconv in -liconv""... $ac_c" 1>&6 -+echo "configure:5014: checking for iconv in -liconv" >&5 -+ac_lib_var=`echo iconv'_'iconv | sed 'y%./+-%__p_%'` -+if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ ac_save_LIBS="$LIBS" -+LIBS="-liconv $LIBS" -+cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_lib_$ac_lib_var=no" -+fi -+rm -f conftest* -+LIBS="$ac_save_LIBS" -+ -+fi -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ libiconv="-liconv" -+else -+ echo "$ac_t""no" 1>&6 -+fi -+ -+ ac_save_LIBS="$LIBS" -+ LIBS="$LIBS $libiconv" -+ -+ for ac_func in iconv_open iconv_close iconv nl_langinfo -+do -+echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -+echo "configure:5059: checking for $ac_func" >&5 -+if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&6 -+else -+ cat > conftest.$ac_ext < -+/* Override any gcc2 internal prototype to avoid an error. */ -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $ac_func(); -+ -+int main() { -+ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$ac_func) || defined (__stub___$ac_func) -+choke me -+#else -+$ac_func(); -+#endif -+ -+; return 0; } -+EOF -+if { (eval echo configure:5087: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=yes" -+else -+ echo "configure: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ rm -rf conftest* -+ eval "ac_cv_func_$ac_func=no" -+fi -+rm -f conftest* -+fi -+ -+if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then -+ echo "$ac_t""yes" 1>&6 -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+ cat >> confdefs.h <&6 -+ac_XPG2funcs=no -+fi -+done -+ -+ -+ LIBS="$ac_save_LIBS" -+ -+ echo $ac_n "checking for XPG2 wchar_t support""... $ac_c" 1>&6 -+echo "configure:5117: checking for XPG2 wchar_t support" >&5 -+ if test x"$ac_has_iconv_h" = xyes && -+ test x"$ac_has_langinfo_h" = xyes && -+ test x"$ac_XPG2funcs" = xyes; then -+ ac_XPG2_wchar_t=yes -+ else -+ ac_XPG2_wchar_t=no -+ fi -+ echo "$ac_t""$ac_XPG2_wchar_t" 1>&6 -+ -+ if test x"$ac_isoC99_wchar_t" = xyes && -+ test x"$ac_XPG2_wchar_t" = xyes; then -+ cat >> confdefs.h <<\EOF -+#define _GLIBCPP_USE_WCHAR_T 1 -+EOF -+ -+ enable_wchar_t=yes -+ fi -+ fi -+ echo $ac_n "checking for enabled wchar_t specializations""... $ac_c" 1>&6 -+echo "configure:5137: checking for enabled wchar_t specializations" >&5 -+ echo "$ac_t""$enable_wchar_t" 1>&6 -+ -+ -+if test "$enable_wchar_t" = yes; then -+ GLIBCPP_TEST_WCHAR_T_TRUE= -+ GLIBCPP_TEST_WCHAR_T_FALSE='#' -+else -+ GLIBCPP_TEST_WCHAR_T_TRUE='#' -+ GLIBCPP_TEST_WCHAR_T_FALSE= -+fi -+ -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_COPYSIGN 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_FINITE 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_FINITEF 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_ISINF 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_ISINFF 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_ISNAN 1 -+EOF -+ -+ cat >> confdefs.h <<\EOF -+#define HAVE_ISNANF 1 -+EOF -+ ;; - *-linux*) - os_include_dir="os/gnu-linux" - for ac_hdr in nan.h ieeefp.h endian.h sys/isa_defs.h \ -diff -urN gcc-3.3.3-dist/libstdc++-v3/configure.in gcc-3.3.3/libstdc++-v3/configure.in ---- gcc-3.3.3-dist/libstdc++-v3/configure.in 2004-01-12 10:19:22.000000000 -0600 -+++ gcc-3.3.3/libstdc++-v3/configure.in 2004-08-12 04:47:51.000000000 -0500 -@@ -117,6 +117,36 @@ - # GLIBCPP_CHECK_MATH_SUPPORT - - case "$target" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h locale.h float.h inttypes.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCPP_CHECK_LINKER_FEATURES -+ GLIBCPP_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCPP_CHECK_WCHAR_T_SUPPORT -+ -+ AC_DEFINE(HAVE_COPYSIGN) -+ #AC_DEFINE(HAVE_COPYSIGNF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ #AC_DEFINE(HAVE_FREXPF) -+ #AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+ #AC_DEFINE(HAVE_SINCOS) -+ #AC_DEFINE(HAVE_SINCOSF) -+ #if test x"long_double_math_on_this_cpu" = x"yes"; then -+ #AC_DEFINE(HAVE_FINITEL) -+ #AC_DEFINE(HAVE_HYPOTL) -+ #AC_DEFINE(HAVE_ISINFL) -+ #AC_DEFINE(HAVE_ISNANL) -+ #fi -+ ;; - *-linux*) - os_include_dir="os/gnu-linux" - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -diff -urN gcc-3.3.3-dist/libstdc++-v3/configure.target gcc-3.3.3/libstdc++-v3/configure.target ---- gcc-3.3.3-dist/libstdc++-v3/configure.target 2003-10-01 14:07:07.000000000 -0500 -+++ gcc-3.3.3/libstdc++-v3/configure.target 2004-08-12 04:47:51.000000000 -0500 -@@ -133,6 +133,9 @@ - freebsd*) - os_include_dir="os/bsd/freebsd" - ;; -+ linux-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; - gnu* | linux*) - os_include_dir="os/gnu-linux" - ;; -diff -urN gcc-3.3.3-dist/libstdc++-v3/include/c_std/std_cstdlib.h gcc-3.3.3/libstdc++-v3/include/c_std/std_cstdlib.h ---- gcc-3.3.3-dist/libstdc++-v3/include/c_std/std_cstdlib.h 2003-04-18 05:08:05.000000000 -0500 -+++ gcc-3.3.3/libstdc++-v3/include/c_std/std_cstdlib.h 2004-08-12 04:47:51.000000000 -0500 -@@ -101,9 +101,11 @@ - using ::labs; - using ::ldiv; - using ::malloc; -+#if _GLIBCPP_USE_WCHAR_T - using ::mblen; - using ::mbstowcs; - using ::mbtowc; -+#endif - using ::qsort; - using ::rand; - using ::realloc; -@@ -112,8 +114,10 @@ - using ::strtol; - using ::strtoul; - using ::system; -+#if _GLIBCPP_USE_WCHAR_T - using ::wcstombs; - using ::wctomb; -+#endif - - inline long - abs(long __i) { return labs(__i); } -diff -urN gcc-3.3.3-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.3.3/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-3.3.3-dist/libstdc++-v3/include/c_std/std_cwchar.h 2003-04-18 05:08:05.000000000 -0500 -+++ gcc-3.3.3/libstdc++-v3/include/c_std/std_cwchar.h 2004-08-12 04:47:51.000000000 -0500 -@@ -165,7 +165,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#ifdef HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; -diff -urN gcc-3.3.3-dist/libtool.m4 gcc-3.3.3/libtool.m4 ---- gcc-3.3.3-dist/libtool.m4 2003-09-09 03:04:17.000000000 -0500 -+++ gcc-3.3.3/libtool.m4 2004-08-12 04:47:51.000000000 -0500 -@@ -687,6 +687,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] -diff -urN gcc-3.3.3-dist/ltconfig gcc-3.3.3/ltconfig ---- gcc-3.3.3-dist/ltconfig 2003-02-19 20:10:02.000000000 -0600 -+++ gcc-3.3.3/ltconfig 2004-08-12 04:47:51.000000000 -0500 -@@ -603,6 +603,7 @@ - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in - linux-gnu*) ;; -+linux-uclibc*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac - -@@ -1247,6 +1248,24 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ # Note: copied from linux-gnu, and may not be appropriate. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no diff --git a/toolchain/gcc/3.3.4/110-uclibc-conf.patch b/toolchain/gcc/3.3.4/110-uclibc-conf.patch deleted file mode 100644 index f297c3283f..0000000000 --- a/toolchain/gcc/3.3.4/110-uclibc-conf.patch +++ /dev/null @@ -1,55 +0,0 @@ -Use the patch by Carl Miller for powerpc, with -some minor modifications. Changed *os_uclibc to *os_linux_uclibc since -at some point we might support other platforms. Also updated to 3.3.3. -diff -urN gcc-3.3.3/gcc/config/rs6000/linux.h gcc-3.3.3-new/gcc/config/rs6000/linux.h ---- gcc-3.3.3/gcc/config/rs6000/linux.h 2003-11-14 00:46:10.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/rs6000/linux.h 2004-02-16 21:13:40.000000000 -0600 -@@ -64,7 +64,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #undef TARGET_VERSION - #define TARGET_VERSION fprintf (stderr, " (PowerPC GNU/Linux)"); -diff -urN gcc-3.3.3/gcc/config/rs6000/sysv4.h gcc-3.3.3-new/gcc/config/rs6000/sysv4.h ---- gcc-3.3.3/gcc/config/rs6000/sysv4.h 2003-10-28 13:55:41.000000000 -0600 -+++ gcc-3.3.3-new/gcc/config/rs6000/sysv4.h 2004-02-16 21:13:40.000000000 -0600 -@@ -968,9 +968,11 @@ - %{mcall-linux: %(link_os_linux) } \ - %{mcall-gnu: %(link_os_gnu) } \ - %{mcall-netbsd: %(link_os_netbsd) } \ -+%{mcall-uclibc: %(link_os_linux_uclibc) } \ - %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: \ - %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: \ -- %{!mcall-netbsd: %(link_os_default) }}}}}}}}}" -+ %{!mcall-netbsd: %{!mcall-uclibc: \ -+ %(link_os_default) }}}}}}}}}}" - - #define LINK_OS_DEFAULT_SPEC "" - -@@ -1307,6 +1309,12 @@ - - #define LINK_OS_WINDISS_SPEC "" - -+/* uClibc support for Linux. */ -+ -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - /* Define any extra SPECS that the compiler needs to generate. */ - /* Override rs6000.h definition. */ - #undef SUBTARGET_EXTRA_SPECS -@@ -1372,6 +1380,7 @@ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_vxworks", LINK_OS_VXWORKS_SPEC }, \ - { "link_os_windiss", LINK_OS_WINDISS_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_default", LINK_OS_DEFAULT_SPEC }, \ - { "cc1_endian_big", CC1_ENDIAN_BIG_SPEC }, \ - { "cc1_endian_little", CC1_ENDIAN_LITTLE_SPEC }, \ diff --git a/toolchain/gcc/3.3.4/120-softfloat.patch b/toolchain/gcc/3.3.4/120-softfloat.patch deleted file mode 100644 index f2431896cf..0000000000 --- a/toolchain/gcc/3.3.4/120-softfloat.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- gcc-3.3.2-old/configure.in 2003-08-09 01:57:21.000000000 -0500 -+++ gcc-3.3.2/configure.in 2004-01-15 12:46:29.000000000 -0600 -@@ -1418,6 +1418,11 @@ - fi - - FLAGS_FOR_TARGET= -+case " $targargs " in -+ *" --nfp "* | *" --without-float "*) -+ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -msoft-float' -+ ;; -+esac - case " $target_configdirs " in - *" newlib "*) - case " $targargs " in diff --git a/toolchain/gcc/3.3.4/200-uclibc-locale.patch b/toolchain/gcc/3.3.4/200-uclibc-locale.patch deleted file mode 100644 index 5880d834b4..0000000000 --- a/toolchain/gcc/3.3.4/200-uclibc-locale.patch +++ /dev/null @@ -1,3021 +0,0 @@ -Warning! This patch is not finished. The wide char time-related stuff -is broken or non-functional. But it serves as a starting point to get -things building while I continue to work on the uClibc locale internals. -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2004-01-09 07:55:02.000000000 -0600 -@@ -0,0 +1,63 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strtol_l) __strtol_l; -+extern "C" __typeof(strtoll_l) __strtoll_l; -+extern "C" __typeof(strtoul_l) __strtoul_l; -+extern "C" __typeof(strtoull_l) __strtoull_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c_locale.cc 2004-01-09 08:37:55.000000000 -0600 -@@ -0,0 +1,231 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, long& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int __base) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long __l = __strtol_l(__s, &__sanity, __base, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __l; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, unsigned long& __v, -+ ios_base::iostate& __err, const __c_locale& __cloc, -+ int __base) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ unsigned long __ul = __strtoul_l(__s, &__sanity, __base, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __ul; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+#ifdef _GLIBCPP_USE_LONG_LONG -+ template<> -+ void -+ __convert_to_v(const char* __s, long long& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int __base) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long long __ll = __strtoll_l(__s, &__sanity, __base, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __ll; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, unsigned long long& __v, -+ ios_base::iostate& __err, const __c_locale& __cloc, -+ int __base) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ unsigned long long __ull = __strtoull_l(__s, &__sanity, __base, -+ __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __ull; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+#endif -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc, int) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && *__sanity == '\0' && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error("attempt to create locale from unknown name"); -+ } -+#else -+ __cloc = NULL; -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (_S_c_locale != __cloc) -+ __freelocale(__cloc); -+#else -+ __cloc = NULL; -+#endif -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ { return __duplocale(__cloc); } -+#else -+ { return __c_locale(); } -+#endif -+ -+ const char* locale::_S_categories[_S_categories_size -+ + _S_extra_categories_size] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES" -+#if _GLIBCPP_NUM_CATEGORIES != 0 -+ , -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} // namespace std -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/c_locale.h 2004-01-09 07:51:06.000000000 -0600 -@@ -0,0 +1,118 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _CPP_BITS_C_LOCALE_H -+#define _CPP_BITS_C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCPP_C_LOCALE_GNU for -+#endif -+#define _GLIBCPP_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCPP_NUM_CATEGORIES 6 -+#define _GLIBCPP_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec = -1) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec = -1) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = setlocale(LC_ALL, NULL); -+ char* __sav = static_cast(malloc(strlen(__old) + 1)); -+ if (__sav) -+ strcpy(__sav, __old); -+ setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ int __ret; -+ if (__prec >= 0) -+ __ret = snprintf(__out, __size, __fmt, __prec, __v); -+ else -+ __ret = snprintf(__out, __size, __fmt, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ setlocale(LC_ALL, __sav); -+ free(__sav); -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2004-01-09 04:04:34.000000000 -0600 -@@ -0,0 +1,113 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCPP_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = error; -+ size_t __len = min(__from_end - __from, __to_end - __to); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_S_c_locale); -+#endif -+ size_t __conv = wcsrtombs(__to, &__from, __len, &__state); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ if (__conv == __len) -+ { -+ __from_next = __from; -+ __to_next = __to + __conv; -+ __ret = ok; -+ } -+ else if (__conv > 0 && __conv < __len) -+ { -+ __from_next = __from; -+ __to_next = __to + __conv; -+ __ret = partial; -+ } -+ else -+ __ret = error; -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = error; -+ size_t __len = min(__from_end - __from, __to_end - __to); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_S_c_locale); -+#endif -+ size_t __conv = mbsrtowcs(__to, &__from, __len, &__state); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ if (__conv == __len) -+ { -+ __from_next = __from; -+ __to_next = __to + __conv; -+ __ret = ok; -+ } -+ else if (__conv > 0 && __conv < __len) -+ { -+ __from_next = __from; -+ __to_next = __to + __conv; -+ __ret = partial; -+ } -+ else -+ __ret = error; -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/codecvt_specializations.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/codecvt_specializations.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/codecvt_specializations.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/codecvt_specializations.h 2004-01-09 01:53:51.000000000 -0600 -@@ -0,0 +1,461 @@ -+// Locale support (codecvt) -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 Template class codecvt -+// -+ -+// Warning: this file is not meant for user inclusion. Use . -+ -+// Written by Benjamin Kosnik -+ -+ // XXX -+ // Define this here to codecvt.cc can have _S_max_size definition. -+#define _GLIBCPP_USE___ENC_TRAITS 1 -+ -+ // Extension to use icov for dealing with character encodings, -+ // including conversions and comparisons between various character -+ // sets. This object encapsulates data that may need to be shared between -+ // char_traits, codecvt and ctype. -+ class __enc_traits -+ { -+ public: -+ // Types: -+ // NB: A conversion descriptor subsumes and enhances the -+ // functionality of a simple state type such as mbstate_t. -+ typedef iconv_t __desc_type; -+ -+ protected: -+ // Data Members: -+ // Max size of charset encoding name -+ static const int _S_max_size = 32; -+ // Name of internal character set encoding. -+ char _M_int_enc[_S_max_size]; -+ // Name of external character set encoding. -+ char _M_ext_enc[_S_max_size]; -+ -+ // Conversion descriptor between external encoding to internal encoding. -+ __desc_type _M_in_desc; -+ // Conversion descriptor between internal encoding to external encoding. -+ __desc_type _M_out_desc; -+ -+ // Details the byte-order marker for the external encoding, if necessary. -+ int _M_ext_bom; -+ -+ // Details the byte-order marker for the internal encoding, if necessary. -+ int _M_int_bom; -+ -+ public: -+ explicit __enc_traits() -+ : _M_in_desc(0), _M_out_desc(0), _M_ext_bom(0), _M_int_bom(0) -+ { -+ memset(_M_int_enc, 0, _S_max_size); -+ memset(_M_ext_enc, 0, _S_max_size); -+ } -+ -+ explicit __enc_traits(const char* __int, const char* __ext, -+ int __ibom = 0, int __ebom = 0) -+ : _M_in_desc(0), _M_out_desc(0), _M_ext_bom(0), _M_int_bom(0) -+ { -+ strncpy(_M_int_enc, __int, _S_max_size); -+ strncpy(_M_ext_enc, __ext, _S_max_size); -+ } -+ -+ // 21.1.2 traits typedefs -+ // p4 -+ // typedef STATE_T state_type -+ // requires: state_type shall meet the requirements of -+ // CopyConstructible types (20.1.3) -+ __enc_traits(const __enc_traits& __obj): _M_in_desc(0), _M_out_desc(0) -+ { -+ strncpy(_M_int_enc, __obj._M_int_enc, _S_max_size); -+ strncpy(_M_ext_enc, __obj._M_ext_enc, _S_max_size); -+ _M_ext_bom = __obj._M_ext_bom; -+ _M_int_bom = __obj._M_int_bom; -+ } -+ -+ // Need assignment operator as well. -+ __enc_traits& -+ operator=(const __enc_traits& __obj) -+ { -+ strncpy(_M_int_enc, __obj._M_int_enc, _S_max_size); -+ strncpy(_M_ext_enc, __obj._M_ext_enc, _S_max_size); -+ _M_in_desc = 0; -+ _M_out_desc = 0; -+ _M_ext_bom = __obj._M_ext_bom; -+ _M_int_bom = __obj._M_int_bom; -+ return *this; -+ } -+ -+ ~__enc_traits() -+ { -+ __desc_type __err = reinterpret_cast(-1); -+ if (_M_in_desc && _M_in_desc != __err) -+ iconv_close(_M_in_desc); -+ if (_M_out_desc && _M_out_desc != __err) -+ iconv_close(_M_out_desc); -+ } -+ -+ void -+ _M_init() -+ { -+ const __desc_type __err = reinterpret_cast(-1); -+ if (!_M_in_desc) -+ { -+ _M_in_desc = iconv_open(_M_int_enc, _M_ext_enc); -+ if (_M_in_desc == __err) -+ __throw_runtime_error("creating iconv input descriptor failed."); -+ } -+ if (!_M_out_desc) -+ { -+ _M_out_desc = iconv_open(_M_ext_enc, _M_int_enc); -+ if (_M_out_desc == __err) -+ __throw_runtime_error("creating iconv output descriptor failed."); -+ } -+ } -+ -+ bool -+ _M_good() -+ { -+ const __desc_type __err = reinterpret_cast(-1); -+ bool __test = _M_in_desc && _M_in_desc != __err; -+ __test &= _M_out_desc && _M_out_desc != __err; -+ return __test; -+ } -+ -+ const __desc_type* -+ _M_get_in_descriptor() -+ { return &_M_in_desc; } -+ -+ const __desc_type* -+ _M_get_out_descriptor() -+ { return &_M_out_desc; } -+ -+ int -+ _M_get_external_bom() -+ { return _M_ext_bom; } -+ -+ int -+ _M_get_internal_bom() -+ { return _M_int_bom; } -+ -+ const char* -+ _M_get_internal_enc() -+ { return _M_int_enc; } -+ -+ const char* -+ _M_get_external_enc() -+ { return _M_ext_enc; } -+ }; -+ -+ // Partial specialization -+ // This specialization takes advantage of iconv to provide code -+ // conversions between a large number of character encodings. -+ template -+ class codecvt<_InternT, _ExternT, __enc_traits> -+ : public __codecvt_abstract_base<_InternT, _ExternT, __enc_traits> -+ { -+ public: -+ // Types: -+ typedef codecvt_base::result result; -+ typedef _InternT intern_type; -+ typedef _ExternT extern_type; -+ typedef __enc_traits state_type; -+ typedef __enc_traits::__desc_type __desc_type; -+ typedef __enc_traits __enc_type; -+ -+ // Data Members: -+ static locale::id id; -+ -+ explicit -+ codecvt(size_t __refs = 0) -+ : __codecvt_abstract_base(__refs) -+ { } -+ -+ explicit -+ codecvt(__enc_type* __enc, size_t __refs = 0) -+ : __codecvt_abstract_base(__refs) -+ { } -+ -+ protected: -+ virtual -+ ~codecvt() { } -+ -+ virtual result -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const; -+ -+ virtual result -+ do_unshift(state_type& __state, extern_type* __to, -+ extern_type* __to_end, extern_type*& __to_next) const; -+ -+ virtual result -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const; -+ -+ virtual int -+ do_encoding() const throw(); -+ -+ virtual bool -+ do_always_noconv() const throw(); -+ -+ virtual int -+ do_length(const state_type&, const extern_type* __from, -+ const extern_type* __end, size_t __max) const; -+ -+ virtual int -+ do_max_length() const throw(); -+ }; -+ -+ template -+ locale::id -+ codecvt<_InternT, _ExternT, __enc_traits>::id; -+ -+ // This adaptor works around the signature problems of the second -+ // argument to iconv(): SUSv2 and others use 'const char**', but glibc 2.2 -+ // uses 'char**', which matches the POSIX 1003.1-2001 standard. -+ // Using this adaptor, g++ will do the work for us. -+ template -+ inline size_t -+ __iconv_adaptor(size_t(*__func)(iconv_t, _T, size_t*, char**, size_t*), -+ iconv_t __cd, char** __inbuf, size_t* __inbytes, -+ char** __outbuf, size_t* __outbytes) -+ { return __func(__cd, (_T)__inbuf, __inbytes, __outbuf, __outbytes); } -+ -+ template -+ codecvt_base::result -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = codecvt_base::error; -+ if (__state._M_good()) -+ { -+ typedef state_type::__desc_type __desc_type; -+ const __desc_type* __desc = __state._M_get_out_descriptor(); -+ const size_t __fmultiple = sizeof(intern_type); -+ size_t __fbytes = __fmultiple * (__from_end - __from); -+ const size_t __tmultiple = sizeof(extern_type); -+ size_t __tbytes = __tmultiple * (__to_end - __to); -+ -+ // Argument list for iconv specifies a byte sequence. Thus, -+ // all to/from arrays must be brutally casted to char*. -+ char* __cto = reinterpret_cast(__to); -+ char* __cfrom; -+ size_t __conv; -+ -+ // Some encodings need a byte order marker as the first item -+ // in the byte stream, to designate endian-ness. The default -+ // value for the byte order marker is NULL, so if this is -+ // the case, it's not necessary and we can just go on our -+ // merry way. -+ int __int_bom = __state._M_get_internal_bom(); -+ if (__int_bom) -+ { -+ size_t __size = __from_end - __from; -+ intern_type* __cfixed = static_cast(__builtin_alloca(sizeof(intern_type) * (__size + 1))); -+ __cfixed[0] = static_cast(__int_bom); -+ char_traits::copy(__cfixed + 1, __from, __size); -+ __cfrom = reinterpret_cast(__cfixed); -+ __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+ &__fbytes, &__cto, &__tbytes); -+ } -+ else -+ { -+ intern_type* __cfixed = const_cast(__from); -+ __cfrom = reinterpret_cast(__cfixed); -+ __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, &__fbytes, -+ &__cto, &__tbytes); -+ } -+ -+ if (__conv != size_t(-1)) -+ { -+ __from_next = reinterpret_cast(__cfrom); -+ __to_next = reinterpret_cast(__cto); -+ __ret = codecvt_base::ok; -+ } -+ else -+ { -+ if (__fbytes < __fmultiple * (__from_end - __from)) -+ { -+ __from_next = reinterpret_cast(__cfrom); -+ __to_next = reinterpret_cast(__cto); -+ __ret = codecvt_base::partial; -+ } -+ else -+ __ret = codecvt_base::error; -+ } -+ } -+ return __ret; -+ } -+ -+ template -+ codecvt_base::result -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_unshift(state_type& __state, extern_type* __to, -+ extern_type* __to_end, extern_type*& __to_next) const -+ { -+ result __ret = codecvt_base::error; -+ if (__state._M_good()) -+ { -+ typedef state_type::__desc_type __desc_type; -+ const __desc_type* __desc = __state._M_get_in_descriptor(); -+ const size_t __tmultiple = sizeof(intern_type); -+ size_t __tlen = __tmultiple * (__to_end - __to); -+ -+ // Argument list for iconv specifies a byte sequence. Thus, -+ // all to/from arrays must be brutally casted to char*. -+ char* __cto = reinterpret_cast(__to); -+ size_t __conv = __iconv_adaptor(iconv,*__desc, NULL, NULL, -+ &__cto, &__tlen); -+ -+ if (__conv != size_t(-1)) -+ { -+ __to_next = reinterpret_cast(__cto); -+ if (__tlen == __tmultiple * (__to_end - __to)) -+ __ret = codecvt_base::noconv; -+ else if (__tlen == 0) -+ __ret = codecvt_base::ok; -+ else -+ __ret = codecvt_base::partial; -+ } -+ else -+ __ret = codecvt_base::error; -+ } -+ return __ret; -+ } -+ -+ template -+ codecvt_base::result -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = codecvt_base::error; -+ if (__state._M_good()) -+ { -+ typedef state_type::__desc_type __desc_type; -+ const __desc_type* __desc = __state._M_get_in_descriptor(); -+ const size_t __fmultiple = sizeof(extern_type); -+ size_t __flen = __fmultiple * (__from_end - __from); -+ const size_t __tmultiple = sizeof(intern_type); -+ size_t __tlen = __tmultiple * (__to_end - __to); -+ -+ // Argument list for iconv specifies a byte sequence. Thus, -+ // all to/from arrays must be brutally casted to char*. -+ char* __cto = reinterpret_cast(__to); -+ char* __cfrom; -+ size_t __conv; -+ -+ // Some encodings need a byte order marker as the first item -+ // in the byte stream, to designate endian-ness. The default -+ // value for the byte order marker is NULL, so if this is -+ // the case, it's not necessary and we can just go on our -+ // merry way. -+ int __ext_bom = __state._M_get_external_bom(); -+ if (__ext_bom) -+ { -+ size_t __size = __from_end - __from; -+ extern_type* __cfixed = static_cast(__builtin_alloca(sizeof(extern_type) * (__size + 1))); -+ __cfixed[0] = static_cast(__ext_bom); -+ char_traits::copy(__cfixed + 1, __from, __size); -+ __cfrom = reinterpret_cast(__cfixed); -+ __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+ &__flen, &__cto, &__tlen); -+ } -+ else -+ { -+ extern_type* __cfixed = const_cast(__from); -+ __cfrom = reinterpret_cast(__cfixed); -+ __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+ &__flen, &__cto, &__tlen); -+ } -+ -+ -+ if (__conv != size_t(-1)) -+ { -+ __from_next = reinterpret_cast(__cfrom); -+ __to_next = reinterpret_cast(__cto); -+ __ret = codecvt_base::ok; -+ } -+ else -+ { -+ if (__flen < static_cast(__from_end - __from)) -+ { -+ __from_next = reinterpret_cast(__cfrom); -+ __to_next = reinterpret_cast(__cto); -+ __ret = codecvt_base::partial; -+ } -+ else -+ __ret = codecvt_base::error; -+ } -+ } -+ return __ret; -+ } -+ -+ template -+ int -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_encoding() const throw() -+ { -+ int __ret = 0; -+ if (sizeof(_ExternT) <= sizeof(_InternT)) -+ __ret = sizeof(_InternT)/sizeof(_ExternT); -+ return __ret; -+ } -+ -+ template -+ bool -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_always_noconv() const throw() -+ { return false; } -+ -+ template -+ int -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_length(const state_type&, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { return min(__max, static_cast(__end - __from)); } -+ -+#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS -+// 74. Garbled text for codecvt::do_max_length -+ template -+ int -+ codecvt<_InternT, _ExternT, __enc_traits>:: -+ do_max_length() const throw() -+ { return 1; } -+#endif -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/collate_members.cc 2004-01-09 08:06:24.000000000 -0600 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2004-01-09 08:15:41.000000000 -0600 -@@ -0,0 +1,274 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ _S_destroy_c_locale(_M_c_locale_ctype); -+ _S_create_c_locale(_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_toupper = _M_c_locale_ctype->__ctype_toupper; -+ _M_tolower = _M_c_locale_ctype->__ctype_tolower; -+ _M_table = _M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = 0; -+ } -+ return __ret; -+ }; -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ { -+ const mask __bit = static_cast(_ISbit(__bitcur)); -+ if (__m & __bit) -+ __ret |= __iswctype_l(__c, _M_convert_to_wmask(__bit), -+ _M_c_locale_ctype); -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (;__lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ { -+ const mask __bit = static_cast(_ISbit(__bitcur)); -+ if (__iswctype_l(*__lo, _M_convert_to_wmask(__bit), -+ _M_c_locale_ctype)) -+ __m |= __bit; -+ } -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wchar_t __ret = btowc(__c); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ mbstate_t __state; -+ memset(static_cast(&__state), 0, sizeof(mbstate_t)); -+ mbsrtowcs(__dest, &__lo, __hi - __lo, &__state); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ size_t __offset = 0; -+ while (true) -+ { -+ const wchar_t* __start = __lo + __offset; -+ size_t __len = __hi - __start; -+ -+ mbstate_t __state; -+ memset(static_cast(&__state), 0, sizeof(mbstate_t)); -+ size_t __con = wcsrtombs(__dest + __offset, &__start, __len, &__state); -+ if (__con != __len && __start != 0) -+ { -+ __offset = __start - __lo; -+ __dest[__offset++] = __dfault; -+ } -+ else -+ break; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+#endif // _GLIBCPP_USE_WCHAR_T -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/messages_members.cc 2004-01-09 08:46:16.000000000 -0600 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/messages_members.h 2004-01-09 08:52:48.000000000 -0600 -@@ -0,0 +1,122 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : locale::facet(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ _M_name_messages = _S_c_name; -+#endif -+ _M_c_locale_messages = _S_c_locale; -+ } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, -+ const char* __s, size_t __refs) -+ : locale::facet(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ _M_name_messages = new char[strlen(__s) + 1]; -+ strcpy(_M_name_messages, __s); -+#endif -+ _M_c_locale_messages = _S_clone_c_locale(__cloc); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ if (_S_c_name != _M_name_messages) -+ delete [] _M_name_messages; -+#endif -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ if (_S_c_name != _M_name_messages) -+ delete [] _M_name_messages; -+ _M_name_messages = new char[strlen(__s) + 1]; -+ strcpy(_M_name_messages, __s); -+#endif -+ _S_destroy_c_locale(_M_c_locale_messages); -+ _S_create_c_locale(_M_c_locale_messages, __s); -+ } -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2004-01-09 18:20:23.000000000 -0600 -@@ -0,0 +1,578 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = space; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[0] = sign; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[0] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = space; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__space) -+ { -+ // Have space. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ } -+ else -+ { -+ // Have none. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__space) -+ { -+ // Have space. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ } -+ else -+ { -+ // Have none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ default: -+ ; -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = '.'; -+ _M_thousands_sep = ','; -+ _M_grouping = ""; -+ _M_curr_symbol = ""; -+ _M_positive_sign = ""; -+ _M_negative_sign = ""; -+ _M_frac_digits = 0; -+ _M_pos_format = money_base::_S_default_pattern; -+ _M_neg_format = money_base::_S_default_pattern; -+ } -+ else -+ { -+ // Named locale. -+ _M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, __cloc)); -+ _M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, __cloc)); -+ _M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_negative_sign = "()"; -+ else -+ _M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ -+ // _Intl == true -+ _M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_pos_format = _S_construct_pattern(__pprecedes, __pspace, __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = '.'; -+ _M_thousands_sep = ','; -+ _M_grouping = ""; -+ _M_curr_symbol = ""; -+ _M_positive_sign = ""; -+ _M_negative_sign = ""; -+ _M_frac_digits = 0; -+ _M_pos_format = money_base::_S_default_pattern; -+ _M_neg_format = money_base::_S_default_pattern; -+ } -+ else -+ { -+ // Named locale. -+ _M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, __cloc)); -+ _M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, __cloc)); -+ _M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_negative_sign = "()"; -+ else -+ _M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ -+ // _Intl == false -+ _M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_pos_format = _S_construct_pattern(__pprecedes, __pspace, __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = L'.'; -+ _M_thousands_sep = L','; -+ _M_grouping = ""; -+ _M_curr_symbol = L""; -+ _M_positive_sign = L""; -+ _M_negative_sign = L""; -+ _M_frac_digits = 0; -+ _M_pos_format = money_base::_S_default_pattern; -+ _M_neg_format = money_base::_S_default_pattern; -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_decimal_point = __cloc->decimal_point_wc; -+ _M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_decimal_point = __global_locale->decimal_point_wc; -+ _M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ _M_decimal_point = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+ -+ _M_thousands_sep = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); -+#endif -+ _M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__cpossign, __len, &__state); -+ _M_positive_sign = __wcs; -+ } -+ else -+ _M_positive_sign = L""; -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__cnegsign, __len, &__state); -+ _M_negative_sign = __wcs; -+ } -+ else -+ _M_negative_sign = L""; -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_curr_symbol = __wcs; -+ } -+ else -+ _M_curr_symbol = L""; -+ -+ _M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_pos_format = _S_construct_pattern(__pprecedes, __pspace, __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = L'.'; -+ _M_thousands_sep = L','; -+ _M_grouping = ""; -+ _M_curr_symbol = L""; -+ _M_positive_sign = L""; -+ _M_negative_sign = L""; -+ _M_frac_digits = 0; -+ _M_pos_format = money_base::_S_default_pattern; -+ _M_neg_format = money_base::_S_default_pattern; -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_decimal_point = __cloc->decimal_point_wc; -+ _M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_decimal_point = __global_locale->decimal_point_wc; -+ _M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ _M_decimal_point = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+ _M_thousands_sep = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); -+#endif -+ _M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__cpossign, __len, &__state); -+ _M_positive_sign = __wcs; -+ } -+ else -+ _M_positive_sign = L""; -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__cnegsign, __len, &__state); -+ _M_negative_sign = __wcs; -+ } -+ else -+ _M_negative_sign = L""; -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_curr_symbol = __wcs; -+ } -+ else -+ _M_curr_symbol = L""; -+ -+ _M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_pos_format = _S_construct_pattern(__pprecedes, __pspace, __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (wcslen(_M_positive_sign)) -+ delete [] _M_positive_sign; -+ if (wcslen(_M_negative_sign) && (wcscmp(_M_negative_sign, L"()") != 0)) -+ delete [] _M_negative_sign; -+ if (wcslen(_M_curr_symbol)) -+ delete [] _M_curr_symbol; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (wcslen(_M_positive_sign)) -+ delete [] _M_positive_sign; -+ if (wcslen(_M_negative_sign) && (wcscmp(_M_negative_sign, L"()") != 0)) -+ delete [] _M_negative_sign; -+ if (wcslen(_M_curr_symbol)) -+ delete [] _M_curr_symbol; -+ } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2004-01-09 18:20:59.000000000 -0600 -@@ -0,0 +1,129 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = '.'; -+ _M_thousands_sep = ','; -+ _M_grouping = ""; -+ } -+ else -+ { -+ // Named locale. -+ _M_decimal_point = *(__nl_langinfo_l(RADIXCHAR, __cloc)); -+ _M_thousands_sep = *(__nl_langinfo_l(THOUSEP, __cloc)); -+ // Check for NUL, which implies no grouping. -+ if (_M_thousands_sep == '\0') -+ _M_grouping = ""; -+ else -+ _M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ } -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_truename = "true"; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_falsename = "false"; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_decimal_point = L'.'; -+ _M_thousands_sep = L','; -+ _M_grouping = ""; -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_decimal_point = __cloc->decimal_point_wc; -+ _M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_decimal_point = __global_locale->decimal_point_wc; -+ _M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ _M_decimal_point = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+ _M_thousands_sep = static_cast(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); -+#endif -+ if (_M_thousands_sep == L'\0') -+ _M_grouping = ""; -+ else -+ _M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ } -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_truename = L"true"; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_falsename = L"false"; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { } -+ #endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/time_members.cc 2004-01-09 08:25:03.000000000 -0600 -@@ -0,0 +1,341 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __strftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_c_locale; -+ -+ _M_date_format = "%m/%d/%y"; -+ _M_date_era_format = "%m/%d/%y"; -+ _M_time_format = "%H:%M:%S"; -+ _M_time_era_format = "%H:%M:%S"; -+ _M_date_time_format = ""; -+ _M_date_time_era_format = ""; -+ _M_am = "AM"; -+ _M_pm = "PM"; -+ _M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_day1 = "Sunday"; -+ _M_day2 = "Monday"; -+ _M_day3 = "Tuesday"; -+ _M_day4 = "Wednesday"; -+ _M_day5 = "Thursday"; -+ _M_day6 = "Friday"; -+ _M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_day_a1 = "Sun"; -+ _M_day_a2 = "Mon"; -+ _M_day_a3 = "Tue"; -+ _M_day_a4 = "Wed"; -+ _M_day_a5 = "Thu"; -+ _M_day_a6 = "Fri"; -+ _M_day_a7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_month01 = "January"; -+ _M_month02 = "February"; -+ _M_month03 = "March"; -+ _M_month04 = "April"; -+ _M_month05 = "May"; -+ _M_month06 = "June"; -+ _M_month07 = "July"; -+ _M_month08 = "August"; -+ _M_month09 = "September"; -+ _M_month10 = "October"; -+ _M_month11 = "November"; -+ _M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_month_a01 = "Jan"; -+ _M_month_a02 = "Feb"; -+ _M_month_a03 = "Mar"; -+ _M_month_a04 = "Apr"; -+ _M_month_a05 = "May"; -+ _M_month_a06 = "Jun"; -+ _M_month_a07 = "July"; -+ _M_month_a08 = "Aug"; -+ _M_month_a09 = "Sep"; -+ _M_month_a10 = "Oct"; -+ _M_month_a11 = "Nov"; -+ _M_month_a12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc); -+ _M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_day_a1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_day_a2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_day_a3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_day_a4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_day_a5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_day_a6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_day_a7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_month_a01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_month_a02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_month_a03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_month_a04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_month_a05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_month_a06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_month_a07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_month_a08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_month_a09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_month_a10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_month_a11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_month_a12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_c_locale; -+ -+ _M_date_format = L"%m/%d/%y"; -+ _M_date_era_format = L"%m/%d/%y"; -+ _M_time_format = L"%H:%M:%S"; -+ _M_time_era_format = L"%H:%M:%S"; -+ _M_date_time_format = L""; -+ _M_date_time_era_format = L""; -+ _M_am = L"AM"; -+ _M_pm = L"PM"; -+ _M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_day1 = L"Sunday"; -+ _M_day2 = L"Monday"; -+ _M_day3 = L"Tuesday"; -+ _M_day4 = L"Wednesday"; -+ _M_day5 = L"Thursday"; -+ _M_day6 = L"Friday"; -+ _M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_day_a1 = L"Sun"; -+ _M_day_a2 = L"Mon"; -+ _M_day_a3 = L"Tue"; -+ _M_day_a4 = L"Wed"; -+ _M_day_a5 = L"Thu"; -+ _M_day_a6 = L"Fri"; -+ _M_day_a7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_month01 = L"January"; -+ _M_month02 = L"February"; -+ _M_month03 = L"March"; -+ _M_month04 = L"April"; -+ _M_month05 = L"May"; -+ _M_month06 = L"June"; -+ _M_month07 = L"July"; -+ _M_month08 = L"August"; -+ _M_month09 = L"September"; -+ _M_month10 = L"October"; -+ _M_month11 = L"November"; -+ _M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_month_a01 = L"Jan"; -+ _M_month_a02 = L"Feb"; -+ _M_month_a03 = L"Mar"; -+ _M_month_a04 = L"Apr"; -+ _M_month_a05 = L"May"; -+ _M_month_a06 = L"Jun"; -+ _M_month_a07 = L"July"; -+ _M_month_a08 = L"Aug"; -+ _M_month_a09 = L"Sep"; -+ _M_month_a10 = L"Oct"; -+ _M_month_a11 = L"Nov"; -+ _M_month_a12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_date_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+ _M_date_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+ _M_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+ _M_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+ _M_date_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+ _M_date_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+ _M_am = reinterpret_cast(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+ _M_pm = reinterpret_cast(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+ _M_am_pm_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_day1 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+ _M_day2 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+ _M_day3 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+ _M_day4 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+ _M_day5 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+ _M_day6 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+ _M_day7 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_day_a1 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+ _M_day_a2 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+ _M_day_a3 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+ _M_day_a4 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+ _M_day_a5 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+ _M_day_a6 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+ _M_day_a7 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+ // Month names, starting with "C"'s January. -+ _M_month01 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+ _M_month02 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+ _M_month03 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+ _M_month04 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+ _M_month05 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+ _M_month06 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+ _M_month07 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+ _M_month08 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+ _M_month09 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+ _M_month10 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+ _M_month11 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+ _M_month12 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_month_a01 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+ _M_month_a02 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+ _M_month_a03 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+ _M_month_a04 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+ _M_month_a05 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+ _M_month_a06 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+ _M_month_a07 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+ _M_month_a08 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+ _M_month_a09 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+ _M_month_a10 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+ _M_month_a11 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+ _M_month_a12 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_12, __cloc)); -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-3.3.2/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-3.3.2/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/locale/uclibc/time_members.h 2004-01-09 04:26:21.000000000 -0600 -@@ -0,0 +1,68 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : locale::facet(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ _M_name_timepunct = _S_c_name; -+#endif -+ _M_initialize_timepunct(); -+ } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, -+ const char* __s, -+ size_t __refs) -+ : locale::facet(__refs) -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ _M_name_timepunct = new char[strlen(__s) + 1]; -+ strcpy(_M_name_timepunct, __s); -+#endif -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+#ifndef __UCLIBC_HAS_XLOCALE__ -+ if (_S_c_name != _M_name_timepunct) -+ delete [] _M_name_timepunct; -+#endif -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_base.h 2004-01-09 02:54:54.000000000 -0600 -@@ -0,0 +1,57 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISgraph; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalnum; -+ }; -diff -urN gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_inline.h 2002-06-24 00:49:19.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-3.3.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2004-01-09 03:34:53.000000000 -0600 -@@ -0,0 +1,90 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { -+ return __C_ctype_b; -+ } -+ -+ ctype::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : __ctype_abstract_base(__refs), _M_del(__table != 0 && __del) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ _M_c_locale_ctype = _S_c_locale; -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) : -+ __ctype_abstract_base(__refs), _M_del(__table != 0 && __del) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ _M_c_locale_ctype = _S_c_locale; -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-3.3.2/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-3.3.2/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.3.2-uClibc/libstdc++-v3/config/os/uclibc/os_defines.h 2004-01-09 04:56:13.000000000 -0600 -@@ -0,0 +1,56 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCPP_OS_DEFINES -+#define _GLIBCPP_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// These systems have declarations mismatching those in libio.h by -+// omitting throw qualifiers. Cleanest way out is to not provide -+// throw-qualifiers at all. Defining it as empty here will make libio.h -+// not define it. -+#undef __THROW -+#define __THROW -+ -+// Tell Glibc not to try to provide its own inline versions of -+// some math functions. Those cause assembly-time clashes with -+// our definitions. -+#define __NO_MATH_INLINES -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif diff --git a/toolchain/gcc/3.3.4/500-loop.patch b/toolchain/gcc/3.3.4/500-loop.patch deleted file mode 100644 index 476f84b377..0000000000 --- a/toolchain/gcc/3.3.4/500-loop.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- gcc/gcc/loop.c 14 Feb 2004 14:46:03 -0000 1.488.2.3 -+++ gcc/gcc/loop.c 28 Apr 2004 22:02:53 -0000 -@@ -929,6 +929,7 @@ - || (! (GET_CODE (SET_SRC (set)) == REG - && (REGNO (SET_SRC (set)) - < FIRST_PSEUDO_REGISTER)))) -+ && regno >= FIRST_PSEUDO_REGISTER - /* This test is not redundant; SET_SRC (set) might be - a call-clobbered register and the life of REGNO - might span a call. */ diff --git a/toolchain/gcc/3.3.4/800-arm-bigendian.patch b/toolchain/gcc/3.3.4/800-arm-bigendian.patch deleted file mode 100644 index 79140ddf0e..0000000000 --- a/toolchain/gcc/3.3.4/800-arm-bigendian.patch +++ /dev/null @@ -1,68 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -See http://gcc.gnu.org/PR16350 - ---- gcc-3.3.5-dist/gcc/config/arm/linux-elf.h -+++ gcc-3.3.5/gcc/config/arm/linux-elf.h -@@ -30,17 +30,34 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - -+/* -+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* -+ * (big endian) configurations. -+ */ -+#if TARGET_BIG_ENDIAN_DEFAULT -+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END -+#define TARGET_ENDIAN_OPTION "mbig-endian" -+#define TARGET_LINKER_EMULATION "armelfb_linux" -+#else -+#define TARGET_ENDIAN_DEFAULT 0 -+#define TARGET_ENDIAN_OPTION "mlittle-endian" -+#define TARGET_LINKER_EMULATION "armelf_linux" -+#endif -+ - /* Default is to use APCS-32 mode. */ - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_APCS_32 | \ -+ ARM_FLAG_MMU_TRAPS | \ -+ TARGET_ENDIAN_DEFAULT ) - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - --#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" -+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -100,7 +117,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - #endif - ---- gcc-3.3.5-dist/gcc/config.gcc -+++ gcc-3.3.5/gcc/config.gcc -@@ -710,6 +710,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $target in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/toolchain/gcc/3.3.4/810-arm-bigendian-uclibc.patch b/toolchain/gcc/3.3.4/810-arm-bigendian-uclibc.patch deleted file mode 100644 index 7e14f341fc..0000000000 --- a/toolchain/gcc/3.3.4/810-arm-bigendian-uclibc.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- gcc-3.3.5-dist/gcc/config/arm/linux-elf.h -+++ gcc-3.3.5/gcc/config/arm/linux-elf.h -@@ -106,7 +106,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - #else - #define LINK_SPEC "%{h*} %{version:-v} \ ---- gcc-3.3.5-dist/gcc/config.gcc -+++ gcc-3.3.5/gcc/config.gcc -@@ -699,6 +699,11 @@ - ;; - arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc - tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h" -+ case $target in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/toolchain/gcc/3.3.4/820-no-mips-empic-relocs.patch b/toolchain/gcc/3.3.4/820-no-mips-empic-relocs.patch deleted file mode 100644 index d5c4c9cb58..0000000000 --- a/toolchain/gcc/3.3.4/820-no-mips-empic-relocs.patch +++ /dev/null @@ -1,59 +0,0 @@ -From: cgd at broadcom dot com -To: gcc-patches at gcc dot gnu dot org -Cc: mark at codesourcery dot com -Date: 13 Jun 2004 22:51:30 -0700 -Subject: [trunk + 3.4-branch RFA] don't use empic relocs for mips-linuxeh - -This patch changes mips-linux to avoid using embedded-pic relocs for -its eh data. (Support for generating these for new code is removed in -current binutils srcs.) - -Relating to this, previously, mips-linux and mips64-linux would use -different representations for their EH data (even for mips64-linux o32 -abi), due to the mips64-linux n32/64 BFDs not supporting the -embedded-pic relocs. This was a bug. - -For more explanation, see the thread of the URL quoted in the comment -in linux.h. - - -Tested the same w/ sources of about a week ago for c/c++ for -mips-linux (native) before/after. Also verified .o compatibility -before/after just to be sure. - -I'd like this approved for the branch as well, so 3.4.1 will work -nicely w/ the next major binutils release. - - -thanks, - -chris - -2004-06-13 Chris Demetriou - - * config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Redefine - to return DW_EH_PE_absptr. - -Index: config/mips/linux.h -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/mips/linux.h,v -retrieving revision 1.77 -diff -u -p -r1.77 linux.h ---- gcc/gcc/config/mips/linux.h 19 Feb 2004 22:07:51 -0000 1.77 -+++ gcc/gcc/config/mips/linux.h 14 Jun 2004 05:49:51 -0000 -@@ -170,10 +170,11 @@ Boston, MA 02111-1307, USA. */ - #undef FUNCTION_NAME_ALREADY_DECLARED - #define FUNCTION_NAME_ALREADY_DECLARED 1 - --#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \ -- (flag_pic \ -- ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4\ -- : DW_EH_PE_absptr) -+/* If possible, we should attempt to use GP-relative relocs for this -+ (see http://sources.redhat.com/ml/binutils/2004-05/msg00227.html). -+ However, until that is implement, this just uses standard, absolute -+ references. */ -+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) DW_EH_PE_absptr - - /* The glibc _mcount stub will save $v0 for us. Don't mess with saving - it, since ASM_OUTPUT_REG_PUSH/ASM_OUTPUT_REG_POP do not work in the diff --git a/toolchain/gcc/3.3.4/specs-arm-soft-float b/toolchain/gcc/3.3.4/specs-arm-soft-float deleted file mode 100644 index d692174aab..0000000000 --- a/toolchain/gcc/3.3.4/specs-arm-soft-float +++ /dev/null @@ -1,124 +0,0 @@ -*asm: -%{mbig-endian:-EB} %{mlittle-endian:-EL} %{mcpu=*:-mcpu=%*} %{march=*:-march=%*} %{mapcs-*:-mapcs-%*} %(subtarget_asm_float_spec) %{mthumb-interwork:-mthumb-interwork} %(subtarget_extra_asm_spec) - -*asm_debug: -%{gstabs*:--gstabs}%{!gstabs*:%{g*:--gdwarf2}} - -*asm_final: - - -*asm_options: -%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O} - -*invoke_as: -%{!S:-o %{|!pipe:%g.s} | - as %(asm_options) %{!pipe:%g.s} %A } - -*cpp: -%(cpp_cpu_arch) %(subtarget_cpp_spec) %{mapcs-32:%{mapcs-26: %e-mapcs-26 and -mapcs-32 may not be used together}} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{mbig-endian:%{mlittle-endian: %e-mbig-endian and -mlittle-endian may not be used together}} - -*cpp_options: -%(cpp_unique_options) %1 %{m*} %{std*} %{ansi} %{W*&pedantic*} %{w} %{f*} %{O*} %{undef} - -*cpp_debug_options: -%{d*} - -*cpp_unique_options: -%{C:%{!E:%eGNU C does not support -C without using -E}} %{CC:%{!E:%eGNU C does not support -CC without using -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}} %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3} %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs} %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{E|M|MM:%W{o*}} - -*trad_capable_cpp: -cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} - -*cc1: -%{profile:-p} - -*cc1_options: -%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} - -*cc1plus: - - -*link_gcc_c_sequence: -%{static:--start-group} %G %L %{static:--end-group}%{!static:%G} - -*endfile: -%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s - -*link: -%{h*} %{version:-v} %{b} %{Wl,*:%*} %{static:-Bstatic} %{shared:-shared} %{symbolic:-Bsymbolic} %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} -X %{mbig-endian:-EB} -m armelf_linux -p - -*lib: -%{pthread:-lpthread} %{shared:-lc} %{!shared:%{profile:-lc_p}%{!profile:-lc}} - -*libgcc: -%{!mhard-float:-lfloat} %{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:-lgcc_s%M}}} - -*startfile: -%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s} - -*switches_need_spaces: - - -*predefines: - - -*cross_compile: -1 - -*version: -3.3.4 - -*multilib: -. ; - -*multilib_defaults: -marm mlittle-endian msoft-float mapcs-32 mno-thumb-interwork - -*multilib_extra: - - -*multilib_matches: - - -*multilib_exclusions: - - -*multilib_options: - - -*linker: -collect2 - -*link_libgcc: -%D - -*md_exec_prefix: - - -*md_startfile_prefix: - - -*md_startfile_prefix_1: - - -*startfile_prefix_spec: - - -*cpp_cpu_arch: -%{march=arm2:-D__ARM_ARCH_2__} %{march=arm250:-D__ARM_ARCH_2__} %{march=arm3:-D__ARM_ARCH_2__} %{march=arm6:-D__ARM_ARCH_3__} %{march=arm600:-D__ARM_ARCH_3__} %{march=arm610:-D__ARM_ARCH_3__} %{march=arm7:-D__ARM_ARCH_3__} %{march=arm700:-D__ARM_ARCH_3__} %{march=arm710:-D__ARM_ARCH_3__} %{march=arm720:-D__ARM_ARCH_3__} %{march=arm7100:-D__ARM_ARCH_3__} %{march=arm7500:-D__ARM_ARCH_3__} %{march=arm7500fe:-D__ARM_ARCH_3__} %{march=arm7m:-D__ARM_ARCH_3M__} %{march=arm7dm:-D__ARM_ARCH_3M__} %{march=arm7dmi:-D__ARM_ARCH_3M__} %{march=arm7tdmi:-D__ARM_ARCH_4T__} %{march=arm8:-D__ARM_ARCH_4__} %{march=arm810:-D__ARM_ARCH_4__} %{march=arm9:-D__ARM_ARCH_4T__} %{march=arm920:-D__ARM_ARCH_4__} %{march=arm920t:-D__ARM_ARCH_4T__} %{march=arm9tdmi:-D__ARM_ARCH_4T__} %{march=strongarm:-D__ARM_ARCH_4__} %{march=strongarm110:-D__ARM_ARCH_4__} %{march=strongarm1100:-D__ARM_ARCH_4__} %{march=xscale:-D__ARM_ARCH_5TE__} %{march=xscale:-D__XSCALE__} %{march=armv2:-D__ARM_ARCH_2__} %{march=armv2a:-D__ARM_ARCH_2__} %{march=armv3:-D__ARM_ARCH_3__} %{march=armv3m:-D__ARM_ARCH_3M__} %{march=armv4:-D__ARM_ARCH_4__} %{march=armv4t:-D__ARM_ARCH_4T__} %{march=armv5:-D__ARM_ARCH_5__} %{march=armv5t:-D__ARM_ARCH_5T__} %{march=armv5e:-D__ARM_ARCH_5E__} %{march=armv5te:-D__ARM_ARCH_5TE__} %{!march=*: %{mcpu=arm2:-D__ARM_ARCH_2__} %{mcpu=arm250:-D__ARM_ARCH_2__} %{mcpu=arm3:-D__ARM_ARCH_2__} %{mcpu=arm6:-D__ARM_ARCH_3__} %{mcpu=arm600:-D__ARM_ARCH_3__} %{mcpu=arm610:-D__ARM_ARCH_3__} %{mcpu=arm7:-D__ARM_ARCH_3__} %{mcpu=arm700:-D__ARM_ARCH_3__} %{mcpu=arm710:-D__ARM_ARCH_3__} %{mcpu=arm720:-D__ARM_ARCH_3__} %{mcpu=arm7100:-D__ARM_ARCH_3__} %{mcpu=arm7500:-D__ARM_ARCH_3__} %{mcpu=arm7500fe:-D__ARM_ARCH_3__} %{mcpu=arm7m:-D__ARM_ARCH_3M__} %{mcpu=arm7dm:-D__ARM_ARCH_3M__} %{mcpu=arm7dmi:-D__ARM_ARCH_3M__} %{mcpu=arm7tdmi:-D__ARM_ARCH_4T__} %{mcpu=arm8:-D__ARM_ARCH_4__} %{mcpu=arm810:-D__ARM_ARCH_4__} %{mcpu=arm9:-D__ARM_ARCH_4T__} %{mcpu=arm920:-D__ARM_ARCH_4__} %{mcpu=arm920t:-D__ARM_ARCH_4T__} %{mcpu=arm9tdmi:-D__ARM_ARCH_4T__} %{mcpu=strongarm:-D__ARM_ARCH_4__} %{mcpu=strongarm110:-D__ARM_ARCH_4__} %{mcpu=strongarm1100:-D__ARM_ARCH_4__} %{mcpu=xscale:-D__ARM_ARCH_5TE__} %{mcpu=xscale:-D__XSCALE__} %{!mcpu*:%(cpp_cpu_arch_default)}} - -*cpp_cpu_arch_default: --D__ARM_ARCH_4T__ - -*subtarget_cpp_spec: -%{posix:-D_POSIX_SOURCE} %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} - -*subtarget_extra_asm_spec: - - -*subtarget_asm_float_spec: -%{mapcs-float:-mfloat} %{!mhard-float:-mno-fpu} - -*link_command: -%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}} %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}} %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}} - diff --git a/toolchain/gcc/3.3.4/specs-mips-soft-float b/toolchain/gcc/3.3.4/specs-mips-soft-float deleted file mode 100644 index 2a4240012b..0000000000 --- a/toolchain/gcc/3.3.4/specs-mips-soft-float +++ /dev/null @@ -1,145 +0,0 @@ -*asm: -%{G*} %(endian_spec) %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips64}%{mips16:%{!mno-mips16:-mips16}} %{mno-mips16:-no-mips16} %(subtarget_asm_optimizing_spec) %(subtarget_asm_debugging_spec) %{membedded-pic} %{mabi=32:-32}%{mabi=n32:-n32}%{mabi=64:-64}%{mabi=n64:-64} %{mabi=eabi} %{mabi=o64} %{!mabi*: %(asm_abi_default_spec)} %{mgp32} %{mgp64} %{march=*} %(target_asm_spec) %(subtarget_asm_spec) - -*asm_debug: -%{gstabs*:--gstabs}%{!gstabs*:%{g*:--gdwarf2}} - -*asm_final: -%| - -*asm_options: -%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O} - -*invoke_as: -%{!S:-o %{|!pipe:%g.s} | - as %(asm_options) %{!pipe:%g.s} %A } - -*cpp: -%(subtarget_cpp_spec) - -*cpp_options: -%(cpp_unique_options) %1 %{m*} %{std*} %{ansi} %{W*&pedantic*} %{w} %{f*} %{O*} %{undef} - -*cpp_debug_options: -%{d*} - -*cpp_unique_options: -%{C:%{!E:%eGNU C does not support -C without using -E}} %{CC:%{!E:%eGNU C does not support -CC without using -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}} %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3} %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs} %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{E|M|MM:%W{o*}} - -*trad_capable_cpp: -cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} - -*cc1: -%{profile:-p} - -*cc1_options: -%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} - -*cc1plus: - - -*link_gcc_c_sequence: -%{static:--start-group} %G %L %{static:--end-group}%{!static:%G} - -*endfile: -%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s - -*link: -%{!static:--eh-frame-hdr} %(endian_spec) %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} %{static:-static}}} - -*lib: -%{shared: -lc} %{!static:-rpath-link %R/lib:%R/usr/lib} %{!shared: %{pthread:-lpthread} %{profile:-lc_p} %{!profile: -lc}} - -*libgcc: -%{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:-lgcc_s%M}%{!shared-libgcc:-lgcc}}}} - -*startfile: -%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} crti.o%s %{static:crtbeginT.o%s} %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}} - -*switches_need_spaces: - - -*predefines: - - -*cross_compile: -1 - -*version: -3.3.4 - -*multilib: -. ; - -*multilib_defaults: -EB mips1 mabi=32 - -*multilib_extra: - - -*multilib_matches: - - -*multilib_exclusions: - - -*multilib_options: - - -*linker: -collect2 - -*link_libgcc: -%D - -*md_exec_prefix: - - -*md_startfile_prefix: - - -*md_startfile_prefix_1: - - -*startfile_prefix_spec: - - -*subtarget_cc1_spec: - - -*subtarget_cpp_spec: -%{fno-PIC:-U__PIC__ -U__pic__} %{fno-pic:-U__PIC__ -U__pic__} %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{pthread:-D_REENTRANT} - -*mips_as_asm_spec: -%{!.s:-nocpp} %{.s: %{cpp} %{nocpp}} %{pipe: %e-pipe is not supported} %{K} %(subtarget_mips_as_asm_spec) - -*gas_asm_spec: -%{mtune=*} %{v} - -*target_asm_spec: -%{mmips-as: %(mips_as_asm_spec)} %{!mmips-as: %(gas_asm_spec)} - -*subtarget_mips_as_asm_spec: -%{v} - -*subtarget_asm_optimizing_spec: -%{noasmopt:-O0} %{!noasmopt:%{O:-O2} %{O1:-O2} %{O2:-O2} %{O3:-O3}} - -*subtarget_asm_debugging_spec: --g0 - -*mdebug_asm_spec: -%{!gdwarf*:-mdebug} %{gdwarf*:-no-mdebug} - -*subtarget_asm_spec: -%{mabi=64: -64} %{!fno-PIC:%{!fno-pic:-KPIC}} %{fno-PIC:-non_shared} %{fno-pic:-non_shared} - -*asm_abi_default_spec: --32 - -*endian_spec: -%{!EL:%{!mel:-EB}} %{EL|mel:-EL} - -*link_command: -%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}} %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}} %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}} - diff --git a/toolchain/gcc/3.3.4/specs-mipsel-soft-float b/toolchain/gcc/3.3.4/specs-mipsel-soft-float deleted file mode 100644 index 481bf5a395..0000000000 --- a/toolchain/gcc/3.3.4/specs-mipsel-soft-float +++ /dev/null @@ -1,145 +0,0 @@ -*asm: -%{G*} %(endian_spec) %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips64}%{mips16:%{!mno-mips16:-mips16}} %{mno-mips16:-no-mips16} %(subtarget_asm_optimizing_spec) %(subtarget_asm_debugging_spec) %{membedded-pic} %{mabi=32:-32}%{mabi=n32:-n32}%{mabi=64:-64}%{mabi=n64:-64} %{mabi=eabi} %{mabi=o64} %{!mabi*: %(asm_abi_default_spec)} %{mgp32} %{mgp64} %{march=*} %(target_asm_spec) %(subtarget_asm_spec) - -*asm_debug: -%{gstabs*:--gstabs}%{!gstabs*:%{g*:--gdwarf2}} - -*asm_final: -%| - -*asm_options: -%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O} - -*invoke_as: -%{!S:-o %{|!pipe:%g.s} | - as %(asm_options) %{!pipe:%g.s} %A } - -*cpp: -%(subtarget_cpp_spec) - -*cpp_options: -%(cpp_unique_options) %1 %{m*} %{std*} %{ansi} %{W*&pedantic*} %{w} %{f*} %{O*} %{undef} - -*cpp_debug_options: -%{d*} - -*cpp_unique_options: -%{C:%{!E:%eGNU C does not support -C without using -E}} %{CC:%{!E:%eGNU C does not support -CC without using -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}} %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3} %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs} %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{E|M|MM:%W{o*}} - -*trad_capable_cpp: -cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} - -*cc1: -%{profile:-p} - -*cc1_options: -%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} - -*cc1plus: - - -*link_gcc_c_sequence: -%{static:--start-group} %G %L %{static:--end-group}%{!static:%G} - -*endfile: -%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s - -*link: -%{!static:--eh-frame-hdr} %(endian_spec) %{shared:-shared} %{!shared: %{!ibcs: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} %{static:-static}}} - -*lib: -%{shared: -lc} %{!static:-rpath-link %R/lib:%R/usr/lib} %{!shared: %{pthread:-lpthread} %{profile:-lc_p} %{!profile: -lc}} - -*libgcc: -%{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:-lgcc_s%M}%{!shared-libgcc:-lgcc}}}} - -*startfile: -%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} crti.o%s %{static:crtbeginT.o%s} %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}} - -*switches_need_spaces: - - -*predefines: - - -*cross_compile: -1 - -*version: -3.3.4 - -*multilib: -. ; - -*multilib_defaults: -EL mips1 mabi=32 - -*multilib_extra: - - -*multilib_matches: - - -*multilib_exclusions: - - -*multilib_options: - - -*linker: -collect2 - -*link_libgcc: -%D - -*md_exec_prefix: - - -*md_startfile_prefix: - - -*md_startfile_prefix_1: - - -*startfile_prefix_spec: - - -*subtarget_cc1_spec: - - -*subtarget_cpp_spec: -%{fno-PIC:-U__PIC__ -U__pic__} %{fno-pic:-U__PIC__ -U__pic__} %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{pthread:-D_REENTRANT} - -*mips_as_asm_spec: -%{!.s:-nocpp} %{.s: %{cpp} %{nocpp}} %{pipe: %e-pipe is not supported} %{K} %(subtarget_mips_as_asm_spec) - -*gas_asm_spec: -%{mtune=*} %{v} - -*target_asm_spec: -%{mmips-as: %(mips_as_asm_spec)} %{!mmips-as: %(gas_asm_spec)} - -*subtarget_mips_as_asm_spec: -%{v} - -*subtarget_asm_optimizing_spec: -%{noasmopt:-O0} %{!noasmopt:%{O:-O2} %{O1:-O2} %{O2:-O2} %{O3:-O3}} - -*subtarget_asm_debugging_spec: --g0 - -*mdebug_asm_spec: -%{!gdwarf*:-mdebug} %{gdwarf*:-no-mdebug} - -*subtarget_asm_spec: -%{mabi=64: -64} %{!fno-PIC:%{!fno-pic:-KPIC}} %{fno-PIC:-non_shared} %{fno-pic:-non_shared} - -*asm_abi_default_spec: --32 - -*endian_spec: -%{!EB:%{!meb:-EL}} %{EB|meb:-EB} - -*link_command: -%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}} %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}} %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}} - diff --git a/toolchain/gcc/3.3.4/specs-powerpc-soft-float b/toolchain/gcc/3.3.4/specs-powerpc-soft-float deleted file mode 100644 index 8a546ac8ec..0000000000 --- a/toolchain/gcc/3.3.4/specs-powerpc-soft-float +++ /dev/null @@ -1,352 +0,0 @@ -*asm: -%(asm_cpu) %{.s: %{mregnames} %{mno-regnames}} %{.S: %{mregnames} %{mno-regnames}} %{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} %{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} %{memb} %{!memb: %{msdata: -memb} %{msdata=eabi: -memb}} %{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian} %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: %{mcall-freebsd: -mbig} %{mcall-i960-old: -mlittle} %{mcall-linux: -mbig} %{mcall-gnu: -mbig} %{mcall-netbsd: -mbig} }}}} - -*asm_debug: -%{gstabs*:--gstabs}%{!gstabs*:%{g*:--gdwarf2}} - -*asm_final: -%| - -*asm_options: -%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O} - -*invoke_as: -%{!S:-o %{|!pipe:%g.s} | - as %(asm_options) %{!pipe:%g.s} %A } - -*cpp: -%{posix: -D_POSIX_SOURCE} %(cpp_sysv) %{mads: %(cpp_os_ads) } %{myellowknife: %(cpp_os_yellowknife) } %{mmvme: %(cpp_os_mvme) } %{msim: %(cpp_os_sim) } %{mwindiss: %(cpp_os_windiss) } %{mcall-freebsd: %(cpp_os_freebsd) } %{mcall-linux: %(cpp_os_linux) } %{mcall-gnu: %(cpp_os_gnu) } %{mcall-netbsd: %(cpp_os_netbsd) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}} - -*cpp_options: -%(cpp_unique_options) %1 %{m*} %{std*} %{ansi} %{W*&pedantic*} %{w} %{f*} %{O*} %{undef} - -*cpp_debug_options: -%{d*} - -*cpp_unique_options: -%{C:%{!E:%eGNU C does not support -C without using -E}} %{CC:%{!E:%eGNU C does not support -CC without using -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}} %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3} %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs} %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{E|M|MM:%W{o*}} - -*trad_capable_cpp: -cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp} - -*cc1: -%{G*} %{mlittle: %(cc1_endian_little)} %{!mlittle: %{mlittle-endian: %(cc1_endian_little)}} %{mbig: %(cc1_endian_big)} %{!mbig: %{mbig-endian: %(cc1_endian_big)}} %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: %{mcall-aixdesc: -mbig %(cc1_endian_big) } %{mcall-freebsd: -mbig %(cc1_endian_big) } %{mcall-i960-old: -mlittle %(cc1_endian_little) } %{mcall-linux: -mbig %(cc1_endian_big) } %{mcall-gnu: -mbig %(cc1_endian_big) } %{mcall-netbsd: -mbig %(cc1_endian_big) } %{!mcall-aixdesc: %{!mcall-freebsd: %{!mcall-i960-old: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(cc1_endian_default) }}}}}} }}}} %{mno-sdata: -msdata=none } %{meabi: %{!mcall-*: -mcall-sysv }} %{!meabi: %{!mno-eabi: %{mrelocatable: -meabi } %{mcall-freebsd: -mno-eabi } %{mcall-i960-old: -meabi } %{mcall-linux: -mno-eabi } %{mcall-gnu: -mno-eabi } %{mcall-netbsd: -mno-eabi }}} %{msdata: -msdata=default} %{mno-sdata: -msdata=none} %{profile: -p} - -*cc1_options: -%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}} - -*cc1plus: - - -*link_gcc_c_sequence: -%{static:--start-group} %G %L %{static:--end-group}%{!static:%G} - -*endfile: -%{mads: crtsavres.o%s %(endfile_ads)} %{myellowknife: crtsavres.o%s %(endfile_yellowknife)} %{mmvme: crtsavres.o%s %(endfile_mvme)} %{msim: crtsavres.o%s %(endfile_sim)} %{mwindiss: %(endfile_windiss)} %{mcall-freebsd: crtsavres.o%s %(endfile_freebsd) } %{mcall-linux: crtsavres.o%s %(endfile_linux) } %{mcall-gnu: crtsavres.o%s %(endfile_gnu) } %{mcall-netbsd: crtsavres.o%s %(endfile_netbsd) } %{mvxworks: crtsavres.o%s %(endfile_vxworks) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %{!mvxworks: %(crtsavres_default) %(endfile_default) }}}}}}}}}} - -*link: -%{!static:--eh-frame-hdr} %{h*} %{v:-V} %{!msdata=none:%{G*}} %{msdata=none:-G0} %{YP,*} %{R*} %{Qy:} %{!Qn:-Qy} %(link_shlib) %{!Wl,-T*: %{!T*: %(link_start) }} %(link_target) %(link_os) - -*lib: -%{mads: %(lib_ads) } %{myellowknife: %(lib_yellowknife) } %{mmvme: %(lib_mvme) } %{msim: %(lib_sim) } %{mwindiss: %(lib_windiss) } %{mcall-freebsd: %(lib_freebsd) } %{mcall-linux: %(lib_linux) } %{mcall-gnu: %(lib_gnu) } %{mcall-netbsd: %(lib_netbsd) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(lib_default) }}}}}}}}} - -*libgcc: -%{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:-lgcc_s%M}%{!shared-libgcc:-lgcc}}}} - -*startfile: -%{mads: %(startfile_ads) } %{myellowknife: %(startfile_yellowknife) } %{mmvme: %(startfile_mvme) } %{msim: %(startfile_sim) } %{mwindiss: %(startfile_windiss) } %{mcall-freebsd: %(startfile_freebsd) } %{mcall-linux: %(startfile_linux) } %{mcall-gnu: %(startfile_gnu) } %{mcall-netbsd: %(startfile_netbsd) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %(startfile_default) }}}}}}}}} - -*switches_need_spaces: - - -*predefines: - - -*cross_compile: -1 - -*version: -3.3.4 - -*multilib: -. mhard-float;nof !mhard-float; - -*multilib_defaults: -mbig mcall-sysv - -*multilib_extra: -fPIC mstrict-align - -*multilib_matches: -mcpu=401 msoft-float;mcpu=403 msoft-float;mcpu=405 msoft-float;mcpu=ec603e msoft-float;mcpu=801 msoft-float;mcpu=821 msoft-float;mcpu=823 msoft-float;mcpu=860 msoft-float;msoft-float msoft-float; - -*multilib_exclusions: - - -*multilib_options: -msoft-float - -*linker: -collect2 - -*link_libgcc: -%D - -*md_exec_prefix: - - -*md_startfile_prefix: - - -*md_startfile_prefix_1: - - -*startfile_prefix_spec: - - -*cpp_default: - - -*asm_cpu: -%{!mcpu*: %{mpower: %{!mpower2: -mpwr}} %{mpower2: -mpwrx} %{mpowerpc*: -mppc} %{mno-power: %{!mpowerpc*: -mcom}} %{!mno-power: %{!mpower2: %(asm_default)}}} %{mcpu=common: -mcom} %{mcpu=power: -mpwr} %{mcpu=power2: -mpwrx} %{mcpu=power3: -m604} %{mcpu=power4: -mpower4} %{mcpu=powerpc: -mppc} %{mcpu=rios: -mpwr} %{mcpu=rios1: -mpwr} %{mcpu=rios2: -mpwrx} %{mcpu=rsc: -mpwr} %{mcpu=rsc1: -mpwr} %{mcpu=401: -mppc} %{mcpu=403: -m403} %{mcpu=405: -m405} %{mcpu=505: -mppc} %{mcpu=601: -m601} %{mcpu=602: -mppc} %{mcpu=603: -mppc} %{mcpu=603e: -mppc} %{mcpu=ec603e: -mppc} %{mcpu=604: -mppc} %{mcpu=604e: -mppc} %{mcpu=620: -mppc} %{mcpu=630: -m604} %{mcpu=740: -mppc} %{mcpu=7400: -mppc} %{mcpu=7450: -mppc} %{mcpu=750: -mppc} %{mcpu=801: -mppc} %{mcpu=821: -mppc} %{mcpu=823: -mppc} %{mcpu=860: -mppc} %{mcpu=8540: -me500} %{maltivec: -maltivec} - -*asm_default: --mppc - -*cpp_sysv: -%{mrelocatable*: -D_RELOCATABLE} %{fpic: -D__PIC__=1 -D__pic__=1} %{!fpic: %{fPIC: -D__PIC__=2 -D__pic__=2}} - -*crtsavres_default: -crtsavres.o%s - -*lib_ads: ---start-group -lads -lc --end-group - -*lib_yellowknife: ---start-group -lyk -lc --end-group - -*lib_mvme: ---start-group -lmvme -lc --end-group - -*lib_sim: ---start-group -lsim -lc --end-group - -*lib_freebsd: - %{!shared: %{!pg: %{!pthread:-lc} %{pthread:-lc_r}} %{pg: %{!pthread:-lc_p} %{pthread:-lc_r_p}} } - -*lib_gnu: -%{mnewlib: --start-group -lgnu -lc --end-group } %{!mnewlib: %{shared:-lc} %{!shared: %{pthread:-lpthread } %{profile:-lc_p} %{!profile:-lc}}} - -*lib_linux: -%{mnewlib: --start-group -llinux -lc --end-group } %{!mnewlib: %{pthread:-lpthread} %{shared:-lc} %{!shared: %{profile:-lc_p} %{!profile:-lc}}} - -*lib_netbsd: -%{profile:-lgmon -lc_p} %{!profile:-lc} - -*lib_vxworks: - - -*lib_windiss: ---start-group -li -lcfp -lwindiss -lram -limpl -limpfp --end-group - -*lib_default: -%(lib_linux) - -*startfile_ads: -ecrti.o%s crt0.o%s crtbegin.o%s - -*startfile_yellowknife: -ecrti.o%s crt0.o%s crtbegin.o%s - -*startfile_mvme: -ecrti.o%s crt0.o%s crtbegin.o%s - -*startfile_sim: -ecrti.o%s sim-crt0.o%s crtbegin.o%s - -*startfile_freebsd: -%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}} crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s} - -*startfile_gnu: -%{!shared: %{!static: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}} %{static: %{pg:gcrt0.o%s} %{!pg:%{p:gcrt0.o%s} %{!p:crt0.o%s}}} %{mnewlib: ecrti.o%s} %{!mnewlib: crti.o%s} %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s} - -*startfile_linux: -%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} %{mnewlib: ecrti.o%s} %{!mnewlib: crti.o%s} %{static:crtbeginT.o%s} %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}} - -*startfile_netbsd: -ncrti.o%s crt0.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s} - -*startfile_vxworks: - - -*startfile_windiss: -crt0.o%s crtbegin.o%s - -*startfile_default: -%(startfile_linux) - -*endfile_ads: -crtend.o%s ecrtn.o%s - -*endfile_yellowknife: -crtend.o%s ecrtn.o%s - -*endfile_mvme: -crtend.o%s ecrtn.o%s - -*endfile_sim: -crtend.o%s ecrtn.o%s - -*endfile_freebsd: -%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s - -*endfile_gnu: -%{!shared:crtend.o%s} %{shared:crtendS.o%s} %{mnewlib: ecrtn.o%s} %{!mnewlib: crtn.o%s} - -*endfile_linux: -%{!shared:crtend.o%s} %{shared:crtendS.o%s} %{mnewlib: ecrtn.o%s} %{!mnewlib: crtn.o%s} - -*endfile_netbsd: -%{!shared:crtend.o%s} %{shared:crtendS.o%s} ncrtn.o%s - -*endfile_vxworks: - - -*endfile_windiss: -crtend.o%s - -*endfile_default: -%(endfile_linux) - -*link_path: - - -*link_shlib: -%{shared:-shared} %{!shared: %{static:-static}} - -*link_target: -%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian: %{mcall-i960-old: --oformat elf32-powerpcle} }}}} - -*link_start: -%{mads: %(link_start_ads) } %{myellowknife: %(link_start_yellowknife) } %{mmvme: %(link_start_mvme) } %{msim: %(link_start_sim) } %{mwindiss: %(link_start_windiss) } %{mcall-freebsd: %(link_start_freebsd) } %{mcall-linux: %(link_start_linux) } %{mcall-gnu: %(link_start_gnu) } %{mcall-netbsd: %(link_start_netbsd) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %{!mcall-freebsd: %(link_start_default) }}}}}}}}} - -*link_start_ads: --T ads.ld%s - -*link_start_yellowknife: --T yellowknife.ld%s - -*link_start_mvme: --Ttext 0x40000 - -*link_start_sim: - - -*link_start_freebsd: - - -*link_start_gnu: - - -*link_start_linux: - - -*link_start_netbsd: - - -*link_start_vxworks: - - -*link_start_windiss: - - -*link_start_default: -%(link_start_linux) - -*link_os: -%{mads: %(link_os_ads) } %{myellowknife: %(link_os_yellowknife) } %{mmvme: %(link_os_mvme) } %{msim: %(link_os_sim) } %{mwindiss: %(link_os_windiss) } %{mcall-freebsd: %(link_os_freebsd) } %{mcall-linux: %(link_os_linux) } %{mcall-gnu: %(link_os_gnu) } %{mcall-netbsd: %(link_os_netbsd) } %{mcall-uclibc: %(link_os_linux_uclibc) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss: %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd: %{!mcall-uclibc: %(link_os_default) }}}}}}}}}} - -*link_os_ads: - - -*link_os_yellowknife: - - -*link_os_mvme: - - -*link_os_sim: --m elf32ppcsim - -*link_os_freebsd: - %{p:%e`-p' not supported; use `-pg' and gprof(1)} %{Wl,*:%*} %{v:-V} %{assert*} %{R*} %{rpath*} %{defsym*} %{shared:-Bshareable %{h*} %{soname*}} %{!shared: %{!static: %{rdynamic: -export-dynamic} %{!dynamic-linker: -dynamic-linker /usr/libexec/ld-elf.so.1}} %{static:-Bstatic}} %{symbolic:-Bsymbolic} - -*link_os_linux: --m elf32ppclinux %{!shared: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}} - -*link_os_gnu: --m elf32ppclinux %{!shared: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}} - -*link_os_netbsd: -%{!shared: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}} - -*link_os_vxworks: --r - -*link_os_windiss: - - -*link_os_linux_uclibc: --m elf32ppclinux %{!shared: %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} - -*link_os_default: -%(link_os_linux_uclibc) - -*cc1_endian_big: - - -*cc1_endian_little: -%{!mstrict-align: %{!mno-strict-align: %{!mcall-i960-old: -mstrict-align } }} - -*cc1_endian_default: -%(cc1_endian_big) - -*cpp_os_ads: - - -*cpp_os_yellowknife: - - -*cpp_os_mvme: - - -*cpp_os_sim: - - -*cpp_os_freebsd: - -D__ELF__ -D__PPC__ -D__ppc__ -D__PowerPC__ -D__powerpc__ -Acpu=powerpc -Amachine=powerpc - -*cpp_os_gnu: --D__unix__ -D__gnu_hurd__ -D__GNU__ %{!undef: %{!ansi: -Dunix -D__unix}} -Asystem=gnu -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT} - -*cpp_os_linux: --D__unix__ -D__gnu_linux__ -D__linux__ %{!undef: %{!ansi: %{!std=*:-Dunix -D__unix -Dlinux -D__linux} %{std=gnu*:-Dunix -D__unix -Dlinux -D__linux}}} -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT} - -*cpp_os_netbsd: --D__powerpc__ -D__NetBSD__ -D__ELF__ -D__KPRINTF_ATTRIBUTE__ - -*cpp_os_rtems: -%{!mcpu*: %{!Dppc*: %{!Dmpc*: -Dmpc750} } }%{mcpu=403: %{!Dppc*: %{!Dmpc*: -Dppc403} } } %{mcpu=505: %{!Dppc*: %{!Dmpc*: -Dmpc505} } } %{mcpu=601: %{!Dppc*: %{!Dmpc*: -Dppc601} } } %{mcpu=602: %{!Dppc*: %{!Dmpc*: -Dppc602} } } %{mcpu=603: %{!Dppc*: %{!Dmpc*: -Dppc603} } } %{mcpu=603e: %{!Dppc*: %{!Dmpc*: -Dppc603e} } } %{mcpu=604: %{!Dppc*: %{!Dmpc*: -Dmpc604} } } %{mcpu=750: %{!Dppc*: %{!Dmpc*: -Dmpc750} } } %{mcpu=821: %{!Dppc*: %{!Dmpc*: -Dmpc821} } } %{mcpu=860: %{!Dppc*: %{!Dmpc*: -Dmpc860} } } - -*cpp_os_vxworks: --DCPU_FAMILY=PPC %{!mcpu*: %{mpowerpc*: -DCPU=PPC603} %{!mno-powerpc: -DCPU=PPC603}} %{mcpu=powerpc: -DCPU=PPC603} %{mcpu=401: -DCPU=PPC403} %{mcpu=403: -DCPU=PPC403} %{mcpu=405: -DCPU=PPC405} %{mcpu=601: -DCPU=PPC601} %{mcpu=602: -DCPU=PPC603} %{mcpu=603: -DCPU=PPC603} %{mcpu=603e: -DCPU=PPC603} %{mcpu=ec603e: -DCPU=PPC603} %{mcpu=604: -DCPU=PPC604} %{mcpu=604e: -DCPU=PPC604} %{mcpu=620: -DCPU=PPC604} %{mcpu=740: -DCPU=PPC603} %{mcpu=7450: -DCPU=PPC603} %{mcpu=750: -DCPU=PPC603} %{mcpu=801: -DCPU=PPC603} %{mcpu=821: -DCPU=PPC603} %{mcpu=823: -DCPU=PPC603} %{mcpu=860: -DCPU=PPC603} - -*cpp_os_windiss: --D__rtasim -D__EABI__ -D__ppc %{!msoft-float: -D__hardfp} - -*cpp_os_default: -%(cpp_os_linux) - -*link_command: -%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S: %(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t} %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}} %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}} %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}} - diff --git a/toolchain/gcc/3.4.0/100-uclibc-conf.patch b/toolchain/gcc/3.4.0/100-uclibc-conf.patch deleted file mode 100644 index ad03345bd1..0000000000 --- a/toolchain/gcc/3.4.0/100-uclibc-conf.patch +++ /dev/null @@ -1,442 +0,0 @@ -diff -urN gcc-3.4.0-dist/boehm-gc/configure gcc-3.4.0/boehm-gc/configure ---- gcc-3.4.0-dist/boehm-gc/configure 2004-04-18 21:23:04.000000000 -0500 -+++ gcc-3.4.0/boehm-gc/configure 2004-08-12 16:51:15.000000000 -0500 -@@ -1947,6 +1947,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -diff -urN gcc-3.4.0-dist/boehm-gc/ltconfig gcc-3.4.0/boehm-gc/ltconfig ---- gcc-3.4.0-dist/boehm-gc/ltconfig 2002-11-20 09:59:06.000000000 -0600 -+++ gcc-3.4.0/boehm-gc/ltconfig 2004-08-12 16:51:15.000000000 -0500 -@@ -1981,6 +1981,23 @@ - fi - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /lib/libuClibc-*.so` -+ -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - version_type=sunos - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -diff -urN gcc-3.4.0-dist/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h ---- gcc-3.4.0-dist/gcc/config/arm/linux-elf.h 2004-01-31 00:18:11.000000000 -0600 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-08-12 16:51:15.000000000 -0500 -@@ -81,6 +81,18 @@ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC "%{h*} %{version:-v} \ -+ %{b} %{Wl,*:%*} \ -+ %{static:-Bstatic} \ -+ %{shared:-shared} \ -+ %{symbolic:-Bsymbolic} \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \ -+ -X \ -+ %{mbig-endian:-EB}" \ -+ SUBTARGET_EXTRA_LINK_SPEC -+#else - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ -@@ -91,6 +103,7 @@ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC -+#endif - - #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS() - -diff -urN gcc-3.4.0-dist/gcc/config/cris/linux.h gcc-3.4.0/gcc/config/cris/linux.h ---- gcc-3.4.0-dist/gcc/config/cris/linux.h 2003-11-28 21:08:09.000000000 -0600 -+++ gcc-3.4.0/gcc/config/cris/linux.h 2004-08-12 16:51:15.000000000 -0500 -@@ -79,6 +79,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -93,6 +112,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - -diff -urN gcc-3.4.0-dist/gcc/config/cris/t-linux-uclibc gcc-3.4.0/gcc/config/cris/t-linux-uclibc ---- gcc-3.4.0-dist/gcc/config/cris/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/gcc/config/cris/t-linux-uclibc 2004-08-12 16:51:15.000000000 -0500 -@@ -0,0 +1,3 @@ -+T_CFLAGS = -DUSE_UCLIBC -+TARGET_LIBGCC2_CFLAGS += -fPIC -+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS) -diff -urN gcc-3.4.0-dist/gcc/config/i386/linux.h gcc-3.4.0/gcc/config/i386/linux.h ---- gcc-3.4.0-dist/gcc/config/i386/linux.h 2003-11-28 21:08:10.000000000 -0600 -+++ gcc-3.4.0/gcc/config/i386/linux.h 2004-08-12 16:51:15.000000000 -0500 -@@ -118,6 +118,15 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \ - %{static:-static}}}" - #else -+#if defined USE_UCLIBC -+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC "-m elf_i386 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ -@@ -126,6 +135,7 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif -+#endif - - /* A C statement (sans semicolon) to output to the stdio stream - FILE the assembler definition of uninitialized global DECL named -diff -urN gcc-3.4.0-dist/gcc/config/mips/linux.h gcc-3.4.0/gcc/config/mips/linux.h ---- gcc-3.4.0-dist/gcc/config/mips/linux.h 2004-02-19 15:45:21.000000000 -0600 -+++ gcc-3.4.0/gcc/config/mips/linux.h 2004-08-12 16:51:15.000000000 -0500 -@@ -109,6 +109,17 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC \ -+ "%(endian_spec) \ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ -@@ -118,6 +129,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ - %{static:-static}}}" -+#endif - - #undef SUBTARGET_ASM_SPEC - #define SUBTARGET_ASM_SPEC "\ -diff -urN gcc-3.4.0-dist/gcc/config/rs6000/linux.h gcc-3.4.0/gcc/config/rs6000/linux.h ---- gcc-3.4.0-dist/gcc/config/rs6000/linux.h 2004-02-25 09:11:19.000000000 -0600 -+++ gcc-3.4.0/gcc/config/rs6000/linux.h 2004-08-12 16:51:15.000000000 -0500 -@@ -61,7 +61,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -diff -urN gcc-3.4.0-dist/gcc/config/rs6000/sysv4.h gcc-3.4.0/gcc/config/rs6000/sysv4.h ---- gcc-3.4.0-dist/gcc/config/rs6000/sysv4.h 2004-03-02 16:34:58.000000000 -0600 -+++ gcc-3.4.0/gcc/config/rs6000/sysv4.h 2004-08-12 16:51:15.000000000 -0500 -@@ -952,6 +952,7 @@ - mcall-linux : %(link_os_linux) ; \ - mcall-gnu : %(link_os_gnu) ; \ - mcall-netbsd : %(link_os_netbsd) ; \ -+ mcall-linux-uclibc : %(link_os_linux_uclibc); \ - mcall-openbsd: %(link_os_openbsd) ; \ - : %(link_os_default) }" - -@@ -1129,6 +1130,10 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " - #endif -@@ -1295,6 +1300,7 @@ - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_gnu", LINK_OS_GNU_SPEC }, \ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ -diff -urN gcc-3.4.0-dist/gcc/config/sh/linux.h gcc-3.4.0/gcc/config/sh/linux.h ---- gcc-3.4.0-dist/gcc/config/sh/linux.h 2004-01-11 20:29:13.000000000 -0600 -+++ gcc-3.4.0/gcc/config/sh/linux.h 2004-08-12 16:51:15.000000000 -0500 -@@ -73,12 +73,21 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define SUBTARGET_LINK_SPEC \ -+ "%{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}" -+#else - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}" -+#endif - - #undef LIB_SPEC - #define LIB_SPEC \ -diff -urN gcc-3.4.0-dist/gcc/config/sh/t-linux-uclibc gcc-3.4.0/gcc/config/sh/t-linux-uclibc ---- gcc-3.4.0-dist/gcc/config/sh/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/gcc/config/sh/t-linux-uclibc 2004-08-12 16:51:15.000000000 -0500 -@@ -0,0 +1,13 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES -+LIB1ASMFUNCS_CACHE = _ic_invalidate -+ -+LIB2FUNCS_EXTRA= -+ -+MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) m3e/m4 -+MULTILIB_DIRNAMES= -+MULTILIB_MATCHES = -+MULTILIB_EXCEPTIONS= -+ -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o -diff -urN gcc-3.4.0-dist/gcc/config/sh/t-sh64-uclibc gcc-3.4.0/gcc/config/sh/t-sh64-uclibc ---- gcc-3.4.0-dist/gcc/config/sh/t-sh64-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/gcc/config/sh/t-sh64-uclibc 2004-08-12 16:51:15.000000000 -0500 -@@ -0,0 +1,13 @@ -+EXTRA_MULTILIB_PARTS= crt1.o crti.o crtn.o crtbegin.o crtend.o -+ -+LIB1ASMFUNCS = \ -+ _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ -+ _shcompact_call_trampoline _shcompact_return_trampoline \ -+ _shcompact_incoming_args _ic_invalidate _nested_trampoline \ -+ _push_pop_shmedia_regs \ -+ _udivdi3 _divdi3 _umoddi3 _moddi3 -+ -+MULTILIB_OPTIONS = $(MULTILIB_ENDIAN) m5-32media-nofpu/m5-compact/m5-compact-nofpu/m5-64media/m5-64media-nofpu -+MULTILIB_DIRNAMES= $(MULTILIB_ENDIAN) nofpu compact nofpu/compact media64 nofpu/media64 -+MULTILIB_MATCHES= -+MULTILIB_EXCEPTIONS= -diff -urN gcc-3.4.0-dist/gcc/config/t-linux-uclibc gcc-3.4.0/gcc/config/t-linux-uclibc ---- gcc-3.4.0-dist/gcc/config/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/gcc/config/t-linux-uclibc 2004-08-12 16:51:15.000000000 -0500 -@@ -0,0 +1,15 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+# Compile crtbeginS.o and crtendS.o with pic. -+CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC -+# Compile libgcc2.a with pic. -+TARGET_LIBGCC2_CFLAGS = -fPIC -+ -+# Override t-slibgcc-elf-ver to export some libgcc symbols with -+# the symbol versions that glibc used. -+SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver -+ -+# Use unwind-dw2-fde -+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \ -+ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c -+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h -diff -urN gcc-3.4.0-dist/gcc/config.gcc gcc-3.4.0/gcc/config.gcc ---- gcc-3.4.0-dist/gcc/config.gcc 2004-04-16 21:28:24.000000000 -0500 -+++ gcc-3.4.0/gcc/config.gcc 2004-08-12 16:51:15.000000000 -0500 -@@ -664,6 +664,12 @@ - extra_parts="" - use_collect2=yes - ;; -+arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc -+ tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" -+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+ gnu_ld=yes -+ ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" -@@ -725,6 +731,10 @@ - tmake_file="cris/t-cris cris/t-elfmulti" - gas=yes - ;; -+cris-*-linux-uclibc*) -+ tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" -+ tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux-uclibc" -+ ;; - cris-*-linux*) - tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" - tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux" -@@ -988,6 +998,11 @@ - thread_file='single' - fi - ;; -+i[34567]86-*-linux*uclibc*) # Intel 80386's running GNU/Linux -+ # with ELF format using uClibc -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc i386/t-crtstuff" -+ ;; - i[34567]86-*-linux*) # Intel 80386's running GNU/Linux - # with ELF format using glibc 2 - # aka GNU/Linux C library 6 -@@ -1547,6 +1562,16 @@ - gnu_ld=yes - gas=yes - ;; -+mips*-*-linux-uclibc*) # Linux MIPS, either endian. uClibc -+ tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" -+ case ${target} in -+ mipsisa32*-*) -+ target_cpu_default="MASK_SOFT_FLOAT" -+ tm_defines="MIPS_ISA_DEFAULT=32" -+ ;; -+ esac -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc" -+ ;; - mips*-*-linux*) # Linux MIPS, either endian. - tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" - case ${target} in -@@ -1764,6 +1789,10 @@ - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h" - tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" - ;; -+powerpc-*-linux-uclibc*) -+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" -+ tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux-uclibc rs6000/t-ppccomm" -+ ;; - powerpc-*-linux*) - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" - tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" -@@ -1916,7 +1945,7 @@ - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h" - ;; - sh-*-linux* | sh[2346lbe]*-*-linux*) -- tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux" -+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver" - case ${target} in - sh*be-*-* | sh*eb-*-*) ;; - *) -@@ -1924,9 +1953,17 @@ - tmake_file="${tmake_file} sh/t-le" - ;; - esac -- tmake_file="${tmake_file} sh/t-linux" -+ case ${target} in -+ *-*-linux-uclibc*) tmake_file="${tmake_file} t-linux-uclibc sh/t-linux-uclibc" ;; -+ *) tmake_file="${tmake_file} t-linux sh/t-linux" ;; -+ esac - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h" - case ${target} in -+ sh64*-*-linux-uclibc*) -+ tmake_file="${tmake_file} sh/t-sh64-uclibc" -+ tm_file="${tm_file} sh/sh64.h" -+ extra_headers="shmedia.h ushmedia.h sshmedia.h" -+ ;; - sh64*) - tmake_file="${tmake_file} sh/t-sh64" - tm_file="${tm_file} sh/sh64.h" -diff -urN gcc-3.4.0-dist/libtool.m4 gcc-3.4.0/libtool.m4 ---- gcc-3.4.0-dist/libtool.m4 2003-11-18 23:29:32.000000000 -0600 -+++ gcc-3.4.0/libtool.m4 2004-08-12 16:51:15.000000000 -0500 -@@ -689,6 +689,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] -diff -urN gcc-3.4.0-dist/ltconfig gcc-3.4.0/ltconfig ---- gcc-3.4.0-dist/ltconfig 2004-03-05 15:05:41.000000000 -0600 -+++ gcc-3.4.0/ltconfig 2004-08-12 16:51:15.000000000 -0500 -@@ -602,6 +602,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in -+linux-uclibc*) ;; - linux-gnu*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac -@@ -1262,6 +1263,24 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ # Note: copied from linux-gnu, and may not be appropriate. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no diff --git a/toolchain/gcc/3.4.0/200-uclibc-locale.patch b/toolchain/gcc/3.4.0/200-uclibc-locale.patch deleted file mode 100644 index 27e047eb73..0000000000 --- a/toolchain/gcc/3.4.0/200-uclibc-locale.patch +++ /dev/null @@ -1,3246 +0,0 @@ -diff -urN gcc-3.4.0-dist/libstdc++-v3/acinclude.m4 gcc-3.4.0/libstdc++-v3/acinclude.m4 ---- gcc-3.4.0-dist/libstdc++-v3/acinclude.m4 2004-03-18 11:35:22.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/acinclude.m4 2004-08-12 17:08:19.000000000 -0500 -@@ -995,7 +995,7 @@ - AC_MSG_CHECKING([for C locale to use]) - GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], - [use MODEL for target locale package], -- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) -+ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) - - # If they didn't use this option switch, or if they specified --enable - # with no specific model, we'll have to look for one. If they -@@ -1011,6 +1011,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ x*-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1137,6 +1140,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.0-dist/libstdc++-v3/aclocal.m4 gcc-3.4.0/libstdc++-v3/aclocal.m4 ---- gcc-3.4.0-dist/libstdc++-v3/aclocal.m4 2004-03-18 11:35:23.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/aclocal.m4 2004-08-12 17:13:42.000000000 -0500 -@@ -1024,6 +1024,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ x*-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1150,6 +1153,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.4.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,59 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.4.0/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/c_locale.cc 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,160 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include // For errno -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#warning should dummy __newlocale check for C|POSIX ? -+#define __newlocale(a, b, c) NULL -+#define __freelocale(a) ((void)0) -+#define __duplocale(a) __c_locale() -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " -+ "name not valid")); -+ } -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+ if (_S_get_c_locale() != __cloc) -+ __freelocale(__cloc); -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+ { return __duplocale(__cloc); } -+} // namespace std -+ -+namespace __gnu_cxx -+{ -+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES", -+#if _GLIBCXX_NUM_CATEGORIES != 0 -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} -+ -+namespace std -+{ -+ const char* const* const locale::_S_categories = __gnu_cxx::category_names; -+} // namespace std -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.0/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/c_locale.h 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,119 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include // get std::strlen -+#include // get std::snprintf or std::sprintf -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCXX_C_LOCALE_GNU for -+#endif -+#define _GLIBCXX_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCXX_NUM_CATEGORIES 6 -+#define _GLIBCXX_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec = -1) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec = -1) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = std::setlocale(LC_ALL, NULL); -+ char* __sav = new char[std::strlen(__old) + 1]; -+ std::strcpy(__sav, __old); -+ std::setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ int __ret; -+ if (__prec >= 0) -+ __ret = std::snprintf(__out, __size, __fmt, __prec, __v); -+ else -+ __ret = std::snprintf(__out, __size, __fmt, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ std::setlocale(LC_ALL, __sav); -+ delete [] __sav; -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.4.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,306 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // wcsnrtombs is *very* fast but stops if encounters NUL characters: -+ // in case we fall back to wcrtomb and then continue, in a loop. -+ // NB: wcsnrtombs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', -+ __from_end - __from_next); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ const size_t __conv = wcsnrtombs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // wcrtomb. -+ for (; __from < __from_next; ++__from) -+ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ extern_type __buf[MB_LEN_MAX]; -+ __tmp_state = __state; -+ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); -+ if (__conv > static_cast(__to_end - __to_next)) -+ __ret = partial; -+ else -+ { -+ memcpy(__to_next, __buf, __conv); -+ __state = __tmp_state; -+ __to_next += __conv; -+ ++__from_next; -+ } -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we store a L'\0' and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from_next, '\0', -+ __from_end -+ - __from_next)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ size_t __conv = mbsnrtowcs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (;; ++__to_next, __from += __conv) -+ { -+ __conv = mbrtowc(__to_next, __from, __from_end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __from_next = __from; -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ // It is unclear what to return in this case (see DR 382). -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ if (__to_next < __to_end) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from_next; -+ *__to_next++ = L'\0'; -+ } -+ else -+ __ret = partial; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_encoding() const throw() -+ { -+ // XXX This implementation assumes that the encoding is -+ // stateless and is either single-byte or variable-width. -+ int __ret = 0; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ if (MB_CUR_MAX == 1) -+ __ret = 1; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_max_length() const throw() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ // XXX Probably wrong for stateful encodings. -+ int __ret = MB_CUR_MAX; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_length(state_type& __state, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { -+ int __ret = 0; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we advance past it and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ -+ // A dummy internal buffer is needed in order for mbsnrtocws to consider -+ // its fourth parameter (it wouldn't with NULL as first parameter). -+ wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) -+ * __max)); -+ while (__from < __end && __max) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from, '\0', -+ __end -+ - __from)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __end; -+ -+ const extern_type* __tmp_from = __from; -+ size_t __conv = mbsnrtowcs(__to, &__from, -+ __from_chunk_end - __from, -+ __max, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (__from = __tmp_from;; __from += __conv) -+ { -+ __conv = mbrtowc(NULL, __from, __end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __state = __tmp_state; -+ __ret += __from - __tmp_from; -+ break; -+ } -+ if (!__from) -+ __from = __from_chunk_end; -+ -+ __ret += __from - __tmp_from; -+ __max -= __conv; -+ -+ if (__from < __end && __max) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from; -+ ++__ret; -+ --__max; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.4.0/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/collate_members.cc 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.4.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,300 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ _S_destroy_c_locale(_M_c_locale_ctype); -+ _S_create_c_locale(_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_toupper = _M_c_locale_ctype->__ctype_toupper; -+ _M_tolower = _M_c_locale_ctype->__ctype_tolower; -+ _M_table = _M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = 0; -+ } -+ return __ret; -+ } -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__m & _M_bit[__bitcur] -+ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ { -+ __ret = true; -+ break; -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (; __lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ __m |= _M_bit[__bitcur]; -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { return _M_widen[static_cast(__c)]; } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+ while (__lo < __hi) -+ { -+ *__dest = _M_widen[static_cast(*__lo)]; -+ ++__lo; -+ ++__dest; -+ } -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) -+ return _M_narrow[__wc]; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ const int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ if (_M_narrow_ok) -+ while (__lo < __hi) -+ { -+ if (*__lo >= 0 && *__lo < 128) -+ *__dest = _M_narrow[*__lo]; -+ else -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ ++__lo; -+ ++__dest; -+ } -+ else -+ while (__lo < __hi) -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ ++__lo; -+ ++__dest; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ void -+ ctype::_M_initialize_ctype() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wint_t __i; -+ for (__i = 0; __i < 128; ++__i) -+ { -+ const int __c = wctob(__i); -+ if (__c == EOF) -+ break; -+ else -+ _M_narrow[__i] = static_cast(__c); -+ } -+ if (__i == 128) -+ _M_narrow_ok = true; -+ else -+ _M_narrow_ok = false; -+ for (size_t __i = 0; -+ __i < sizeof(_M_widen) / sizeof(wint_t); ++__i) -+ _M_widen[__i] = btowc(__i); -+ -+ for (size_t __i = 0; __i <= 11; ++__i) -+ { -+ _M_bit[__i] = static_cast(_ISbit(__i)); -+ _M_wmask[__i] = _M_convert_to_wmask(_M_bit[__i]); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+#endif // _GLIBCXX_USE_WCHAR_T -+} -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.4.0/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/messages_members.cc 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+# elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.4.0/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/messages_members.h 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,109 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : facet(__refs) -+ { -+ _M_c_locale_messages = _S_get_c_locale(); -+ } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, -+ const char* __s __attribute__ ((__unused__)), -+ size_t __refs) -+ : facet(__refs) -+ { -+ _M_c_locale_messages = _S_clone_c_locale(__cloc); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ _S_destroy_c_locale(this->_M_c_locale_messages); -+ _S_create_c_locale(this->_M_c_locale_messages, __s); -+ } -+ } -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.4.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,698 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ __ret.field[0] = sign; -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[2] = space; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[1] = space; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ else -+ { -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ default: -+ ; -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == true -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == false -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ { -+ uc = static_cast(money_base::_S_atoms[__i]); -+ _M_data->_M_atoms[__i] = btowc(uc); -+ } -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#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; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ { -+ uc = static_cast(money_base::_S_atoms[__i]); -+ _M_data->_M_atoms[__i] = btowc(uc); -+ } -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#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; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+#endif -+} -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.4.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2004-08-12 17:15:14.000000000 -0500 -@@ -0,0 +1,181 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; -+ -+ for (size_t __i = 0; __i < __num_base::_S_iend; ++__i) -+ _M_data->_M_atoms_in[__i] = __num_base::_S_atoms_in[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(RADIXCHAR, __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSEP, __cloc)); -+ -+ // Check for NULL, which implies no grouping. -+ if (_M_data->_M_thousands_sep == '\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = "true"; -+ _M_data->_M_truename_size = strlen(_M_data->_M_truename); -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = "false"; -+ _M_data->_M_falsename_size = strlen(_M_data->_M_falsename); -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_S_get_c_locale()); -+#endif -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ { -+ uc = static_cast(__num_base::_S_atoms_out[__i]); -+ _M_data->_M_atoms_out[__i] = btowc(uc); -+ } -+ -+ for (size_t __i = 0; __i < __num_base::_S_iend; ++__i) -+ { -+ uc = static_cast(__num_base::_S_atoms_in[__i]); -+ _M_data->_M_atoms_in[__i] = btowc(uc); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#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; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ -+ if (_M_data->_M_thousands_sep == L'\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = L"true"; -+ _M_data->_M_truename_size = wcslen(_M_data->_M_truename); -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = L"false"; -+ _M_data->_M_falsename_size = wcslen(_M_data->_M_falsename); -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ #endif -+} -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.4.0/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/time_members.cc 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,347 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __strftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = "%m/%d/%y"; -+ _M_data->_M_date_era_format = "%m/%d/%y"; -+ _M_data->_M_time_format = "%H:%M:%S"; -+ _M_data->_M_time_era_format = "%H:%M:%S"; -+ _M_data->_M_date_time_format = ""; -+ _M_data->_M_date_time_era_format = ""; -+ _M_data->_M_am = "AM"; -+ _M_data->_M_pm = "PM"; -+ _M_data->_M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = "Sunday"; -+ _M_data->_M_day2 = "Monday"; -+ _M_data->_M_day3 = "Tuesday"; -+ _M_data->_M_day4 = "Wednesday"; -+ _M_data->_M_day5 = "Thursday"; -+ _M_data->_M_day6 = "Friday"; -+ _M_data->_M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = "Sun"; -+ _M_data->_M_aday2 = "Mon"; -+ _M_data->_M_aday3 = "Tue"; -+ _M_data->_M_aday4 = "Wed"; -+ _M_data->_M_aday5 = "Thu"; -+ _M_data->_M_aday6 = "Fri"; -+ _M_data->_M_aday7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = "January"; -+ _M_data->_M_month02 = "February"; -+ _M_data->_M_month03 = "March"; -+ _M_data->_M_month04 = "April"; -+ _M_data->_M_month05 = "May"; -+ _M_data->_M_month06 = "June"; -+ _M_data->_M_month07 = "July"; -+ _M_data->_M_month08 = "August"; -+ _M_data->_M_month09 = "September"; -+ _M_data->_M_month10 = "October"; -+ _M_data->_M_month11 = "November"; -+ _M_data->_M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = "Jan"; -+ _M_data->_M_amonth02 = "Feb"; -+ _M_data->_M_amonth03 = "Mar"; -+ _M_data->_M_amonth04 = "Apr"; -+ _M_data->_M_amonth05 = "May"; -+ _M_data->_M_amonth06 = "Jun"; -+ _M_data->_M_amonth07 = "July"; -+ _M_data->_M_amonth08 = "Aug"; -+ _M_data->_M_amonth09 = "Sep"; -+ _M_data->_M_amonth10 = "Oct"; -+ _M_data->_M_amonth11 = "Nov"; -+ _M_data->_M_amonth12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc); -+ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = L"%m/%d/%y"; -+ _M_data->_M_date_era_format = L"%m/%d/%y"; -+ _M_data->_M_time_format = L"%H:%M:%S"; -+ _M_data->_M_time_era_format = L"%H:%M:%S"; -+ _M_data->_M_date_time_format = L""; -+ _M_data->_M_date_time_era_format = L""; -+ _M_data->_M_am = L"AM"; -+ _M_data->_M_pm = L"PM"; -+ _M_data->_M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = L"Sunday"; -+ _M_data->_M_day2 = L"Monday"; -+ _M_data->_M_day3 = L"Tuesday"; -+ _M_data->_M_day4 = L"Wednesday"; -+ _M_data->_M_day5 = L"Thursday"; -+ _M_data->_M_day6 = L"Friday"; -+ _M_data->_M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = L"Sun"; -+ _M_data->_M_aday2 = L"Mon"; -+ _M_data->_M_aday3 = L"Tue"; -+ _M_data->_M_aday4 = L"Wed"; -+ _M_data->_M_aday5 = L"Thu"; -+ _M_data->_M_aday6 = L"Fri"; -+ _M_data->_M_aday7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = L"January"; -+ _M_data->_M_month02 = L"February"; -+ _M_data->_M_month03 = L"March"; -+ _M_data->_M_month04 = L"April"; -+ _M_data->_M_month05 = L"May"; -+ _M_data->_M_month06 = L"June"; -+ _M_data->_M_month07 = L"July"; -+ _M_data->_M_month08 = L"August"; -+ _M_data->_M_month09 = L"September"; -+ _M_data->_M_month10 = L"October"; -+ _M_data->_M_month11 = L"November"; -+ _M_data->_M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = L"Jan"; -+ _M_data->_M_amonth02 = L"Feb"; -+ _M_data->_M_amonth03 = L"Mar"; -+ _M_data->_M_amonth04 = L"Apr"; -+ _M_data->_M_amonth05 = L"May"; -+ _M_data->_M_amonth06 = L"Jun"; -+ _M_data->_M_amonth07 = L"July"; -+ _M_data->_M_amonth08 = L"Aug"; -+ _M_data->_M_amonth09 = L"Sep"; -+ _M_data->_M_amonth10 = L"Oct"; -+ _M_data->_M_amonth11 = L"Nov"; -+ _M_data->_M_amonth12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+ _M_data->_M_date_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+ _M_data->_M_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+ _M_data->_M_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+ _M_data->_M_date_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+ _M_data->_M_date_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+ _M_data->_M_am = reinterpret_cast(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+ _M_data->_M_pm = reinterpret_cast(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+ _M_data->_M_am_pm_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+ _M_data->_M_day2 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+ _M_data->_M_day3 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+ _M_data->_M_day4 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+ _M_data->_M_day5 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+ _M_data->_M_day6 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+ _M_data->_M_day7 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+ _M_data->_M_aday2 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+ _M_data->_M_aday3 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+ _M_data->_M_aday4 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+ _M_data->_M_aday5 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+ _M_data->_M_aday6 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+ _M_data->_M_aday7 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+ _M_data->_M_month02 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+ _M_data->_M_month03 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+ _M_data->_M_month04 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+ _M_data->_M_month05 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+ _M_data->_M_month06 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+ _M_data->_M_month07 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+ _M_data->_M_month08 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+ _M_data->_M_month09 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+ _M_data->_M_month10 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+ _M_data->_M_month11 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+ _M_data->_M_month12 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+ _M_data->_M_amonth02 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+ _M_data->_M_amonth03 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+ _M_data->_M_amonth04 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+ _M_data->_M_amonth05 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+ _M_data->_M_amonth06 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+ _M_data->_M_amonth07 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+ _M_data->_M_amonth08 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+ _M_data->_M_amonth09 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+ _M_data->_M_amonth10 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+ _M_data->_M_amonth11 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+ _M_data->_M_amonth12 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_12, __cloc)); -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.4.0/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-3.4.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/locale/uclibc/time_members.h 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,80 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : facet(__refs), _M_data(NULL) -+ { -+#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) -+ _M_name_timepunct = _S_get_c_name(); -+#endif -+ _M_initialize_timepunct(); -+ } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -+ : facet(__refs), _M_data(__cache) -+ { -+#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) -+ _M_name_timepunct = _S_get_c_name(); -+#endif -+ _M_initialize_timepunct(); -+ } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, -+ const char* __s __attribute__ ((__unused__)), -+ size_t __refs) -+ : facet(__refs), _M_data(NULL) -+ { -+#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_timepunct = __tmp; -+#endif -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+#if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) -+ if (_M_name_timepunct != _S_get_c_name()) -+ delete [] _M_name_timepunct; -+#endif -+ delete _M_data; -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.4.0/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-3.4.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/os/uclibc/ctype_base.h 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,58 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISalpha | _ISdigit | _ISpunct; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalpha | _ISdigit; -+ }; -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.4.0/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-3.4.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/os/uclibc/ctype_inline.h 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.4.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-3.4.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,96 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { return __C_ctype_b; } -+ -+ ctype::ctype(__c_locale __cloc, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_del(__table != 0 && __del) -+ { -+ _M_c_locale_ctype = _S_clone_c_locale(__cloc); -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ _M_widen_ok = 0; -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ _M_narrow_ok = 0; -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_del(__table != 0 && __del) -+ { -+ _M_c_locale_ctype = _S_get_c_locale(); -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ _M_widen_ok = 0; -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ _M_narrow_ok = 0; -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-3.4.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.4.0/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-3.4.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/config/os/uclibc/os_defines.h 2004-08-12 17:08:19.000000000 -0500 -@@ -0,0 +1,44 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif -diff -urN gcc-3.4.0-dist/libstdc++-v3/configure gcc-3.4.0/libstdc++-v3/configure ---- gcc-3.4.0-dist/libstdc++-v3/configure 2004-03-18 11:35:25.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/configure 2004-08-12 17:08:58.000000000 -0500 -@@ -3878,6 +3878,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -5545,6 +5550,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ xlinux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" -@@ -5759,6 +5767,77 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ echo "$as_me:$LINENO: result: uclibc" >&5 -+echo "${ECHO_T}uclibc" >&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_check_msgfmt+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_check_msgfmt="yes" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt=$ac_cv_prog_check_msgfmt -+if test -n "$check_msgfmt"; then -+ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 -+echo "${ECHO_T}$check_msgfmt" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.0-dist/libstdc++-v3/configure.host gcc-3.4.0/libstdc++-v3/configure.host ---- gcc-3.4.0-dist/libstdc++-v3/configure.host 2004-03-18 11:36:12.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/configure.host 2004-08-12 17:08:19.000000000 -0500 -@@ -217,6 +217,12 @@ - ;; - esac - -+# Override for uClibc since linux-uclibc gets mishandled above. -+case "${host_os}" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; -+esac - - # Set any OS-dependent and CPU-dependent bits. - # THIS TABLE IS SORTED. KEEP IT THAT WAY. -diff -urN gcc-3.4.0-dist/libstdc++-v3/crossconfig.m4 gcc-3.4.0/libstdc++-v3/crossconfig.m4 ---- gcc-3.4.0-dist/libstdc++-v3/crossconfig.m4 2004-02-09 01:17:55.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/crossconfig.m4 2004-08-12 17:08:19.000000000 -0500 -@@ -122,6 +122,99 @@ - ;; - esac - ;; -+ *-uclibc*) -+# Temporary hack until we implement the float versions of the libm funcs -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCXX_CHECK_LINKER_FEATURES -+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCXX_CHECK_WCHAR_T_SUPPORT -+ -+ # For LFS. -+ AC_DEFINE(HAVE_INT64_T) -+ case "$target" in -+ *-uclinux*) -+ # Don't enable LFS with uClinux -+ ;; -+ *) -+ AC_DEFINE(_GLIBCXX_USE_LFS) -+ esac -+ -+ # For showmanyc_helper(). -+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) -+ GLIBCXX_CHECK_POLL -+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG -+ -+ # For xsputn_2(). -+ AC_CHECK_HEADERS(sys/uio.h) -+ GLIBCXX_CHECK_WRITEV -+ -+# AC_DEFINE(HAVE_ACOSF) -+# AC_DEFINE(HAVE_ASINF) -+# AC_DEFINE(HAVE_ATANF) -+# AC_DEFINE(HAVE_ATAN2F) -+ AC_DEFINE(HAVE_CEILF) -+ AC_DEFINE(HAVE_COPYSIGN) -+# AC_DEFINE(HAVE_COPYSIGNF) -+# AC_DEFINE(HAVE_COSF) -+# AC_DEFINE(HAVE_COSHF) -+# AC_DEFINE(HAVE_EXPF) -+# AC_DEFINE(HAVE_FABSF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ AC_DEFINE(HAVE_FLOORF) -+# AC_DEFINE(HAVE_FMODF) -+# AC_DEFINE(HAVE_FREXPF) -+ AC_DEFINE(HAVE_HYPOT) -+# AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+# AC_DEFINE(HAVE_LOGF) -+# AC_DEFINE(HAVE_LOG10F) -+# AC_DEFINE(HAVE_MODFF) -+# AC_DEFINE(HAVE_SINF) -+# AC_DEFINE(HAVE_SINHF) -+# AC_DEFINE(HAVE_SINCOS) -+# AC_DEFINE(HAVE_SINCOSF) -+ AC_DEFINE(HAVE_SQRTF) -+# AC_DEFINE(HAVE_TANF) -+# AC_DEFINE(HAVE_TANHF) -+ if test x"long_double_math_on_this_cpu" = x"yes"; then -+ AC_MSG_ERROR([long_double_math_on_this_cpu is yes!]) -+# AC_DEFINE(HAVE_ACOSL) -+# AC_DEFINE(HAVE_ASINL) -+# AC_DEFINE(HAVE_ATANL) -+# AC_DEFINE(HAVE_ATAN2L) -+# AC_DEFINE(HAVE_CEILL) -+# AC_DEFINE(HAVE_COPYSIGNL) -+# AC_DEFINE(HAVE_COSL) -+# AC_DEFINE(HAVE_COSHL) -+# AC_DEFINE(HAVE_EXPL) -+# AC_DEFINE(HAVE_FABSL) -+# AC_DEFINE(HAVE_FINITEL) -+# AC_DEFINE(HAVE_FLOORL) -+# AC_DEFINE(HAVE_FMODL) -+# AC_DEFINE(HAVE_FREXPL) -+# AC_DEFINE(HAVE_HYPOTL) -+# AC_DEFINE(HAVE_ISINFL) -+# AC_DEFINE(HAVE_ISNANL) -+# AC_DEFINE(HAVE_LOGL) -+# AC_DEFINE(HAVE_LOG10L) -+# AC_DEFINE(HAVE_MODFL) -+# AC_DEFINE(HAVE_POWL) -+# AC_DEFINE(HAVE_SINL) -+# AC_DEFINE(HAVE_SINHL) -+# AC_DEFINE(HAVE_SINCOSL) -+# AC_DEFINE(HAVE_SQRTL) -+# AC_DEFINE(HAVE_TANL) -+# AC_DEFINE(HAVE_TANHL) -+ fi -+ ;; - *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ - machine/endian.h machine/param.h sys/machine.h sys/types.h \ -@@ -136,7 +229,7 @@ - AC_DEFINE(HAVE_INT64_T) - case "$target" in - *-uclinux*) -- # Don't enable LFS with uClibc -+ # Don't enable LFS with uClinux - ;; - *) - AC_DEFINE(_GLIBCXX_USE_LFS) -diff -urN gcc-3.4.0-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-3.4.0/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-3.4.0-dist/libstdc++-v3/include/c_compatibility/wchar.h 2003-12-08 21:51:45.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/include/c_compatibility/wchar.h 2004-08-12 17:14:36.000000000 -0500 -@@ -101,7 +101,9 @@ - using std::wmemcpy; - using std::wmemmove; - using std::wmemset; -+#if __GLIBCXX_HAVE_WCSFTIME - using std::wcsftime; -+#endif - - #if _GLIBCXX_USE_C99 - using std::wcstold; -diff -urN gcc-3.4.0-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.4.0/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-3.4.0-dist/libstdc++-v3/include/c_std/std_cwchar.h 2003-12-08 21:44:35.000000000 -0600 -+++ gcc-3.4.0/libstdc++-v3/include/c_std/std_cwchar.h 2004-08-12 17:08:19.000000000 -0500 -@@ -179,7 +179,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#if _GLIBCXX_HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; diff --git a/toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch b/toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch deleted file mode 100644 index c126b787d9..0000000000 --- a/toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch +++ /dev/null @@ -1,83 +0,0 @@ -From: cgd at broadcom dot com -To: gcc-patches at gcc dot gnu dot org -Cc: mark at codesourcery dot com -Date: 13 Jun 2004 22:51:30 -0700 -Subject: [trunk + 3.4-branch RFA] don't use empic relocs for mips-linuxeh - -This patch changes mips-linux to avoid using embedded-pic relocs for -its eh data. (Support for generating these for new code is removed in -current binutils srcs.) - -Relating to this, previously, mips-linux and mips64-linux would use -different representations for their EH data (even for mips64-linux o32 -abi), due to the mips64-linux n32/64 BFDs not supporting the -embedded-pic relocs. This was a bug. - -For more explanation, see the thread of the URL quoted in the comment -in linux.h. - - -Tested the same w/ sources of about a week ago for c/c++ for -mips-linux (native) before/after. Also verified .o compatibility -before/after just to be sure. - -I'd like this approved for the branch as well, so 3.4.1 will work -nicely w/ the next major binutils release. - - -thanks, - -chris - -2004-06-13 Chris Demetriou - - * config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Redefine - to return DW_EH_PE_absptr. - * config/mips/linux64.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove. - -Index: config/mips/linux.h -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/mips/linux.h,v -retrieving revision 1.77 -diff -u -p -r1.77 linux.h ---- gcc/gcc/config/mips/linux.h 19 Feb 2004 22:07:51 -0000 1.77 -+++ gcc/gcc/config/mips/linux.h 14 Jun 2004 05:49:51 -0000 -@@ -170,10 +170,11 @@ Boston, MA 02111-1307, USA. */ - #undef FUNCTION_NAME_ALREADY_DECLARED - #define FUNCTION_NAME_ALREADY_DECLARED 1 - --#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \ -- (flag_pic \ -- ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4\ -- : DW_EH_PE_absptr) -+/* If possible, we should attempt to use GP-relative relocs for this -+ (see http://sources.redhat.com/ml/binutils/2004-05/msg00227.html). -+ However, until that is implement, this just uses standard, absolute -+ references. */ -+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) DW_EH_PE_absptr - - /* The glibc _mcount stub will save $v0 for us. Don't mess with saving - it, since ASM_OUTPUT_REG_PUSH/ASM_OUTPUT_REG_POP do not work in the -Index: config/mips/linux64.h -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/mips/linux64.h,v -retrieving revision 1.7 -diff -u -p -r1.7 linux64.h ---- gcc/gcc/config/mips/linux64.h 18 Feb 2004 15:05:10 -0000 1.7 -+++ gcc/gcc/config/mips/linux64.h 14 Jun 2004 05:49:51 -0000 -@@ -81,14 +81,6 @@ Boston, MA 02111-1307, USA. */ - specification. The SGI/MIPS ABI defines it to be the same as PTR_SIZE. */ - #define DWARF_OFFSET_SIZE PTR_SIZE - --#undef ASM_PREFERRED_EH_DATA_FORMAT --#if 0 /* We can't use relative addressing modes on NEWABI :-( */ --#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \ -- (flag_pic \ -- ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_sdata4 \ -- : DW_EH_PE_absptr) --#endif -- - /* GNU/Linux doesn't use the same floating-point format that IRIX uses - for long double. There's no need to override this here, since - ieee_quad_format is the default, but let's put this here to make - diff --git a/toolchain/gcc/3.4.0/arm-softfloat.patch.conditional b/toolchain/gcc/3.4.0/arm-softfloat.patch.conditional deleted file mode 100644 index f53d64b374..0000000000 --- a/toolchain/gcc/3.4.0/arm-softfloat.patch.conditional +++ /dev/null @@ -1,256 +0,0 @@ -# -# Submitted: -# -# Dimitry Andric , 2004-05-01 -# -# Description: -# -# Nicholas Pitre released this patch for gcc soft-float support here: -# http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-October/006436.html -# -# This version has been adapted to work with gcc 3.4.0. -# -# The original patch doesn't distinguish between softfpa and softvfp modes -# in the way Nicholas Pitre probably meant. His description is: -# -# "Default is to use APCS-32 mode with soft-vfp. The old Linux default for -# floats can be achieved with -mhard-float or with the configure -# --with-float=hard option. If -msoft-float or --with-float=soft is used then -# software float support will be used just like the default but with the legacy -# big endian word ordering for double float representation instead." -# -# Which means the following: -# -# * If you compile without -mhard-float or -msoft-float, you should get -# software floating point, using the VFP format. The produced object file -# should have these flags in its header: -# -# private flags = 600: [APCS-32] [VFP float format] [software FP] -# -# * If you compile with -mhard-float, you should get hardware floating point, -# which always uses the FPA format. Object file header flags should be: -# -# private flags = 0: [APCS-32] [FPA float format] -# -# * If you compile with -msoft-float, you should get software floating point, -# using the FPA format. This is done for compatibility reasons with many -# existing distributions. Object file header flags should be: -# -# private flags = 200: [APCS-32] [FPA float format] [software FP] -# -# The original patch from Nicholas Pitre contained the following constructs: -# -# #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -# %{mhard-float:-mfpu=fpa} \ -# %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}" -# -# However, gcc doesn't accept this ";:" notation, used in the 3rd line. This -# is probably the reason Robert Schwebel modified it to: -# -# #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -# %{mhard-float:-mfpu=fpa} \ -# %{!mhard-float: %{msoft-float:-mfpu=softfpa -mfpu=softvfp}}" -# -# But this causes the following behaviour: -# -# * If you compile without -mhard-float or -msoft-float, the compiler generates -# software floating point instructions, but *nothing* is passed to the -# assembler, which results in an object file which has flags: -# -# private flags = 0: [APCS-32] [FPA float format] -# -# This is not correct! -# -# * If you compile with -mhard-float, the compiler generates hardware floating -# point instructions, and passes "-mfpu=fpa" to the assembler, which results -# in an object file which has the same flags as in the previous item, but now -# those *are* correct. -# -# * If you compile with -msoft-float, the compiler generates software floating -# point instructions, and passes "-mfpu=softfpa -mfpu=softvfp" (in that -# order) to the assembler, which results in an object file with flags: -# -# private flags = 600: [APCS-32] [VFP float format] [software FP] -# -# This is not correct, because the last "-mfpu=" option on the assembler -# command line determines the actual FPU convention used (which should be FPA -# in this case). -# -# Therefore, I modified this patch to get the desired behaviour. Every -# instance of the notation: -# -# %{msoft-float:-mfpu=softfpa -mfpu=softvfp} -# -# was changed to: -# -# %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp} -# -# I also did the following: -# -# * Modified all TARGET_DEFAULT macros I could find to include ARM_FLAG_VFP, to -# be consistent with Nicholas' original patch. -# * Removed any "msoft-float" or "mhard-float" from all MULTILIB_DEFAULTS -# macros I could find. I think that if you compile without any options, you -# would like to get the defaults. :) -# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed -# anymore. (The required functions are now in libgcc.) - -diff -urNd gcc-3.4.0-orig/gcc/config/arm/coff.h gcc-3.4.0/gcc/config/arm/coff.h ---- gcc-3.4.0-orig/gcc/config/arm/coff.h 2004-02-24 15:25:22.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/coff.h 2004-05-01 19:07:06.059409600 +0200 -@@ -31,11 +31,16 @@ - #define TARGET_VERSION fputs (" (ARM/coff)", stderr) - - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" } - #endif - - /* This is COFF, but prefer stabs. */ -diff -urNd gcc-3.4.0-orig/gcc/config/arm/elf.h gcc-3.4.0/gcc/config/arm/elf.h ---- gcc-3.4.0-orig/gcc/config/arm/elf.h 2004-02-24 15:25:22.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/elf.h 2004-05-01 19:12:16.976486400 +0200 -@@ -46,7 +46,9 @@ - - #ifndef SUBTARGET_ASM_FLOAT_SPEC - #define SUBTARGET_ASM_FLOAT_SPEC "\ --%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}" -+%{mapcs-float:-mfloat} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - #endif - - #ifndef ASM_SPEC -@@ -106,12 +108,17 @@ - #endif - - #ifndef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - #endif - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } - #endif - - #define TARGET_ASM_FILE_START_APP_OFF true -diff -urNd gcc-3.4.0-orig/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/linux-elf.h 2004-01-31 07:18:11.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/linux-elf.h 2004-05-01 19:19:06.935979200 +0200 -@@ -30,9 +30,27 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - --/* Default is to use APCS-32 mode. */ -+/* -+ * Default is to use APCS-32 mode with soft-vfp. -+ * The old Linux default for floats can be achieved with -mhard-float -+ * or with the configure --with-float=hard option. -+ * If -msoft-float or --with-float=soft is used then software float -+ * support will be used just like the default but with the legacy -+ * big endian word ordering for double float representation instead. -+ */ -+ - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_MMU_TRAPS ) -+ -+#undef SUBTARGET_EXTRA_ASM_SPEC -+#define SUBTARGET_EXTRA_ASM_SPEC "\ -+%{!mcpu=*:-mcpu=xscale} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - -@@ -40,7 +58,7 @@ - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -55,7 +73,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which -diff -urNd gcc-3.4.0-orig/gcc/config/arm/t-linux gcc-3.4.0/gcc/config/arm/t-linux ---- gcc-3.4.0-orig/gcc/config/arm/t-linux 2003-09-20 23:09:07.000000000 +0200 -+++ gcc-3.4.0/gcc/config/arm/t-linux 2004-05-01 20:31:59.102846400 +0200 -@@ -4,7 +4,10 @@ - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float -diff -urNd gcc-3.4.0-orig/gcc/config/arm/unknown-elf.h gcc-3.4.0/gcc/config/arm/unknown-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/unknown-elf.h 2004-02-24 15:25:22.000000000 +0100 -+++ gcc-3.4.0/gcc/config/arm/unknown-elf.h 2004-05-01 19:09:09.016212800 +0200 -@@ -30,7 +30,12 @@ - - /* Default to using APCS-32 and software floating point. */ - #ifndef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - #endif - - /* Now we define the strings used to build the spec file. */ -diff -urNd gcc-3.4.0-orig/gcc/config/arm/xscale-elf.h gcc-3.4.0/gcc/config/arm/xscale-elf.h ---- gcc-3.4.0-orig/gcc/config/arm/xscale-elf.h 2003-07-02 01:26:43.000000000 +0200 -+++ gcc-3.4.0/gcc/config/arm/xscale-elf.h 2004-05-01 20:15:36.620105600 +0200 -@@ -49,11 +49,12 @@ - endian, regardless of the endian-ness of the memory - system. */ - --#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -- %{mhard-float:-mfpu=fpa} \ -- %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}" -+#define SUBTARGET_EXTRA_ASM_SPEC "\ -+%{!mcpu=*:-mcpu=xscale} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" } -+ { "mlittle-endian", "mno-thumb-interwork", "marm" } - #endif diff --git a/toolchain/gcc/3.4.1/100-uclibc-conf.patch b/toolchain/gcc/3.4.1/100-uclibc-conf.patch deleted file mode 100644 index 28449e7c82..0000000000 --- a/toolchain/gcc/3.4.1/100-uclibc-conf.patch +++ /dev/null @@ -1,442 +0,0 @@ -diff -urN gcc-3.4.1-dist/boehm-gc/configure gcc-3.4.1/boehm-gc/configure ---- gcc-3.4.1-dist/boehm-gc/configure 2004-07-01 14:14:03.000000000 -0500 -+++ gcc-3.4.1/boehm-gc/configure 2004-08-12 16:22:57.000000000 -0500 -@@ -1947,6 +1947,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -diff -urN gcc-3.4.1-dist/boehm-gc/ltconfig gcc-3.4.1/boehm-gc/ltconfig ---- gcc-3.4.1-dist/boehm-gc/ltconfig 2002-11-20 09:59:06.000000000 -0600 -+++ gcc-3.4.1/boehm-gc/ltconfig 2004-08-12 15:54:42.000000000 -0500 -@@ -1981,6 +1981,23 @@ - fi - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' -+ file_magic_cmd=/usr/bin/file -+ file_magic_test_file=`echo /lib/libuClibc-*.so` -+ -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - version_type=sunos - if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -diff -urN gcc-3.4.1-dist/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h ---- gcc-3.4.1-dist/gcc/config/arm/linux-elf.h 2004-01-31 00:18:11.000000000 -0600 -+++ gcc-3.4.1/gcc/config/arm/linux-elf.h 2004-08-12 15:54:42.000000000 -0500 -@@ -81,6 +81,18 @@ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC "%{h*} %{version:-v} \ -+ %{b} %{Wl,*:%*} \ -+ %{static:-Bstatic} \ -+ %{shared:-shared} \ -+ %{symbolic:-Bsymbolic} \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \ -+ -X \ -+ %{mbig-endian:-EB}" \ -+ SUBTARGET_EXTRA_LINK_SPEC -+#else - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ -@@ -91,6 +103,7 @@ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC -+#endif - - #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS() - -diff -urN gcc-3.4.1-dist/gcc/config/cris/linux.h gcc-3.4.1/gcc/config/cris/linux.h ---- gcc-3.4.1-dist/gcc/config/cris/linux.h 2003-11-28 21:08:09.000000000 -0600 -+++ gcc-3.4.1/gcc/config/cris/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -79,6 +79,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -93,6 +112,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - -diff -urN gcc-3.4.1-dist/gcc/config/cris/t-linux-uclibc gcc-3.4.1/gcc/config/cris/t-linux-uclibc ---- gcc-3.4.1-dist/gcc/config/cris/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/cris/t-linux-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,3 @@ -+T_CFLAGS = -DUSE_UCLIBC -+TARGET_LIBGCC2_CFLAGS += -fPIC -+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS) -diff -urN gcc-3.4.1-dist/gcc/config/i386/linux.h gcc-3.4.1/gcc/config/i386/linux.h ---- gcc-3.4.1-dist/gcc/config/i386/linux.h 2003-11-28 21:08:10.000000000 -0600 -+++ gcc-3.4.1/gcc/config/i386/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -118,6 +118,15 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \ - %{static:-static}}}" - #else -+#if defined USE_UCLIBC -+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC "-m elf_i386 %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ -@@ -126,6 +135,7 @@ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}}}" - #endif -+#endif - - /* A C statement (sans semicolon) to output to the stdio stream - FILE the assembler definition of uninitialized global DECL named -diff -urN gcc-3.4.1-dist/gcc/config/mips/linux.h gcc-3.4.1/gcc/config/mips/linux.h ---- gcc-3.4.1-dist/gcc/config/mips/linux.h 2004-06-15 20:42:24.000000000 -0500 -+++ gcc-3.4.1/gcc/config/mips/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -109,6 +109,17 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC \ -+ "%(endian_spec) \ -+ %{shared:-shared} \ -+ %{!shared: \ -+ %{!ibcs: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}}}" -+#else - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ -@@ -118,6 +129,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ - %{static:-static}}}" -+#endif - - #undef SUBTARGET_ASM_SPEC - #define SUBTARGET_ASM_SPEC "\ -diff -urN gcc-3.4.1-dist/gcc/config/rs6000/linux.h gcc-3.4.1/gcc/config/rs6000/linux.h ---- gcc-3.4.1-dist/gcc/config/rs6000/linux.h 2004-02-25 09:11:19.000000000 -0600 -+++ gcc-3.4.1/gcc/config/rs6000/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -61,7 +61,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" -diff -urN gcc-3.4.1-dist/gcc/config/rs6000/sysv4.h gcc-3.4.1/gcc/config/rs6000/sysv4.h ---- gcc-3.4.1-dist/gcc/config/rs6000/sysv4.h 2004-06-10 01:39:50.000000000 -0500 -+++ gcc-3.4.1/gcc/config/rs6000/sysv4.h 2004-08-12 15:54:43.000000000 -0500 -@@ -947,6 +947,7 @@ - mcall-linux : %(link_os_linux) ; \ - mcall-gnu : %(link_os_gnu) ; \ - mcall-netbsd : %(link_os_netbsd) ; \ -+ mcall-linux-uclibc : %(link_os_linux_uclibc); \ - mcall-openbsd: %(link_os_openbsd) ; \ - : %(link_os_default) }" - -@@ -1124,6 +1125,10 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " - #endif -@@ -1290,6 +1295,7 @@ - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_gnu", LINK_OS_GNU_SPEC }, \ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ -diff -urN gcc-3.4.1-dist/gcc/config/sh/linux.h gcc-3.4.1/gcc/config/sh/linux.h ---- gcc-3.4.1-dist/gcc/config/sh/linux.h 2004-01-11 20:29:13.000000000 -0600 -+++ gcc-3.4.1/gcc/config/sh/linux.h 2004-08-12 15:54:43.000000000 -0500 -@@ -73,12 +73,21 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define SUBTARGET_LINK_SPEC \ -+ "%{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}" -+#else - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}" -+#endif - - #undef LIB_SPEC - #define LIB_SPEC \ -diff -urN gcc-3.4.1-dist/gcc/config/sh/t-linux-uclibc gcc-3.4.1/gcc/config/sh/t-linux-uclibc ---- gcc-3.4.1-dist/gcc/config/sh/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/sh/t-linux-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,13 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES -+LIB1ASMFUNCS_CACHE = _ic_invalidate -+ -+LIB2FUNCS_EXTRA= -+ -+MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) m3e/m4 -+MULTILIB_DIRNAMES= -+MULTILIB_MATCHES = -+MULTILIB_EXCEPTIONS= -+ -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o -diff -urN gcc-3.4.1-dist/gcc/config/sh/t-sh64-uclibc gcc-3.4.1/gcc/config/sh/t-sh64-uclibc ---- gcc-3.4.1-dist/gcc/config/sh/t-sh64-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/sh/t-sh64-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,13 @@ -+EXTRA_MULTILIB_PARTS= crt1.o crti.o crtn.o crtbegin.o crtend.o -+ -+LIB1ASMFUNCS = \ -+ _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ -+ _shcompact_call_trampoline _shcompact_return_trampoline \ -+ _shcompact_incoming_args _ic_invalidate _nested_trampoline \ -+ _push_pop_shmedia_regs \ -+ _udivdi3 _divdi3 _umoddi3 _moddi3 -+ -+MULTILIB_OPTIONS = $(MULTILIB_ENDIAN) m5-32media-nofpu/m5-compact/m5-compact-nofpu/m5-64media/m5-64media-nofpu -+MULTILIB_DIRNAMES= $(MULTILIB_ENDIAN) nofpu compact nofpu/compact media64 nofpu/media64 -+MULTILIB_MATCHES= -+MULTILIB_EXCEPTIONS= -diff -urN gcc-3.4.1-dist/gcc/config/t-linux-uclibc gcc-3.4.1/gcc/config/t-linux-uclibc ---- gcc-3.4.1-dist/gcc/config/t-linux-uclibc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/gcc/config/t-linux-uclibc 2004-08-12 15:54:43.000000000 -0500 -@@ -0,0 +1,15 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+# Compile crtbeginS.o and crtendS.o with pic. -+CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC -+# Compile libgcc2.a with pic. -+TARGET_LIBGCC2_CFLAGS = -fPIC -+ -+# Override t-slibgcc-elf-ver to export some libgcc symbols with -+# the symbol versions that glibc used. -+SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver -+ -+# Use unwind-dw2-fde -+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \ -+ $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c -+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h -diff -urN gcc-3.4.1-dist/gcc/config.gcc gcc-3.4.1/gcc/config.gcc ---- gcc-3.4.1-dist/gcc/config.gcc 2004-04-21 10:12:35.000000000 -0500 -+++ gcc-3.4.1/gcc/config.gcc 2004-08-12 15:59:46.000000000 -0500 -@@ -664,6 +664,12 @@ - extra_parts="" - use_collect2=yes - ;; -+arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc -+ tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" -+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+ gnu_ld=yes -+ ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" -@@ -725,6 +731,10 @@ - tmake_file="cris/t-cris cris/t-elfmulti" - gas=yes - ;; -+cris-*-linux-uclibc*) -+ tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" -+ tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux-uclibc" -+ ;; - cris-*-linux*) - tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h" - tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux" -@@ -988,6 +998,11 @@ - thread_file='single' - fi - ;; -+i[34567]86-*-linux*uclibc*) # Intel 80386's running GNU/Linux -+ # with ELF format using uClibc -+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h" -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc i386/t-crtstuff" -+ ;; - i[34567]86-*-linux*) # Intel 80386's running GNU/Linux - # with ELF format using glibc 2 - # aka GNU/Linux C library 6 -@@ -1547,6 +1562,16 @@ - gnu_ld=yes - gas=yes - ;; -+mips*-*-linux-uclibc*) # Linux MIPS, either endian. uClibc -+ tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" -+ case ${target} in -+ mipsisa32*-*) -+ target_cpu_default="MASK_SOFT_FLOAT" -+ tm_defines="MIPS_ISA_DEFAULT=32" -+ ;; -+ esac -+ tmake_file="t-slibgcc-elf-ver t-linux-uclibc" -+ ;; - mips*-*-linux*) # Linux MIPS, either endian. - tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h" - case ${target} in -@@ -1764,6 +1789,10 @@ - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h" - tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" - ;; -+powerpc-*-linux-uclibc*) -+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" -+ tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux-uclibc rs6000/t-ppccomm" -+ ;; - powerpc-*-linux*) - tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h" - tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm" -@@ -1916,7 +1945,7 @@ - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h" - ;; - sh-*-linux* | sh[2346lbe]*-*-linux*) -- tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux" -+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver" - case ${target} in - sh*be-*-* | sh*eb-*-*) ;; - *) -@@ -1924,9 +1953,17 @@ - tmake_file="${tmake_file} sh/t-le" - ;; - esac -- tmake_file="${tmake_file} sh/t-linux" -+ case ${target} in -+ *-*-linux-uclibc*) tmake_file="${tmake_file} t-linux-uclibc sh/t-linux-uclibc" ;; -+ *) tmake_file="${tmake_file} t-linux sh/t-linux" ;; -+ esac - tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h" - case ${target} in -+ sh64*-*-linux-uclibc*) -+ tmake_file="${tmake_file} sh/t-sh64-uclibc" -+ tm_file="${tm_file} sh/sh64.h" -+ extra_headers="shmedia.h ushmedia.h sshmedia.h" -+ ;; - sh64*) - tmake_file="${tmake_file} sh/t-sh64" - tm_file="${tm_file} sh/sh64.h" -diff -urN gcc-3.4.1-dist/libtool.m4 gcc-3.4.1/libtool.m4 ---- gcc-3.4.1-dist/libtool.m4 2004-05-18 04:08:37.000000000 -0500 -+++ gcc-3.4.1/libtool.m4 2004-08-12 15:54:43.000000000 -0500 -@@ -689,6 +689,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] -diff -urN gcc-3.4.1-dist/ltconfig gcc-3.4.1/ltconfig ---- gcc-3.4.1-dist/ltconfig 2004-03-05 15:05:41.000000000 -0600 -+++ gcc-3.4.1/ltconfig 2004-08-12 15:55:48.000000000 -0500 -@@ -602,6 +602,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in -+linux-uclibc*) ;; - linux-gnu*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac -@@ -1262,6 +1263,24 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ # Note: copied from linux-gnu, and may not be appropriate. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no diff --git a/toolchain/gcc/3.4.1/200-uclibc-locale.patch b/toolchain/gcc/3.4.1/200-uclibc-locale.patch deleted file mode 100644 index 51cd7fc2e1..0000000000 --- a/toolchain/gcc/3.4.1/200-uclibc-locale.patch +++ /dev/null @@ -1,3241 +0,0 @@ -diff -urN gcc-3.4.1-dist/libstdc++-v3/acinclude.m4 gcc-3.4.1/libstdc++-v3/acinclude.m4 ---- gcc-3.4.1-dist/libstdc++-v3/acinclude.m4 2004-05-14 05:53:11.000000000 -0500 -+++ gcc-3.4.1/libstdc++-v3/acinclude.m4 2004-08-12 15:54:48.000000000 -0500 -@@ -996,7 +996,7 @@ - AC_MSG_CHECKING([for C locale to use]) - GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], - [use MODEL for target locale package], -- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) -+ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) - - # If they didn't use this option switch, or if they specified --enable - # with no specific model, we'll have to look for one. If they -@@ -1012,6 +1012,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ x*-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1138,6 +1141,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.1-dist/libstdc++-v3/aclocal.m4 gcc-3.4.1/libstdc++-v3/aclocal.m4 ---- gcc-3.4.1-dist/libstdc++-v3/aclocal.m4 2004-05-15 15:43:59.000000000 -0500 -+++ gcc-3.4.1/libstdc++-v3/aclocal.m4 2004-08-12 16:14:37.000000000 -0500 -@@ -1025,6 +1025,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ x*-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1151,6 +1154,41 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.4.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,59 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.4.1/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/c_locale.cc 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,160 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include // For errno -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#warning should dummy __newlocale check for C|POSIX ? -+#define __newlocale(a, b, c) NULL -+#define __freelocale(a) ((void)0) -+#define __duplocale(a) __c_locale() -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " -+ "name not valid")); -+ } -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+ if (_S_get_c_locale() != __cloc) -+ __freelocale(__cloc); -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+ { return __duplocale(__cloc); } -+} // namespace std -+ -+namespace __gnu_cxx -+{ -+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES", -+#if _GLIBCXX_NUM_CATEGORIES != 0 -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} -+ -+namespace std -+{ -+ const char* const* const locale::_S_categories = __gnu_cxx::category_names; -+} // namespace std -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.1/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/c_locale.h 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,119 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include // get std::strlen -+#include // get std::snprintf or std::sprintf -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCXX_C_LOCALE_GNU for -+#endif -+#define _GLIBCXX_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCXX_NUM_CATEGORIES 6 -+#define _GLIBCXX_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec = -1) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec = -1) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = std::setlocale(LC_ALL, NULL); -+ char* __sav = new char[std::strlen(__old) + 1]; -+ std::strcpy(__sav, __old); -+ std::setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ int __ret; -+ if (__prec >= 0) -+ __ret = std::snprintf(__out, __size, __fmt, __prec, __v); -+ else -+ __ret = std::snprintf(__out, __size, __fmt, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ std::setlocale(LC_ALL, __sav); -+ delete [] __sav; -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.4.1/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,306 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // wcsnrtombs is *very* fast but stops if encounters NUL characters: -+ // in case we fall back to wcrtomb and then continue, in a loop. -+ // NB: wcsnrtombs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', -+ __from_end - __from_next); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ const size_t __conv = wcsnrtombs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // wcrtomb. -+ for (; __from < __from_next; ++__from) -+ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ extern_type __buf[MB_LEN_MAX]; -+ __tmp_state = __state; -+ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); -+ if (__conv > static_cast(__to_end - __to_next)) -+ __ret = partial; -+ else -+ { -+ memcpy(__to_next, __buf, __conv); -+ __state = __tmp_state; -+ __to_next += __conv; -+ ++__from_next; -+ } -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we store a L'\0' and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from_next, '\0', -+ __from_end -+ - __from_next)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ size_t __conv = mbsnrtowcs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (;; ++__to_next, __from += __conv) -+ { -+ __conv = mbrtowc(__to_next, __from, __from_end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __from_next = __from; -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ // It is unclear what to return in this case (see DR 382). -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ if (__to_next < __to_end) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from_next; -+ *__to_next++ = L'\0'; -+ } -+ else -+ __ret = partial; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_encoding() const throw() -+ { -+ // XXX This implementation assumes that the encoding is -+ // stateless and is either single-byte or variable-width. -+ int __ret = 0; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ if (MB_CUR_MAX == 1) -+ __ret = 1; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_max_length() const throw() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ // XXX Probably wrong for stateful encodings. -+ int __ret = MB_CUR_MAX; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_length(state_type& __state, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { -+ int __ret = 0; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we advance past it and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ -+ // A dummy internal buffer is needed in order for mbsnrtocws to consider -+ // its fourth parameter (it wouldn't with NULL as first parameter). -+ wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) -+ * __max)); -+ while (__from < __end && __max) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from, '\0', -+ __end -+ - __from)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __end; -+ -+ const extern_type* __tmp_from = __from; -+ size_t __conv = mbsnrtowcs(__to, &__from, -+ __from_chunk_end - __from, -+ __max, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (__from = __tmp_from;; __from += __conv) -+ { -+ __conv = mbrtowc(NULL, __from, __end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __state = __tmp_state; -+ __ret += __from - __tmp_from; -+ break; -+ } -+ if (!__from) -+ __from = __from_chunk_end; -+ -+ __ret += __from - __tmp_from; -+ __max -= __conv; -+ -+ if (__from < __end && __max) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from; -+ ++__ret; -+ --__max; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.4.1/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/collate_members.cc 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.4.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,300 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_ctype); -+ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; -+ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; -+ this->_M_table = this->_M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = 0; -+ } -+ return __ret; -+ } -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__m & _M_bit[__bitcur] -+ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ { -+ __ret = true; -+ break; -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (; __lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ __m |= _M_bit[__bitcur]; -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { return _M_widen[static_cast(__c)]; } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+ while (__lo < __hi) -+ { -+ *__dest = _M_widen[static_cast(*__lo)]; -+ ++__lo; -+ ++__dest; -+ } -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) -+ return _M_narrow[__wc]; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ const int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ if (_M_narrow_ok) -+ while (__lo < __hi) -+ { -+ if (*__lo >= 0 && *__lo < 128) -+ *__dest = _M_narrow[*__lo]; -+ else -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ ++__lo; -+ ++__dest; -+ } -+ else -+ while (__lo < __hi) -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ ++__lo; -+ ++__dest; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ void -+ ctype::_M_initialize_ctype() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wint_t __i; -+ for (__i = 0; __i < 128; ++__i) -+ { -+ const int __c = wctob(__i); -+ if (__c == EOF) -+ break; -+ else -+ _M_narrow[__i] = static_cast(__c); -+ } -+ if (__i == 128) -+ _M_narrow_ok = true; -+ else -+ _M_narrow_ok = false; -+ for (size_t __j = 0; -+ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) -+ _M_widen[__j] = btowc(__j); -+ -+ for (size_t __k = 0; __k <= 11; ++__k) -+ { -+ _M_bit[__k] = static_cast(_ISbit(__k)); -+ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+#endif // _GLIBCXX_USE_WCHAR_T -+} -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.4.1/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/messages_members.cc 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+# elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.4.1/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/messages_members.h 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,118 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), -+ _M_name_messages(_S_get_c_name()) -+ { } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), -+ _M_name_messages(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_messages = __tmp; -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+ if (_M_name_messages != _S_get_c_name()) -+ delete [] _M_name_messages; -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+ if (this->_M_name_messages != locale::facet::_S_get_c_name()) -+ delete [] this->_M_name_messages; -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ this->_M_name_messages = __tmp; -+ -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_messages); -+ this->_S_create_c_locale(this->_M_c_locale_messages, __s); -+ } -+ } -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.4.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,698 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ __ret.field[0] = sign; -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[2] = space; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[1] = space; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ else -+ { -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ default: -+ ; -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == true -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == false -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ { -+ uc = static_cast(money_base::_S_atoms[__i]); -+ _M_data->_M_atoms[__i] = btowc(uc); -+ } -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#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; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ { -+ uc = static_cast(money_base::_S_atoms[__i]); -+ _M_data->_M_atoms[__i] = btowc(uc); -+ } -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#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; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+#endif -+} -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.4.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2004-08-12 16:13:31.000000000 -0500 -@@ -0,0 +1,183 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, -+ __cloc)); -+ -+ // Check for NULL, which implies no grouping. -+ if (_M_data->_M_thousands_sep == '\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = "true"; -+ _M_data->_M_truename_size = strlen(_M_data->_M_truename); -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = "false"; -+ _M_data->_M_falsename_size = strlen(_M_data->_M_falsename); -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_S_get_c_locale()); -+#endif -+ // Use ctype::widen code without the facet... -+ unsigned char uc; -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ { -+ uc = static_cast(__num_base::_S_atoms_out[__i]); -+ _M_data->_M_atoms_out[__i] = btowc(uc); -+ } -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ { -+ uc = static_cast(__num_base::_S_atoms_in[__j]); -+ _M_data->_M_atoms_in[__j] = btowc(uc); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#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; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union __s_and_w { const char *__s; unsigned int __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = static_cast(__u.__w); -+ -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = static_cast(__u.__w); -+#endif -+ -+ if (_M_data->_M_thousands_sep == L'\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = L"true"; -+ _M_data->_M_truename_size = wcslen(_M_data->_M_truename); -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = L"false"; -+ _M_data->_M_falsename_size = wcslen(_M_data->_M_falsename); -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ #endif -+} -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.4.1/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/time_members.cc 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,347 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __strftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = "%m/%d/%y"; -+ _M_data->_M_date_era_format = "%m/%d/%y"; -+ _M_data->_M_time_format = "%H:%M:%S"; -+ _M_data->_M_time_era_format = "%H:%M:%S"; -+ _M_data->_M_date_time_format = ""; -+ _M_data->_M_date_time_era_format = ""; -+ _M_data->_M_am = "AM"; -+ _M_data->_M_pm = "PM"; -+ _M_data->_M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = "Sunday"; -+ _M_data->_M_day2 = "Monday"; -+ _M_data->_M_day3 = "Tuesday"; -+ _M_data->_M_day4 = "Wednesday"; -+ _M_data->_M_day5 = "Thursday"; -+ _M_data->_M_day6 = "Friday"; -+ _M_data->_M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = "Sun"; -+ _M_data->_M_aday2 = "Mon"; -+ _M_data->_M_aday3 = "Tue"; -+ _M_data->_M_aday4 = "Wed"; -+ _M_data->_M_aday5 = "Thu"; -+ _M_data->_M_aday6 = "Fri"; -+ _M_data->_M_aday7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = "January"; -+ _M_data->_M_month02 = "February"; -+ _M_data->_M_month03 = "March"; -+ _M_data->_M_month04 = "April"; -+ _M_data->_M_month05 = "May"; -+ _M_data->_M_month06 = "June"; -+ _M_data->_M_month07 = "July"; -+ _M_data->_M_month08 = "August"; -+ _M_data->_M_month09 = "September"; -+ _M_data->_M_month10 = "October"; -+ _M_data->_M_month11 = "November"; -+ _M_data->_M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = "Jan"; -+ _M_data->_M_amonth02 = "Feb"; -+ _M_data->_M_amonth03 = "Mar"; -+ _M_data->_M_amonth04 = "Apr"; -+ _M_data->_M_amonth05 = "May"; -+ _M_data->_M_amonth06 = "Jun"; -+ _M_data->_M_amonth07 = "Jul"; -+ _M_data->_M_amonth08 = "Aug"; -+ _M_data->_M_amonth09 = "Sep"; -+ _M_data->_M_amonth10 = "Oct"; -+ _M_data->_M_amonth11 = "Nov"; -+ _M_data->_M_amonth12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc); -+ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = L"%m/%d/%y"; -+ _M_data->_M_date_era_format = L"%m/%d/%y"; -+ _M_data->_M_time_format = L"%H:%M:%S"; -+ _M_data->_M_time_era_format = L"%H:%M:%S"; -+ _M_data->_M_date_time_format = L""; -+ _M_data->_M_date_time_era_format = L""; -+ _M_data->_M_am = L"AM"; -+ _M_data->_M_pm = L"PM"; -+ _M_data->_M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = L"Sunday"; -+ _M_data->_M_day2 = L"Monday"; -+ _M_data->_M_day3 = L"Tuesday"; -+ _M_data->_M_day4 = L"Wednesday"; -+ _M_data->_M_day5 = L"Thursday"; -+ _M_data->_M_day6 = L"Friday"; -+ _M_data->_M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = L"Sun"; -+ _M_data->_M_aday2 = L"Mon"; -+ _M_data->_M_aday3 = L"Tue"; -+ _M_data->_M_aday4 = L"Wed"; -+ _M_data->_M_aday5 = L"Thu"; -+ _M_data->_M_aday6 = L"Fri"; -+ _M_data->_M_aday7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = L"January"; -+ _M_data->_M_month02 = L"February"; -+ _M_data->_M_month03 = L"March"; -+ _M_data->_M_month04 = L"April"; -+ _M_data->_M_month05 = L"May"; -+ _M_data->_M_month06 = L"June"; -+ _M_data->_M_month07 = L"July"; -+ _M_data->_M_month08 = L"August"; -+ _M_data->_M_month09 = L"September"; -+ _M_data->_M_month10 = L"October"; -+ _M_data->_M_month11 = L"November"; -+ _M_data->_M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = L"Jan"; -+ _M_data->_M_amonth02 = L"Feb"; -+ _M_data->_M_amonth03 = L"Mar"; -+ _M_data->_M_amonth04 = L"Apr"; -+ _M_data->_M_amonth05 = L"May"; -+ _M_data->_M_amonth06 = L"Jun"; -+ _M_data->_M_amonth07 = L"Jul"; -+ _M_data->_M_amonth08 = L"Aug"; -+ _M_data->_M_amonth09 = L"Sep"; -+ _M_data->_M_amonth10 = L"Oct"; -+ _M_data->_M_amonth11 = L"Nov"; -+ _M_data->_M_amonth12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+ _M_data->_M_date_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+ _M_data->_M_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+ _M_data->_M_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+ _M_data->_M_date_time_format = reinterpret_cast(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+ _M_data->_M_date_time_era_format = reinterpret_cast(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+ _M_data->_M_am = reinterpret_cast(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+ _M_data->_M_pm = reinterpret_cast(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+ _M_data->_M_am_pm_format = reinterpret_cast(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+ _M_data->_M_day2 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+ _M_data->_M_day3 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+ _M_data->_M_day4 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+ _M_data->_M_day5 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+ _M_data->_M_day6 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+ _M_data->_M_day7 = reinterpret_cast(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+ _M_data->_M_aday2 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+ _M_data->_M_aday3 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+ _M_data->_M_aday4 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+ _M_data->_M_aday5 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+ _M_data->_M_aday6 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+ _M_data->_M_aday7 = reinterpret_cast(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+ _M_data->_M_month02 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+ _M_data->_M_month03 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+ _M_data->_M_month04 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+ _M_data->_M_month05 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+ _M_data->_M_month06 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+ _M_data->_M_month07 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+ _M_data->_M_month08 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+ _M_data->_M_month09 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+ _M_data->_M_month10 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+ _M_data->_M_month11 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+ _M_data->_M_month12 = reinterpret_cast(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+ _M_data->_M_amonth02 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+ _M_data->_M_amonth03 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+ _M_data->_M_amonth04 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+ _M_data->_M_amonth05 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+ _M_data->_M_amonth06 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+ _M_data->_M_amonth07 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+ _M_data->_M_amonth08 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+ _M_data->_M_amonth09 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+ _M_data->_M_amonth10 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+ _M_data->_M_amonth11 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+ _M_data->_M_amonth12 = reinterpret_cast(__nl_langinfo_l(_NL_WABMON_12, __cloc)); -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.4.1/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-3.4.1-dist/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/locale/uclibc/time_members.h 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,68 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -+ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_timepunct = __tmp; -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+ if (_M_name_timepunct != _S_get_c_name()) -+ delete [] _M_name_timepunct; -+ delete _M_data; -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.4.1/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-3.4.1-dist/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/os/uclibc/ctype_base.h 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,58 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISalpha | _ISdigit | _ISpunct; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalpha | _ISdigit; -+ }; -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.4.1/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-3.4.1-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/os/uclibc/ctype_inline.h 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.4.1/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-3.4.1-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,92 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { return __C_ctype_b; } -+ -+ ctype::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-3.4.1-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.4.1/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-3.4.1-dist/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/config/os/uclibc/os_defines.h 2004-08-12 15:54:48.000000000 -0500 -@@ -0,0 +1,44 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif -diff -urN gcc-3.4.1-dist/libstdc++-v3/configure gcc-3.4.1/libstdc++-v3/configure ---- gcc-3.4.1-dist/libstdc++-v3/configure 2004-06-25 17:02:47.000000000 -0500 -+++ gcc-3.4.1/libstdc++-v3/configure 2004-08-12 16:20:43.000000000 -0500 -@@ -3878,6 +3878,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -5545,6 +5550,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case x${target_os} in -+ xlinux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu) - cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" -@@ -5759,6 +5767,77 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ echo "$as_me:$LINENO: result: uclibc" >&5 -+echo "${ECHO_T}uclibc" >&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_check_msgfmt+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_check_msgfmt="yes" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt=$ac_cv_prog_check_msgfmt -+if test -n "$check_msgfmt"; then -+ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 -+echo "${ECHO_T}$check_msgfmt" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-3.4.1-dist/libstdc++-v3/configure.host gcc-3.4.1/libstdc++-v3/configure.host ---- gcc-3.4.1-dist/libstdc++-v3/configure.host 2004-03-18 11:36:12.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/configure.host 2004-08-12 15:54:48.000000000 -0500 -@@ -217,6 +217,12 @@ - ;; - esac - -+# Override for uClibc since linux-uclibc gets mishandled above. -+case "${host_os}" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; -+esac - - # Set any OS-dependent and CPU-dependent bits. - # THIS TABLE IS SORTED. KEEP IT THAT WAY. -diff -urN gcc-3.4.1-dist/libstdc++-v3/crossconfig.m4 gcc-3.4.1/libstdc++-v3/crossconfig.m4 ---- gcc-3.4.1-dist/libstdc++-v3/crossconfig.m4 2004-06-10 12:12:14.000000000 -0500 -+++ gcc-3.4.1/libstdc++-v3/crossconfig.m4 2004-08-12 15:54:48.000000000 -0500 -@@ -122,6 +122,99 @@ - ;; - esac - ;; -+ *-uclibc*) -+# Temporary hack until we implement the float versions of the libm funcs -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCXX_CHECK_LINKER_FEATURES -+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCXX_CHECK_WCHAR_T_SUPPORT -+ -+ # For LFS. -+ AC_DEFINE(HAVE_INT64_T) -+ case "$target" in -+ *-uclinux*) -+ # Don't enable LFS with uClinux -+ ;; -+ *) -+ AC_DEFINE(_GLIBCXX_USE_LFS) -+ esac -+ -+ # For showmanyc_helper(). -+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) -+ GLIBCXX_CHECK_POLL -+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG -+ -+ # For xsputn_2(). -+ AC_CHECK_HEADERS(sys/uio.h) -+ GLIBCXX_CHECK_WRITEV -+ -+# AC_DEFINE(HAVE_ACOSF) -+# AC_DEFINE(HAVE_ASINF) -+# AC_DEFINE(HAVE_ATANF) -+# AC_DEFINE(HAVE_ATAN2F) -+ AC_DEFINE(HAVE_CEILF) -+ AC_DEFINE(HAVE_COPYSIGN) -+# AC_DEFINE(HAVE_COPYSIGNF) -+# AC_DEFINE(HAVE_COSF) -+# AC_DEFINE(HAVE_COSHF) -+# AC_DEFINE(HAVE_EXPF) -+# AC_DEFINE(HAVE_FABSF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ AC_DEFINE(HAVE_FLOORF) -+# AC_DEFINE(HAVE_FMODF) -+# AC_DEFINE(HAVE_FREXPF) -+ AC_DEFINE(HAVE_HYPOT) -+# AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+# AC_DEFINE(HAVE_LOGF) -+# AC_DEFINE(HAVE_LOG10F) -+# AC_DEFINE(HAVE_MODFF) -+# AC_DEFINE(HAVE_SINF) -+# AC_DEFINE(HAVE_SINHF) -+# AC_DEFINE(HAVE_SINCOS) -+# AC_DEFINE(HAVE_SINCOSF) -+ AC_DEFINE(HAVE_SQRTF) -+# AC_DEFINE(HAVE_TANF) -+# AC_DEFINE(HAVE_TANHF) -+ if test x"long_double_math_on_this_cpu" = x"yes"; then -+ AC_MSG_ERROR([long_double_math_on_this_cpu is yes!]) -+# AC_DEFINE(HAVE_ACOSL) -+# AC_DEFINE(HAVE_ASINL) -+# AC_DEFINE(HAVE_ATANL) -+# AC_DEFINE(HAVE_ATAN2L) -+# AC_DEFINE(HAVE_CEILL) -+# AC_DEFINE(HAVE_COPYSIGNL) -+# AC_DEFINE(HAVE_COSL) -+# AC_DEFINE(HAVE_COSHL) -+# AC_DEFINE(HAVE_EXPL) -+# AC_DEFINE(HAVE_FABSL) -+# AC_DEFINE(HAVE_FINITEL) -+# AC_DEFINE(HAVE_FLOORL) -+# AC_DEFINE(HAVE_FMODL) -+# AC_DEFINE(HAVE_FREXPL) -+# AC_DEFINE(HAVE_HYPOTL) -+# AC_DEFINE(HAVE_ISINFL) -+# AC_DEFINE(HAVE_ISNANL) -+# AC_DEFINE(HAVE_LOGL) -+# AC_DEFINE(HAVE_LOG10L) -+# AC_DEFINE(HAVE_MODFL) -+# AC_DEFINE(HAVE_POWL) -+# AC_DEFINE(HAVE_SINL) -+# AC_DEFINE(HAVE_SINHL) -+# AC_DEFINE(HAVE_SINCOSL) -+# AC_DEFINE(HAVE_SQRTL) -+# AC_DEFINE(HAVE_TANL) -+# AC_DEFINE(HAVE_TANHL) -+ fi -+ ;; - *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ - machine/endian.h machine/param.h sys/machine.h sys/types.h \ -@@ -136,7 +229,7 @@ - AC_DEFINE(HAVE_INT64_T) - case "$target" in - *-uclinux*) -- # Don't enable LFS with uClibc -+ # Don't enable LFS with uClinux - ;; - *) - AC_DEFINE(_GLIBCXX_USE_LFS) -diff -urN gcc-3.4.1-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-3.4.1/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-3.4.1-dist/libstdc++-v3/include/c_compatibility/wchar.h 2003-12-08 21:51:45.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/include/c_compatibility/wchar.h 2004-08-12 16:14:07.000000000 -0500 -@@ -101,7 +101,9 @@ - using std::wmemcpy; - using std::wmemmove; - using std::wmemset; -+#if _GLIBCXX_HAVE_WCSFTIME - using std::wcsftime; -+#endif - - #if _GLIBCXX_USE_C99 - using std::wcstold; -diff -urN gcc-3.4.1-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.4.1/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-3.4.1-dist/libstdc++-v3/include/c_std/std_cwchar.h 2003-12-08 21:44:35.000000000 -0600 -+++ gcc-3.4.1/libstdc++-v3/include/c_std/std_cwchar.h 2004-08-12 15:54:48.000000000 -0500 -@@ -179,7 +179,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#if _GLIBCXX_HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; diff --git a/toolchain/gcc/3.4.1/400-mips-delay-slot.patch b/toolchain/gcc/3.4.1/400-mips-delay-slot.patch deleted file mode 100644 index 8111dba185..0000000000 --- a/toolchain/gcc/3.4.1/400-mips-delay-slot.patch +++ /dev/null @@ -1,46 +0,0 @@ -http://www.linux-mips.org/archives/linux-mips/2004-09/msg00000.html - -Atsushi Nemoto writes: ->/ Is this a get_user's problem or gcc's?/ - -The latter. gcc is putting the empty asm: - - __asm__ ("":"=r" (__gu_val)); - -into the delay slot of the call. - -Part of the problem is that gcc estimates the length of an asm to be the -number of instruction separators + 1. This means that it estimates the -asm above to be one instruction long, which is perhaps a little silly -for an empty string. - -But the real problem is that gcc should never trust this estimate anyway, -since each "instruction" could obviously be a multi-instruction macro. -gcc should certainly never put asms into delay slots. - -FWIW, I don't think the bug is specific to 3.3 or 3.4. It could -probably trigger for other gcc versions too. It is highly dependent -on scheduling though. - -The attached 3.4.x patch fixes the problem there, but if you want to work -around it for old versions, just avoid using empty asms if you can, -or make them volatile if you can't. - -Of course, the problem isn't confined to empty asms. If you have an asm -with a single, multi-instruction macro, gcc might try putting that in a -delay slot too. You should at least get an assembler warning in that case. - -Richard - - ---- gcc-3.4.1/gcc/config/mips/mips.md-orig 2004-09-02 10:38:36.000000000 -0500 -+++ gcc-3.4.1/gcc/config/mips/mips.md 2004-09-02 10:38:42.000000000 -0500 -@@ -251,7 +251,7 @@ - - ;; Can the instruction be put into a delay slot? - (define_attr "can_delay" "no,yes" -- (if_then_else (and (eq_attr "type" "!branch,call,jump") -+ (if_then_else (and (eq_attr "type" "!branch,call,jump,multi") - (and (eq_attr "hazard" "none") - (eq_attr "single_insn" "yes"))) - (const_string "yes") diff --git a/toolchain/gcc/3.4.1/800-arm-bigendian.patch b/toolchain/gcc/3.4.1/800-arm-bigendian.patch deleted file mode 100644 index 0bae8f474c..0000000000 --- a/toolchain/gcc/3.4.1/800-arm-bigendian.patch +++ /dev/null @@ -1,70 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -See http://gcc.gnu.org/PR16350 - -diff -urN gcc-3.4.1-dist/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h ---- gcc-3.4.1-dist/gcc/config/arm/linux-elf.h 2004-08-16 16:01:50.000000000 -0500 -+++ gcc-3.4.1/gcc/config/arm/linux-elf.h 2004-08-16 15:43:40.000000000 -0500 -@@ -30,17 +30,34 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - -+/* -+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* -+ * (big endian) configurations. -+ */ -+#if TARGET_BIG_ENDIAN_DEFAULT -+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END -+#define TARGET_ENDIAN_OPTION "mbig-endian" -+#define TARGET_LINKER_EMULATION "armelfb_linux" -+#else -+#define TARGET_ENDIAN_DEFAULT 0 -+#define TARGET_ENDIAN_OPTION "mlittle-endian" -+#define TARGET_LINKER_EMULATION "armelf_linux" -+#endif -+ - /* Default is to use APCS-32 mode. */ - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_APCS_32 | \ -+ ARM_FLAG_MMU_TRAPS | \ -+ TARGET_ENDIAN_DEFAULT ) - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - --#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" -+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -101,7 +118,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - #endif - -diff -urN gcc-3.4.1-dist/gcc/config.gcc gcc-3.4.1/gcc/config.gcc ---- gcc-3.4.1-dist/gcc/config.gcc 2004-08-16 16:01:50.000000000 -0500 -+++ gcc-3.4.1/gcc/config.gcc 2004-08-16 16:01:25.000000000 -0500 -@@ -672,6 +672,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $target in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/toolchain/gcc/3.4.1/810-arm-bigendian-uclibc.patch b/toolchain/gcc/3.4.1/810-arm-bigendian-uclibc.patch deleted file mode 100644 index a4d87e2317..0000000000 --- a/toolchain/gcc/3.4.1/810-arm-bigendian-uclibc.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff -urN gcc-3.4.1-dist/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h ---- gcc-3.4.1-dist/gcc/config/arm/linux-elf.h 2004-08-16 16:08:18.000000000 -0500 -+++ gcc-3.4.1/gcc/config/arm/linux-elf.h 2004-08-16 16:06:24.000000000 -0500 -@@ -107,7 +107,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - #else - #define LINK_SPEC "%{h*} %{version:-v} \ -diff -urN gcc-3.4.1-dist/gcc/config.gcc gcc-3.4.1/gcc/config.gcc ---- gcc-3.4.1-dist/gcc/config.gcc 2004-08-16 16:08:18.000000000 -0500 -+++ gcc-3.4.1/gcc/config.gcc 2004-08-16 16:03:25.000000000 -0500 -@@ -666,6 +666,11 @@ - ;; - arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $target in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/toolchain/gcc/3.4.1/arm-softfloat.patch.conditional b/toolchain/gcc/3.4.1/arm-softfloat.patch.conditional deleted file mode 100644 index 19d1b90dac..0000000000 --- a/toolchain/gcc/3.4.1/arm-softfloat.patch.conditional +++ /dev/null @@ -1,270 +0,0 @@ -Note... modified my mjn3 to not conflict with the big endian arm patch. -Warning!!! Only the linux target is aware of TARGET_ENDIAN_DEFAULT. -Also changed - #define SUBTARGET_EXTRA_ASM_SPEC "\ - %{!mcpu=*:-mcpu=xscale} \ - %{mhard-float:-mfpu=fpa} \ - %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" -to - #define SUBTARGET_EXTRA_ASM_SPEC "\ - %{mhard-float:-mfpu=fpa} \ - %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" -in gcc/config/arm/linux-elf.h. -# -# Submitted: -# -# Dimitry Andric , 2004-05-01 -# -# Description: -# -# Nicholas Pitre released this patch for gcc soft-float support here: -# http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-October/006436.html -# -# This version has been adapted to work with gcc 3.4.0. -# -# The original patch doesn't distinguish between softfpa and softvfp modes -# in the way Nicholas Pitre probably meant. His description is: -# -# "Default is to use APCS-32 mode with soft-vfp. The old Linux default for -# floats can be achieved with -mhard-float or with the configure -# --with-float=hard option. If -msoft-float or --with-float=soft is used then -# software float support will be used just like the default but with the legacy -# big endian word ordering for double float representation instead." -# -# Which means the following: -# -# * If you compile without -mhard-float or -msoft-float, you should get -# software floating point, using the VFP format. The produced object file -# should have these flags in its header: -# -# private flags = 600: [APCS-32] [VFP float format] [software FP] -# -# * If you compile with -mhard-float, you should get hardware floating point, -# which always uses the FPA format. Object file header flags should be: -# -# private flags = 0: [APCS-32] [FPA float format] -# -# * If you compile with -msoft-float, you should get software floating point, -# using the FPA format. This is done for compatibility reasons with many -# existing distributions. Object file header flags should be: -# -# private flags = 200: [APCS-32] [FPA float format] [software FP] -# -# The original patch from Nicholas Pitre contained the following constructs: -# -# #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -# %{mhard-float:-mfpu=fpa} \ -# %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}" -# -# However, gcc doesn't accept this ";:" notation, used in the 3rd line. This -# is probably the reason Robert Schwebel modified it to: -# -# #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -# %{mhard-float:-mfpu=fpa} \ -# %{!mhard-float: %{msoft-float:-mfpu=softfpa -mfpu=softvfp}}" -# -# But this causes the following behaviour: -# -# * If you compile without -mhard-float or -msoft-float, the compiler generates -# software floating point instructions, but *nothing* is passed to the -# assembler, which results in an object file which has flags: -# -# private flags = 0: [APCS-32] [FPA float format] -# -# This is not correct! -# -# * If you compile with -mhard-float, the compiler generates hardware floating -# point instructions, and passes "-mfpu=fpa" to the assembler, which results -# in an object file which has the same flags as in the previous item, but now -# those *are* correct. -# -# * If you compile with -msoft-float, the compiler generates software floating -# point instructions, and passes "-mfpu=softfpa -mfpu=softvfp" (in that -# order) to the assembler, which results in an object file with flags: -# -# private flags = 600: [APCS-32] [VFP float format] [software FP] -# -# This is not correct, because the last "-mfpu=" option on the assembler -# command line determines the actual FPU convention used (which should be FPA -# in this case). -# -# Therefore, I modified this patch to get the desired behaviour. Every -# instance of the notation: -# -# %{msoft-float:-mfpu=softfpa -mfpu=softvfp} -# -# was changed to: -# -# %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp} -# -# I also did the following: -# -# * Modified all TARGET_DEFAULT macros I could find to include ARM_FLAG_VFP, to -# be consistent with Nicholas' original patch. -# * Removed any "msoft-float" or "mhard-float" from all MULTILIB_DEFAULTS -# macros I could find. I think that if you compile without any options, you -# would like to get the defaults. :) -# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed -# anymore. (The required functions are now in libgcc.) - -diff -urN gcc-3.4.1-old/gcc/config/arm/coff.h gcc-3.4.1/gcc/config/arm/coff.h ---- gcc-3.4.1-old/gcc/config/arm/coff.h 2004-02-24 08:25:22.000000000 -0600 -+++ gcc-3.4.1/gcc/config/arm/coff.h 2004-09-02 21:51:15.000000000 -0500 -@@ -31,11 +31,16 @@ - #define TARGET_VERSION fputs (" (ARM/coff)", stderr) - - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" } - #endif - - /* This is COFF, but prefer stabs. */ -diff -urN gcc-3.4.1-old/gcc/config/arm/elf.h gcc-3.4.1/gcc/config/arm/elf.h ---- gcc-3.4.1-old/gcc/config/arm/elf.h 2004-02-24 08:25:22.000000000 -0600 -+++ gcc-3.4.1/gcc/config/arm/elf.h 2004-09-02 21:51:15.000000000 -0500 -@@ -46,7 +46,9 @@ - - #ifndef SUBTARGET_ASM_FLOAT_SPEC - #define SUBTARGET_ASM_FLOAT_SPEC "\ --%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}" -+%{mapcs-float:-mfloat} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - #endif - - #ifndef ASM_SPEC -@@ -106,12 +108,17 @@ - #endif - - #ifndef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - #endif - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } -+ { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" } - #endif - - #define TARGET_ASM_FILE_START_APP_OFF true -diff -urN gcc-3.4.1-old/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h ---- gcc-3.4.1-old/gcc/config/arm/linux-elf.h 2004-09-02 21:50:52.000000000 -0500 -+++ gcc-3.4.1/gcc/config/arm/linux-elf.h 2004-09-02 22:00:49.000000000 -0500 -@@ -44,12 +44,26 @@ - #define TARGET_LINKER_EMULATION "armelf_linux" - #endif - --/* Default is to use APCS-32 mode. */ -+/* -+ * Default is to use APCS-32 mode with soft-vfp. -+ * The old Linux default for floats can be achieved with -mhard-float -+ * or with the configure --with-float=hard option. -+ * If -msoft-float or --with-float=soft is used then software float -+ * support will be used just like the default but with the legacy -+ * big endian word ordering for double float representation instead. -+ */ - #undef TARGET_DEFAULT --#define TARGET_DEFAULT \ -- ( ARM_FLAG_APCS_32 | \ -- ARM_FLAG_MMU_TRAPS | \ -- TARGET_ENDIAN_DEFAULT ) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_SOFT_FLOAT \ -+ | TARGET_ENDIAN_DEFAULT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_MMU_TRAPS ) -+ -+#undef SUBTARGET_EXTRA_ASM_SPEC -+#define SUBTARGET_EXTRA_ASM_SPEC "\ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - -@@ -57,7 +71,7 @@ - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -72,7 +86,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add - the GNU/Linux magical crtbegin.o file (see crtstuff.c) which -diff -urN gcc-3.4.1-old/gcc/config/arm/t-linux gcc-3.4.1/gcc/config/arm/t-linux ---- gcc-3.4.1-old/gcc/config/arm/t-linux 2003-09-20 16:09:07.000000000 -0500 -+++ gcc-3.4.1/gcc/config/arm/t-linux 2004-09-02 21:51:15.000000000 -0500 -@@ -4,7 +4,10 @@ - LIBGCC2_DEBUG_CFLAGS = -g0 - - LIB1ASMSRC = arm/lib1funcs.asm --LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx -+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \ -+ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \ -+ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \ -+ _fixsfsi _fixunssfsi - - # MULTILIB_OPTIONS = mhard-float/msoft-float - # MULTILIB_DIRNAMES = hard-float soft-float -diff -urN gcc-3.4.1-old/gcc/config/arm/unknown-elf.h gcc-3.4.1/gcc/config/arm/unknown-elf.h ---- gcc-3.4.1-old/gcc/config/arm/unknown-elf.h 2004-02-24 08:25:22.000000000 -0600 -+++ gcc-3.4.1/gcc/config/arm/unknown-elf.h 2004-09-02 21:51:15.000000000 -0500 -@@ -30,7 +30,12 @@ - - /* Default to using APCS-32 and software floating point. */ - #ifndef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT \ -+ ( ARM_FLAG_SOFT_FLOAT \ -+ | ARM_FLAG_VFP \ -+ | ARM_FLAG_APCS_32 \ -+ | ARM_FLAG_APCS_FRAME \ -+ | ARM_FLAG_MMU_TRAPS ) - #endif - - /* Now we define the strings used to build the spec file. */ -diff -urN gcc-3.4.1-old/gcc/config/arm/xscale-elf.h gcc-3.4.1/gcc/config/arm/xscale-elf.h ---- gcc-3.4.1-old/gcc/config/arm/xscale-elf.h 2003-07-01 18:26:43.000000000 -0500 -+++ gcc-3.4.1/gcc/config/arm/xscale-elf.h 2004-09-02 21:51:15.000000000 -0500 -@@ -49,11 +49,12 @@ - endian, regardless of the endian-ness of the memory - system. */ - --#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \ -- %{mhard-float:-mfpu=fpa} \ -- %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}" -+#define SUBTARGET_EXTRA_ASM_SPEC "\ -+%{!mcpu=*:-mcpu=xscale} \ -+%{mhard-float:-mfpu=fpa} \ -+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}" - - #ifndef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" } -+ { "mlittle-endian", "mno-thumb-interwork", "marm" } - #endif diff --git a/toolchain/gcc/Config.in b/toolchain/gcc/Config.in index b19a36deca..1ba9614be6 100644 --- a/toolchain/gcc/Config.in +++ b/toolchain/gcc/Config.in @@ -1,6 +1,4 @@ # Choose gcc version. -# WARNING -- 2.95 currently only builds for i386, arm, mips*, and powerpc. -# WARNING -- 2.95 does not currently build natively for the target. comment "Gcc Options" @@ -10,25 +8,12 @@ choice help Select the version of gcc you wish to use. - config BR2_GCC_VERSION_2_95 - bool "gcc 2.95" - depends on BR2_arm || BR2_i386 || BR2_mips || BR2_powerpc - config BR2_GCC_VERSION_3_3_3 bool "gcc 3.3.3" - config BR2_GCC_VERSION_3_3_4 - bool "gcc 3.3.4" - config BR2_GCC_VERSION_3_3_5 bool "gcc 3.3.5" - config BR2_GCC_VERSION_3_4_0 - bool "gcc 3.4.0" - - config BR2_GCC_VERSION_3_4_1 - bool "gcc 3.4.1" - config BR2_GCC_VERSION_3_4_2 bool "gcc 3.4.2" @@ -45,12 +30,8 @@ endchoice config BR2_GCC_VERSION string - default "2.95" if BR2_GCC_VERSION_2_95 default "3.3.3" if BR2_GCC_VERSION_3_3_3 - default "3.3.4" if BR2_GCC_VERSION_3_3_4 default "3.3.5" if BR2_GCC_VERSION_3_3_5 - default "3.4.0" if BR2_GCC_VERSION_3_4_0 - default "3.4.1" if BR2_GCC_VERSION_3_4_1 default "3.4.2" if BR2_GCC_VERSION_3_4_2 default "3.4.3" if BR2_GCC_VERSION_3_4_3 default "4.0.0" if BR2_GCC_VERSION_4_0_0 diff --git a/toolchain/gcc/gcc-uclibc-2.95.mk b/toolchain/gcc/gcc-uclibc-2.95.mk deleted file mode 100644 index acc5a6ed91..0000000000 --- a/toolchain/gcc/gcc-uclibc-2.95.mk +++ /dev/null @@ -1,277 +0,0 @@ -# Makefile for to build a gcc/uClibc toolchain -# -# Copyright (C) 2002-2003 Erik Andersen -# Copyright (C) 2004 Manuel Novoa III -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -ifeq ($(findstring 2.95,$(GCC_VERSION)),2.95) -GCC_VERSION:=$(strip $(GCC_VERSION)) - -GCC_SITE:=http://www.uclibc.org/downloads/toolchain -GCC_SOURCE:=gcc-20011006.tar.bz2 -GCC_DIR:=$(TOOL_BUILD_DIR)/gcc-20011006 -GCC_CAT:=bzcat - -STLPORT_SITE=http://www.stlport.org/archive -STLPORT_SOURCE=STLport-4.5.3.tar.gz -STLPORT_DIR=$(TOOL_BUILD_DIR)/STLport-4.5.3 -GCC_STRIP_HOST_BINARIES:=true - -############################################################# -# -# Setup some initial stuff -# -############################################################# - -ifeq ($(BR2_INSTALL_LIBSTDCPP),y) -TARGET_LANGUAGES:=c,c++ -STLPORT_TARGET=stlport -else -TARGET_LANGUAGES:=c -STLPORT_TARGET= -endif - -############################################################# -# -# build the first pass gcc compiler -# -############################################################# -GCC_BUILD_DIR1:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION)-initial - -$(DL_DIR)/$(GCC_SOURCE): - mkdir -p $(DL_DIR) - $(WGET) -P $(DL_DIR) $(GCC_SITE)/$(GCC_SOURCE) - -$(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE) - mkdir -p $(TOOL_BUILD_DIR) - $(GCC_CAT) $(DL_DIR)/$(GCC_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) - - touch $(GCC_DIR)/.unpacked - -$(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked - # Apply any files named gcc-*.patch from the source directory to gcc - toolchain/patch-kernel.sh $(GCC_DIR) toolchain/gcc/$(GCC_VERSION) \*.patch\* - # - # We do not wish to build the libstdc++ library provided with gcc, - # since it doesn't seem to work at all with uClibc plus gcc 2.95... - # - mv $(GCC_DIR)/libstdc++ $(GCC_DIR)/libstdc++.orig - mv $(GCC_DIR)/libio $(GCC_DIR)/libio.orig - # - touch $(GCC_DIR)/.patched - -# The --without-headers option stopped working with gcc 3.0 and has never been -# # fixed, so we need to actually have working C library header files prior to -# # the step or libgcc will not build... -$(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.patched - mkdir -p $(GCC_BUILD_DIR1) - -mkdir -p $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include - # Important! Required for limits.h to be fixed. - ln -snf include $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/sys-include - (cd $(GCC_BUILD_DIR1); PATH=$(TARGET_PATH) \ - $(GCC_DIR)/configure \ - --prefix=$(STAGING_DIR) \ - --build=$(GNU_HOST_NAME) \ - --host=$(GNU_HOST_NAME) \ - --target=$(REAL_GNU_TARGET_NAME) \ - --enable-languages=c \ - --disable-shared \ - --includedir=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include \ - --with-headers=$(TOOL_BUILD_DIR)/uClibc_dev/usr/include \ - --disable-__cxa_atexit \ - --enable-target-optspace \ - --with-gnu-ld \ - $(DISABLE_NLS) \ - $(MULTILIB) \ - $(SOFT_FLOAT_CONFIG_OPTION) \ - $(EXTRA_GCC_CONFIG_OPTIONS)); - touch $(GCC_BUILD_DIR1)/.configured - -$(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured - PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR1) all-gcc - touch $(GCC_BUILD_DIR1)/.compiled - -$(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc: $(GCC_BUILD_DIR1)/.compiled - PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR1) install-gcc - #rm -f $(STAGING_DIR)/bin/gccbug $(STAGING_DIR)/bin/gcov - #rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc $(STAGING_DIR)/share/locale - -gcc_initial: uclibc-configured binutils $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc - -gcc_initial-clean: - rm -rf $(GCC_BUILD_DIR1) - rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)* - -gcc_initial-dirclean: - rm -rf $(GCC_BUILD_DIR1) - -############################################################# -# -# STLport -- an alternative C++ library -# -############################################################# -STLPORT_PATCH=toolchain/gcc/2.95/STLport-4.5.3.patch - -$(DL_DIR)/$(STLPORT_SOURCE): - $(WGET) -P $(DL_DIR) $(STLPORT_SITE)/$(STLPORT_SOURCE) - -$(STLPORT_DIR)/Makefile: $(DL_DIR)/$(STLPORT_SOURCE) $(STLPORT_PATCH) - zcat $(DL_DIR)/$(STLPORT_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) - - cat $(STLPORT_PATCH) | patch -d $(STLPORT_DIR) -p1 - -$(STLPORT_DIR)/lib/libstdc++.a: $(STLPORT_DIR)/Makefile - $(MAKE) ARCH=$(OPTIMIZE_FOR_CPU) PREFIX=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME) -C $(STLPORT_DIR) - -$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++.a: $(STLPORT_DIR)/lib/libstdc++.a - $(MAKE) ARCH=$(OPTIMIZE_FOR_CPU) PREFIX=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME) -C $(STLPORT_DIR) install - -stlport: $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++.a - -stlport-source: $(DL_DIR)/$(STLPORT_SOURCE) - -stlport-clean: - rm -f $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++* - rm -f $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include/c++* - -$(MAKE) -C $(STLPORT_DIR) clean - -stlport-dirclean: - rm -f $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++* - rm -f $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include/g++-v3* - rm -rf $(STLPORT_DIR) - -############################################################# -# -# second pass compiler build. Build the compiler targeting -# the newly built shared uClibc library. -# -############################################################# -GCC_BUILD_DIR2:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION)-final - -$(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.patched $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a - mkdir -p $(GCC_BUILD_DIR2) - (cd $(GCC_BUILD_DIR2); PATH=$(TARGET_PATH) \ - $(GCC_DIR)/configure \ - --prefix=$(STAGING_DIR) \ - --build=$(GNU_HOST_NAME) \ - --host=$(GNU_HOST_NAME) \ - --target=$(REAL_GNU_TARGET_NAME) \ - --enable-languages=$(TARGET_LANGUAGES) \ - --enable-shared \ - --with-gxx-include-dir=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include/c++ \ - --disable-__cxa_atexit \ - --enable-target-optspace \ - --with-gnu-ld \ - $(DISABLE_NLS) \ - $(MULTILIB) \ - $(SOFT_FLOAT_CONFIG_OPTION) \ - $(EXTRA_GCC_CONFIG_OPTIONS)); - touch $(GCC_BUILD_DIR2)/.configured - -$(GCC_BUILD_DIR2)/.compiled: $(GCC_BUILD_DIR2)/.configured - PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR2) all - touch $(GCC_BUILD_DIR2)/.compiled - -$(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled - PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR2) install - # Strip the host binaries -ifeq ($(GCC_STRIP_HOST_BINARIES),true) - -strip --strip-all -R .note -R .comment $(STAGING_DIR)/bin/* -endif - # Set up the symlinks to enable lying about target name. - set -e; \ - (cd $(STAGING_DIR); \ - ln -snf $(REAL_GNU_TARGET_NAME) $(GNU_TARGET_NAME); \ - cd bin; \ - for app in $(REAL_GNU_TARGET_NAME)-* ; do \ - ln -snf $${app} \ - $(GNU_TARGET_NAME)$${app##$(REAL_GNU_TARGET_NAME)}; \ - done; \ - ); - touch $(GCC_BUILD_DIR2)/.installed - -gcc: uclibc-configured binutils gcc_initial $(LIBFLOAT_TARGET) uclibc \ - $(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS) $(STLPORT_TARGET) - -gcc-source: $(DL_DIR)/$(GCC_SOURCE) - -gcc-clean: - rm -rf $(GCC_BUILD_DIR2) - rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)* - -gcc-dirclean: - rm -rf $(GCC_BUILD_DIR2) - -############################################################# -# -# Next build target gcc compiler -# -############################################################# -GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc-$(GCC_VERSION)-target - -$(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR2)/.installed - mkdir -p $(GCC_BUILD_DIR3) - (cd $(GCC_BUILD_DIR3); PATH=$(TARGET_PATH) \ - $(GCC_DIR)/configure \ - --prefix=/usr \ - --build=$(GNU_HOST_NAME) \ - --host=$(REAL_GNU_TARGET_NAME) \ - --target=$(REAL_GNU_TARGET_NAME) \ - --enable-languages=$(TARGET_LANGUAGES) \ - --enable-shared \ - --with-gxx-include-dir=/usr/include/c++ \ - --disable-__cxa_atexit \ - --enable-target-optspace \ - --with-gnu-ld \ - $(DISABLE_NLS) \ - $(MULTILIB) \ - $(SOFT_FLOAT_CONFIG_OPTION) \ - $(EXTRA_GCC_CONFIG_OPTIONS)); - touch $(GCC_BUILD_DIR3)/.configured - -$(GCC_BUILD_DIR3)/.compiled: $(GCC_BUILD_DIR3)/.configured - PATH=$(TARGET_PATH) \ - $(MAKE) $(TARGET_GCC_ARGS) -C $(GCC_BUILD_DIR3) all - touch $(GCC_BUILD_DIR3)/.compiled - -$(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled - PATH=$(TARGET_PATH) \ - $(MAKE) DESTDIR=$(TARGET_DIR) -C $(GCC_BUILD_DIR3) install - # Remove broken specs file (cross compile flag is set). - rm -f $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs - -(cd $(TARGET_DIR)/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) - -(cd $(TARGET_DIR)/usr/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1) - -(cd $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION); $(STRIP) cc1 cc1plus collect2 > /dev/null 2>&1) - -(cd $(TARGET_DIR)/usr/lib; $(STRIP) libstdc++.so.*.*.* > /dev/null 2>&1) - -(cd $(TARGET_DIR)/lib; $(STRIP) libgcc_s.so.*.*.* > /dev/null 2>&1) - # - rm -f $(TARGET_DIR)/usr/lib/*.la* - #rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \ - # $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc - # Work around problem of missing syslimits.h - cp -f $(STAGING_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/include/syslimits.h $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/include/ - # These are in /lib, so... - #rm -rf $(TARGET_DIR)/usr/lib/libgcc_s.so* - #touch -c $(TARGET_DIR)/usr/bin/gcc - -gcc_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc - -gcc_target-clean: - rm -rf $(GCC_BUILD_DIR3) - rm -f $(TARGET_DIR)/bin/$(REAL_GNU_TARGET_NAME)* - -gcc_target-dirclean: - rm -rf $(GCC_BUILD_DIR3) - -endif diff --git a/toolchain/gcc/gcc-uclibc-3.x.mk b/toolchain/gcc/gcc-uclibc-3.x.mk index 3f731eb1fc..6027cf8b7d 100644 --- a/toolchain/gcc/gcc-uclibc-3.x.mk +++ b/toolchain/gcc/gcc-uclibc-3.x.mk @@ -17,7 +17,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -ifneq ($(findstring 2.95,$(GCC_VERSION)),2.95) GCC_VERSION:=$(strip $(GCC_VERSION)) #GCC_SITE:=ftp://ftp.gnu.org/gnu/gcc/releases/gcc-$(GCC_VERSION) @@ -340,4 +339,3 @@ gcc_target-clean: gcc_target-dirclean: rm -rf $(GCC_BUILD_DIR3) -endif -- 2.30.2