diff options
Diffstat (limited to 'sources/gcc')
35 files changed, 0 insertions, 22971 deletions
diff --git a/sources/gcc/2.95/050-debian-subset.patch b/sources/gcc/2.95/050-debian-subset.patch Binary files differdeleted file mode 100644 index 4dffd849b..000000000 --- a/sources/gcc/2.95/050-debian-subset.patch +++ /dev/null diff --git a/sources/gcc/2.95/100-uclibc-conf.patch b/sources/gcc/2.95/100-uclibc-conf.patch deleted file mode 100644 index f244387cc..000000000 --- a/sources/gcc/2.95/100-uclibc-conf.patch +++ /dev/null @@ -1,291 +0,0 @@ -Warning!  The powerpc patch (rs6000/linux.h) is hack-ish and would -definitely need to be improved to be acceptable upstream.  Also, -this patch isn't complete as it only supports i386, arm, mips, and -powerpc (rs6000). -diff -urN gcc-20011006/config.sub gcc-20011006-new/config.sub ---- gcc-20011006/config.sub	2004-01-13 06:15:28.000000000 -0600 -+++ gcc-20011006-new/config.sub	2004-01-10 11:09:35.000000000 -0600 -@@ -68,7 +68,7 @@ - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in --  linux-gnu*) -+  linux-gnu* | linux-uclibc*) -     os=-$maybe_os -     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` -     ;; -@@ -936,7 +936,8 @@ - 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - 	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ --	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -+	      | -mingw32* | -linux-gnu* | -linux-uclibc* \ -+	      | -uxpv* | -beos* | -mpeix* | -udk* \ - 	      | -interix* | -uwin* ) - 	# Remember, each alternative MUST END IN *, to match a version number. - 		;; -diff -urN gcc-20011006/gcc/config/arm/linux-elf.h gcc-20011006-new/gcc/config/arm/linux-elf.h ---- gcc-20011006/gcc/config/arm/linux-elf.h	2004-01-13 06:15:28.000000000 -0600 -+++ gcc-20011006-new/gcc/config/arm/linux-elf.h	2004-01-10 11:12:11.000000000 -0600 -@@ -90,6 +90,18 @@ - #define ENDFILE_SPEC \ -   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" -  -+#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} \ -@@ -100,6 +112,7 @@ -    -X \ -    %{mbig-endian:-EB}" \ -    SUBTARGET_EXTRA_LINK_SPEC -+#endif -  - #undef  CPP_PREDEFINES - #define CPP_PREDEFINES \ -diff -urN gcc-20011006/gcc/config/i386/linux.h gcc-20011006-new/gcc/config/i386/linux.h ---- gcc-20011006/gcc/config/i386/linux.h	2001-04-03 17:38:59.000000000 -0500 -+++ gcc-20011006-new/gcc/config/i386/linux.h	2004-01-10 11:15:38.000000000 -0600 -@@ -199,6 +199,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: \ -@@ -207,6 +216,7 @@ - 	%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - 	%{static:-static}}}" - #endif -+#endif -  - /* Get perform_* macros to build libgcc.a.  */ - #include "i386/perform.h" -diff -urN gcc-20011006/gcc/config/mips/linux.h gcc-20011006-new/gcc/config/mips/linux.h ---- gcc-20011006/gcc/config/mips/linux.h	2004-01-13 06:15:28.000000000 -0600 -+++ gcc-20011006-new/gcc/config/mips/linux.h	2004-01-10 11:16:39.000000000 -0600 -@@ -154,6 +154,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} \ -@@ -163,6 +174,7 @@ -         %{rdynamic:-export-dynamic} \ -         %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -         %{static:-static}}}" -+#endif -  -  - #undef SUBTARGET_ASM_SPEC -diff -urN old/gcc-20011006/gcc/config/mips/t-linux-uclibc gcc-20011006/gcc/config/mips/t-linux-uclibc ---- old/gcc-20011006/gcc/config/mips/t-linux-uclibc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-20011006/gcc/config/mips/t-linux-uclibc	2004-01-14 02:51:10.000000000 -0600 -@@ -0,0 +1 @@ -+T_CFLAGS = -DUSE_UCLIBC -diff -urN gcc-20011006/gcc/config/rs6000/linux.h gcc-20011006-new/gcc/config/rs6000/linux.h ---- gcc-20011006/gcc/config/rs6000/linux.h	2001-04-03 17:38:59.000000000 -0500 -+++ gcc-20011006-new/gcc/config/rs6000/linux.h	2004-01-10 11:15:38.000000000 -0600 -@@ -36,12 +36,21 @@ - #define CPP_OS_DEFAULT_SPEC "%(cpp_os_linux)" -  - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define LINK_SPEC "-m elf32ppclinux %{G*} %{shared:-shared} \ -+  %{!shared: \ -+    %{!static: \ -+      %{rdynamic:-export-dynamic} \ -+      %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+    %{static:-static}}" -+#else - #define LINK_SPEC "-m elf32ppclinux %{G*} %{shared:-shared} \ -   %{!shared: \ -     %{!static: \ -       %{rdynamic:-export-dynamic} \ -       %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -     %{static:-static}}" -+#endif -  - #undef	LIB_DEFAULT_SPEC - #define LIB_DEFAULT_SPEC "%(lib_linux)" -diff -urN gcc-20011006/gcc/config/t-linux-uclibc gcc-20011006-new/gcc/config/t-linux-uclibc ---- gcc-20011006/gcc/config/t-linux-uclibc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-20011006-new/gcc/config/t-linux-uclibc	2004-01-10 11:18:46.000000000 -0600 -@@ -0,0 +1,18 @@ -+T_CFLAGS = -DUSE_UCLIBC -+ -+# Don't run fixproto -+STMP_FIXPROTO = -+ -+# Don't install "assert.h" in gcc. We use the one in glibc. -+INSTALL_ASSERT_H = -+ -+# Compile crtbeginS.o and crtendS.o with pic. -+CRTSTUFF_T_CFLAGS_S = -fPIC -+# Compile libgcc2.a with pic. -+TARGET_LIBGCC2_CFLAGS = -fPIC -+ -+# Do not build libgcc1. Let gcc generate those functions. The GNU/Linux -+# C library can handle them. -+LIBGCC1 =  -+CROSS_LIBGCC1 = -+LIBGCC1_TEST = -diff -urN gcc-20011006/gcc/configure gcc-20011006-new/gcc/configure ---- gcc-20011006/gcc/configure	2004-01-13 06:15:28.000000000 -0600 -+++ gcc-20011006-new/gcc/configure	2004-01-10 11:28:54.000000000 -0600 -@@ -3219,6 +3219,24 @@ - 			;; - 		esac - 		;; -+	arm*-*-linux-uclibc*)		# ARM GNU/Linux with ELF - uClibc -+		xm_file=arm/xm-linux.h -+		xmake_file=x-linux -+		tm_file="arm/linux-elf.h" -+		case $machine in -+		armv2*-*-*) -+			tm_file="arm/linux-elf26.h $tm_file" -+			;; -+		esac -+		tmake_file="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*-*-aout) - 		tm_file=arm/aout.h - 		tmake_file=arm/t-bare -@@ -3631,6 +3649,18 @@ -  			thread_file='single' -  		fi - 		;; -+	i[34567]86-*-linux*uclibc*)	# Intel 80386's running GNU/Linux -+					# with ELF format using uClibc -+		xmake_file=x-linux -+		tm_file=i386/linux.h -+		tmake_file="t-linux-uclibc i386/t-crtstuff" -+		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+		gnu_ld=yes -+		float_format=i386 -+ 		if test x$enable_threads = xyes; then -+ 			thread_file='posix' -+ 		fi -+		;; - 	i[34567]86-*-linux-gnu*)	# Intel 80386's running GNU/Linux - 					# aka GNU/Linux C library 6 - 		xmake_file=x-linux -@@ -4696,7 +4726,19 @@ - 		# On NetBSD, the headers are already okay, except for math.h. - 		tmake_file=t-netbsd - 		;; --       mips*-*-linux*)                         # Linux MIPS, either endian. -+	mips*-*-linux-uclibc*)          # Linux (uclibc) MIPS, either endian. -+		tmake_file=mips/t-linux-uclibc -+		xmake_file=x-linux -+		xm_file="xm-siglist.h ${xm_file}" -+               case $machine in -+                       mipsel-*)  tm_file="mips/elfl.h mips/linux.h" ;; -+                       *)         tm_file="mips/elf.h mips/linux.h" ;; -+               esac -+		extra_parts="crtbegin.o crtend.o" -+		gnu_ld=yes -+		gas=yes -+		;; -+	mips*-*-linux*)                         # Linux MIPS, either endian. - 		xmake_file=x-linux - 		xm_file="xm-siglist.h ${xm_file}" -                case $machine in -@@ -5159,6 +5201,24 @@ - 			thread_file='posix' - 		fi - 		;; -+	powerpc-*-linux-uclibc*) -+		tm_file=rs6000/linux.h -+		xm_file="xm-siglist.h rs6000/xm-sysv4.h" -+		xm_defines="USG ${xm_defines}" -+		out_file=rs6000/rs6000.c -+		if test x$gas = xyes -+		then -+			tmake_file="rs6000/t-ppcos t-linux-uclibc rs6000/t-ppccomm" -+		else -+			tmake_file="rs6000/t-ppc t-linux-uclibc rs6000/t-ppccomm" -+		fi -+		xmake_file=x-linux -+		extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+		extra_headers=ppc-asm.h -+		if test x$enable_threads = xyes; then -+			thread_file='posix' -+		fi -+		;; -         powerpc-wrs-vxworks*) -                 cpu_type=rs6000 - 		xm_file="xm-siglist.h rs6000/xm-sysv4.h" -diff -urN gcc-20011006/ltconfig gcc-20011006-new/ltconfig ---- gcc-20011006/ltconfig	1999-06-21 21:35:12.000000000 -0500 -+++ gcc-20011006-new/ltconfig	2004-01-10 11:34:23.000000000 -0600 -@@ -436,6 +436,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 -  -@@ -1773,6 +1774,22 @@ -   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 --git a/sources/gcc/3.3.3/100-uclibc-conf.patch b/sources/gcc/3.3.3/100-uclibc-conf.patch deleted file mode 100644 index 4bbe21b7a..000000000 --- a/sources/gcc/3.3.3/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 <features.h> -@@ -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 <<EOF - #line 3002 "configure" -@@ -3182,6 +3190,70 @@ -       CTIME_CC=config/locale/generic/time_members.cc -       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h -       ;; -+    xuclibc) -+      echo "$ac_t""uclibc" 1>&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 -+#line 4229 "configure" -+#include "confdefs.h" -+#include <$ac_hdr> -+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 <<EOF -+#define $ac_tr_hdr 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4317 "configure" -+#include "confdefs.h" -+ -+     int main(void)  -+     { -+       try { throw 1; } -+       catch (...) { }; -+       return 0; -+     } -+     -+EOF -+if { (eval echo configure:4328: \"$ac_link\") 1>&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 <<EOF -+#line 4370 "configure" -+#include "confdefs.h" -+ -+int main() { -+main() -+; return 0; } -+EOF -+if { (eval echo configure:4377: \"$ac_link\") 1>&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 <<EOF -+#define $ac_tr_lib 1 -+EOF -+ -+  LIBS="-lm $LIBS" -+ -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4412 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4469 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4525 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4583 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4653 "configure" -+#include "confdefs.h" -+#include <wchar.h> -+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 -+#line 4687 "configure" -+#include "confdefs.h" -+#include <$ac_hdr> -+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 <<EOF -+#define $ac_tr_hdr 1 -+EOF -+ ac_has_wchar_h=yes -+else -+  echo "$ac_t""no" 1>&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 -+#line 4728 "configure" -+#include "confdefs.h" -+#include <$ac_hdr> -+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 <<EOF -+#define $ac_tr_hdr 1 -+EOF -+ ac_has_wctype_h=yes -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4768 "configure" -+#include "confdefs.h" -+#include <wchar.h> -+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 <<EOF -+#line 4790 "configure" -+#include "confdefs.h" -+ -+      #include <wchar.h> -+      #include <stddef.h> -+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 <<EOF -+#line 4820 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4883 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 -+#line 4951 "configure" -+#include "confdefs.h" -+#include <iconv.h> -+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 -+#line 4985 "configure" -+#include "confdefs.h" -+#include <langinfo.h> -+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 <<EOF -+#line 5022 "configure" -+#include "confdefs.h" -+/* 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 iconv(); -+ -+int main() { -+iconv() -+; return 0; } -+EOF -+if { (eval echo configure:5033: \"$ac_link\") 1>&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 <<EOF -+#line 5064 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+ \ -+    ac_XPG2funcs=yes -+else -+  echo "$ac_t""no" 1>&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/sources/gcc/3.3.3/110-uclibc-conf.patch b/sources/gcc/3.3.3/110-uclibc-conf.patch deleted file mode 100644 index f297c3283..000000000 --- a/sources/gcc/3.3.3/110-uclibc-conf.patch +++ /dev/null @@ -1,55 +0,0 @@ -Use the patch by Carl Miller <chaz@energoncube.net> 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/sources/gcc/3.3.3/120-softfloat.patch b/sources/gcc/3.3.3/120-softfloat.patch deleted file mode 100644 index f2431896c..000000000 --- a/sources/gcc/3.3.3/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/sources/gcc/3.3.3/200-uclibc-locale.patch b/sources/gcc/3.3.3/200-uclibc-locale.patch deleted file mode 100644 index 5880d834b..000000000 --- a/sources/gcc/3.3.3/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 <jakub@redhat.com> -+ -+#include <clocale> -+ -+#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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <stdexcept> -+#include <langinfo.h> -+#include <bits/c++locale_internal.h> -+ -+#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 <bkoz@redhat.com> -+ -+#ifndef _CPP_BITS_C_LOCALE_H -+#define _CPP_BITS_C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include <clocale> -+#include <langinfo.h>		// For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include <iconv.h>		// For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include <libintl.h> 		// 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<typename _Tv> -+    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<char*>(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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+namespace std -+{ -+  // Specializations. -+#ifdef _GLIBCPP_USE_WCHAR_T -+  codecvt_base::result -+  codecvt<wchar_t, char, mbstate_t>:: -+  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<wchar_t, char, mbstate_t>:: -+  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 <locale>. -+ -+// Written by Benjamin Kosnik <bkoz@cygnus.com> -+ -+  // 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<iconv_t>(-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<iconv_t>(-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<iconv_t>(-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<typename _InternT, typename _ExternT> -+    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<intern_type, extern_type, state_type>(__refs) -+      { } -+ -+      explicit  -+      codecvt(__enc_type* __enc, size_t __refs = 0) -+      : __codecvt_abstract_base<intern_type, extern_type, state_type>(__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<typename _InternT, typename _ExternT> -+    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<typename _T> -+    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<typename _InternT, typename _ExternT> -+    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<char*>(__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<intern_type*>(__builtin_alloca(sizeof(intern_type) * (__size + 1))); -+	      __cfixed[0] = static_cast<intern_type>(__int_bom); -+	      char_traits<intern_type>::copy(__cfixed + 1, __from, __size); -+	      __cfrom = reinterpret_cast<char*>(__cfixed); -+	      __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+                                        &__fbytes, &__cto, &__tbytes);  -+	    } -+	  else -+	    { -+	      intern_type* __cfixed = const_cast<intern_type*>(__from); -+	      __cfrom = reinterpret_cast<char*>(__cfixed); -+	      __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, &__fbytes,  -+				       &__cto, &__tbytes);  -+	    } -+ -+	  if (__conv != size_t(-1)) -+	    { -+	      __from_next = reinterpret_cast<const intern_type*>(__cfrom); -+	      __to_next = reinterpret_cast<extern_type*>(__cto); -+	      __ret = codecvt_base::ok; -+	    } -+	  else  -+	    { -+	      if (__fbytes < __fmultiple * (__from_end - __from)) -+		{ -+		  __from_next = reinterpret_cast<const intern_type*>(__cfrom); -+		  __to_next = reinterpret_cast<extern_type*>(__cto); -+		  __ret = codecvt_base::partial; -+		} -+	      else -+		__ret = codecvt_base::error; -+	    } -+	} -+      return __ret;  -+    } -+ -+  template<typename _InternT, typename _ExternT> -+    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<char*>(__to); -+	  size_t __conv = __iconv_adaptor(iconv,*__desc, NULL, NULL, -+                                          &__cto, &__tlen);  -+	   -+	  if (__conv != size_t(-1)) -+	    { -+	      __to_next = reinterpret_cast<extern_type*>(__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<typename _InternT, typename _ExternT> -+    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<char*>(__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<extern_type*>(__builtin_alloca(sizeof(extern_type) * (__size + 1))); -+	      __cfixed[0] = static_cast<extern_type>(__ext_bom); -+	      char_traits<extern_type>::copy(__cfixed + 1, __from, __size); -+	      __cfrom = reinterpret_cast<char*>(__cfixed); -+	      __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+                                       &__flen, &__cto, &__tlen);  -+	    } -+	  else -+	    { -+	      extern_type* __cfixed = const_cast<extern_type*>(__from); -+	      __cfrom = reinterpret_cast<char*>(__cfixed); -+	      __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+                                       &__flen, &__cto, &__tlen);  -+	    } -+ -+	   -+	  if (__conv != size_t(-1)) -+	    { -+	      __from_next = reinterpret_cast<const extern_type*>(__cfrom); -+	      __to_next = reinterpret_cast<intern_type*>(__cto); -+	      __ret = codecvt_base::ok; -+	    } -+	  else  -+	    { -+	      if (__flen < static_cast<size_t>(__from_end - __from)) -+		{ -+		  __from_next = reinterpret_cast<const extern_type*>(__cfrom); -+		  __to_next = reinterpret_cast<intern_type*>(__cto); -+		  __ret = codecvt_base::partial; -+		} -+	      else -+		__ret = codecvt_base::error; -+	    } -+	} -+      return __ret;  -+    } -+   -+  template<typename _InternT, typename _ExternT> -+    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<typename _InternT, typename _ExternT> -+    bool  -+    codecvt<_InternT, _ExternT, __enc_traits>:: -+    do_always_noconv() const throw() -+    { return false; } -+   -+  template<typename _InternT, typename _ExternT> -+    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<size_t>(__end - __from)); } -+ -+#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS -+// 74.  Garbled text for codecvt::do_max_length -+  template<typename _InternT, typename _ExternT> -+    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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_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<char>::_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<wchar_t>::_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<wchar_t>::_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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char> specializations are in src/locale.cc and -+  // various /config/os/* files. -+  template<> -+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) -+    : ctype<char>(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<wchar_t>::__wmask_type -+  ctype<wchar_t>::_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<wchar_t>::do_toupper(wchar_t __c) const -+  { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>::do_tolower(wchar_t __c) const -+  { return __towlower_l(__c, _M_c_locale_ctype); } -+   -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>:: -+  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<mask>(_ISbit(__bitcur)); -+	if (__m & __bit) -+	  __ret |= __iswctype_l(__c, _M_convert_to_wmask(__bit),  -+				_M_c_locale_ctype);  -+      } -+    return __ret;     -+  } -+   -+  const wchar_t*  -+  ctype<wchar_t>:: -+  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<mask>(_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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<void*>(&__state), 0, sizeof(mbstate_t)); -+    mbsrtowcs(__dest, &__lo, __hi - __lo, &__state); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+    __uselocale(__old); -+#endif -+    return __hi; -+  } -+ -+  char -+  ctype<wchar_t>:: -+  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<char>(__c));  -+  } -+ -+  const wchar_t* -+  ctype<wchar_t>:: -+  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<void*>(&__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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::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<const char*>(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<wchar_t>::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 <bkoz@redhat.com> -+ -+#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<typename _CharT> -+     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<typename _CharT> -+     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 _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,  -+			   const char* __dir) const -+    {  -+      __bindtextdomain(__s.c_str(), __dir); -+      return this->do_open(__s, __loc);  -+    } -+ -+  // Virtual member functions. -+  template<typename _CharT> -+    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 _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::do_open(const basic_string<char>& __s,  -+			      const locale&) const -+    {  -+      // No error checking is done, assume the catalog exists and can -+      // be used. -+      __textdomain(__s.c_str()); -+      return 0; -+    } -+ -+  template<typename _CharT> -+    void     -+    messages<_CharT>::do_close(catalog) const  -+    { } -+ -+   // messages_byname -+   template<typename _CharT> -+     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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char, true>::_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<char, false>::_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<char, true>::~moneypunct() -+    { } -+ -+  template<>  -+    moneypunct<char, false>::~moneypunct() -+    { } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+  template<>  -+    void -+    moneypunct<wchar_t, true>::_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<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+ -+	  _M_thousands_sep = static_cast<wchar_t>(((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<wchar_t, false>::_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<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+	  _M_thousands_sep = static_cast<wchar_t>(((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<wchar_t, true>::~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<wchar_t, false>::~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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_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<char>::~numpunct() -+    { } -+    -+#ifdef _GLIBCPP_USE_WCHAR_T -+  template<>  -+    void -+    numpunct<wchar_t>::_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<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+	  _M_thousands_sep = static_cast<wchar_t>(((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<wchar_t>::~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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>:: -+    _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<char>::_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<wchar_t>:: -+    _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<wchar_t>::_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<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+	  _M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+	  _M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+	  _M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+	  _M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+	  _M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+	  _M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+	  _M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+	  _M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+	  // Day names, starting with "C"'s Sunday. -+	  _M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+	  _M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+	  _M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+	  _M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+	  _M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+	  _M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+	  _M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+	  // Abbreviated day names, starting with "C"'s Sun. -+	  _M_day_a1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+	  _M_day_a2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+	  _M_day_a3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+	  _M_day_a4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+	  _M_day_a5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+	  _M_day_a6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+	  _M_day_a7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+	  // Month names, starting with "C"'s January. -+	  _M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+	  _M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+	  _M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+	  _M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+	  _M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+	  _M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+	  _M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+	  _M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+	  _M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+	  _M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+	  _M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+	  _M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+	  // Abbreviated month names, starting with "C"'s Jan. -+	  _M_month_a01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+	  _M_month_a02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+	  _M_month_a03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+	  _M_month_a04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+	  _M_month_a05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+	  _M_month_a06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+	  _M_month_a07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+	  _M_month_a08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+	  _M_month_a09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+	  _M_month_a10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+	  _M_month_a11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+	  _M_month_a12 = reinterpret_cast<wchar_t*>(__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 <bkoz@redhat.com> -+ -+  template<typename _CharT> -+    __timepunct<_CharT>::__timepunct(size_t __refs)  -+    : locale::facet(__refs) -+    {  -+#ifndef __UCLIBC_HAS_XLOCALE__ -+      _M_name_timepunct = _S_c_name; -+#endif -+      _M_initialize_timepunct();  -+    } -+ -+  template<typename _CharT> -+    __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<typename _CharT> -+    __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<char>::_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<char>:: -+  is(mask __m, char __c) const -+  { return _M_table[static_cast<unsigned char>(__c)] & __m; } -+ -+  const char* -+  ctype<char>:: -+  is(const char* __low, const char* __high, mask* __vec) const -+  { -+    while (__low < __high) -+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; -+    return __high; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_is(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) -+      ++__low; -+    return __low; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_not(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && (_M_table[static_cast<unsigned char>(*__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<char>::classic_table() throw() -+  {  -+    return __C_ctype_b; -+  } -+ -+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,  -+		     size_t __refs)  -+  : __ctype_abstract_base<char>(__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<char>::ctype(const mask* __table, bool __del, size_t __refs) :  -+  __ctype_abstract_base<char>(__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<char>::do_toupper(char __c) const -+  { return _M_toupper[static_cast<unsigned char>(__c)]; } -+ -+  const char* -+  ctype<char>::do_toupper(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_toupper[static_cast<unsigned char>(*__low)]; -+	++__low; -+      } -+    return __high; -+  } -+ -+  char -+  ctype<char>::do_tolower(char __c) const -+  { return _M_tolower[static_cast<unsigned char>(__c)]; } -+ -+  const char*  -+  ctype<char>::do_tolower(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_tolower[static_cast<unsigned char>(*__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 <features.h> -+ -+// 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/sources/gcc/3.3.3/500-loop.patch b/sources/gcc/3.3.3/500-loop.patch deleted file mode 100644 index 476f84b37..000000000 --- a/sources/gcc/3.3.3/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/sources/gcc/3.3.4/100-uclibc-conf.patch b/sources/gcc/3.3.4/100-uclibc-conf.patch deleted file mode 100644 index 4bbe21b7a..000000000 --- a/sources/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 <features.h> -@@ -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 <<EOF - #line 3002 "configure" -@@ -3182,6 +3190,70 @@ -       CTIME_CC=config/locale/generic/time_members.cc -       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h -       ;; -+    xuclibc) -+      echo "$ac_t""uclibc" 1>&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 -+#line 4229 "configure" -+#include "confdefs.h" -+#include <$ac_hdr> -+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 <<EOF -+#define $ac_tr_hdr 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4317 "configure" -+#include "confdefs.h" -+ -+     int main(void)  -+     { -+       try { throw 1; } -+       catch (...) { }; -+       return 0; -+     } -+     -+EOF -+if { (eval echo configure:4328: \"$ac_link\") 1>&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 <<EOF -+#line 4370 "configure" -+#include "confdefs.h" -+ -+int main() { -+main() -+; return 0; } -+EOF -+if { (eval echo configure:4377: \"$ac_link\") 1>&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 <<EOF -+#define $ac_tr_lib 1 -+EOF -+ -+  LIBS="-lm $LIBS" -+ -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4412 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4469 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4525 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4583 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4653 "configure" -+#include "confdefs.h" -+#include <wchar.h> -+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 -+#line 4687 "configure" -+#include "confdefs.h" -+#include <$ac_hdr> -+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 <<EOF -+#define $ac_tr_hdr 1 -+EOF -+ ac_has_wchar_h=yes -+else -+  echo "$ac_t""no" 1>&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 -+#line 4728 "configure" -+#include "confdefs.h" -+#include <$ac_hdr> -+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 <<EOF -+#define $ac_tr_hdr 1 -+EOF -+ ac_has_wctype_h=yes -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4768 "configure" -+#include "confdefs.h" -+#include <wchar.h> -+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 <<EOF -+#line 4790 "configure" -+#include "confdefs.h" -+ -+      #include <wchar.h> -+      #include <stddef.h> -+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 <<EOF -+#line 4820 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 <<EOF -+#line 4883 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+  -+else -+  echo "$ac_t""no" 1>&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 -+#line 4951 "configure" -+#include "confdefs.h" -+#include <iconv.h> -+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 -+#line 4985 "configure" -+#include "confdefs.h" -+#include <langinfo.h> -+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 <<EOF -+#line 5022 "configure" -+#include "confdefs.h" -+/* 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 iconv(); -+ -+int main() { -+iconv() -+; return 0; } -+EOF -+if { (eval echo configure:5033: \"$ac_link\") 1>&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 <<EOF -+#line 5064 "configure" -+#include "confdefs.h" -+/* System header to define __stub macros and hopefully few prototypes, -+    which can conflict with char $ac_func(); below.  */ -+#include <assert.h> -+/* 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 <<EOF -+#define $ac_tr_func 1 -+EOF -+ \ -+    ac_XPG2funcs=yes -+else -+  echo "$ac_t""no" 1>&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/sources/gcc/3.3.4/110-uclibc-conf.patch b/sources/gcc/3.3.4/110-uclibc-conf.patch deleted file mode 100644 index f297c3283..000000000 --- a/sources/gcc/3.3.4/110-uclibc-conf.patch +++ /dev/null @@ -1,55 +0,0 @@ -Use the patch by Carl Miller <chaz@energoncube.net> 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/sources/gcc/3.3.4/120-softfloat.patch b/sources/gcc/3.3.4/120-softfloat.patch deleted file mode 100644 index f2431896c..000000000 --- a/sources/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/sources/gcc/3.3.4/200-uclibc-locale.patch b/sources/gcc/3.3.4/200-uclibc-locale.patch deleted file mode 100644 index 5880d834b..000000000 --- a/sources/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 <jakub@redhat.com> -+ -+#include <clocale> -+ -+#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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <stdexcept> -+#include <langinfo.h> -+#include <bits/c++locale_internal.h> -+ -+#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 <bkoz@redhat.com> -+ -+#ifndef _CPP_BITS_C_LOCALE_H -+#define _CPP_BITS_C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include <clocale> -+#include <langinfo.h>		// For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include <iconv.h>		// For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include <libintl.h> 		// 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<typename _Tv> -+    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<char*>(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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+namespace std -+{ -+  // Specializations. -+#ifdef _GLIBCPP_USE_WCHAR_T -+  codecvt_base::result -+  codecvt<wchar_t, char, mbstate_t>:: -+  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<wchar_t, char, mbstate_t>:: -+  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 <locale>. -+ -+// Written by Benjamin Kosnik <bkoz@cygnus.com> -+ -+  // 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<iconv_t>(-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<iconv_t>(-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<iconv_t>(-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<typename _InternT, typename _ExternT> -+    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<intern_type, extern_type, state_type>(__refs) -+      { } -+ -+      explicit  -+      codecvt(__enc_type* __enc, size_t __refs = 0) -+      : __codecvt_abstract_base<intern_type, extern_type, state_type>(__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<typename _InternT, typename _ExternT> -+    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<typename _T> -+    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<typename _InternT, typename _ExternT> -+    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<char*>(__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<intern_type*>(__builtin_alloca(sizeof(intern_type) * (__size + 1))); -+	      __cfixed[0] = static_cast<intern_type>(__int_bom); -+	      char_traits<intern_type>::copy(__cfixed + 1, __from, __size); -+	      __cfrom = reinterpret_cast<char*>(__cfixed); -+	      __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+                                        &__fbytes, &__cto, &__tbytes);  -+	    } -+	  else -+	    { -+	      intern_type* __cfixed = const_cast<intern_type*>(__from); -+	      __cfrom = reinterpret_cast<char*>(__cfixed); -+	      __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, &__fbytes,  -+				       &__cto, &__tbytes);  -+	    } -+ -+	  if (__conv != size_t(-1)) -+	    { -+	      __from_next = reinterpret_cast<const intern_type*>(__cfrom); -+	      __to_next = reinterpret_cast<extern_type*>(__cto); -+	      __ret = codecvt_base::ok; -+	    } -+	  else  -+	    { -+	      if (__fbytes < __fmultiple * (__from_end - __from)) -+		{ -+		  __from_next = reinterpret_cast<const intern_type*>(__cfrom); -+		  __to_next = reinterpret_cast<extern_type*>(__cto); -+		  __ret = codecvt_base::partial; -+		} -+	      else -+		__ret = codecvt_base::error; -+	    } -+	} -+      return __ret;  -+    } -+ -+  template<typename _InternT, typename _ExternT> -+    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<char*>(__to); -+	  size_t __conv = __iconv_adaptor(iconv,*__desc, NULL, NULL, -+                                          &__cto, &__tlen);  -+	   -+	  if (__conv != size_t(-1)) -+	    { -+	      __to_next = reinterpret_cast<extern_type*>(__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<typename _InternT, typename _ExternT> -+    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<char*>(__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<extern_type*>(__builtin_alloca(sizeof(extern_type) * (__size + 1))); -+	      __cfixed[0] = static_cast<extern_type>(__ext_bom); -+	      char_traits<extern_type>::copy(__cfixed + 1, __from, __size); -+	      __cfrom = reinterpret_cast<char*>(__cfixed); -+	      __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+                                       &__flen, &__cto, &__tlen);  -+	    } -+	  else -+	    { -+	      extern_type* __cfixed = const_cast<extern_type*>(__from); -+	      __cfrom = reinterpret_cast<char*>(__cfixed); -+	      __conv = __iconv_adaptor(iconv, *__desc, &__cfrom, -+                                       &__flen, &__cto, &__tlen);  -+	    } -+ -+	   -+	  if (__conv != size_t(-1)) -+	    { -+	      __from_next = reinterpret_cast<const extern_type*>(__cfrom); -+	      __to_next = reinterpret_cast<intern_type*>(__cto); -+	      __ret = codecvt_base::ok; -+	    } -+	  else  -+	    { -+	      if (__flen < static_cast<size_t>(__from_end - __from)) -+		{ -+		  __from_next = reinterpret_cast<const extern_type*>(__cfrom); -+		  __to_next = reinterpret_cast<intern_type*>(__cto); -+		  __ret = codecvt_base::partial; -+		} -+	      else -+		__ret = codecvt_base::error; -+	    } -+	} -+      return __ret;  -+    } -+   -+  template<typename _InternT, typename _ExternT> -+    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<typename _InternT, typename _ExternT> -+    bool  -+    codecvt<_InternT, _ExternT, __enc_traits>:: -+    do_always_noconv() const throw() -+    { return false; } -+   -+  template<typename _InternT, typename _ExternT> -+    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<size_t>(__end - __from)); } -+ -+#ifdef _GLIBCPP_RESOLVE_LIB_DEFECTS -+// 74.  Garbled text for codecvt::do_max_length -+  template<typename _InternT, typename _ExternT> -+    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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_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<char>::_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<wchar_t>::_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<wchar_t>::_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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char> specializations are in src/locale.cc and -+  // various /config/os/* files. -+  template<> -+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) -+    : ctype<char>(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<wchar_t>::__wmask_type -+  ctype<wchar_t>::_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<wchar_t>::do_toupper(wchar_t __c) const -+  { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>::do_tolower(wchar_t __c) const -+  { return __towlower_l(__c, _M_c_locale_ctype); } -+   -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>:: -+  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<mask>(_ISbit(__bitcur)); -+	if (__m & __bit) -+	  __ret |= __iswctype_l(__c, _M_convert_to_wmask(__bit),  -+				_M_c_locale_ctype);  -+      } -+    return __ret;     -+  } -+   -+  const wchar_t*  -+  ctype<wchar_t>:: -+  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<mask>(_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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<void*>(&__state), 0, sizeof(mbstate_t)); -+    mbsrtowcs(__dest, &__lo, __hi - __lo, &__state); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+    __uselocale(__old); -+#endif -+    return __hi; -+  } -+ -+  char -+  ctype<wchar_t>:: -+  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<char>(__c));  -+  } -+ -+  const wchar_t* -+  ctype<wchar_t>:: -+  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<void*>(&__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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::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<const char*>(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<wchar_t>::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 <bkoz@redhat.com> -+ -+#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<typename _CharT> -+     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<typename _CharT> -+     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 _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,  -+			   const char* __dir) const -+    {  -+      __bindtextdomain(__s.c_str(), __dir); -+      return this->do_open(__s, __loc);  -+    } -+ -+  // Virtual member functions. -+  template<typename _CharT> -+    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 _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::do_open(const basic_string<char>& __s,  -+			      const locale&) const -+    {  -+      // No error checking is done, assume the catalog exists and can -+      // be used. -+      __textdomain(__s.c_str()); -+      return 0; -+    } -+ -+  template<typename _CharT> -+    void     -+    messages<_CharT>::do_close(catalog) const  -+    { } -+ -+   // messages_byname -+   template<typename _CharT> -+     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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char, true>::_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<char, false>::_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<char, true>::~moneypunct() -+    { } -+ -+  template<>  -+    moneypunct<char, false>::~moneypunct() -+    { } -+ -+#ifdef _GLIBCPP_USE_WCHAR_T -+  template<>  -+    void -+    moneypunct<wchar_t, true>::_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<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+ -+	  _M_thousands_sep = static_cast<wchar_t>(((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<wchar_t, false>::_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<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+	  _M_thousands_sep = static_cast<wchar_t>(((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<wchar_t, true>::~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<wchar_t, false>::~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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_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<char>::~numpunct() -+    { } -+    -+#ifdef _GLIBCPP_USE_WCHAR_T -+  template<>  -+    void -+    numpunct<wchar_t>::_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<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); -+	  _M_thousands_sep = static_cast<wchar_t>(((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<wchar_t>::~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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>:: -+    _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<char>::_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<wchar_t>:: -+    _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<wchar_t>::_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<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+	  _M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+	  _M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+	  _M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+	  _M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+	  _M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+	  _M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+	  _M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+	  _M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+	  // Day names, starting with "C"'s Sunday. -+	  _M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+	  _M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+	  _M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+	  _M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+	  _M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+	  _M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+	  _M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+	  // Abbreviated day names, starting with "C"'s Sun. -+	  _M_day_a1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+	  _M_day_a2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+	  _M_day_a3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+	  _M_day_a4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+	  _M_day_a5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+	  _M_day_a6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+	  _M_day_a7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+	  // Month names, starting with "C"'s January. -+	  _M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+	  _M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+	  _M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+	  _M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+	  _M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+	  _M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+	  _M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+	  _M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+	  _M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+	  _M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+	  _M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+	  _M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+	  // Abbreviated month names, starting with "C"'s Jan. -+	  _M_month_a01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+	  _M_month_a02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+	  _M_month_a03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+	  _M_month_a04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+	  _M_month_a05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+	  _M_month_a06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+	  _M_month_a07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+	  _M_month_a08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+	  _M_month_a09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+	  _M_month_a10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+	  _M_month_a11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+	  _M_month_a12 = reinterpret_cast<wchar_t*>(__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 <bkoz@redhat.com> -+ -+  template<typename _CharT> -+    __timepunct<_CharT>::__timepunct(size_t __refs)  -+    : locale::facet(__refs) -+    {  -+#ifndef __UCLIBC_HAS_XLOCALE__ -+      _M_name_timepunct = _S_c_name; -+#endif -+      _M_initialize_timepunct();  -+    } -+ -+  template<typename _CharT> -+    __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<typename _CharT> -+    __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<char>::_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<char>:: -+  is(mask __m, char __c) const -+  { return _M_table[static_cast<unsigned char>(__c)] & __m; } -+ -+  const char* -+  ctype<char>:: -+  is(const char* __low, const char* __high, mask* __vec) const -+  { -+    while (__low < __high) -+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; -+    return __high; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_is(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) -+      ++__low; -+    return __low; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_not(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && (_M_table[static_cast<unsigned char>(*__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<char>::classic_table() throw() -+  {  -+    return __C_ctype_b; -+  } -+ -+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del,  -+		     size_t __refs)  -+  : __ctype_abstract_base<char>(__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<char>::ctype(const mask* __table, bool __del, size_t __refs) :  -+  __ctype_abstract_base<char>(__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<char>::do_toupper(char __c) const -+  { return _M_toupper[static_cast<unsigned char>(__c)]; } -+ -+  const char* -+  ctype<char>::do_toupper(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_toupper[static_cast<unsigned char>(*__low)]; -+	++__low; -+      } -+    return __high; -+  } -+ -+  char -+  ctype<char>::do_tolower(char __c) const -+  { return _M_tolower[static_cast<unsigned char>(__c)]; } -+ -+  const char*  -+  ctype<char>::do_tolower(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_tolower[static_cast<unsigned char>(*__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 <features.h> -+ -+// 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/sources/gcc/3.3.4/specs-arm-soft-float b/sources/gcc/3.3.4/specs-arm-soft-float deleted file mode 100644 index d692174aa..000000000 --- a/sources/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/sources/gcc/3.3.4/specs-mips-soft-float b/sources/gcc/3.3.4/specs-mips-soft-float deleted file mode 100644 index 2a4240012..000000000 --- a/sources/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/sources/gcc/3.3.4/specs-mipsel-soft-float b/sources/gcc/3.3.4/specs-mipsel-soft-float deleted file mode 100644 index 481bf5a39..000000000 --- a/sources/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/sources/gcc/3.3.4/specs-powerpc-soft-float b/sources/gcc/3.3.4/specs-powerpc-soft-float deleted file mode 100644 index 8a546ac8e..000000000 --- a/sources/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/sources/gcc/3.4.0/100-uclibc-conf.patch b/sources/gcc/3.4.0/100-uclibc-conf.patch deleted file mode 100644 index 83cc9d21e..000000000 --- a/sources/gcc/3.4.0/100-uclibc-conf.patch +++ /dev/null @@ -1,433 +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" -@@ -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} 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" - 	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/sources/gcc/3.4.0/200-uclibc-locale.patch b/sources/gcc/3.4.0/200-uclibc-locale.patch deleted file mode 100644 index 27e047eb7..000000000 --- a/sources/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 <features.h> -@@ -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 <features.h> -@@ -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 <jakub@redhat.com> -+ -+#include <clocale> -+ -+#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 <bkoz@redhat.com> -+ -+#include <cerrno>  // For errno -+#include <locale> -+#include <stdexcept> -+#include <langinfo.h> -+#include <bits/c++locale_internal.h> -+ -+#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 <bkoz@redhat.com> -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include <cstring>              // get std::strlen -+#include <cstdio>               // get std::snprintf or std::sprintf -+#include <clocale> -+#include <langinfo.h>		// For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include <iconv.h>		// For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include <libintl.h> 		// 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<typename _Tv> -+    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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+namespace std -+{ -+  // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+  codecvt_base::result -+  codecvt<wchar_t, char, mbstate_t>:: -+  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<size_t>(-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<size_t>(__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<wchar_t, char, mbstate_t>:: -+  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<const extern_type*>(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<size_t>(-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<size_t>(-1) -+		    || __conv == static_cast<size_t>(-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<wchar_t, char, mbstate_t>:: -+  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<wchar_t, char, mbstate_t>:: -+  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<wchar_t, char, mbstate_t>:: -+  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<wchar_t*>(__builtin_alloca(sizeof(wchar_t)  -+							   * __max)); -+    while (__from < __end && __max) -+      { -+	const extern_type* __from_chunk_end; -+	__from_chunk_end = static_cast<const extern_type*>(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<size_t>(-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<size_t>(-1) -+		    || __conv == static_cast<size_t>(-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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_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<char>::_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<wchar_t>::_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<wchar_t>::_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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char> specializations are in src/locale.cc and -+  // various /config/os/* files. -+  template<> -+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) -+    : ctype<char>(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<wchar_t>::__wmask_type -+  ctype<wchar_t>::_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<wchar_t>::do_toupper(wchar_t __c) const -+  { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>::do_tolower(wchar_t __c) const -+  { return __towlower_l(__c, _M_c_locale_ctype); } -+   -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  do_widen(char __c) const -+  { return _M_widen[static_cast<unsigned char>(__c)]; } -+ -+  const char*  -+  ctype<wchar_t>:: -+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+  { -+    while (__lo < __hi) -+      { -+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)]; -+	++__lo; -+	++__dest; -+      } -+    return __hi; -+  } -+ -+  char -+  ctype<wchar_t>:: -+  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<char>(__c));  -+  } -+ -+  const wchar_t* -+  ctype<wchar_t>:: -+  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<char>(__c)); -+	    } -+	  ++__lo; -+	  ++__dest; -+	} -+    else -+      while (__lo < __hi) -+	{ -+	  const int __c = wctob(*__lo); -+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c)); -+	  ++__lo; -+	  ++__dest; -+	} -+#ifdef __UCLIBC_HAS_XLOCALE__ -+    __uselocale(__old); -+#endif -+    return __hi; -+  } -+ -+  void -+  ctype<wchar_t>::_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<char>(__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<mask>(_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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::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<const char*>(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<wchar_t>::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 <bkoz@redhat.com> -+ -+#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<typename _CharT> -+     messages<_CharT>::messages(size_t __refs) -+     : facet(__refs) -+     {   -+       _M_c_locale_messages = _S_get_c_locale();  -+     } -+ -+  template<typename _CharT> -+     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 _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,  -+			   const char* __dir) const -+    {  -+      __bindtextdomain(__s.c_str(), __dir); -+      return this->do_open(__s, __loc);  -+    } -+ -+  // Virtual member functions. -+  template<typename _CharT> -+    messages<_CharT>::~messages() -+    {  -+      _S_destroy_c_locale(_M_c_locale_messages);  -+    } -+ -+  template<typename _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::do_open(const basic_string<char>& __s,  -+			      const locale&) const -+    {  -+      // No error checking is done, assume the catalog exists and can -+      // be used. -+      __textdomain(__s.c_str()); -+      return 0; -+    } -+ -+  template<typename _CharT> -+    void     -+    messages<_CharT>::do_close(catalog) const  -+    { } -+ -+   // messages_byname -+   template<typename _CharT> -+     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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char, true>::_M_initialize_moneypunct(__c_locale __cloc,  -+						     const char*) -+    { -+      if (!_M_data) -+	_M_data = new __moneypunct_cache<char, true>; -+ -+      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<char, false>::_M_initialize_moneypunct(__c_locale __cloc,  -+						      const char*) -+    { -+      if (!_M_data) -+	_M_data = new __moneypunct_cache<char, false>; -+ -+      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<char, true>::~moneypunct() -+    { delete _M_data; } -+ -+  template<>  -+    moneypunct<char, false>::~moneypunct() -+    { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+  template<>  -+    void -+    moneypunct<wchar_t, true>::_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<wchar_t, true>; -+ -+      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<unsigned char>(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<wchar_t>(__u.__w); -+ -+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__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<wchar_t, false>::_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<wchar_t, false>; -+ -+    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<unsigned char>(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<wchar_t>(__u.__w); -+ -+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__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<wchar_t, true>::~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<wchar_t, false>::~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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_M_initialize_numpunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __numpunct_cache<char>; -+ -+      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<char>::~numpunct() -+    { delete _M_data; } -+    -+#ifdef _GLIBCXX_USE_WCHAR_T -+  template<>  -+    void -+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __numpunct_cache<wchar_t>; -+ -+      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<unsigned char>(__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<unsigned char>(__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<wchar_t>(__u.__w); -+ -+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__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<wchar_t>::~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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>:: -+    _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<char>::_M_initialize_timepunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __timepunct_cache<char>; -+ -+      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<wchar_t>:: -+    _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<wchar_t>::_M_initialize_timepunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __timepunct_cache<wchar_t>; -+ -+#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<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+	  _M_data->_M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+	  _M_data->_M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+	  _M_data->_M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+	  _M_data->_M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+	  _M_data->_M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+	  _M_data->_M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+	  _M_data->_M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+	  _M_data->_M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+	  // Day names, starting with "C"'s Sunday. -+	  _M_data->_M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+	  _M_data->_M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+	  _M_data->_M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+	  _M_data->_M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+	  _M_data->_M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+	  _M_data->_M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+	  _M_data->_M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+	  // Abbreviated day names, starting with "C"'s Sun. -+	  _M_data->_M_aday1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+	  _M_data->_M_aday2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+	  _M_data->_M_aday3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+	  _M_data->_M_aday4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+	  _M_data->_M_aday5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+	  _M_data->_M_aday6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+	  _M_data->_M_aday7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+	  // Month names, starting with "C"'s January. -+	  _M_data->_M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+	  _M_data->_M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+	  _M_data->_M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+	  _M_data->_M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+	  _M_data->_M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+	  _M_data->_M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+	  _M_data->_M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+	  _M_data->_M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+	  _M_data->_M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+	  _M_data->_M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+	  _M_data->_M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+	  _M_data->_M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+	  // Abbreviated month names, starting with "C"'s Jan. -+	  _M_data->_M_amonth01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+	  _M_data->_M_amonth02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+	  _M_data->_M_amonth03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+	  _M_data->_M_amonth04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+	  _M_data->_M_amonth05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+	  _M_data->_M_amonth06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+	  _M_data->_M_amonth07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+	  _M_data->_M_amonth08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+	  _M_data->_M_amonth09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+	  _M_data->_M_amonth10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+	  _M_data->_M_amonth11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+	  _M_data->_M_amonth12 = reinterpret_cast<wchar_t*>(__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 <bkoz@redhat.com> -+ -+  template<typename _CharT> -+    __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<typename _CharT> -+    __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<typename _CharT> -+    __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<typename _CharT> -+    __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<char>::_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<char>:: -+  is(mask __m, char __c) const -+  { return _M_table[static_cast<unsigned char>(__c)] & __m; } -+ -+  const char* -+  ctype<char>:: -+  is(const char* __low, const char* __high, mask* __vec) const -+  { -+    while (__low < __high) -+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; -+    return __high; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_is(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) -+      ++__low; -+    return __low; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_not(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && (_M_table[static_cast<unsigned char>(*__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<char>::classic_table() throw() -+  { return __C_ctype_b; } -+ -+  ctype<char>::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<char>::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<char>::do_toupper(char __c) const -+  { return _M_toupper[static_cast<unsigned char>(__c)]; } -+ -+  const char* -+  ctype<char>::do_toupper(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_toupper[static_cast<unsigned char>(*__low)]; -+	++__low; -+      } -+    return __high; -+  } -+ -+  char -+  ctype<char>::do_tolower(char __c) const -+  { return _M_tolower[static_cast<unsigned char>(__c)]; } -+ -+  const char*  -+  ctype<char>::do_tolower(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_tolower[static_cast<unsigned char>(*__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 <features.h> -+ -+// 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/sources/gcc/3.4.0/arm-softfloat.patch.conditional b/sources/gcc/3.4.0/arm-softfloat.patch.conditional deleted file mode 100644 index f53d64b37..000000000 --- a/sources/gcc/3.4.0/arm-softfloat.patch.conditional +++ /dev/null @@ -1,256 +0,0 @@ -# -# Submitted: -# -# Dimitry Andric <dimitry@andric.com>, 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/sources/gcc/3.4.1/100-uclibc-conf.patch b/sources/gcc/3.4.1/100-uclibc-conf.patch deleted file mode 100644 index c7752129c..000000000 --- a/sources/gcc/3.4.1/100-uclibc-conf.patch +++ /dev/null @@ -1,433 +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" -@@ -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} 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" - 	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/sources/gcc/3.4.1/200-uclibc-locale.patch b/sources/gcc/3.4.1/200-uclibc-locale.patch deleted file mode 100644 index 51cd7fc2e..000000000 --- a/sources/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 <features.h> -@@ -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 <features.h> -@@ -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 <jakub@redhat.com> -+ -+#include <clocale> -+ -+#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 <bkoz@redhat.com> -+ -+#include <cerrno>  // For errno -+#include <locale> -+#include <stdexcept> -+#include <langinfo.h> -+#include <bits/c++locale_internal.h> -+ -+#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 <bkoz@redhat.com> -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include <cstring>              // get std::strlen -+#include <cstdio>               // get std::snprintf or std::sprintf -+#include <clocale> -+#include <langinfo.h>		// For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include <iconv.h>		// For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include <libintl.h> 		// 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<typename _Tv> -+    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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+namespace std -+{ -+  // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+  codecvt_base::result -+  codecvt<wchar_t, char, mbstate_t>:: -+  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<size_t>(-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<size_t>(__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<wchar_t, char, mbstate_t>:: -+  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<const extern_type*>(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<size_t>(-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<size_t>(-1) -+		    || __conv == static_cast<size_t>(-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<wchar_t, char, mbstate_t>:: -+  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<wchar_t, char, mbstate_t>:: -+  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<wchar_t, char, mbstate_t>:: -+  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<wchar_t*>(__builtin_alloca(sizeof(wchar_t)  -+							   * __max)); -+    while (__from < __end && __max) -+      { -+	const extern_type* __from_chunk_end; -+	__from_chunk_end = static_cast<const extern_type*>(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<size_t>(-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<size_t>(-1) -+		    || __conv == static_cast<size_t>(-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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_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<char>::_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<wchar_t>::_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<wchar_t>::_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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char> specializations are in src/locale.cc and -+  // various /config/os/* files. -+  template<> -+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) -+    : ctype<char>(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<wchar_t>::__wmask_type -+  ctype<wchar_t>::_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<wchar_t>::do_toupper(wchar_t __c) const -+  { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>::do_tolower(wchar_t __c) const -+  { return __towlower_l(__c, _M_c_locale_ctype); } -+   -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  do_widen(char __c) const -+  { return _M_widen[static_cast<unsigned char>(__c)]; } -+ -+  const char*  -+  ctype<wchar_t>:: -+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+  { -+    while (__lo < __hi) -+      { -+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)]; -+	++__lo; -+	++__dest; -+      } -+    return __hi; -+  } -+ -+  char -+  ctype<wchar_t>:: -+  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<char>(__c));  -+  } -+ -+  const wchar_t* -+  ctype<wchar_t>:: -+  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<char>(__c)); -+	    } -+	  ++__lo; -+	  ++__dest; -+	} -+    else -+      while (__lo < __hi) -+	{ -+	  const int __c = wctob(*__lo); -+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c)); -+	  ++__lo; -+	  ++__dest; -+	} -+#ifdef __UCLIBC_HAS_XLOCALE__ -+    __uselocale(__old); -+#endif -+    return __hi; -+  } -+ -+  void -+  ctype<wchar_t>::_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<char>(__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<mask>(_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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::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<const char*>(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<wchar_t>::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 <bkoz@redhat.com> -+ -+#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<typename _CharT> -+     messages<_CharT>::messages(size_t __refs) -+     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),  -+     _M_name_messages(_S_get_c_name()) -+     { } -+ -+  template<typename _CharT> -+     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 _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,  -+			   const char* __dir) const -+    {  -+      __bindtextdomain(__s.c_str(), __dir); -+      return this->do_open(__s, __loc);  -+    } -+ -+  // Virtual member functions. -+  template<typename _CharT> -+    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 _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::do_open(const basic_string<char>& __s,  -+			      const locale&) const -+    {  -+      // No error checking is done, assume the catalog exists and can -+      // be used. -+      __textdomain(__s.c_str()); -+      return 0; -+    } -+ -+  template<typename _CharT> -+    void     -+    messages<_CharT>::do_close(catalog) const  -+    { } -+ -+   // messages_byname -+   template<typename _CharT> -+     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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char, true>::_M_initialize_moneypunct(__c_locale __cloc,  -+						     const char*) -+    { -+      if (!_M_data) -+	_M_data = new __moneypunct_cache<char, true>; -+ -+      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<char, false>::_M_initialize_moneypunct(__c_locale __cloc,  -+						      const char*) -+    { -+      if (!_M_data) -+	_M_data = new __moneypunct_cache<char, false>; -+ -+      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<char, true>::~moneypunct() -+    { delete _M_data; } -+ -+  template<>  -+    moneypunct<char, false>::~moneypunct() -+    { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+  template<>  -+    void -+    moneypunct<wchar_t, true>::_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<wchar_t, true>; -+ -+      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<unsigned char>(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<wchar_t>(__u.__w); -+ -+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__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<wchar_t, false>::_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<wchar_t, false>; -+ -+    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<unsigned char>(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<wchar_t>(__u.__w); -+ -+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__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<wchar_t, true>::~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<wchar_t, false>::~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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_M_initialize_numpunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __numpunct_cache<char>; -+ -+      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<char>::~numpunct() -+    { delete _M_data; } -+    -+#ifdef _GLIBCXX_USE_WCHAR_T -+  template<>  -+    void -+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __numpunct_cache<wchar_t>; -+ -+      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<unsigned char>(__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<unsigned char>(__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<wchar_t>(__u.__w); -+ -+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__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<wchar_t>::~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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>:: -+    _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<char>::_M_initialize_timepunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __timepunct_cache<char>; -+ -+      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<wchar_t>:: -+    _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<wchar_t>::_M_initialize_timepunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __timepunct_cache<wchar_t>; -+ -+#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<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+	  _M_data->_M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+	  _M_data->_M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+	  _M_data->_M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+	  _M_data->_M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+	  _M_data->_M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+	  _M_data->_M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+	  _M_data->_M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+	  _M_data->_M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+	  // Day names, starting with "C"'s Sunday. -+	  _M_data->_M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+	  _M_data->_M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+	  _M_data->_M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+	  _M_data->_M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+	  _M_data->_M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+	  _M_data->_M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+	  _M_data->_M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+	  // Abbreviated day names, starting with "C"'s Sun. -+	  _M_data->_M_aday1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+	  _M_data->_M_aday2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+	  _M_data->_M_aday3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+	  _M_data->_M_aday4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+	  _M_data->_M_aday5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+	  _M_data->_M_aday6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+	  _M_data->_M_aday7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+	  // Month names, starting with "C"'s January. -+	  _M_data->_M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+	  _M_data->_M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+	  _M_data->_M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+	  _M_data->_M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+	  _M_data->_M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+	  _M_data->_M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+	  _M_data->_M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+	  _M_data->_M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+	  _M_data->_M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+	  _M_data->_M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+	  _M_data->_M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+	  _M_data->_M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+	  // Abbreviated month names, starting with "C"'s Jan. -+	  _M_data->_M_amonth01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+	  _M_data->_M_amonth02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+	  _M_data->_M_amonth03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+	  _M_data->_M_amonth04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+	  _M_data->_M_amonth05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+	  _M_data->_M_amonth06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+	  _M_data->_M_amonth07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+	  _M_data->_M_amonth08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+	  _M_data->_M_amonth09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+	  _M_data->_M_amonth10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+	  _M_data->_M_amonth11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+	  _M_data->_M_amonth12 = reinterpret_cast<wchar_t*>(__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 <bkoz@redhat.com> -+ -+  template<typename _CharT> -+    __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<typename _CharT> -+    __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<typename _CharT> -+    __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<typename _CharT> -+    __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<char>::_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<char>:: -+  is(mask __m, char __c) const -+  { return _M_table[static_cast<unsigned char>(__c)] & __m; } -+ -+  const char* -+  ctype<char>:: -+  is(const char* __low, const char* __high, mask* __vec) const -+  { -+    while (__low < __high) -+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; -+    return __high; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_is(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) -+      ++__low; -+    return __low; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_not(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && (_M_table[static_cast<unsigned char>(*__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<char>::classic_table() throw() -+  { return __C_ctype_b; } -+ -+  ctype<char>::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<char>::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<char>::do_toupper(char __c) const -+  { return _M_toupper[static_cast<unsigned char>(__c)]; } -+ -+  const char* -+  ctype<char>::do_toupper(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_toupper[static_cast<unsigned char>(*__low)]; -+	++__low; -+      } -+    return __high; -+  } -+ -+  char -+  ctype<char>::do_tolower(char __c) const -+  { return _M_tolower[static_cast<unsigned char>(__c)]; } -+ -+  const char*  -+  ctype<char>::do_tolower(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_tolower[static_cast<unsigned char>(*__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 <features.h> -+ -+// 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/sources/gcc/3.4.1/400-mips-delay-slot.patch b/sources/gcc/3.4.1/400-mips-delay-slot.patch deleted file mode 100644 index 8111dba18..000000000 --- a/sources/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 <anemo@mba.ocn.ne.jp> 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/sources/gcc/3.4.1/800-arm-bigendian.patch b/sources/gcc/3.4.1/800-arm-bigendian.patch deleted file mode 100644 index 0bae8f474..000000000 --- a/sources/gcc/3.4.1/800-arm-bigendian.patch +++ /dev/null @@ -1,70 +0,0 @@ -By Lennert Buytenhek <buytenh@wantstofly.org> -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/sources/gcc/3.4.1/810-arm-bigendian-uclibc.patch b/sources/gcc/3.4.1/810-arm-bigendian-uclibc.patch deleted file mode 100644 index a4d87e231..000000000 --- a/sources/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/sources/gcc/3.4.1/arm-softfloat.patch.conditional b/sources/gcc/3.4.1/arm-softfloat.patch.conditional deleted file mode 100644 index 19d1b90da..000000000 --- a/sources/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 <dimitry@andric.com>, 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/sources/gcc/3.4.2/100-uclibc-conf.patch b/sources/gcc/3.4.2/100-uclibc-conf.patch deleted file mode 100644 index 10108103e..000000000 --- a/sources/gcc/3.4.2/100-uclibc-conf.patch +++ /dev/null @@ -1,433 +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" -@@ -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} 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" - 	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/sources/gcc/3.4.2/200-uclibc-locale.patch b/sources/gcc/3.4.2/200-uclibc-locale.patch deleted file mode 100644 index 3fc4900b0..000000000 --- a/sources/gcc/3.4.2/200-uclibc-locale.patch +++ /dev/null @@ -1,3246 +0,0 @@ -diff -urN gcc-3.4.2-dist/libstdc++-v3/acinclude.m4 gcc-3.4.2/libstdc++-v3/acinclude.m4 ---- gcc-3.4.2-dist/libstdc++-v3/acinclude.m4	2004-07-15 12:42:45.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/acinclude.m4	2004-09-10 10:47:40.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 <features.h> -@@ -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.2-dist/libstdc++-v3/aclocal.m4 gcc-3.4.2/libstdc++-v3/aclocal.m4 ---- gcc-3.4.2-dist/libstdc++-v3/aclocal.m4	2004-08-13 15:44:03.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/aclocal.m4	2004-09-10 10:47:40.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 <features.h> -@@ -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.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2004-09-10 10:47:40.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 <jakub@redhat.com> -+ -+#include <clocale> -+ -+#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.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc	2004-09-10 10:47:40.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 <bkoz@redhat.com> -+ -+#include <cerrno>  // For errno -+#include <locale> -+#include <stdexcept> -+#include <langinfo.h> -+#include <bits/c++locale_internal.h> -+ -+#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.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h	2004-09-10 10:48:08.000000000 -0500 -@@ -0,0 +1,115 @@ -+// 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 <bkoz@redhat.com> -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include <cstring>              // get std::strlen -+#include <cstdio>               // get std::snprintf or std::sprintf -+#include <clocale> -+#include <langinfo.h>		// For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include <iconv.h>		// For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include <libintl.h> 		// 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<typename _Tv> -+    int -+    __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+		     _Tv __v, const __c_locale& __cloc, int __prec) -+    { -+      __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+		     _Tv __v, const __c_locale&, int __prec) -+    { -+# 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 -+ -+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __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.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2004-09-10 10:47:40.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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+namespace std -+{ -+  // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+  codecvt_base::result -+  codecvt<wchar_t, char, mbstate_t>:: -+  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<size_t>(-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<size_t>(__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<wchar_t, char, mbstate_t>:: -+  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<const extern_type*>(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<size_t>(-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<size_t>(-1) -+		    || __conv == static_cast<size_t>(-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<wchar_t, char, mbstate_t>:: -+  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<wchar_t, char, mbstate_t>:: -+  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<wchar_t, char, mbstate_t>:: -+  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<wchar_t*>(__builtin_alloca(sizeof(wchar_t)  -+							   * __max)); -+    while (__from < __end && __max) -+      { -+	const extern_type* __from_chunk_end; -+	__from_chunk_end = static_cast<const extern_type*>(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<size_t>(-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<size_t>(-1) -+		    || __conv == static_cast<size_t>(-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.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc	2004-09-10 10:47:40.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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_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<char>::_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<wchar_t>::_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<wchar_t>::_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.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2004-09-10 10:47:40.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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char> specializations are in src/locale.cc and -+  // various /config/os/* files. -+  template<> -+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs) -+    : ctype<char>(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<wchar_t>::__wmask_type -+  ctype<wchar_t>::_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<wchar_t>::do_toupper(wchar_t __c) const -+  { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>::do_tolower(wchar_t __c) const -+  { return __towlower_l(__c, _M_c_locale_ctype); } -+   -+  const wchar_t* -+  ctype<wchar_t>::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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  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<wchar_t>:: -+  do_widen(char __c) const -+  { return _M_widen[static_cast<unsigned char>(__c)]; } -+ -+  const char*  -+  ctype<wchar_t>:: -+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+  { -+    while (__lo < __hi) -+      { -+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)]; -+	++__lo; -+	++__dest; -+      } -+    return __hi; -+  } -+ -+  char -+  ctype<wchar_t>:: -+  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<char>(__c));  -+  } -+ -+  const wchar_t* -+  ctype<wchar_t>:: -+  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<char>(__c)); -+	    } -+	  ++__lo; -+	  ++__dest; -+	} -+    else -+      while (__lo < __hi) -+	{ -+	  const int __c = wctob(*__lo); -+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c)); -+	  ++__lo; -+	  ++__dest; -+	} -+#ifdef __UCLIBC_HAS_XLOCALE__ -+    __uselocale(__old); -+#endif -+    return __hi; -+  } -+ -+  void -+  ctype<wchar_t>::_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<char>(__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<mask>(_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.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc	2004-09-10 10:47:40.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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>::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<const char*>(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<wchar_t>::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.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h	2004-09-10 10:47:40.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 <bkoz@redhat.com> -+ -+#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<typename _CharT> -+     messages<_CharT>::messages(size_t __refs) -+     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),  -+     _M_name_messages(_S_get_c_name()) -+     { } -+ -+  template<typename _CharT> -+     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 _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc,  -+			   const char* __dir) const -+    {  -+      __bindtextdomain(__s.c_str(), __dir); -+      return this->do_open(__s, __loc);  -+    } -+ -+  // Virtual member functions. -+  template<typename _CharT> -+    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 _CharT> -+    typename messages<_CharT>::catalog  -+    messages<_CharT>::do_open(const basic_string<char>& __s,  -+			      const locale&) const -+    {  -+      // No error checking is done, assume the catalog exists and can -+      // be used. -+      __textdomain(__s.c_str()); -+      return 0; -+    } -+ -+  template<typename _CharT> -+    void     -+    messages<_CharT>::do_close(catalog) const  -+    { } -+ -+   // messages_byname -+   template<typename _CharT> -+     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.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2004-09-10 10:47:40.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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char, true>::_M_initialize_moneypunct(__c_locale __cloc,  -+						     const char*) -+    { -+      if (!_M_data) -+	_M_data = new __moneypunct_cache<char, true>; -+ -+      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<char, false>::_M_initialize_moneypunct(__c_locale __cloc,  -+						      const char*) -+    { -+      if (!_M_data) -+	_M_data = new __moneypunct_cache<char, false>; -+ -+      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<char, true>::~moneypunct() -+    { delete _M_data; } -+ -+  template<>  -+    moneypunct<char, false>::~moneypunct() -+    { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+  template<>  -+    void -+    moneypunct<wchar_t, true>::_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<wchar_t, true>; -+ -+      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<unsigned char>(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<wchar_t>(__u.__w); -+ -+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__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<wchar_t, false>::_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<wchar_t, false>; -+ -+    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<unsigned char>(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<wchar_t>(__u.__w); -+ -+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__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<wchar_t, true>::~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<wchar_t, false>::~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.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2004-09-10 10:47:40.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 <bkoz@redhat.com> -+ -+#define _LIBC -+#include <locale> -+#undef _LIBC -+#include <bits/c++locale_internal.h> -+ -+#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<char>::_M_initialize_numpunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __numpunct_cache<char>; -+ -+      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<char>::~numpunct() -+    { delete _M_data; } -+    -+#ifdef _GLIBCXX_USE_WCHAR_T -+  template<>  -+    void -+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __numpunct_cache<wchar_t>; -+ -+      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<unsigned char>(__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<unsigned char>(__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<wchar_t>(__u.__w); -+ -+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__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<wchar_t>::~numpunct() -+    { delete _M_data; } -+ #endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc	2004-09-10 10:48:00.000000000 -0500 -@@ -0,0 +1,356 @@ -+// 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 <bkoz@redhat.com> -+ -+#include <locale> -+#include <bits/c++locale_internal.h> -+ -+#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<char>:: -+    _M_put(char* __s, size_t __maxlen, const char* __format,  -+	   const tm* __tm) const -+    { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, -+					_M_c_locale_timepunct); -+#else -+      char* __old = strdup(setlocale(LC_ALL, NULL)); -+      setlocale(LC_ALL, _M_name_timepunct); -+      const size_t __len = strftime(__s, __maxlen, __format, __tm); -+      setlocale(LC_ALL, __old); -+      free(__old); -+#endif -+      // Make sure __s is null terminated. -+      if (__len == 0) -+	__s[0] = '\0'; -+    } -+ -+  template<>  -+    void -+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __timepunct_cache<char>; -+ -+      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<wchar_t>:: -+    _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); -+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, -+					_M_c_locale_timepunct); -+#else -+      char* __old = strdup(setlocale(LC_ALL, NULL)); -+      setlocale(LC_ALL, _M_name_timepunct); -+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm); -+      setlocale(LC_ALL, __old); -+      free(__old); -+#endif -+      // Make sure __s is null terminated. -+      if (__len == 0) -+	__s[0] = L'\0'; -+    } -+ -+  template<>  -+    void -+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc) -+    { -+      if (!_M_data) -+	_M_data = new __timepunct_cache<wchar_t>; -+ -+#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<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc)); -+	  _M_data->_M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc)); -+	  _M_data->_M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc)); -+	  _M_data->_M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc)); -+	  _M_data->_M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc)); -+	  _M_data->_M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc)); -+	  _M_data->_M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc)); -+	  _M_data->_M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc)); -+	  _M_data->_M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc)); -+ -+	  // Day names, starting with "C"'s Sunday. -+	  _M_data->_M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc)); -+	  _M_data->_M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc)); -+	  _M_data->_M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc)); -+	  _M_data->_M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc)); -+	  _M_data->_M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc)); -+	  _M_data->_M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc)); -+	  _M_data->_M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc)); -+ -+	  // Abbreviated day names, starting with "C"'s Sun. -+	  _M_data->_M_aday1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc)); -+	  _M_data->_M_aday2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc)); -+	  _M_data->_M_aday3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc)); -+	  _M_data->_M_aday4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc)); -+	  _M_data->_M_aday5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc)); -+	  _M_data->_M_aday6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc)); -+	  _M_data->_M_aday7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc)); -+ -+	  // Month names, starting with "C"'s January. -+	  _M_data->_M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc)); -+	  _M_data->_M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc)); -+	  _M_data->_M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc)); -+	  _M_data->_M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc)); -+	  _M_data->_M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc)); -+	  _M_data->_M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc)); -+	  _M_data->_M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc)); -+	  _M_data->_M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc)); -+	  _M_data->_M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc)); -+	  _M_data->_M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc)); -+	  _M_data->_M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc)); -+	  _M_data->_M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc)); -+ -+	  // Abbreviated month names, starting with "C"'s Jan. -+	  _M_data->_M_amonth01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc)); -+	  _M_data->_M_amonth02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc)); -+	  _M_data->_M_amonth03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc)); -+	  _M_data->_M_amonth04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc)); -+	  _M_data->_M_amonth05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc)); -+	  _M_data->_M_amonth06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc)); -+	  _M_data->_M_amonth07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc)); -+	  _M_data->_M_amonth08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc)); -+	  _M_data->_M_amonth09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc)); -+	  _M_data->_M_amonth10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc)); -+	  _M_data->_M_amonth11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc)); -+	  _M_data->_M_amonth12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_12, __cloc)); -+	} -+#endif // 0 -+    } -+#endif -+} -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h	2004-09-10 10:47:40.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 <bkoz@redhat.com> -+ -+  template<typename _CharT> -+    __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<typename _CharT> -+    __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<typename _CharT> -+    __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<typename _CharT> -+    __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.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h	2004-09-10 10:47:40.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<char>::_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.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h	2004-09-10 10:47:40.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<char>:: -+  is(mask __m, char __c) const -+  { return _M_table[static_cast<unsigned char>(__c)] & __m; } -+ -+  const char* -+  ctype<char>:: -+  is(const char* __low, const char* __high, mask* __vec) const -+  { -+    while (__low < __high) -+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)]; -+    return __high; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_is(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m)) -+      ++__low; -+    return __low; -+  } -+ -+  const char* -+  ctype<char>:: -+  scan_not(mask __m, const char* __low, const char* __high) const -+  { -+    while (__low < __high  -+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0) -+      ++__low; -+    return __low; -+  } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2004-09-10 10:47:40.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<char>::classic_table() throw() -+  { return __C_ctype_b; } -+ -+  ctype<char>::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<char>::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<char>::do_toupper(char __c) const -+  { return _M_toupper[static_cast<unsigned char>(__c)]; } -+ -+  const char* -+  ctype<char>::do_toupper(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_toupper[static_cast<unsigned char>(*__low)]; -+	++__low; -+      } -+    return __high; -+  } -+ -+  char -+  ctype<char>::do_tolower(char __c) const -+  { return _M_tolower[static_cast<unsigned char>(__c)]; } -+ -+  const char*  -+  ctype<char>::do_tolower(char* __low, const char* __high) const -+  { -+    while (__low < __high) -+      { -+	*__low = _M_tolower[static_cast<unsigned char>(*__low)]; -+	++__low; -+      } -+    return __high; -+  } -diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 18:00:00.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h	2004-09-10 10:47:40.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 <features.h> -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif -diff -urN gcc-3.4.2-dist/libstdc++-v3/configure gcc-3.4.2/libstdc++-v3/configure ---- gcc-3.4.2-dist/libstdc++-v3/configure	2004-08-13 15:44:04.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/configure	2004-09-10 10:47:40.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.2-dist/libstdc++-v3/configure.host gcc-3.4.2/libstdc++-v3/configure.host ---- gcc-3.4.2-dist/libstdc++-v3/configure.host	2004-08-27 14:52:30.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/configure.host	2004-09-10 10:47:40.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.2-dist/libstdc++-v3/crossconfig.m4 gcc-3.4.2/libstdc++-v3/crossconfig.m4 ---- gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4	2004-07-06 20:23:49.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/crossconfig.m4	2004-09-10 10:47:40.000000000 -0500 -@@ -138,6 +138,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 \ -@@ -152,7 +245,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.2-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h	2003-12-08 21:51:45.000000000 -0600 -+++ gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h	2004-09-10 10:47:40.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.2-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h	2004-07-20 03:52:12.000000000 -0500 -+++ gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h	2004-09-10 10:47:40.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/sources/gcc/3.4.2/400-mips-pr17565.patch b/sources/gcc/3.4.2/400-mips-pr17565.patch deleted file mode 100644 index 7ae6aa56f..000000000 --- a/sources/gcc/3.4.2/400-mips-pr17565.patch +++ /dev/null @@ -1,102 +0,0 @@ -[committed] Fix target/17565: asms in delay slots - -    * From: Richard Sandiford <rsandifo at redhat dot com> -    * To: gcc-patches at gcc dot gnu dot org -    * Date: Mon, 20 Sep 2004 07:55:58 +0100 -    * Subject: [committed] Fix target/17565: asms in delay slots - -The MIPS port was allowing asms to be put into delay slots if the -compiler guesses they are only one instruction long.  This is wrong -because of the possibility of it containing macros. - -The problem can be reproduced as an assembler warning -in the following testcase: - -int foo (int n) -{ -  register int k asm ("$16") = n; -  if (k > 0) -    { -      bar (); -      asm ("li %0,0x12345678" : "=r" (k)); -    } -  return k; -} - -because the multi-instruction asm statement goes into the delay -slot of the call to bar(). - -This is reduced from a much more serious linux problem.  Linux is fond -of using empty asm statements, and since gcc estimates empty asms to be -one instruction long, they too might be put into delay slots.  This -actually has the effect of putting the following instruction into the -delay slot instead.  Since there's no assembler warning, the problem was -only detected as a run-time failure. - -The fix is simple: set the asm value of "can_delay" to "no". -Tested on mipsisa64-elf, applied to mainline. - -This problem goes back to at least 2.95, so it isn't technically a -regression.  On the other hand, it's the kind of bug that could trigger -for different types of code in different releases, so I'm sure there's -a testcase that fails (say) in 3.4 and not in 2.95.  Will probably ask -Mark for permission to backport to 3.4. - -Richard - - -	PR target/17565 -	* config/mips/mips.md (define_asm_attributes): Set can_delay to no. - -testsuite/ -	* gcc.target/mips/asm-1.c: New test. - -Index: config/mips/mips.md -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/mips/mips.md,v -retrieving revision 1.306 -diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.306 mips.md -*** gcc/gcc/config/mips/mips.md	13 Sep 2004 19:32:05 -0000	1.306 ---- gcc/gcc/config/mips/mips.md	20 Sep 2004 06:52:31 -0000 -*************** (define_attr "may_clobber_hilo" "no,yes" -*** 266,272 **** -   -  ;; Describe a user's asm statement. -  (define_asm_attributes -!   [(set_attr "type" "multi")]) -   -  ;; ......................... -  ;; ---- 266,273 ---- -   -  ;; Describe a user's asm statement. -  (define_asm_attributes -!   [(set_attr "type" "multi") -!    (set_attr "can_delay" "no")]) -   -  ;; ......................... -  ;; -Index: testsuite/gcc.target/mips/asm-1.c -=================================================================== -RCS file: testsuite/gcc.target/mips/asm-1.c -diff -N testsuite/gcc.target/mips/asm-1.c -*** gcc/gcc/testsuite/gcc.target/mips/asm-1.c	1 Jan 1970 00:00:00 -0000 ---- gcc/gcc/testsuite/gcc.target/mips/asm-1.c	20 Sep 2004 06:52:31 -0000 -*************** -*** 0 **** ---- 1,14 ---- -+ /* PR target/17565.  GCC used to put the asm into the delay slot -+    of the call.  */ -+ /* { dg-do assemble } */ -+ /* { dg-options "-O" } */ -+ int foo (int n) -+ { -+   register int k asm ("$16") = n; -+   if (k > 0) -+     { -+       bar (); -+       asm ("li %0,0x12345678" : "=r" (k)); -+     } -+   return k; -+ } - diff --git a/sources/gcc/3.4.2/401-ppc-eabi-typo.patch b/sources/gcc/3.4.2/401-ppc-eabi-typo.patch deleted file mode 100644 index dbb856868..000000000 --- a/sources/gcc/3.4.2/401-ppc-eabi-typo.patch +++ /dev/null @@ -1,20 +0,0 @@ -revision 1.12 -date: 2004/07/16 15:13:40;  author: segher;  state: Exp;  lines: +1 -1 -        * config/rs6000/eabi.asm (__eabi_convert): Fix typo (cmpi vs. cmpwi). -Index: gcc/config/rs6000/eabi.asm -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/config/rs6000/eabi.asm,v -retrieving revision 1.11 -retrieving revision 1.12 -diff -u -b -B -w -p -r1.11 -r1.12 ---- gcc/gcc/config/rs6000/eabi.asm	20 Sep 2002 23:46:58 -0000	1.11 -+++ gcc/gcc/config/rs6000/eabi.asm	16 Jul 2004 15:13:40 -0000	1.12 -@@ -252,7 +252,7 @@ FUNC_START(__eabi_convert) -  - .Lcvt: - 	lwzu	6,4(3)				/* pointer to convert */ --	cmpi	0,6,0 -+	cmpwi	0,6,0 - 	beq-	.Lcvt2				/* if pointer is null, don't convert */ -  -         add	6,6,12				/* convert pointer */ diff --git a/sources/gcc/3.4.2/600-gcc34-arm-ldm-peephole.patch b/sources/gcc/3.4.2/600-gcc34-arm-ldm-peephole.patch deleted file mode 100644 index fb317e153..000000000 --- a/sources/gcc/3.4.2/600-gcc34-arm-ldm-peephole.patch +++ /dev/null @@ -1,79 +0,0 @@ ---- gcc-3.4.0/gcc/config/arm/arm.md.arm-ldm-peephole	2004-01-13 08:24:37.000000000 -0500 -+++ gcc-3.4.0/gcc/config/arm/arm.md	2004-04-24 18:18:04.000000000 -0400 -@@ -8810,13 +8810,16 @@ -    (set_attr "length" "4,8,8")] - ) -  -+; Try to convert LDR+LDR+arith into [add+]LDM+arith -+; On XScale, LDM is always slower than two LDRs, so only do this if -+; optimising for size. - (define_insn "*arith_adjacentmem" -   [(set (match_operand:SI 0 "s_register_operand" "=r") - 	(match_operator:SI 1 "shiftable_operator" - 	 [(match_operand:SI 2 "memory_operand" "m") - 	  (match_operand:SI 3 "memory_operand" "m")])) -    (clobber (match_scratch:SI 4 "=r"))] --  "TARGET_ARM && adjacent_mem_locations (operands[2], operands[3])" -+  "TARGET_ARM && (!arm_tune_xscale || optimize_size) && adjacent_mem_locations (operands[2], operands[3])" -   "* -   { -     rtx ldm[3]; -@@ -8851,6 +8854,8 @@ -       } -    if (val1 && val2) -       { -+	/* This would be a loss on a Harvard core, but adjacent_mem_locations() -+	   will prevent it from happening.  */ - 	rtx ops[3]; - 	ldm[0] = ops[0] = operands[4]; - 	ops[1] = XEXP (XEXP (operands[2], 0), 0); ---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm-peephole	2004-04-24 18:16:25.000000000 -0400 -+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:18:04.000000000 -0400 -@@ -4593,8 +4593,11 @@ - 	 arith_adjacentmem pattern to output an overlong sequence.  */ -       if (!const_ok_for_op (PLUS, val0) || !const_ok_for_op (PLUS, val1)) - 	return 0; --       --      return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4); -+ -+      /* For Harvard cores, only accept pairs where one offset is zero. -+         See comment in load_multiple_sequence.  */ -+      return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4) -+	&& (!arm_ld_sched || val0 == 0 || val1 == 0); -     } -   return 0; - } -@@ -4838,6 +4841,11 @@ -       *load_offset = unsorted_offsets[order[0]]; -     } -  -+  /* For XScale a two-word LDM is a performance loss, so only do this if -+     size is more important.  See comments in arm_gen_load_multiple.  */ -+  if (nops == 2 && arm_tune_xscale && !optimize_size) -+    return 0; -+ -   if (unsorted_offsets[order[0]] == 0) -     return 1; /* ldmia */ -  -@@ -5064,6 +5072,11 @@ -       *load_offset = unsorted_offsets[order[0]]; -     } -  -+  /* For XScale a two-word LDM is a performance loss, so only do this if -+     size is more important.  See comments in arm_gen_load_multiple.  */ -+  if (nops == 2 && arm_tune_xscale && !optimize_size) -+    return 0; -+ -   if (unsorted_offsets[order[0]] == 0) -     return 1; /* stmia */ -  ---- gcc-3.4.0/gcc/genpeep.c.arm-ldm-peephole	2003-07-05 01:27:22.000000000 -0400 -+++ gcc-3.4.0/gcc/genpeep.c	2004-04-24 18:18:04.000000000 -0400 -@@ -381,6 +381,7 @@ -   printf ("#include \"recog.h\"\n"); -   printf ("#include \"except.h\"\n\n"); -   printf ("#include \"function.h\"\n\n"); -+  printf ("#include \"flags.h\"\n\n"); -  -   printf ("#ifdef HAVE_peephole\n"); -   printf ("extern rtx peep_operand[];\n\n"); diff --git a/sources/gcc/3.4.2/601-gcc34-arm-ldm.patch b/sources/gcc/3.4.2/601-gcc34-arm-ldm.patch deleted file mode 100644 index 142052fdf..000000000 --- a/sources/gcc/3.4.2/601-gcc34-arm-ldm.patch +++ /dev/null @@ -1,119 +0,0 @@ ---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm	2004-02-27 09:51:05.000000000 -0500 -+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:16:25.000000000 -0400 -@@ -8520,6 +8520,26 @@ -   return_used_this_function = 0;   - } -  -+/* Return the number (counting from 0) of -+   the least significant set bit in MASK.  */ -+ -+#ifdef __GNUC__ -+inline -+#endif -+static int -+number_of_first_bit_set (mask) -+     int mask; -+{ -+  int bit; -+ -+  for (bit = 0; -+       (mask & (1 << bit)) == 0; -+       ++bit) -+    continue; -+ -+  return bit; -+} -+ - const char * - arm_output_epilogue (rtx sibling) - { -@@ -8753,27 +8773,47 @@ - 	  saved_regs_mask |=   (1 << PC_REGNUM); - 	} -  --      /* Load the registers off the stack.  If we only have one register --	 to load use the LDR instruction - it is faster.  */ --      if (saved_regs_mask == (1 << LR_REGNUM)) --	{ --	  /* The exception handler ignores the LR, so we do --	     not really need to load it off the stack.  */ --	  if (eh_ofs) --	    asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM); --	  else --	    asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM); --	} --      else if (saved_regs_mask) -+      if (saved_regs_mask) - 	{ --	  if (saved_regs_mask & (1 << SP_REGNUM)) --	    /* Note - write back to the stack register is not enabled --	       (ie "ldmfd sp!...").  We know that the stack pointer is --	       in the list of registers and if we add writeback the --	       instruction becomes UNPREDICTABLE.  */ --	    print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask); -+	  /* Load the registers off the stack.  If we only have one register -+	     to load use the LDR instruction - it is faster.  */ -+	  if (bit_count (saved_regs_mask) == 1) -+	    { -+	      int reg = number_of_first_bit_set (saved_regs_mask); -+ -+	      switch (reg) -+		{ -+		case SP_REGNUM: -+		  /* Mustn't use base writeback when loading SP.  */ -+		  asm_fprintf (f, "\tldr\t%r, [%r]\n", SP_REGNUM, SP_REGNUM); -+		  break; -+		   -+		case LR_REGNUM: -+		  if (eh_ofs) -+		    { -+		      /* The exception handler ignores the LR, so we do -+			 not really need to load it off the stack.  */ -+		      asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM); -+		      break; -+		    } -+		  /* else fall through */ -+		   -+		default: -+		  asm_fprintf (f, "\tldr\t%r, [%r], #4\n", reg, SP_REGNUM); -+		  break; -+		} -+	    } - 	  else --	    print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask); -+	    { -+	      if (saved_regs_mask & (1 << SP_REGNUM)) -+		/* Note - write back to the stack register is not enabled -+		   (ie "ldmfd sp!...").  We know that the stack pointer is -+		   in the list of registers and if we add writeback the -+		   instruction becomes UNPREDICTABLE.  */ -+		print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask); -+	      else -+		print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask); -+	    } - 	} -  -       if (current_function_pretend_args_size) -@@ -11401,22 +11441,6 @@ -     } - } -  --/* Return the number (counting from 0) of --   the least significant set bit in MASK.  */ -- --inline static int --number_of_first_bit_set (int mask) --{ --  int bit; -- --  for (bit = 0; --       (mask & (1 << bit)) == 0; --       ++bit) --    continue; -- --  return bit; --} -- - /* Generate code to return from a thumb function. -    If 'reg_containing_return_addr' is -1, then the return address is -    actually on the stack, at the stack pointer.  */ diff --git a/sources/gcc/3.4.2/602-sdk-libstdc++-includes.patch b/sources/gcc/3.4.2/602-sdk-libstdc++-includes.patch deleted file mode 100644 index 4377c2143..000000000 --- a/sources/gcc/3.4.2/602-sdk-libstdc++-includes.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~	2003-08-27 22:29:42.000000000 +0100 -+++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am	2004-07-22 16:41:45.152130128 +0100 -@@ -32,7 +32,7 @@ -  - libmath_la_SOURCES = stubs.c -  --AM_CPPFLAGS = $(CANADIAN_INCLUDES) -+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include -  - # Only compiling "C" sources in this directory. - LIBTOOL = @LIBTOOL@ --tag CC ---- gcc-3.4.1/libstdc++-v3/fragment.am.old	2004-07-22 18:24:58.024083656 +0100 -+++ gcc-3.4.1/libstdc++-v3/fragment.am	2004-07-22 18:24:59.019932264 +0100 -@@ -18,7 +18,7 @@ - 	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once -  - # -I/-D flags to pass when compiling. --AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include -  -  -  diff --git a/sources/gcc/3.4.2/700-pr15068-fix.patch b/sources/gcc/3.4.2/700-pr15068-fix.patch deleted file mode 100644 index 2977765c5..000000000 --- a/sources/gcc/3.4.2/700-pr15068-fix.patch +++ /dev/null @@ -1,44 +0,0 @@ -See http://gcc.gnu.org/PR15068 - -Fixes error - -../sysdeps/generic/s_fmax.c: In function `__fmax': -../sysdeps/generic/s_fmax.c:28: internal compiler error: in elim_reg_cond, at flow.c:3257 -Please submit a full bug report, -with preprocessed source if appropriate. -See <URL:http://gcc.gnu.org/bugs.html> for instructions. -make[2]: *** [/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/math/s_fmax.o] Error 1 -make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822/math' -make[1]: *** [math/others] Error 2 -make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822' -make: *** [all] Error 2 - -[ rediffed against gcc-3.4.1, with elbow grease, ending up with same thing as -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3 ] - ---- gcc-3.4.1/gcc/flow.c.old	2004-02-27 19:39:19.000000000 -0800 -+++ gcc-3.4.1/gcc/flow.c	2004-08-26 07:29:46.000000000 -0700 -@@ -1878,6 +1878,7 @@ - 	  rtx set_src = SET_SRC (pc_set (BB_END (bb))); - 	  rtx cond_true = XEXP (set_src, 0); - 	  rtx reg = XEXP (cond_true, 0); -+ 	  enum rtx_code inv_cond; -  - 	  if (GET_CODE (reg) == SUBREG) - 	    reg = SUBREG_REG (reg); -@@ -1886,11 +1887,13 @@ - 	     in the form of a comparison of a register against zero.   - 	     If the condition is more complex than that, then it is safe - 	     not to record any information.  */ --	  if (GET_CODE (reg) == REG -+ 	  inv_cond = reversed_comparison_code (cond_true, BB_END (bb)); -+ 	  if (inv_cond != UNKNOWN -+	      && GET_CODE (reg) == REG - 	      && XEXP (cond_true, 1) == const0_rtx) - 	    { - 	      rtx cond_false --		= gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)), -+		= gen_rtx_fmt_ee (inv_cond, - 				  GET_MODE (cond_true), XEXP (cond_true, 0), - 				  XEXP (cond_true, 1)); - 	      if (GET_CODE (XEXP (set_src, 1)) == PC) diff --git a/sources/gcc/3.4.2/800-arm-bigendian.patch b/sources/gcc/3.4.2/800-arm-bigendian.patch deleted file mode 100644 index 0bae8f474..000000000 --- a/sources/gcc/3.4.2/800-arm-bigendian.patch +++ /dev/null @@ -1,70 +0,0 @@ -By Lennert Buytenhek <buytenh@wantstofly.org> -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/sources/gcc/3.4.2/810-arm-bigendian-uclibc.patch b/sources/gcc/3.4.2/810-arm-bigendian-uclibc.patch deleted file mode 100644 index a4d87e231..000000000 --- a/sources/gcc/3.4.2/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/sources/gcc/3.4.2/arm-softfloat.patch.conditional b/sources/gcc/3.4.2/arm-softfloat.patch.conditional deleted file mode 100644 index 19d1b90da..000000000 --- a/sources/gcc/3.4.2/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 <dimitry@andric.com>, 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  | 
