Weed out older, no longer maintained versions of gcc
authorEric Andersen <andersen@codepoet.org>
Sun, 1 May 2005 00:43:16 +0000 (00:43 -0000)
committerEric Andersen <andersen@codepoet.org>
Sun, 1 May 2005 00:43:16 +0000 (00:43 -0000)
28 files changed:
toolchain/gcc/2.95/050-debian-subset.patch.bz2 [deleted file]
toolchain/gcc/2.95/100-uclibc-conf.patch [deleted file]
toolchain/gcc/2.95/STLport-4.5.3.patch [deleted file]
toolchain/gcc/3.3.4/100-uclibc-conf.patch [deleted file]
toolchain/gcc/3.3.4/110-uclibc-conf.patch [deleted file]
toolchain/gcc/3.3.4/120-softfloat.patch [deleted file]
toolchain/gcc/3.3.4/200-uclibc-locale.patch [deleted file]
toolchain/gcc/3.3.4/500-loop.patch [deleted file]
toolchain/gcc/3.3.4/800-arm-bigendian.patch [deleted file]
toolchain/gcc/3.3.4/810-arm-bigendian-uclibc.patch [deleted file]
toolchain/gcc/3.3.4/820-no-mips-empic-relocs.patch [deleted file]
toolchain/gcc/3.3.4/specs-arm-soft-float [deleted file]
toolchain/gcc/3.3.4/specs-mips-soft-float [deleted file]
toolchain/gcc/3.3.4/specs-mipsel-soft-float [deleted file]
toolchain/gcc/3.3.4/specs-powerpc-soft-float [deleted file]
toolchain/gcc/3.4.0/100-uclibc-conf.patch [deleted file]
toolchain/gcc/3.4.0/200-uclibc-locale.patch [deleted file]
toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch [deleted file]
toolchain/gcc/3.4.0/arm-softfloat.patch.conditional [deleted file]
toolchain/gcc/3.4.1/100-uclibc-conf.patch [deleted file]
toolchain/gcc/3.4.1/200-uclibc-locale.patch [deleted file]
toolchain/gcc/3.4.1/400-mips-delay-slot.patch [deleted file]
toolchain/gcc/3.4.1/800-arm-bigendian.patch [deleted file]
toolchain/gcc/3.4.1/810-arm-bigendian-uclibc.patch [deleted file]
toolchain/gcc/3.4.1/arm-softfloat.patch.conditional [deleted file]
toolchain/gcc/Config.in
toolchain/gcc/gcc-uclibc-2.95.mk [deleted file]
toolchain/gcc/gcc-uclibc-3.x.mk

diff --git a/toolchain/gcc/2.95/050-debian-subset.patch.bz2 b/toolchain/gcc/2.95/050-debian-subset.patch.bz2
deleted file mode 100644 (file)
index 4dffd84..0000000
Binary files a/toolchain/gcc/2.95/050-debian-subset.patch.bz2 and /dev/null differ
diff --git a/toolchain/gcc/2.95/100-uclibc-conf.patch b/toolchain/gcc/2.95/100-uclibc-conf.patch
deleted file mode 100644 (file)
index f244387..0000000
+++ /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/toolchain/gcc/2.95/STLport-4.5.3.patch b/toolchain/gcc/2.95/STLport-4.5.3.patch
deleted file mode 100644 (file)
index fee65f9..0000000
+++ /dev/null
@@ -1,407 +0,0 @@
-diff -urN STLport-4.5.3/Makefile STLport-4.5.3-devel/Makefile
---- STLport-4.5.3/Makefile     Wed Dec 31 17:00:00 1969
-+++ STLport-4.5.3-devel/Makefile       Tue Jan  7 15:28:08 2003
-@@ -0,0 +1,44 @@
-+# Makefile to compile stlport with uClibc
-+#
-+# Copyright (C) 2002 Erik Andersen <andersen@codepoet.org>
-+#
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+# General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with this program; if not, write to the Free Software
-+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+
-+ARCH:=i386
-+PREFIX:=/usr/$(ARCH)-linux-uclibc
-+CROSS:= $(PREFIX)/../bin/$(ARCH)-linux-uclibc-
-+CC=$(CROSS)gcc
-+CXX=$(CROSS)g++
-+AR = $(CROSS)ar
-+STRIP = $(CROSS)strip --remove-section=.comment --remove-section=.note --strip-unneeded
-+.EXPORT_ALL_VARIABLES:
-+
-+all:
-+      rm -f lib/lib*
-+      make -C src -f gcc-uClibc.mak all
-+      (cd lib; rm -f libstdc++_debug.so; \
-+      ln -fs libstdc++.so.4.5 libstdc++.so; \
-+      ln -fs libstdc++.so.4.5 libstdc++.so.0;)
-+      $(STRIP) lib/libstdc++.so.4.5; 
-+
-+clean:
-+      make -C src -f gcc-uClibc.mak clean
-+      rm -rf lib/*
-+
-+install:
-+      (cd lib; \
-+      cp -a libstdc++.a $(PREFIX)/lib; \
-+      cp -a libstdc++.so libstdc++.so.0 libstdc++.so.4.5 $(PREFIX)/lib;)
-+      cp -a stlport $(PREFIX)/include/c++
-diff -urN STLport-4.5.3/src/dll_main.cpp STLport-4.5.3-devel/src/dll_main.cpp
---- STLport-4.5.3/src/dll_main.cpp     Sat Feb  2 16:11:56 2002
-+++ STLport-4.5.3-devel/src/dll_main.cpp       Tue Jan  7 15:28:08 2003
-@@ -52,7 +52,7 @@
- #  include <locale>
- # endif
--# if defined (_STLP_UNIX)
-+# if defined (_STLP_UNIX) && defined (_STLP_PTHREADS) && ! defined (_STLP_USE_UCLIBC)
- #  define _STLP_HAS_PERTHREAD_ALLOCATOR
- # include <stl/_pthread_alloc.h>
- # endif
-diff -urN STLport-4.5.3/src/gcc-uClibc.mak STLport-4.5.3-devel/src/gcc-uClibc.mak
---- STLport-4.5.3/src/gcc-uClibc.mak   Wed Dec 31 17:00:00 1969
-+++ STLport-4.5.3-devel/src/gcc-uClibc.mak     Tue Jan  7 15:28:08 2003
-@@ -0,0 +1,61 @@
-+#
-+# Basename for libraries
-+#
-+LIB_BASENAME:=libstdc++
-+LIB_SHAREDNAME:=$(LIB_BASENAME).so
-+LIB_SHAREDNAME_FULL:=$(LIB_SHAREDNAME).0
-+
-+#
-+# guts for common stuff
-+#
-+#
-+LINK:=$(AR) -cr
-+#DYN_LINK:=$(CC) -fno-exceptions -lpthread -lm -shared -Wl,-soname=$(LIB_SHAREDNAME_FULL) -o
-+DYN_LINK:=$(CC) -fno-exceptions -shared -Wl,-soname=$(LIB_SHAREDNAME_FULL) -o
-+
-+OBJEXT=o
-+DYNEXT=so
-+STEXT=a
-+RM=rm -rf
-+PATH_SEP=/
-+MKDIR=mkdir -p
-+COMP=GCC$(ARCH)
-+INSTALL_STEP = install_unix 
-+
-+all: release_dynamic release_static
-+#all: all_dynamic all_static symbolic_links 
-+
-+include common_macros.mak
-+STLDEBUG_NAME:=$(LIB_BASENAME).debug
-+
-+# Lets disable exception support, since this saves over 200k...
-+DEFINE_FLAGS:= -fno-exceptions
-+#DEFINE_FLAGS:= -D_STLP_NO_EXCEPTIONS -fno-exceptions -DSTL_NO_EXCEPTIONS
-+
-+#DEFINE_FLAGS+= -D_STLP_USE_UCLIBC -D_STLP_NO_WCHAR_T \
-+#     -DUSE_SPRINTF_INSTEAD -D_ISOC99_SOURCE
-+
-+WARNING_FLAGS:= -W -Wno-sign-compare -Wno-unused -Wno-uninitialized
-+INCLUDE_FLAGS = -I${STLPORT_DIR}
-+CXXFLAGS_COMMON = $(WARNING_FLAGS)  $(DEFINE_FLAGS) $(INCLUDE_FLAGS)
-+
-+CXXFLAGS_RELEASE_static = $(CXXFLAGS_COMMON) -Os
-+CXXFLAGS_RELEASE_dynamic = $(CXXFLAGS_COMMON) -Os -fPIC
-+
-+CXXFLAGS_DEBUG_static = $(CXXFLAGS_COMMON) -O -g
-+CXXFLAGS_DEBUG_dynamic = $(CXXFLAGS_COMMON) -O -g -fPIC
-+
-+CXXFLAGS_STLDEBUG_static = $(CXXFLAGS_DEBUG_static) -D_STLP_DEBUG
-+CXXFLAGS_STLDEBUG_dynamic = $(CXXFLAGS_DEBUG_dynamic) -D_STLP_DEBUG -fPIC
-+
-+include common_percent_rules.mak
-+include common_rules.mak
-+
-+
-+#install: all
-+#     cp -p $(LIB_TARGET) ${D_LIB_TARGET} ../lib
-+
-+#%.s: %.cpp
-+#     $(CXX) $(CXXFLAGS) -O4 -S -pto $<  -o $@
-+
-+
-diff -urN STLport-4.5.3/src/num_put_float.cpp STLport-4.5.3-devel/src/num_put_float.cpp
---- STLport-4.5.3/src/num_put_float.cpp        Fri Jan 18 15:06:52 2002
-+++ STLport-4.5.3-devel/src/num_put_float.cpp  Tue Jan  7 15:28:08 2003
-@@ -65,6 +65,12 @@
- # endif
-+#  if defined(_STLP_USE_UCLIBC)
-+#    define __USE_ISOC99 1
-+#    include <math.h>
-+#    include <float.h>
-+#  endif
-+
- # include <cstdlib>
- #if defined (_MSC_VER) || defined (__MINGW32__) || defined (__BORLANDC__) || defined (__DJGPP)  || defined (_STLP_SCO_OPENSERVER) || defined (__NCR_SVR)
-@@ -209,7 +215,7 @@
- #ifdef USE_SPRINTF_INSTEAD
--#elif defined (__hpux) || defined (__DJGPP) || ( defined(_STLP_USE_GLIBC) && ! defined (__MSL__) )
-+#elif defined (__hpux) || defined (__DJGPP) || ( defined(_STLP_USE_GLIBC) && ! defined (__MSL__) ) || defined (_STLP_USE_UCLIBC)
- #  if defined (isfinite) 
- inline bool _Stl_is_nan_or_inf(double x) { return !isfinite(x); }
- #  else
-@@ -238,7 +244,7 @@
- }
- inline bool _Stl_is_neg_inf(double x)    { return _fpclass(x) == _FPCLASS_NINF; }
- inline bool _Stl_is_neg_nan(double x)    { return _isnan(x) && _copysign(1., x) < 0 ; } 
--#elif defined(__MRC__) || defined(__SC__)             //*TY 02/24/2000 - added support for MPW
-+#elif defined(__MRC__) || defined(__SC__)
- bool _Stl_is_nan_or_inf(double x) { return isnan(x) || !isfinite(x); }
- bool _Stl_is_inf(double x)        { return !isfinite(x); }
- bool _Stl_is_neg_inf(double x)    { return !isfinite(x) && signbit(x); }
-@@ -280,7 +286,7 @@
-   inline char* _Stl_qfcvtR(long double x, int n, int* pt, int* sign, char* buf)
-     { return fcvtbuf(x, n, pt, sign, buf); }
- # endif
--#elif defined (_STLP_USE_GLIBC)
-+#elif defined (_STLP_USE_GLIBC) || defined(_STLP_USE_UCLIBC)
-   inline char* _Stl_ecvtR(double x, int n, int* pt, int* sign, char* buf)
-     { return buf + ecvt_r(x, n, pt, sign, buf, NDIG+2); }
-   inline char* _Stl_fcvtR(double x, int n, int* pt, int* sign, char* buf)
-diff -urN STLport-4.5.3/src/stdio_streambuf.cpp STLport-4.5.3-devel/src/stdio_streambuf.cpp
---- STLport-4.5.3/src/stdio_streambuf.cpp      Thu Jan 10 11:41:52 2002
-+++ STLport-4.5.3-devel/src/stdio_streambuf.cpp        Tue Jan  7 15:28:08 2003
-@@ -82,7 +82,7 @@
-     _STLP_VENDOR_CSTD::fgetpos(_M_file, &pos);
-     // added 21 june 00 mdb,rjf,wjs: glibc 2.2 changed fpos_t to be a struct instead
-     // of a primitive type
--#if (defined(__GLIBC__) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) )
-+#if defined(_STLP_USE_UCLIBC) || (defined(__GLIBC__) && defined(_STLP_USE_GLIBC) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) )
-     return pos_type((streamoff)pos.__pos);
- #elif defined(__ISCPP__) || defined(__MVS__) || (__OS400__)
-      return pos_type(pos.__fpos_elem[ 0 ]);
-@@ -101,13 +101,16 @@
-   // added 21 june 00 mdb,rjf,wjs: glibc 2.2 changed fpos_t to be a struct instead
-   // of a primitive type
--#if (defined(__GLIBC__) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) )
-+#if (defined(__GLIBC__) && defined(_STLP_USE_GLIBC) && ( (__GLIBC__ > 2) || ( (__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 2) ) ) )
-   fpos_t p;
-   p.__pos = pos;
-   memset( &(p.__state), 0, sizeof(p.__state) );
- #elif defined(__MVS__) || (__OS400__)
-   fpos_t p;
-   p.__fpos_elem[0] = pos;
-+#elif defined(_STLP_USE_UCLIBC)
-+  fpos_t p;
-+  p.__pos = pos;
- #else
-   fpos_t p(pos);
- #endif
-diff -urN STLport-4.5.3/stlport/config/_prolog.h STLport-4.5.3-devel/stlport/config/_prolog.h
---- STLport-4.5.3/stlport/config/_prolog.h     Sun Oct 28 13:26:44 2001
-+++ STLport-4.5.3-devel/stlport/config/_prolog.h       Tue Jan  7 15:28:08 2003
-@@ -1,3 +1,8 @@
-+/* Evil hack to make sure everything behaves itself */
-+#define _STLP_USE_UCLIBC
-+//#define _STLP_NO_WCHAR_T
-+//#define _ISOC99_SOURCE
-+//#define USE_SPRINTF_INSTEAD
- #if defined (_STLP_MSVC) || defined (__ICL) || defined (__BORLANDC__)
-diff -urN STLport-4.5.3/stlport/config/stl_gcc.h STLport-4.5.3-devel/stlport/config/stl_gcc.h
---- STLport-4.5.3/stlport/config/stl_gcc.h     Thu Jan 10 11:41:58 2002
-+++ STLport-4.5.3-devel/stlport/config/stl_gcc.h       Tue Jan  7 15:28:08 2003
-@@ -3,7 +3,7 @@
-  */
- /* Systems having GLIBC installed have different traits */
--#if ! defined (_STLP_USE_GLIBC) && ( defined (__linux__) || defined (__CYGWIN__) )
-+#if ! defined (_STLP_USE_GLIBC)  && ! defined (_STLP_USE_UCLIBC) && ( defined (__linux__) || defined (__CYGWIN__) )
- # define _STLP_USE_GLIBC
- #endif
-diff -urN STLport-4.5.3/stlport/cstdlib STLport-4.5.3-devel/stlport/cstdlib
---- STLport-4.5.3/stlport/cstdlib      Thu Aug 23 15:51:54 2001
-+++ STLport-4.5.3-devel/stlport/cstdlib        Tue Jan  7 15:28:08 2003
-@@ -55,9 +55,11 @@
- using _STLP_VENDOR_CSTD::atof;
- using _STLP_VENDOR_CSTD::atoi;
- using _STLP_VENDOR_CSTD::atol;
-+# ifndef _STLP_USE_UCLIBC
- using _STLP_VENDOR_CSTD::mblen;
- using _STLP_VENDOR_CSTD::mbstowcs;
- using _STLP_VENDOR_CSTD::mbtowc;
-+# endif
- using _STLP_VENDOR_CSTD::strtod;
- using _STLP_VENDOR_CSTD::strtol;
- using _STLP_VENDOR_CSTD::strtoul;
-diff -urN STLport-4.5.3/stlport/stl/_config.h STLport-4.5.3-devel/stlport/stl/_config.h
---- STLport-4.5.3/stlport/stl/_config.h        Fri Jan 18 15:08:36 2002
-+++ STLport-4.5.3-devel/stlport/stl/_config.h  Tue Jan  7 15:28:08 2003
-@@ -26,6 +26,16 @@
- #ifndef _STLP_CONFIG_H
- # define _STLP_CONFIG_H
-+/* Make the STLport headers provide uClibc support by default */
-+#define _STLP_NO_EXCEPTIONS           1
-+#define STL_NO_EXCEPTIONS             1
-+#define _STLP_USE_UCLIBC              1
-+//#define _STLP_NO_WCHAR_T            1
-+#define _STLP_NO_LONG_DOUBLE          1
-+#define USE_SPRINTF_INSTEAD           1
-+#define _ISOC99_SOURCE                        1
-+#define _STLP_NO_ANACHRONISMS         1
-+
- /*
-  * Purpose of this file :
-  *
-@@ -164,7 +174,7 @@
- /* Operating system recognition (basic) */
- # if defined (__unix) || defined (__linux__) || defined (__QNX__) || defined (_AIX)  || defined (__NetBSD__) || defined (__Lynx__)
- #  define _STLP_UNIX 1
--#  if defined (__linux__) && ! defined (_STLP_USE_GLIBC)
-+#  if defined (__linux__) && ! defined (_STLP_USE_GLIBC) && ! defined (_STLP_USE_UCLIBC)
- #   define _STLP_USE_GLIBC 1
- #  endif
- # elif defined(macintosh) || defined (_MAC)
-diff -urN STLport-4.5.3/stlport/stl/_stdio_file.h STLport-4.5.3-devel/stlport/stl/_stdio_file.h
---- STLport-4.5.3/stlport/stl/_stdio_file.h    Fri Jan 18 15:07:00 2002
-+++ STLport-4.5.3-devel/stlport/stl/_stdio_file.h      Tue Jan  7 15:28:08 2003
-@@ -634,6 +634,112 @@
- }
- # define _STLP_FILE_I_O_IDENTICAL
-+#elif defined(_STLP_USE_UCLIBC)
-+
-+#if defined(__MASK_READING)
-+
-+inline int   _FILE_fd(const FILE *__f) { return __f->__filedes; }
-+
-+//       Returns a pointer to the beginning of the buffer.
-+inline char* _FILE_I_begin(const FILE *__f) { return (char*) __f->__bufstart; }
-+
-+//       Returns the current read/write position within the buffer.
-+inline char* _FILE_I_next(const FILE *__f) { return (char*) __f->__bufpos; }
-+
-+//       Returns a pointer immediately past the end of the buffer.
-+inline char* _FILE_I_end(const FILE *__f) { return (char*)__f->__bufend; }
-+
-+//       Returns the number of characters remaining in the buffer, i.e.
-+//       _FILE_[IO]_end(__f) - _FILE_[IO]_next(__f).
-+inline ptrdiff_t _FILE_I_avail(const FILE *__f) 
-+  { return __f->__bufgetc_u - __f->__bufpos; }
-+
-+//       Increments the current read/write position by 1, returning the 
-+//       character at the old position.
-+inline char& _FILE_I_preincr(FILE *__f)  { return *(char*)(++__f->__bufpos); }
-+
-+//       Increments the current read/write position by 1, returning the 
-+//       character at the old position.
-+inline char& _FILE_I_postincr(FILE *__f)  { return *(char*)(__f->__bufpos++); }
-+
-+//       Decrements the current read/write position by 1, returning the 
-+//       character at the old position.
-+inline char& _FILE_I_predecr(FILE *__f)  { return *(char*)(--__f->__bufpos); }
-+
-+//       Decrements the current read/write position by 1, returning the 
-+//       character at the old position.
-+inline char& _FILE_I_postdecr(FILE *__f)  { return *(char*)(__f->__bufpos--); }
-+
-+//       Increments the current read/write position by __n.
-+inline void  _FILE_I_bump(FILE *__f, int __n) { __f->__bufpos += __n; }
-+
-+//       Sets the beginning of the bufer to __begin, the current read/write
-+//       position to __next, and the buffer's past-the-end pointer to __end.
-+//       If any of those pointers is null, then all of them must be null.
-+inline void _FILE_I_set(FILE *__f, char* __begin, char* __next, char* __end)
-+{
-+      __f->__bufstart = (unsigned char*)__begin;
-+      __f->__bufpos  =  (unsigned char*)__next;
-+      __f->__bufend  =  (unsigned char*)__end;
-+      __f->__bufgetc_u = (unsigned char*)__begin;
-+      __f->__bufputc_u = (unsigned char*)__end;
-+}
-+
-+# define _STLP_FILE_I_O_IDENTICAL
-+
-+#else    // Support old stdio for a little while.
-+
-+inline int   _FILE_fd(const FILE *__f) { return __f->filedes; }
-+
-+//       Returns a pointer to the beginning of the buffer.
-+inline char* _FILE_I_begin(const FILE *__f) { return (char*) __f->bufstart; }
-+
-+//       Returns the current read/write position within the buffer.
-+inline char* _FILE_I_next(const FILE *__f) { return (char*) __f->bufpos; }
-+
-+//       Returns a pointer immediately past the end of the buffer.
-+inline char* _FILE_I_end(const FILE *__f) { return (char*)__f->bufend; }
-+
-+//       Returns the number of characters remaining in the buffer, i.e.
-+//       _FILE_[IO]_end(__f) - _FILE_[IO]_next(__f).
-+inline ptrdiff_t _FILE_I_avail(const FILE *__f) 
-+  { return __f->bufgetc - __f->bufpos; }
-+
-+//       Increments the current read/write position by 1, returning the 
-+//       character at the old position.
-+inline char& _FILE_I_preincr(FILE *__f)  { return *(char*)(++__f->bufpos); }
-+
-+//       Increments the current read/write position by 1, returning the 
-+//       character at the old position.
-+inline char& _FILE_I_postincr(FILE *__f)  { return *(char*)(__f->bufpos++); }
-+
-+//       Decrements the current read/write position by 1, returning the 
-+//       character at the old position.
-+inline char& _FILE_I_predecr(FILE *__f)  { return *(char*)(--__f->bufpos); }
-+
-+//       Decrements the current read/write position by 1, returning the 
-+//       character at the old position.
-+inline char& _FILE_I_postdecr(FILE *__f)  { return *(char*)(__f->bufpos--); }
-+
-+//       Increments the current read/write position by __n.
-+inline void  _FILE_I_bump(FILE *__f, int __n) { __f->bufpos += __n; }
-+
-+//       Sets the beginning of the bufer to __begin, the current read/write
-+//       position to __next, and the buffer's past-the-end pointer to __end.
-+//       If any of those pointers is null, then all of them must be null.
-+inline void _FILE_I_set(FILE *__f, char* __begin, char* __next, char* __end)
-+{
-+      __f->bufstart = (unsigned char*)__begin;
-+      __f->bufpos  =  (unsigned char*)__next;
-+      __f->bufend  =  (unsigned char*)__end;
-+      __f->bufgetc = (unsigned char*)__begin;
-+      __f->bufputc = (unsigned char*)__end;
-+}
-+
-+# define _STLP_FILE_I_O_IDENTICAL
-+
-+#endif
-+
- #else  /* A C library that we don't have an implementation for. */
- # error The C++ I/O library is not configured for this compiler
-diff -urN STLport-4.5.3/stlport/stl/c_locale.h STLport-4.5.3-devel/stlport/stl/c_locale.h
---- STLport-4.5.3/stlport/stl/c_locale.h       Fri Jan 18 15:07:00 2002
-+++ STLport-4.5.3-devel/stlport/stl/c_locale.h Wed Jan  8 10:58:10 2003
-@@ -401,6 +401,21 @@
- #  define _Locale_SPACE _S
- #  define _Locale_PRINT (_P | _U | _L | _N | _B)
- #  define _Locale_ALPHA (_U | _L)
-+
-+# elif defined(_STLP_USE_UCLIBC) /* linux, using the gnu compiler */
-+
-+#  define _Locale_CNTRL  _IScntrl
-+#  define _Locale_UPPER  _ISupper
-+#  define _Locale_LOWER  _ISlower
-+#  define _Locale_DIGIT  _ISdigit
-+#  define _Locale_XDIGIT _ISxdigit
-+#  define _Locale_PUNCT  _ISpunct
-+#  define _Locale_SPACE  _ISspace
-+#  define _Locale_PRINT  _ISprint
-+#  define _Locale_ALPHA  _ISalpha
-+
-+#else
-+#  error Unknown Locale
- #endif
- # endif /* _STLP_C_LOCALE_H */
diff --git a/toolchain/gcc/3.3.4/100-uclibc-conf.patch b/toolchain/gcc/3.3.4/100-uclibc-conf.patch
deleted file mode 100644 (file)
index 4bbe21b..0000000
+++ /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/toolchain/gcc/3.3.4/110-uclibc-conf.patch b/toolchain/gcc/3.3.4/110-uclibc-conf.patch
deleted file mode 100644 (file)
index f297c32..0000000
+++ /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/toolchain/gcc/3.3.4/120-softfloat.patch b/toolchain/gcc/3.3.4/120-softfloat.patch
deleted file mode 100644 (file)
index f243189..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
---- gcc-3.3.2-old/configure.in 2003-08-09 01:57:21.000000000 -0500
-+++ gcc-3.3.2/configure.in     2004-01-15 12:46:29.000000000 -0600
-@@ -1418,6 +1418,11 @@
- fi
- FLAGS_FOR_TARGET=
-+case " $targargs " in
-+ *" --nfp "* | *" --without-float "*)
-+    FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -msoft-float'
-+    ;;
-+esac
- case " $target_configdirs " in
-  *" newlib "*)
-   case " $targargs " in
diff --git a/toolchain/gcc/3.3.4/200-uclibc-locale.patch b/toolchain/gcc/3.3.4/200-uclibc-locale.patch
deleted file mode 100644 (file)
index 5880d83..0000000
+++ /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/toolchain/gcc/3.3.4/500-loop.patch b/toolchain/gcc/3.3.4/500-loop.patch
deleted file mode 100644 (file)
index 476f84b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
---- gcc/gcc/loop.c     14 Feb 2004 14:46:03 -0000      1.488.2.3
-+++ gcc/gcc/loop.c     28 Apr 2004 22:02:53 -0000
-@@ -929,6 +929,7 @@
-                         || (! (GET_CODE (SET_SRC (set)) == REG
-                                && (REGNO (SET_SRC (set))
-                                    < FIRST_PSEUDO_REGISTER))))
-+                    && regno >= FIRST_PSEUDO_REGISTER 
-                     /* This test is not redundant; SET_SRC (set) might be
-                        a call-clobbered register and the life of REGNO
-                        might span a call.  */
diff --git a/toolchain/gcc/3.3.4/800-arm-bigendian.patch b/toolchain/gcc/3.3.4/800-arm-bigendian.patch
deleted file mode 100644 (file)
index 79140dd..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-By Lennert Buytenhek <buytenh@wantstofly.org>
-Adds support for arm*b-linux* big-endian ARM targets
-
-See http://gcc.gnu.org/PR16350
-
---- gcc-3.3.5-dist/gcc/config/arm/linux-elf.h
-+++ gcc-3.3.5/gcc/config/arm/linux-elf.h
-@@ -30,17 +30,34 @@
- /* Do not assume anything about header files.  */
- #define NO_IMPLICIT_EXTERN_C
-+/*
-+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
-+ * (big endian) configurations.
-+ */
-+#if TARGET_BIG_ENDIAN_DEFAULT
-+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END
-+#define TARGET_ENDIAN_OPTION "mbig-endian"
-+#define TARGET_LINKER_EMULATION "armelfb_linux"
-+#else
-+#define TARGET_ENDIAN_DEFAULT 0
-+#define TARGET_ENDIAN_OPTION "mlittle-endian"
-+#define TARGET_LINKER_EMULATION "armelf_linux"
-+#endif
-+
- /* Default is to use APCS-32 mode.  */
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT \
-+              ( ARM_FLAG_APCS_32 | \
-+                ARM_FLAG_MMU_TRAPS | \
-+                TARGET_ENDIAN_DEFAULT )
- #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
--#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p"
-+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p"
- #undef  MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--      { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" }
-+      { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
- #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
-@@ -100,7 +117,7 @@
-    %{rdynamic:-export-dynamic} \
-    %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
-    -X \
--   %{mbig-endian:-EB}" \
-+   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
-    SUBTARGET_EXTRA_LINK_SPEC
- #endif
---- gcc-3.3.5-dist/gcc/config.gcc
-+++ gcc-3.3.5/gcc/config.gcc
-@@ -710,6 +710,11 @@
-       ;;
- arm*-*-linux*)                        # ARM GNU/Linux with ELF
-       tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
-+      case $target in
-+      arm*b-*)
-+              tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines"
-+              ;;
-+      esac
-       tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
-       extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
-       gnu_ld=yes
diff --git a/toolchain/gcc/3.3.4/810-arm-bigendian-uclibc.patch b/toolchain/gcc/3.3.4/810-arm-bigendian-uclibc.patch
deleted file mode 100644 (file)
index 7e14f34..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
---- gcc-3.3.5-dist/gcc/config/arm/linux-elf.h
-+++ gcc-3.3.5/gcc/config/arm/linux-elf.h
-@@ -106,7 +106,7 @@
-    %{rdynamic:-export-dynamic} \
-    %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \
-    -X \
--   %{mbig-endian:-EB}" \
-+   %{mbig-endian:-EB}  %{mlittle-endian:-EL}" \
-    SUBTARGET_EXTRA_LINK_SPEC
- #else
- #define LINK_SPEC "%{h*} %{version:-v} \
---- gcc-3.3.5-dist/gcc/config.gcc
-+++ gcc-3.3.5/gcc/config.gcc
-@@ -699,6 +699,11 @@
-       ;;
- arm*-*-linux-uclibc*)         # ARM GNU/Linux with ELF - uClibc
-       tm_file="dbxelf.h elfos.h arm/unknown-elf.h arm/elf.h arm/aout.h arm/arm.h arm/linux-gas.h arm/linux-elf.h"
-+      case $target in
-+      arm*b-*)
-+              tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines"
-+              ;;
-+      esac
-       tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux"
-       extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
-       gnu_ld=yes
diff --git a/toolchain/gcc/3.3.4/820-no-mips-empic-relocs.patch b/toolchain/gcc/3.3.4/820-no-mips-empic-relocs.patch
deleted file mode 100644 (file)
index d5c4c9c..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-From: cgd at broadcom dot com
-To: gcc-patches at gcc dot gnu dot org
-Cc: mark at codesourcery dot com
-Date: 13 Jun 2004 22:51:30 -0700
-Subject: [trunk + 3.4-branch RFA] don't use empic relocs for mips-linuxeh
-
-This patch changes mips-linux to avoid using embedded-pic relocs for
-its eh data.  (Support for generating these for new code is removed in
-current binutils srcs.)
-
-Relating to this, previously, mips-linux and mips64-linux would use
-different representations for their EH data (even for mips64-linux o32
-abi), due to the mips64-linux n32/64 BFDs not supporting the
-embedded-pic relocs.  This was a bug.
-
-For more explanation, see the thread of the URL quoted in the comment
-in linux.h.
-
-
-Tested the same w/ sources of about a week ago for c/c++ for
-mips-linux (native) before/after.  Also verified .o compatibility
-before/after just to be sure.
-
-I'd like this approved for the branch as well, so 3.4.1 will work
-nicely w/ the next major binutils release.
-
-
-thanks,
-
-chris
-
-2004-06-13  Chris Demetriou  <cgd@broadcom.com>
-
-       * config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Redefine
-       to return DW_EH_PE_absptr.
-
-Index: config/mips/linux.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/mips/linux.h,v
-retrieving revision 1.77
-diff -u -p -r1.77 linux.h
---- gcc/gcc/config/mips/linux.h        19 Feb 2004 22:07:51 -0000      1.77
-+++ gcc/gcc/config/mips/linux.h        14 Jun 2004 05:49:51 -0000
-@@ -170,10 +170,11 @@ Boston, MA 02111-1307, USA.  */
- #undef FUNCTION_NAME_ALREADY_DECLARED
- #define FUNCTION_NAME_ALREADY_DECLARED 1
--#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)                    \
--  (flag_pic                                                           \
--    ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4\
--   : DW_EH_PE_absptr)
-+/* If possible, we should attempt to use GP-relative relocs for this
-+   (see <a  href="http://sources.redhat.com/ml/binutils/2004-05/msg00227.html">http://sources.redhat.com/ml/binutils/2004-05/msg00227.html</a>).
-+   However, until that is implement, this just uses standard, absolute
-+   references.  */
-+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)    DW_EH_PE_absptr
- /* The glibc _mcount stub will save $v0 for us.  Don't mess with saving
-    it, since ASM_OUTPUT_REG_PUSH/ASM_OUTPUT_REG_POP do not work in the
diff --git a/toolchain/gcc/3.3.4/specs-arm-soft-float b/toolchain/gcc/3.3.4/specs-arm-soft-float
deleted file mode 100644 (file)
index d692174..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-*asm:
-%{mbig-endian:-EB} %{mlittle-endian:-EL} %{mcpu=*:-mcpu=%*} %{march=*:-march=%*} %{mapcs-*:-mapcs-%*} %(subtarget_asm_float_spec) %{mthumb-interwork:-mthumb-interwork} %(subtarget_extra_asm_spec)
-
-*asm_debug:
-%{gstabs*:--gstabs}%{!gstabs*:%{g*:--gdwarf2}}
-
-*asm_final:
-
-
-*asm_options:
-%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}
-
-*invoke_as:
-%{!S:-o %{|!pipe:%g.s} |
- as %(asm_options) %{!pipe:%g.s} %A }
-
-*cpp:
-%(cpp_cpu_arch) %(subtarget_cpp_spec)                  %{mapcs-32:%{mapcs-26:                                                          %e-mapcs-26 and -mapcs-32 may not be used together}}            %{msoft-float:%{mhard-float:                                                    %e-msoft-float and -mhard_float may not be used together}}      %{mbig-endian:%{mlittle-endian:                                                 %e-mbig-endian and -mlittle-endian may not be used together}}
-
-*cpp_options:
-%(cpp_unique_options) %1 %{m*} %{std*} %{ansi} %{W*&pedantic*} %{w} %{f*} %{O*} %{undef}
-
-*cpp_debug_options:
-%{d*}
-
-*cpp_unique_options:
-%{C:%{!E:%eGNU C does not support -C without using -E}} %{CC:%{!E:%eGNU C does not support -CC without using -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}} %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3} %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs} %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{E|M|MM:%W{o*}}
-
-*trad_capable_cpp:
-cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}
-
-*cc1:
-%{profile:-p}
-
-*cc1_options:
-%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}}
-
-*cc1plus:
-
-
-*link_gcc_c_sequence:
-%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}
-
-*endfile:
-%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s
-
-*link:
-%{h*} %{version:-v}    %{b} %{Wl,*:%*}    %{static:-Bstatic}    %{shared:-shared}    %{symbolic:-Bsymbolic}    %{rdynamic:-export-dynamic}    %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}    -X    %{mbig-endian:-EB} -m armelf_linux -p
-
-*lib:
-%{pthread:-lpthread}    %{shared:-lc}    %{!shared:%{profile:-lc_p}%{!profile:-lc}}
-
-*libgcc:
-%{!mhard-float:-lfloat} %{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:-lgcc_s%M}}}
-
-*startfile:
-%{!shared:      %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s}                  %{!p:%{profile:gcrt1.o%s}                         %{!profile:crt1.o%s}}}}    crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}
-
-*switches_need_spaces:
-
-
-*predefines:
-
-
-*cross_compile:
-1
-
-*version:
-3.3.4
-
-*multilib:
-. ;
-
-*multilib_defaults:
-marm mlittle-endian msoft-float mapcs-32 mno-thumb-interwork
-
-*multilib_extra:
-
-
-*multilib_matches:
-
-
-*multilib_exclusions:
-
-
-*multilib_options:
-
-
-*linker:
-collect2
-
-*link_libgcc:
-%D
-
-*md_exec_prefix:
-
-
-*md_startfile_prefix:
-
-
-*md_startfile_prefix_1:
-
-
-*startfile_prefix_spec:
-
-
-*cpp_cpu_arch:
-%{march=arm2:-D__ARM_ARCH_2__} %{march=arm250:-D__ARM_ARCH_2__} %{march=arm3:-D__ARM_ARCH_2__} %{march=arm6:-D__ARM_ARCH_3__} %{march=arm600:-D__ARM_ARCH_3__} %{march=arm610:-D__ARM_ARCH_3__} %{march=arm7:-D__ARM_ARCH_3__} %{march=arm700:-D__ARM_ARCH_3__} %{march=arm710:-D__ARM_ARCH_3__} %{march=arm720:-D__ARM_ARCH_3__} %{march=arm7100:-D__ARM_ARCH_3__} %{march=arm7500:-D__ARM_ARCH_3__} %{march=arm7500fe:-D__ARM_ARCH_3__} %{march=arm7m:-D__ARM_ARCH_3M__} %{march=arm7dm:-D__ARM_ARCH_3M__} %{march=arm7dmi:-D__ARM_ARCH_3M__} %{march=arm7tdmi:-D__ARM_ARCH_4T__} %{march=arm8:-D__ARM_ARCH_4__} %{march=arm810:-D__ARM_ARCH_4__} %{march=arm9:-D__ARM_ARCH_4T__} %{march=arm920:-D__ARM_ARCH_4__} %{march=arm920t:-D__ARM_ARCH_4T__} %{march=arm9tdmi:-D__ARM_ARCH_4T__} %{march=strongarm:-D__ARM_ARCH_4__} %{march=strongarm110:-D__ARM_ARCH_4__} %{march=strongarm1100:-D__ARM_ARCH_4__} %{march=xscale:-D__ARM_ARCH_5TE__} %{march=xscale:-D__XSCALE__} %{march=armv2:-D__ARM_ARCH_2__} %{march=armv2a:-D__ARM_ARCH_2__} %{march=armv3:-D__ARM_ARCH_3__} %{march=armv3m:-D__ARM_ARCH_3M__} %{march=armv4:-D__ARM_ARCH_4__} %{march=armv4t:-D__ARM_ARCH_4T__} %{march=armv5:-D__ARM_ARCH_5__} %{march=armv5t:-D__ARM_ARCH_5T__} %{march=armv5e:-D__ARM_ARCH_5E__} %{march=armv5te:-D__ARM_ARCH_5TE__} %{!march=*:  %{mcpu=arm2:-D__ARM_ARCH_2__}  %{mcpu=arm250:-D__ARM_ARCH_2__}  %{mcpu=arm3:-D__ARM_ARCH_2__}  %{mcpu=arm6:-D__ARM_ARCH_3__}  %{mcpu=arm600:-D__ARM_ARCH_3__}  %{mcpu=arm610:-D__ARM_ARCH_3__}  %{mcpu=arm7:-D__ARM_ARCH_3__}  %{mcpu=arm700:-D__ARM_ARCH_3__}  %{mcpu=arm710:-D__ARM_ARCH_3__}  %{mcpu=arm720:-D__ARM_ARCH_3__}  %{mcpu=arm7100:-D__ARM_ARCH_3__}  %{mcpu=arm7500:-D__ARM_ARCH_3__}  %{mcpu=arm7500fe:-D__ARM_ARCH_3__}  %{mcpu=arm7m:-D__ARM_ARCH_3M__}  %{mcpu=arm7dm:-D__ARM_ARCH_3M__}  %{mcpu=arm7dmi:-D__ARM_ARCH_3M__}  %{mcpu=arm7tdmi:-D__ARM_ARCH_4T__}  %{mcpu=arm8:-D__ARM_ARCH_4__}  %{mcpu=arm810:-D__ARM_ARCH_4__}  %{mcpu=arm9:-D__ARM_ARCH_4T__}  %{mcpu=arm920:-D__ARM_ARCH_4__}  %{mcpu=arm920t:-D__ARM_ARCH_4T__}  %{mcpu=arm9tdmi:-D__ARM_ARCH_4T__}  %{mcpu=strongarm:-D__ARM_ARCH_4__}  %{mcpu=strongarm110:-D__ARM_ARCH_4__}  %{mcpu=strongarm1100:-D__ARM_ARCH_4__}  %{mcpu=xscale:-D__ARM_ARCH_5TE__}  %{mcpu=xscale:-D__XSCALE__}  %{!mcpu*:%(cpp_cpu_arch_default)}} 
-
-*cpp_cpu_arch_default:
--D__ARM_ARCH_4T__
-
-*subtarget_cpp_spec:
-%{posix:-D_POSIX_SOURCE} %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__}
-
-*subtarget_extra_asm_spec:
-
-
-*subtarget_asm_float_spec:
-%{mapcs-float:-mfloat} %{!mhard-float:-mno-fpu}
-
-*link_command:
-%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:    %(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t}    %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}    %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}}    %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}
-
diff --git a/toolchain/gcc/3.3.4/specs-mips-soft-float b/toolchain/gcc/3.3.4/specs-mips-soft-float
deleted file mode 100644 (file)
index 2a42400..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-*asm:
-%{G*} %(endian_spec) %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips64}%{mips16:%{!mno-mips16:-mips16}} %{mno-mips16:-no-mips16} %(subtarget_asm_optimizing_spec) %(subtarget_asm_debugging_spec) %{membedded-pic} %{mabi=32:-32}%{mabi=n32:-n32}%{mabi=64:-64}%{mabi=n64:-64} %{mabi=eabi} %{mabi=o64} %{!mabi*: %(asm_abi_default_spec)} %{mgp32} %{mgp64} %{march=*} %(target_asm_spec) %(subtarget_asm_spec)
-
-*asm_debug:
-%{gstabs*:--gstabs}%{!gstabs*:%{g*:--gdwarf2}}
-
-*asm_final:
-%|
-
-*asm_options:
-%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}
-
-*invoke_as:
-%{!S:-o %{|!pipe:%g.s} |
- as %(asm_options) %{!pipe:%g.s} %A }
-
-*cpp:
-%(subtarget_cpp_spec)
-
-*cpp_options:
-%(cpp_unique_options) %1 %{m*} %{std*} %{ansi} %{W*&pedantic*} %{w} %{f*} %{O*} %{undef}
-
-*cpp_debug_options:
-%{d*}
-
-*cpp_unique_options:
-%{C:%{!E:%eGNU C does not support -C without using -E}} %{CC:%{!E:%eGNU C does not support -CC without using -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}} %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3} %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs} %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{E|M|MM:%W{o*}}
-
-*trad_capable_cpp:
-cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}
-
-*cc1:
-%{profile:-p}
-
-*cc1_options:
-%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}}
-
-*cc1plus:
-
-
-*link_gcc_c_sequence:
-%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}
-
-*endfile:
-%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s
-
-*link:
-%{!static:--eh-frame-hdr} %(endian_spec)   %{shared:-shared}   %{!shared:     %{!ibcs:       %{!static:         %{rdynamic:-export-dynamic}         %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}         %{static:-static}}}
-
-*lib:
-%{shared: -lc} %{!static:-rpath-link %R/lib:%R/usr/lib} %{!shared: %{pthread:-lpthread}   %{profile:-lc_p} %{!profile: -lc}}
-
-*libgcc:
-%{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:-lgcc_s%M}%{!shared-libgcc:-lgcc}}}}
-
-*startfile:
-%{!shared:      %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s}                  %{!p:%{profile:gcrt1.o%s}                         %{!profile:crt1.o%s}}}}    crti.o%s %{static:crtbeginT.o%s}   %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}
-
-*switches_need_spaces:
-
-
-*predefines:
-
-
-*cross_compile:
-1
-
-*version:
-3.3.4
-
-*multilib:
-. ;
-
-*multilib_defaults:
-EB mips1 mabi=32
-
-*multilib_extra:
-
-
-*multilib_matches:
-
-
-*multilib_exclusions:
-
-
-*multilib_options:
-
-
-*linker:
-collect2
-
-*link_libgcc:
-%D
-
-*md_exec_prefix:
-
-
-*md_startfile_prefix:
-
-
-*md_startfile_prefix_1:
-
-
-*startfile_prefix_spec:
-
-
-*subtarget_cc1_spec:
-
-
-*subtarget_cpp_spec:
-%{fno-PIC:-U__PIC__ -U__pic__} %{fno-pic:-U__PIC__ -U__pic__} %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{pthread:-D_REENTRANT}
-
-*mips_as_asm_spec:
-%{!.s:-nocpp} %{.s: %{cpp} %{nocpp}} %{pipe: %e-pipe is not supported} %{K} %(subtarget_mips_as_asm_spec)
-
-*gas_asm_spec:
-%{mtune=*} %{v}
-
-*target_asm_spec:
-%{mmips-as: %(mips_as_asm_spec)} %{!mmips-as: %(gas_asm_spec)}
-
-*subtarget_mips_as_asm_spec:
-%{v}
-
-*subtarget_asm_optimizing_spec:
-%{noasmopt:-O0} %{!noasmopt:%{O:-O2} %{O1:-O2} %{O2:-O2} %{O3:-O3}}
-
-*subtarget_asm_debugging_spec:
--g0
-
-*mdebug_asm_spec:
-%{!gdwarf*:-mdebug} %{gdwarf*:-no-mdebug}
-
-*subtarget_asm_spec:
-%{mabi=64: -64} %{!fno-PIC:%{!fno-pic:-KPIC}} %{fno-PIC:-non_shared} %{fno-pic:-non_shared}
-
-*asm_abi_default_spec:
--32
-
-*endian_spec:
-%{!EL:%{!mel:-EB}} %{EL|mel:-EL}
-
-*link_command:
-%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:    %(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t}    %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}    %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}}    %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}
-
diff --git a/toolchain/gcc/3.3.4/specs-mipsel-soft-float b/toolchain/gcc/3.3.4/specs-mipsel-soft-float
deleted file mode 100644 (file)
index 481bf5a..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-*asm:
-%{G*} %(endian_spec) %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips64}%{mips16:%{!mno-mips16:-mips16}} %{mno-mips16:-no-mips16} %(subtarget_asm_optimizing_spec) %(subtarget_asm_debugging_spec) %{membedded-pic} %{mabi=32:-32}%{mabi=n32:-n32}%{mabi=64:-64}%{mabi=n64:-64} %{mabi=eabi} %{mabi=o64} %{!mabi*: %(asm_abi_default_spec)} %{mgp32} %{mgp64} %{march=*} %(target_asm_spec) %(subtarget_asm_spec)
-
-*asm_debug:
-%{gstabs*:--gstabs}%{!gstabs*:%{g*:--gdwarf2}}
-
-*asm_final:
-%|
-
-*asm_options:
-%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}
-
-*invoke_as:
-%{!S:-o %{|!pipe:%g.s} |
- as %(asm_options) %{!pipe:%g.s} %A }
-
-*cpp:
-%(subtarget_cpp_spec)
-
-*cpp_options:
-%(cpp_unique_options) %1 %{m*} %{std*} %{ansi} %{W*&pedantic*} %{w} %{f*} %{O*} %{undef}
-
-*cpp_debug_options:
-%{d*}
-
-*cpp_unique_options:
-%{C:%{!E:%eGNU C does not support -C without using -E}} %{CC:%{!E:%eGNU C does not support -CC without using -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}} %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3} %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs} %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{E|M|MM:%W{o*}}
-
-*trad_capable_cpp:
-cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}
-
-*cc1:
-%{profile:-p}
-
-*cc1_options:
-%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}}
-
-*cc1plus:
-
-
-*link_gcc_c_sequence:
-%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}
-
-*endfile:
-%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s
-
-*link:
-%{!static:--eh-frame-hdr} %(endian_spec)   %{shared:-shared}   %{!shared:     %{!ibcs:       %{!static:         %{rdynamic:-export-dynamic}         %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}         %{static:-static}}}
-
-*lib:
-%{shared: -lc} %{!static:-rpath-link %R/lib:%R/usr/lib} %{!shared: %{pthread:-lpthread}   %{profile:-lc_p} %{!profile: -lc}}
-
-*libgcc:
-%{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:-lgcc_s%M}%{!shared-libgcc:-lgcc}}}}
-
-*startfile:
-%{!shared:      %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s}                  %{!p:%{profile:gcrt1.o%s}                         %{!profile:crt1.o%s}}}}    crti.o%s %{static:crtbeginT.o%s}   %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}
-
-*switches_need_spaces:
-
-
-*predefines:
-
-
-*cross_compile:
-1
-
-*version:
-3.3.4
-
-*multilib:
-. ;
-
-*multilib_defaults:
-EL mips1 mabi=32
-
-*multilib_extra:
-
-
-*multilib_matches:
-
-
-*multilib_exclusions:
-
-
-*multilib_options:
-
-
-*linker:
-collect2
-
-*link_libgcc:
-%D
-
-*md_exec_prefix:
-
-
-*md_startfile_prefix:
-
-
-*md_startfile_prefix_1:
-
-
-*startfile_prefix_spec:
-
-
-*subtarget_cc1_spec:
-
-
-*subtarget_cpp_spec:
-%{fno-PIC:-U__PIC__ -U__pic__} %{fno-pic:-U__PIC__ -U__pic__} %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} %{pthread:-D_REENTRANT}
-
-*mips_as_asm_spec:
-%{!.s:-nocpp} %{.s: %{cpp} %{nocpp}} %{pipe: %e-pipe is not supported} %{K} %(subtarget_mips_as_asm_spec)
-
-*gas_asm_spec:
-%{mtune=*} %{v}
-
-*target_asm_spec:
-%{mmips-as: %(mips_as_asm_spec)} %{!mmips-as: %(gas_asm_spec)}
-
-*subtarget_mips_as_asm_spec:
-%{v}
-
-*subtarget_asm_optimizing_spec:
-%{noasmopt:-O0} %{!noasmopt:%{O:-O2} %{O1:-O2} %{O2:-O2} %{O3:-O3}}
-
-*subtarget_asm_debugging_spec:
--g0
-
-*mdebug_asm_spec:
-%{!gdwarf*:-mdebug} %{gdwarf*:-no-mdebug}
-
-*subtarget_asm_spec:
-%{mabi=64: -64} %{!fno-PIC:%{!fno-pic:-KPIC}} %{fno-PIC:-non_shared} %{fno-pic:-non_shared}
-
-*asm_abi_default_spec:
--32
-
-*endian_spec:
-%{!EB:%{!meb:-EL}} %{EB|meb:-EB}
-
-*link_command:
-%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:    %(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t}    %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}    %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}}    %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}
-
diff --git a/toolchain/gcc/3.3.4/specs-powerpc-soft-float b/toolchain/gcc/3.3.4/specs-powerpc-soft-float
deleted file mode 100644 (file)
index 8a546ac..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-*asm:
-%(asm_cpu) %{.s: %{mregnames} %{mno-regnames}} %{.S: %{mregnames} %{mno-regnames}} %{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} %{Wa,*:%*} %{mrelocatable} %{mrelocatable-lib} %{fpic:-K PIC} %{fPIC:-K PIC} %{memb} %{!memb: %{msdata: -memb} %{msdata=eabi: -memb}} %{mlittle} %{mlittle-endian} %{mbig} %{mbig-endian} %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian:     %{mcall-freebsd: -mbig}     %{mcall-i960-old: -mlittle}     %{mcall-linux: -mbig}     %{mcall-gnu: -mbig}     %{mcall-netbsd: -mbig} }}}}
-
-*asm_debug:
-%{gstabs*:--gstabs}%{!gstabs*:%{g*:--gdwarf2}}
-
-*asm_final:
-%|
-
-*asm_options:
-%a %Y %{c:%W{o*}%{!o*:-o %w%b%O}}%{!c:-o %d%w%u%O}
-
-*invoke_as:
-%{!S:-o %{|!pipe:%g.s} |
- as %(asm_options) %{!pipe:%g.s} %A }
-
-*cpp:
-%{posix: -D_POSIX_SOURCE} %(cpp_sysv) %{mads: %(cpp_os_ads) } %{myellowknife: %(cpp_os_yellowknife) } %{mmvme: %(cpp_os_mvme) } %{msim: %(cpp_os_sim) } %{mwindiss: %(cpp_os_windiss) } %{mcall-freebsd: %(cpp_os_freebsd) } %{mcall-linux: %(cpp_os_linux) } %{mcall-gnu: %(cpp_os_gnu) } %{mcall-netbsd: %(cpp_os_netbsd) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss:          %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu:          %{!mcall-netbsd: %(cpp_os_default) }}}}}}}}}
-
-*cpp_options:
-%(cpp_unique_options) %1 %{m*} %{std*} %{ansi} %{W*&pedantic*} %{w} %{f*} %{O*} %{undef}
-
-*cpp_debug_options:
-%{d*}
-
-*cpp_unique_options:
-%{C:%{!E:%eGNU C does not support -C without using -E}} %{CC:%{!E:%eGNU C does not support -CC without using -E}} %{!Q:-quiet} %{nostdinc*} %{C} %{CC} %{v} %{I*} %{P} %I %{MD:-MD %{!o:%b.d}%{o*:%.d%*}} %{MMD:-MMD %{!o:%b.d}%{o*:%.d%*}} %{M} %{MM} %{MF*} %{MG} %{MP} %{MQ*} %{MT*} %{!E:%{!M:%{!MM:%{MD|MMD:%{o*:-MQ %*}}}}} %{!no-gcc:-D__GNUC__=%v1 -D__GNUC_MINOR__=%v2 -D__GNUC_PATCHLEVEL__=%v3} %{!undef:%{!ansi:%{!std=*:%p}%{std=gnu*:%p}} %P} %{trigraphs} %{remap} %{g3:-dD} %{H} %C %{D*&U*&A*} %{i*} %Z %i %{E|M|MM:%W{o*}}
-
-*trad_capable_cpp:
-cc1 -E %{traditional|ftraditional|traditional-cpp:-traditional-cpp}
-
-*cc1:
-%{G*} %{mlittle: %(cc1_endian_little)} %{!mlittle: %{mlittle-endian: %(cc1_endian_little)}} %{mbig: %(cc1_endian_big)} %{!mbig: %{mbig-endian: %(cc1_endian_big)}} %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian:     %{mcall-aixdesc: -mbig %(cc1_endian_big) }     %{mcall-freebsd: -mbig %(cc1_endian_big) }     %{mcall-i960-old: -mlittle %(cc1_endian_little) }     %{mcall-linux: -mbig %(cc1_endian_big) }     %{mcall-gnu: -mbig %(cc1_endian_big) }     %{mcall-netbsd: -mbig %(cc1_endian_big) }     %{!mcall-aixdesc: %{!mcall-freebsd: %{!mcall-i960-old: %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd:             %(cc1_endian_default)     }}}}}} }}}} %{mno-sdata: -msdata=none } %{meabi: %{!mcall-*: -mcall-sysv }} %{!meabi: %{!mno-eabi:     %{mrelocatable: -meabi }     %{mcall-freebsd: -mno-eabi }     %{mcall-i960-old: -meabi }     %{mcall-linux: -mno-eabi }     %{mcall-gnu: -mno-eabi }     %{mcall-netbsd: -mno-eabi }}} %{msdata: -msdata=default} %{mno-sdata: -msdata=none} %{profile: -p}
-
-*cc1_options:
-%{pg:%{fomit-frame-pointer:%e-pg and -fomit-frame-pointer are incompatible}} %1 %{!Q:-quiet} -dumpbase %B %{d*} %{m*} %{a*} %{c|S:%{o*:-auxbase-strip %*}%{!o*:-auxbase %b}}%{!c:%{!S:-auxbase %b}} %{g*} %{O*} %{W*&pedantic*} %{w} %{std*} %{ansi} %{v:-version} %{pg:-p} %{p} %{f*} %{undef} %{Qn:-fno-ident} %{--help:--help} %{--target-help:--target-help} %{!fsyntax-only:%{S:%W{o*}%{!o*:-o %b.s}}} %{fsyntax-only:-o %j} %{-param*} %{msoft-float:%{mhard-float: %e-msoft-float and -mhard_float may not be used together}} %{!mhard-float:%{!msoft-float:-msoft-float}}
-
-*cc1plus:
-
-
-*link_gcc_c_sequence:
-%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}
-
-*endfile:
-%{mads: crtsavres.o%s %(endfile_ads)} %{myellowknife: crtsavres.o%s %(endfile_yellowknife)} %{mmvme: crtsavres.o%s %(endfile_mvme)} %{msim: crtsavres.o%s %(endfile_sim)} %{mwindiss: %(endfile_windiss)} %{mcall-freebsd: crtsavres.o%s %(endfile_freebsd) } %{mcall-linux: crtsavres.o%s %(endfile_linux) } %{mcall-gnu: crtsavres.o%s %(endfile_gnu) } %{mcall-netbsd: crtsavres.o%s %(endfile_netbsd) } %{mvxworks: crtsavres.o%s %(endfile_vxworks) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss:          %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu:          %{!mcall-netbsd: %{!mvxworks: %(crtsavres_default)                                        %(endfile_default) }}}}}}}}}}
-
-*link:
-%{!static:--eh-frame-hdr} %{h*} %{v:-V} %{!msdata=none:%{G*}} %{msdata=none:-G0} %{YP,*} %{R*} %{Qy:} %{!Qn:-Qy} %(link_shlib) %{!Wl,-T*: %{!T*: %(link_start) }} %(link_target) %(link_os)
-
-*lib:
-%{mads: %(lib_ads) } %{myellowknife: %(lib_yellowknife) } %{mmvme: %(lib_mvme) } %{msim: %(lib_sim) } %{mwindiss: %(lib_windiss) } %{mcall-freebsd: %(lib_freebsd) } %{mcall-linux: %(lib_linux) } %{mcall-gnu: %(lib_gnu) } %{mcall-netbsd: %(lib_netbsd) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss:          %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu:          %{!mcall-netbsd: %(lib_default) }}}}}}}}}
-
-*libgcc:
-%{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:-lgcc_s%M}%{!shared-libgcc:-lgcc}}}}
-
-*startfile:
-%{mads: %(startfile_ads) } %{myellowknife: %(startfile_yellowknife) } %{mmvme: %(startfile_mvme) } %{msim: %(startfile_sim) } %{mwindiss: %(startfile_windiss) } %{mcall-freebsd: %(startfile_freebsd) } %{mcall-linux: %(startfile_linux) } %{mcall-gnu: %(startfile_gnu) } %{mcall-netbsd: %(startfile_netbsd) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss:          %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu:          %{!mcall-netbsd: %(startfile_default) }}}}}}}}}
-
-*switches_need_spaces:
-
-
-*predefines:
-
-
-*cross_compile:
-1
-
-*version:
-3.3.4
-
-*multilib:
-. mhard-float;nof !mhard-float;
-
-*multilib_defaults:
-mbig mcall-sysv
-
-*multilib_extra:
-fPIC mstrict-align
-
-*multilib_matches:
-mcpu=401 msoft-float;mcpu=403 msoft-float;mcpu=405 msoft-float;mcpu=ec603e msoft-float;mcpu=801 msoft-float;mcpu=821 msoft-float;mcpu=823 msoft-float;mcpu=860 msoft-float;msoft-float msoft-float;
-
-*multilib_exclusions:
-
-
-*multilib_options:
-msoft-float
-
-*linker:
-collect2
-
-*link_libgcc:
-%D
-
-*md_exec_prefix:
-
-
-*md_startfile_prefix:
-
-
-*md_startfile_prefix_1:
-
-
-*startfile_prefix_spec:
-
-
-*cpp_default:
-
-
-*asm_cpu:
-%{!mcpu*:   %{mpower: %{!mpower2: -mpwr}}   %{mpower2: -mpwrx}   %{mpowerpc*: -mppc}   %{mno-power: %{!mpowerpc*: -mcom}}   %{!mno-power: %{!mpower2: %(asm_default)}}} %{mcpu=common: -mcom} %{mcpu=power: -mpwr} %{mcpu=power2: -mpwrx} %{mcpu=power3: -m604} %{mcpu=power4: -mpower4} %{mcpu=powerpc: -mppc} %{mcpu=rios: -mpwr} %{mcpu=rios1: -mpwr} %{mcpu=rios2: -mpwrx} %{mcpu=rsc: -mpwr} %{mcpu=rsc1: -mpwr} %{mcpu=401: -mppc} %{mcpu=403: -m403} %{mcpu=405: -m405} %{mcpu=505: -mppc} %{mcpu=601: -m601} %{mcpu=602: -mppc} %{mcpu=603: -mppc} %{mcpu=603e: -mppc} %{mcpu=ec603e: -mppc} %{mcpu=604: -mppc} %{mcpu=604e: -mppc} %{mcpu=620: -mppc} %{mcpu=630: -m604} %{mcpu=740: -mppc} %{mcpu=7400: -mppc} %{mcpu=7450: -mppc} %{mcpu=750: -mppc} %{mcpu=801: -mppc} %{mcpu=821: -mppc} %{mcpu=823: -mppc} %{mcpu=860: -mppc} %{mcpu=8540: -me500} %{maltivec: -maltivec}
-
-*asm_default:
--mppc
-
-*cpp_sysv:
-%{mrelocatable*: -D_RELOCATABLE} %{fpic: -D__PIC__=1 -D__pic__=1} %{!fpic: %{fPIC: -D__PIC__=2 -D__pic__=2}}
-
-*crtsavres_default:
-crtsavres.o%s
-
-*lib_ads:
---start-group -lads -lc --end-group
-
-*lib_yellowknife:
---start-group -lyk -lc --end-group
-
-*lib_mvme:
---start-group -lmvme -lc --end-group
-
-*lib_sim:
---start-group -lsim -lc --end-group
-
-*lib_freebsd:
-                                                         %{!shared:                                                                %{!pg:                                                                    %{!pthread:-lc}                                                         %{pthread:-lc_r}}                                                     %{pg:                                                                     %{!pthread:-lc_p}                                                       %{pthread:-lc_r_p}}                                                 }
-
-*lib_gnu:
-%{mnewlib: --start-group -lgnu -lc --end-group } %{!mnewlib: %{shared:-lc} %{!shared: %{pthread:-lpthread } %{profile:-lc_p} %{!profile:-lc}}}
-
-*lib_linux:
-%{mnewlib: --start-group -llinux -lc --end-group } %{!mnewlib: %{pthread:-lpthread} %{shared:-lc} %{!shared: %{profile:-lc_p} %{!profile:-lc}}}
-
-*lib_netbsd:
-%{profile:-lgmon -lc_p} %{!profile:-lc}
-
-*lib_vxworks:
-
-
-*lib_windiss:
---start-group -li -lcfp -lwindiss -lram -limpl -limpfp --end-group
-
-*lib_default:
-%(lib_linux)
-
-*startfile_ads:
-ecrti.o%s crt0.o%s crtbegin.o%s
-
-*startfile_yellowknife:
-ecrti.o%s crt0.o%s crtbegin.o%s
-
-*startfile_mvme:
-ecrti.o%s crt0.o%s crtbegin.o%s
-
-*startfile_sim:
-ecrti.o%s sim-crt0.o%s crtbegin.o%s
-
-*startfile_freebsd:
-%{!shared:      %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s}                  %{!p:%{profile:gcrt1.o%s}                         %{!profile:crt1.o%s}}}}    crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}
-
-*startfile_gnu:
-%{!shared: %{!static: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}}} %{static: %{pg:gcrt0.o%s} %{!pg:%{p:gcrt0.o%s} %{!p:crt0.o%s}}} %{mnewlib: ecrti.o%s} %{!mnewlib: crti.o%s} %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}
-
-*startfile_linux:
-%{!shared: %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} %{!p:crt1.o%s}}} %{mnewlib: ecrti.o%s} %{!mnewlib: crti.o%s} %{static:crtbeginT.o%s} %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}
-
-*startfile_netbsd:
-ncrti.o%s crt0.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}
-
-*startfile_vxworks:
-
-
-*startfile_windiss:
-crt0.o%s crtbegin.o%s
-
-*startfile_default:
-%(startfile_linux)
-
-*endfile_ads:
-crtend.o%s ecrtn.o%s
-
-*endfile_yellowknife:
-crtend.o%s ecrtn.o%s
-
-*endfile_mvme:
-crtend.o%s ecrtn.o%s
-
-*endfile_sim:
-crtend.o%s ecrtn.o%s
-
-*endfile_freebsd:
-%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s
-
-*endfile_gnu:
-%{!shared:crtend.o%s} %{shared:crtendS.o%s} %{mnewlib: ecrtn.o%s} %{!mnewlib: crtn.o%s}
-
-*endfile_linux:
-%{!shared:crtend.o%s} %{shared:crtendS.o%s} %{mnewlib: ecrtn.o%s} %{!mnewlib: crtn.o%s}
-
-*endfile_netbsd:
-%{!shared:crtend.o%s} %{shared:crtendS.o%s} ncrtn.o%s
-
-*endfile_vxworks:
-
-
-*endfile_windiss:
-crtend.o%s
-
-*endfile_default:
-%(endfile_linux)
-
-*link_path:
-
-
-*link_shlib:
-%{shared:-shared} %{!shared: %{static:-static}}
-
-*link_target:
-%{mlittle: --oformat elf32-powerpcle } %{mlittle-endian: --oformat elf32-powerpcle } %{!mlittle: %{!mlittle-endian: %{!mbig: %{!mbig-endian:     %{mcall-i960-old: --oformat elf32-powerpcle}   }}}}
-
-*link_start:
-%{mads: %(link_start_ads) } %{myellowknife: %(link_start_yellowknife) } %{mmvme: %(link_start_mvme) } %{msim: %(link_start_sim) } %{mwindiss: %(link_start_windiss) } %{mcall-freebsd: %(link_start_freebsd) } %{mcall-linux: %(link_start_linux) } %{mcall-gnu: %(link_start_gnu) } %{mcall-netbsd: %(link_start_netbsd) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss:          %{!mcall-linux: %{!mcall-gnu: %{!mcall-netbsd:            %{!mcall-freebsd: %(link_start_default) }}}}}}}}}
-
-*link_start_ads:
--T ads.ld%s
-
-*link_start_yellowknife:
--T yellowknife.ld%s
-
-*link_start_mvme:
--Ttext 0x40000
-
-*link_start_sim:
-
-
-*link_start_freebsd:
-
-
-*link_start_gnu:
-
-
-*link_start_linux:
-
-
-*link_start_netbsd:
-
-
-*link_start_vxworks:
-
-
-*link_start_windiss:
-
-
-*link_start_default:
-%(link_start_linux)
-
-*link_os:
-%{mads: %(link_os_ads) } %{myellowknife: %(link_os_yellowknife) } %{mmvme: %(link_os_mvme) } %{msim: %(link_os_sim) } %{mwindiss: %(link_os_windiss) } %{mcall-freebsd: %(link_os_freebsd) } %{mcall-linux: %(link_os_linux) } %{mcall-gnu: %(link_os_gnu) } %{mcall-netbsd: %(link_os_netbsd) } %{mcall-uclibc: %(link_os_linux_uclibc) } %{!mads: %{!myellowknife: %{!mmvme: %{!msim: %{!mwindiss:          %{!mcall-freebsd: %{!mcall-linux: %{!mcall-gnu:          %{!mcall-netbsd: %{!mcall-uclibc:          %(link_os_default) }}}}}}}}}}
-
-*link_os_ads:
-
-
-*link_os_yellowknife:
-
-
-*link_os_mvme:
-
-
-*link_os_sim:
--m elf32ppcsim
-
-*link_os_freebsd:
-  %{p:%e`-p' not supported; use `-pg' and gprof(1)}     %{Wl,*:%*}     %{v:-V}     %{assert*} %{R*} %{rpath*} %{defsym*}     %{shared:-Bshareable %{h*} %{soname*}}     %{!shared:       %{!static:    %{rdynamic: -export-dynamic}    %{!dynamic-linker: -dynamic-linker /usr/libexec/ld-elf.so.1}}       %{static:-Bstatic}}     %{symbolic:-Bsymbolic}
-
-*link_os_linux:
--m elf32ppclinux %{!shared: %{!static:   %{rdynamic:-export-dynamic}   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}
-
-*link_os_gnu:
--m elf32ppclinux %{!shared: %{!static:   %{rdynamic:-export-dynamic}   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}
-
-*link_os_netbsd:
-%{!shared: %{!static:   %{rdynamic:-export-dynamic}   %{!dynamic-linker:-dynamic-linker /usr/libexec/ld.elf_so}}}
-
-*link_os_vxworks:
--r
-
-*link_os_windiss:
-
-
-*link_os_linux_uclibc:
--m elf32ppclinux %{!shared: %{!static:   %{rdynamic:-export-dynamic}   %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}
-
-*link_os_default:
-%(link_os_linux_uclibc)
-
-*cc1_endian_big:
-
-
-*cc1_endian_little:
-%{!mstrict-align: %{!mno-strict-align:     %{!mcall-i960-old:  -mstrict-align     } }}
-
-*cc1_endian_default:
-%(cc1_endian_big)
-
-*cpp_os_ads:
-
-
-*cpp_os_yellowknife:
-
-
-*cpp_os_mvme:
-
-
-*cpp_os_sim:
-
-
-*cpp_os_freebsd:
-  -D__ELF__ -D__PPC__ -D__ppc__ -D__PowerPC__ -D__powerpc__   -Acpu=powerpc -Amachine=powerpc
-
-*cpp_os_gnu:
--D__unix__ -D__gnu_hurd__ -D__GNU__    %{!undef:                                                         %{!ansi: -Dunix -D__unix}}                                    -Asystem=gnu -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT}
-
-*cpp_os_linux:
--D__unix__ -D__gnu_linux__ -D__linux__ %{!undef:                                                           %{!ansi:                                                          %{!std=*:-Dunix -D__unix -Dlinux -D__linux}                             %{std=gnu*:-Dunix -D__unix -Dlinux -D__linux}}}             -Asystem=unix -Asystem=posix %{pthread:-D_REENTRANT}
-
-*cpp_os_netbsd:
--D__powerpc__ -D__NetBSD__ -D__ELF__ -D__KPRINTF_ATTRIBUTE__
-
-*cpp_os_rtems:
-%{!mcpu*:  %{!Dppc*: %{!Dmpc*: -Dmpc750} } }%{mcpu=403:  %{!Dppc*: %{!Dmpc*: -Dppc403}  } } %{mcpu=505:  %{!Dppc*: %{!Dmpc*: -Dmpc505}  } } %{mcpu=601:  %{!Dppc*: %{!Dmpc*: -Dppc601}  } } %{mcpu=602:  %{!Dppc*: %{!Dmpc*: -Dppc602}  } } %{mcpu=603:  %{!Dppc*: %{!Dmpc*: -Dppc603}  } } %{mcpu=603e: %{!Dppc*: %{!Dmpc*: -Dppc603e} } } %{mcpu=604:  %{!Dppc*: %{!Dmpc*: -Dmpc604}  } } %{mcpu=750:  %{!Dppc*: %{!Dmpc*: -Dmpc750}  } } %{mcpu=821:  %{!Dppc*: %{!Dmpc*: -Dmpc821}  } } %{mcpu=860:  %{!Dppc*: %{!Dmpc*: -Dmpc860}  } }
-
-*cpp_os_vxworks:
--DCPU_FAMILY=PPC %{!mcpu*:   %{mpowerpc*: -DCPU=PPC603}   %{!mno-powerpc: -DCPU=PPC603}} %{mcpu=powerpc: -DCPU=PPC603} %{mcpu=401: -DCPU=PPC403} %{mcpu=403: -DCPU=PPC403} %{mcpu=405: -DCPU=PPC405} %{mcpu=601: -DCPU=PPC601} %{mcpu=602: -DCPU=PPC603} %{mcpu=603: -DCPU=PPC603} %{mcpu=603e: -DCPU=PPC603} %{mcpu=ec603e: -DCPU=PPC603} %{mcpu=604: -DCPU=PPC604} %{mcpu=604e: -DCPU=PPC604} %{mcpu=620: -DCPU=PPC604} %{mcpu=740: -DCPU=PPC603} %{mcpu=7450: -DCPU=PPC603} %{mcpu=750: -DCPU=PPC603} %{mcpu=801: -DCPU=PPC603} %{mcpu=821: -DCPU=PPC603} %{mcpu=823: -DCPU=PPC603} %{mcpu=860: -DCPU=PPC603}
-
-*cpp_os_windiss:
--D__rtasim -D__EABI__ -D__ppc %{!msoft-float: -D__hardfp} 
-
-*cpp_os_default:
-%(cpp_os_linux)
-
-*link_command:
-%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:    %(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t}    %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}    %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}}    %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}
-
diff --git a/toolchain/gcc/3.4.0/100-uclibc-conf.patch b/toolchain/gcc/3.4.0/100-uclibc-conf.patch
deleted file mode 100644 (file)
index ad03345..0000000
+++ /dev/null
@@ -1,442 +0,0 @@
-diff -urN gcc-3.4.0-dist/boehm-gc/configure gcc-3.4.0/boehm-gc/configure
---- gcc-3.4.0-dist/boehm-gc/configure  2004-04-18 21:23:04.000000000 -0500
-+++ gcc-3.4.0/boehm-gc/configure       2004-08-12 16:51:15.000000000 -0500
-@@ -1947,6 +1947,11 @@
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd*)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -urN gcc-3.4.0-dist/boehm-gc/ltconfig gcc-3.4.0/boehm-gc/ltconfig
---- gcc-3.4.0-dist/boehm-gc/ltconfig   2002-11-20 09:59:06.000000000 -0600
-+++ gcc-3.4.0/boehm-gc/ltconfig        2004-08-12 16:51:15.000000000 -0500
-@@ -1981,6 +1981,23 @@
-   fi
-   ;;
-+linux-uclibc*)
-+  version_type=linux
-+  need_lib_prefix=no
-+  need_version=no
-+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+  soname_spec='${libname}${release}.so$major'
-+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+  shlibpath_var=LD_LIBRARY_PATH
-+  shlibpath_overrides_runpath=no
-+  deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-+  file_magic_cmd=/usr/bin/file
-+  file_magic_test_file=`echo /lib/libuClibc-*.so`
-+
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   version_type=sunos
-   if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-diff -urN gcc-3.4.0-dist/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h
---- gcc-3.4.0-dist/gcc/config/arm/linux-elf.h  2004-01-31 00:18:11.000000000 -0600
-+++ gcc-3.4.0/gcc/config/arm/linux-elf.h       2004-08-12 16:51:15.000000000 -0500
-@@ -81,6 +81,18 @@
-   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
- #undef  LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define LINK_SPEC "%{h*} %{version:-v} \
-+   %{b} %{Wl,*:%*} \
-+   %{static:-Bstatic} \
-+   %{shared:-shared} \
-+   %{symbolic:-Bsymbolic} \
-+   %{rdynamic:-export-dynamic} \
-+   %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \
-+   -X \
-+   %{mbig-endian:-EB}" \
-+   SUBTARGET_EXTRA_LINK_SPEC
-+#else
- #define LINK_SPEC "%{h*} %{version:-v} \
-    %{b} %{Wl,*:%*} \
-    %{static:-Bstatic} \
-@@ -91,6 +103,7 @@
-    -X \
-    %{mbig-endian:-EB}" \
-    SUBTARGET_EXTRA_LINK_SPEC
-+#endif
- #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS()
-diff -urN gcc-3.4.0-dist/gcc/config/cris/linux.h gcc-3.4.0/gcc/config/cris/linux.h
---- gcc-3.4.0-dist/gcc/config/cris/linux.h     2003-11-28 21:08:09.000000000 -0600
-+++ gcc-3.4.0/gcc/config/cris/linux.h  2004-08-12 16:51:15.000000000 -0500
-@@ -79,6 +79,25 @@
- #undef CRIS_DEFAULT_CPU_VERSION
- #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
-+#ifdef USE_UCLIBC
-+
-+#undef CRIS_SUBTARGET_VERSION
-+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc"
-+
-+#undef CRIS_LINK_SUBTARGET_SPEC
-+#define CRIS_LINK_SUBTARGET_SPEC \
-+ "-mcrislinux\
-+  -rpath-link include/asm/../..%s\
-+  %{shared} %{static}\
-+  %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\
-+  %{!shared: \
-+    %{!static: \
-+      %{rdynamic:-export-dynamic} \
-+      %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \
-+  %{!r:%{O2|O3: --gc-sections}}"
-+
-+#else  /* USE_UCLIBC */
-+
- #undef CRIS_SUBTARGET_VERSION
- #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu"
-@@ -93,6 +112,8 @@
-   %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\
-   %{!r:%{O2|O3: --gc-sections}}"
-+#endif  /* USE_UCLIBC */
-+
- /* Node: Run-time Target */
-diff -urN gcc-3.4.0-dist/gcc/config/cris/t-linux-uclibc gcc-3.4.0/gcc/config/cris/t-linux-uclibc
---- gcc-3.4.0-dist/gcc/config/cris/t-linux-uclibc      1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.0/gcc/config/cris/t-linux-uclibc   2004-08-12 16:51:15.000000000 -0500
-@@ -0,0 +1,3 @@
-+T_CFLAGS = -DUSE_UCLIBC
-+TARGET_LIBGCC2_CFLAGS += -fPIC
-+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS)
-diff -urN gcc-3.4.0-dist/gcc/config/i386/linux.h gcc-3.4.0/gcc/config/i386/linux.h
---- gcc-3.4.0-dist/gcc/config/i386/linux.h     2003-11-28 21:08:10.000000000 -0600
-+++ gcc-3.4.0/gcc/config/i386/linux.h  2004-08-12 16:51:15.000000000 -0500
-@@ -118,6 +118,15 @@
-       %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \
-       %{static:-static}}}"
- #else
-+#if defined USE_UCLIBC
-+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \
-+  %{!shared: \
-+    %{!ibcs: \
-+      %{!static: \
-+      %{rdynamic:-export-dynamic} \
-+      %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
-+      %{static:-static}}}"
-+#else
- #define LINK_SPEC "-m elf_i386 %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-@@ -126,6 +135,7 @@
-       %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-       %{static:-static}}}"
- #endif
-+#endif
- /* A C statement (sans semicolon) to output to the stdio stream
-    FILE the assembler definition of uninitialized global DECL named
-diff -urN gcc-3.4.0-dist/gcc/config/mips/linux.h gcc-3.4.0/gcc/config/mips/linux.h
---- gcc-3.4.0-dist/gcc/config/mips/linux.h     2004-02-19 15:45:21.000000000 -0600
-+++ gcc-3.4.0/gcc/config/mips/linux.h  2004-08-12 16:51:15.000000000 -0500
-@@ -109,6 +109,17 @@
- /* Borrowed from sparc/linux.h */
- #undef LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define LINK_SPEC \
-+ "%(endian_spec) \
-+  %{shared:-shared} \
-+  %{!shared: \
-+    %{!ibcs: \
-+      %{!static: \
-+        %{rdynamic:-export-dynamic} \
-+        %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
-+        %{static:-static}}}"
-+#else
- #define LINK_SPEC \
-  "%(endian_spec) \
-   %{shared:-shared} \
-@@ -118,6 +129,7 @@
-         %{rdynamic:-export-dynamic} \
-         %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-         %{static:-static}}}"
-+#endif
- #undef SUBTARGET_ASM_SPEC
- #define SUBTARGET_ASM_SPEC "\
-diff -urN gcc-3.4.0-dist/gcc/config/rs6000/linux.h gcc-3.4.0/gcc/config/rs6000/linux.h
---- gcc-3.4.0-dist/gcc/config/rs6000/linux.h   2004-02-25 09:11:19.000000000 -0600
-+++ gcc-3.4.0/gcc/config/rs6000/linux.h        2004-08-12 16:51:15.000000000 -0500
-@@ -61,7 +61,11 @@
- #define LINK_START_DEFAULT_SPEC "%(link_start_linux)"
- #undef        LINK_OS_DEFAULT_SPEC
-+#ifdef USE_UCLIBC
-+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)"
-+#else
- #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
-+#endif
- #define LINK_GCC_C_SEQUENCE_SPEC \
-   "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
-diff -urN gcc-3.4.0-dist/gcc/config/rs6000/sysv4.h gcc-3.4.0/gcc/config/rs6000/sysv4.h
---- gcc-3.4.0-dist/gcc/config/rs6000/sysv4.h   2004-03-02 16:34:58.000000000 -0600
-+++ gcc-3.4.0/gcc/config/rs6000/sysv4.h        2004-08-12 16:51:15.000000000 -0500
-@@ -952,6 +952,7 @@
-   mcall-linux  : %(link_os_linux)       ; \
-   mcall-gnu    : %(link_os_gnu)         ; \
-   mcall-netbsd : %(link_os_netbsd)      ; \
-+  mcall-linux-uclibc : %(link_os_linux_uclibc); \
-   mcall-openbsd: %(link_os_openbsd)     ; \
-                : %(link_os_default)     }"
-@@ -1129,6 +1130,10 @@
-   %{rdynamic:-export-dynamic} \
-   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
-+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \
-+  %{rdynamic:-export-dynamic} \
-+  %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}"
-+
- #if defined(HAVE_LD_EH_FRAME_HDR)
- # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
- #endif
-@@ -1295,6 +1300,7 @@
-   { "link_os_sim",            LINK_OS_SIM_SPEC },                     \
-   { "link_os_freebsd",                LINK_OS_FREEBSD_SPEC },                 \
-   { "link_os_linux",          LINK_OS_LINUX_SPEC },                   \
-+  { "link_os_linux_uclibc",   LINK_OS_LINUX_UCLIBC_SPEC },            \
-   { "link_os_gnu",            LINK_OS_GNU_SPEC },                     \
-   { "link_os_netbsd",         LINK_OS_NETBSD_SPEC },                  \
-   { "link_os_openbsd",                LINK_OS_OPENBSD_SPEC },                 \
-diff -urN gcc-3.4.0-dist/gcc/config/sh/linux.h gcc-3.4.0/gcc/config/sh/linux.h
---- gcc-3.4.0-dist/gcc/config/sh/linux.h       2004-01-11 20:29:13.000000000 -0600
-+++ gcc-3.4.0/gcc/config/sh/linux.h    2004-08-12 16:51:15.000000000 -0500
-@@ -73,12 +73,21 @@
- #undef SUBTARGET_LINK_EMUL_SUFFIX
- #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
- #undef SUBTARGET_LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define SUBTARGET_LINK_SPEC \
-+  "%{shared:-shared} \
-+   %{!static: \
-+     %{rdynamic:-export-dynamic} \
-+     %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
-+   %{static:-static}"
-+#else
- #define SUBTARGET_LINK_SPEC \
-   "%{shared:-shared} \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
-      %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-    %{static:-static}"
-+#endif
- #undef LIB_SPEC
- #define LIB_SPEC \
-diff -urN gcc-3.4.0-dist/gcc/config/sh/t-linux-uclibc gcc-3.4.0/gcc/config/sh/t-linux-uclibc
---- gcc-3.4.0-dist/gcc/config/sh/t-linux-uclibc        1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.0/gcc/config/sh/t-linux-uclibc     2004-08-12 16:51:15.000000000 -0500
-@@ -0,0 +1,13 @@
-+T_CFLAGS = -DUSE_UCLIBC
-+
-+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES
-+LIB1ASMFUNCS_CACHE = _ic_invalidate
-+
-+LIB2FUNCS_EXTRA=
-+
-+MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) m3e/m4
-+MULTILIB_DIRNAMES= 
-+MULTILIB_MATCHES = 
-+MULTILIB_EXCEPTIONS=
-+
-+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-diff -urN gcc-3.4.0-dist/gcc/config/sh/t-sh64-uclibc gcc-3.4.0/gcc/config/sh/t-sh64-uclibc
---- gcc-3.4.0-dist/gcc/config/sh/t-sh64-uclibc 1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.0/gcc/config/sh/t-sh64-uclibc      2004-08-12 16:51:15.000000000 -0500
-@@ -0,0 +1,13 @@
-+EXTRA_MULTILIB_PARTS= crt1.o crti.o crtn.o crtbegin.o crtend.o
-+
-+LIB1ASMFUNCS = \
-+  _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \
-+  _shcompact_call_trampoline _shcompact_return_trampoline \
-+  _shcompact_incoming_args _ic_invalidate _nested_trampoline \
-+  _push_pop_shmedia_regs \
-+  _udivdi3 _divdi3 _umoddi3 _moddi3
-+
-+MULTILIB_OPTIONS = $(MULTILIB_ENDIAN) m5-32media-nofpu/m5-compact/m5-compact-nofpu/m5-64media/m5-64media-nofpu
-+MULTILIB_DIRNAMES= $(MULTILIB_ENDIAN) nofpu compact nofpu/compact media64 nofpu/media64
-+MULTILIB_MATCHES=
-+MULTILIB_EXCEPTIONS=
-diff -urN gcc-3.4.0-dist/gcc/config/t-linux-uclibc gcc-3.4.0/gcc/config/t-linux-uclibc
---- gcc-3.4.0-dist/gcc/config/t-linux-uclibc   1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.0/gcc/config/t-linux-uclibc        2004-08-12 16:51:15.000000000 -0500
-@@ -0,0 +1,15 @@
-+T_CFLAGS = -DUSE_UCLIBC
-+
-+# Compile crtbeginS.o and crtendS.o with pic.
-+CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC
-+# Compile libgcc2.a with pic.
-+TARGET_LIBGCC2_CFLAGS = -fPIC
-+
-+# Override t-slibgcc-elf-ver to export some libgcc symbols with
-+# the symbol versions that glibc used.
-+SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver
-+
-+# Use unwind-dw2-fde
-+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \
-+  $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c
-+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h
-diff -urN gcc-3.4.0-dist/gcc/config.gcc gcc-3.4.0/gcc/config.gcc
---- gcc-3.4.0-dist/gcc/config.gcc      2004-04-16 21:28:24.000000000 -0500
-+++ gcc-3.4.0/gcc/config.gcc   2004-08-12 16:51:15.000000000 -0500
-@@ -664,6 +664,12 @@
-       extra_parts=""
-       use_collect2=yes
-       ;;
-+arm*-*-linux-uclibc*)         # ARM GNU/Linux with ELF - uClibc
-+      tm_file="dbxelf.h elfos.h linux.h arm/elf.h  arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
-+      tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux"
-+      extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
-+      gnu_ld=yes
-+      ;;
- arm*-*-linux*)                        # ARM GNU/Linux with ELF
-       tm_file="dbxelf.h elfos.h linux.h arm/elf.h  arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
-       tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
-@@ -725,6 +731,10 @@
-       tmake_file="cris/t-cris cris/t-elfmulti"
-       gas=yes
-       ;;
-+cris-*-linux-uclibc*)
-+      tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h"
-+      tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux-uclibc"
-+      ;;
- cris-*-linux*)
-       tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h"
-       tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux"
-@@ -988,6 +998,11 @@
-               thread_file='single'
-       fi
-       ;;
-+i[34567]86-*-linux*uclibc*)   # Intel 80386's running GNU/Linux
-+                              # with ELF format using uClibc
-+      tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h"
-+      tmake_file="t-slibgcc-elf-ver t-linux-uclibc i386/t-crtstuff"
-+      ;;
- i[34567]86-*-linux*)  # Intel 80386's running GNU/Linux
-                       # with ELF format using glibc 2
-                       # aka GNU/Linux C library 6
-@@ -1547,6 +1562,16 @@
-       gnu_ld=yes
-       gas=yes
-       ;;
-+mips*-*-linux-uclibc*)                        # Linux MIPS, either endian. uClibc
-+        tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
-+      case ${target} in
-+        mipsisa32*-*)
-+                target_cpu_default="MASK_SOFT_FLOAT"
-+              tm_defines="MIPS_ISA_DEFAULT=32"
-+                ;;
-+        esac
-+      tmake_file="t-slibgcc-elf-ver t-linux-uclibc"
-+      ;;
- mips*-*-linux*)                               # Linux MIPS, either endian.
-         tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
-       case ${target} in
-@@ -1764,6 +1789,10 @@
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h"
-       tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
-       ;;
-+powerpc-*-linux-uclibc*)
-+      tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
-+      tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux-uclibc rs6000/t-ppccomm"
-+      ;;
- powerpc-*-linux*)
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
-       tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
-@@ -1916,7 +1945,7 @@
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h"
-       ;;
- sh-*-linux* | sh[2346lbe]*-*-linux*)
--      tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux"
-+      tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver"
-       case ${target} in
-       sh*be-*-* | sh*eb-*-*) ;;
-       *)
-@@ -1924,9 +1953,17 @@
-               tmake_file="${tmake_file} sh/t-le"
-               ;;
-       esac
--      tmake_file="${tmake_file} sh/t-linux"
-+      case ${target} in
-+      *-*-linux-uclibc*) tmake_file="${tmake_file} t-linux-uclibc sh/t-linux-uclibc" ;;
-+      *) tmake_file="${tmake_file} t-linux sh/t-linux" ;;
-+      esac
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h"
-       case ${target} in
-+      sh64*-*-linux-uclibc*)
-+              tmake_file="${tmake_file} sh/t-sh64-uclibc"
-+              tm_file="${tm_file} sh/sh64.h"
-+              extra_headers="shmedia.h ushmedia.h sshmedia.h"
-+              ;;
-       sh64*)
-               tmake_file="${tmake_file} sh/t-sh64"
-               tm_file="${tm_file} sh/sh64.h"
-diff -urN gcc-3.4.0-dist/libtool.m4 gcc-3.4.0/libtool.m4
---- gcc-3.4.0-dist/libtool.m4  2003-11-18 23:29:32.000000000 -0600
-+++ gcc-3.4.0/libtool.m4       2004-08-12 16:51:15.000000000 -0500
-@@ -689,6 +689,11 @@
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd*)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
-diff -urN gcc-3.4.0-dist/ltconfig gcc-3.4.0/ltconfig
---- gcc-3.4.0-dist/ltconfig    2004-03-05 15:05:41.000000000 -0600
-+++ gcc-3.4.0/ltconfig 2004-08-12 16:51:15.000000000 -0500
-@@ -602,6 +602,7 @@
- # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
- case $host_os in
-+linux-uclibc*) ;;
- linux-gnu*) ;;
- linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
- esac
-@@ -1262,6 +1263,24 @@
-   dynamic_linker='GNU/Linux ld.so'
-   ;;
-+linux-uclibc*)
-+  version_type=linux
-+  need_lib_prefix=no
-+  need_version=no
-+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+  soname_spec='${libname}${release}.so$major'
-+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+  shlibpath_var=LD_LIBRARY_PATH
-+  shlibpath_overrides_runpath=no
-+  # This implies no fast_install, which is unacceptable.
-+  # Some rework will be needed to allow for fast_install
-+  # before this can be enabled.
-+  # Note: copied from linux-gnu, and may not be appropriate.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
diff --git a/toolchain/gcc/3.4.0/200-uclibc-locale.patch b/toolchain/gcc/3.4.0/200-uclibc-locale.patch
deleted file mode 100644 (file)
index 27e047e..0000000
+++ /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/toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch b/toolchain/gcc/3.4.0/820-no-mips-empic-relocs.patch
deleted file mode 100644 (file)
index c126b78..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-From: cgd at broadcom dot com
-To: gcc-patches at gcc dot gnu dot org
-Cc: mark at codesourcery dot com
-Date: 13 Jun 2004 22:51:30 -0700
-Subject: [trunk + 3.4-branch RFA] don't use empic relocs for mips-linuxeh
-
-This patch changes mips-linux to avoid using embedded-pic relocs for
-its eh data.  (Support for generating these for new code is removed in
-current binutils srcs.)
-
-Relating to this, previously, mips-linux and mips64-linux would use
-different representations for their EH data (even for mips64-linux o32
-abi), due to the mips64-linux n32/64 BFDs not supporting the
-embedded-pic relocs.  This was a bug.
-
-For more explanation, see the thread of the URL quoted in the comment
-in linux.h.
-
-
-Tested the same w/ sources of about a week ago for c/c++ for
-mips-linux (native) before/after.  Also verified .o compatibility
-before/after just to be sure.
-
-I'd like this approved for the branch as well, so 3.4.1 will work
-nicely w/ the next major binutils release.
-
-
-thanks,
-
-chris
-
-2004-06-13  Chris Demetriou  <cgd@broadcom.com>
-
-       * config/mips/linux.h (ASM_PREFERRED_EH_DATA_FORMAT): Redefine
-       to return DW_EH_PE_absptr.
-       * config/mips/linux64.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove.
-
-Index: config/mips/linux.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/mips/linux.h,v
-retrieving revision 1.77
-diff -u -p -r1.77 linux.h
---- gcc/gcc/config/mips/linux.h        19 Feb 2004 22:07:51 -0000      1.77
-+++ gcc/gcc/config/mips/linux.h        14 Jun 2004 05:49:51 -0000
-@@ -170,10 +170,11 @@ Boston, MA 02111-1307, USA.  */
- #undef FUNCTION_NAME_ALREADY_DECLARED
- #define FUNCTION_NAME_ALREADY_DECLARED 1
--#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)                    \
--  (flag_pic                                                           \
--    ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4\
--   : DW_EH_PE_absptr)
-+/* If possible, we should attempt to use GP-relative relocs for this
-+   (see <a  href="http://sources.redhat.com/ml/binutils/2004-05/msg00227.html">http://sources.redhat.com/ml/binutils/2004-05/msg00227.html</a>).
-+   However, until that is implement, this just uses standard, absolute
-+   references.  */
-+#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)    DW_EH_PE_absptr
- /* The glibc _mcount stub will save $v0 for us.  Don't mess with saving
-    it, since ASM_OUTPUT_REG_PUSH/ASM_OUTPUT_REG_POP do not work in the
-Index: config/mips/linux64.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/mips/linux64.h,v
-retrieving revision 1.7
-diff -u -p -r1.7 linux64.h
---- gcc/gcc/config/mips/linux64.h      18 Feb 2004 15:05:10 -0000      1.7
-+++ gcc/gcc/config/mips/linux64.h      14 Jun 2004 05:49:51 -0000
-@@ -81,14 +81,6 @@ Boston, MA 02111-1307, USA.  */
-    specification.  The SGI/MIPS ABI defines it to be the same as PTR_SIZE.  */
- #define DWARF_OFFSET_SIZE PTR_SIZE
--#undef ASM_PREFERRED_EH_DATA_FORMAT
--#if 0  /* We can't use relative addressing modes on NEWABI :-(  */
--#define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL)                    \
--   (flag_pic                                                          \
--    ? ((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_sdata4            \
--    : DW_EH_PE_absptr)
--#endif
--
- /* GNU/Linux doesn't use the same floating-point format that IRIX uses
-    for long double.  There's no need to override this here, since
-    ieee_quad_format is the default, but let's put this here to make
-
diff --git a/toolchain/gcc/3.4.0/arm-softfloat.patch.conditional b/toolchain/gcc/3.4.0/arm-softfloat.patch.conditional
deleted file mode 100644 (file)
index f53d64b..0000000
+++ /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
\f
- /* 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
\f
- #define TARGET_ASM_FILE_START_APP_OFF true
-diff -urNd gcc-3.4.0-orig/gcc/config/arm/linux-elf.h gcc-3.4.0/gcc/config/arm/linux-elf.h
---- gcc-3.4.0-orig/gcc/config/arm/linux-elf.h  2004-01-31 07:18:11.000000000 +0100
-+++ gcc-3.4.0/gcc/config/arm/linux-elf.h       2004-05-01 19:19:06.935979200 +0200
-@@ -30,9 +30,27 @@
- /* Do not assume anything about header files.  */
- #define NO_IMPLICIT_EXTERN_C
--/* Default is to use APCS-32 mode.  */
-+/*
-+ * Default is to use APCS-32 mode with soft-vfp.
-+ * The old Linux default for floats can be achieved with -mhard-float
-+ * or with the configure --with-float=hard option.
-+ * If -msoft-float or --with-float=soft is used then software float 
-+ * support will be used just like the default but with the legacy
-+ * big endian word ordering for double float representation instead.
-+ */
-+
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT                \
-+      ( ARM_FLAG_APCS_32      \
-+      | ARM_FLAG_SOFT_FLOAT   \
-+      | ARM_FLAG_VFP          \
-+      | ARM_FLAG_MMU_TRAPS )
-+
-+#undef  SUBTARGET_EXTRA_ASM_SPEC
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{!mcpu=*:-mcpu=xscale} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
-@@ -40,7 +58,7 @@
- #undef  MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--      { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" }
-+      { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" }
- #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
-@@ -55,7 +73,7 @@
-    %{shared:-lc} \
-    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
--#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
-+#define LIBGCC_SPEC "-lgcc"
- /* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
-    the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
-diff -urNd gcc-3.4.0-orig/gcc/config/arm/t-linux gcc-3.4.0/gcc/config/arm/t-linux
---- gcc-3.4.0-orig/gcc/config/arm/t-linux      2003-09-20 23:09:07.000000000 +0200
-+++ gcc-3.4.0/gcc/config/arm/t-linux   2004-05-01 20:31:59.102846400 +0200
-@@ -4,7 +4,10 @@
- LIBGCC2_DEBUG_CFLAGS = -g0
- LIB1ASMSRC = arm/lib1funcs.asm
--LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
-+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
-+      _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-+      _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-+      _fixsfsi _fixunssfsi
- # MULTILIB_OPTIONS = mhard-float/msoft-float
- # MULTILIB_DIRNAMES = hard-float soft-float
-diff -urNd gcc-3.4.0-orig/gcc/config/arm/unknown-elf.h gcc-3.4.0/gcc/config/arm/unknown-elf.h
---- gcc-3.4.0-orig/gcc/config/arm/unknown-elf.h        2004-02-24 15:25:22.000000000 +0100
-+++ gcc-3.4.0/gcc/config/arm/unknown-elf.h     2004-05-01 19:09:09.016212800 +0200
-@@ -30,7 +30,12 @@
- /* Default to using APCS-32 and software floating point.  */
- #ifndef TARGET_DEFAULT
--#define TARGET_DEFAULT        (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT                \
-+      ( ARM_FLAG_SOFT_FLOAT   \
-+      | ARM_FLAG_VFP          \
-+      | ARM_FLAG_APCS_32      \
-+      | ARM_FLAG_APCS_FRAME   \
-+      | ARM_FLAG_MMU_TRAPS )
- #endif
- /* Now we define the strings used to build the spec file.  */
-diff -urNd gcc-3.4.0-orig/gcc/config/arm/xscale-elf.h gcc-3.4.0/gcc/config/arm/xscale-elf.h
---- gcc-3.4.0-orig/gcc/config/arm/xscale-elf.h 2003-07-02 01:26:43.000000000 +0200
-+++ gcc-3.4.0/gcc/config/arm/xscale-elf.h      2004-05-01 20:15:36.620105600 +0200
-@@ -49,11 +49,12 @@
-                    endian, regardless of the endian-ness of the memory
-                    system.  */
-                    
--#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
--  %{mhard-float:-mfpu=fpa} \
--  %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{!mcpu=*:-mcpu=xscale} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" }
-+  { "mlittle-endian", "mno-thumb-interwork", "marm" }
- #endif
diff --git a/toolchain/gcc/3.4.1/100-uclibc-conf.patch b/toolchain/gcc/3.4.1/100-uclibc-conf.patch
deleted file mode 100644 (file)
index 28449e7..0000000
+++ /dev/null
@@ -1,442 +0,0 @@
-diff -urN gcc-3.4.1-dist/boehm-gc/configure gcc-3.4.1/boehm-gc/configure
---- gcc-3.4.1-dist/boehm-gc/configure  2004-07-01 14:14:03.000000000 -0500
-+++ gcc-3.4.1/boehm-gc/configure       2004-08-12 16:22:57.000000000 -0500
-@@ -1947,6 +1947,11 @@
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd*)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -urN gcc-3.4.1-dist/boehm-gc/ltconfig gcc-3.4.1/boehm-gc/ltconfig
---- gcc-3.4.1-dist/boehm-gc/ltconfig   2002-11-20 09:59:06.000000000 -0600
-+++ gcc-3.4.1/boehm-gc/ltconfig        2004-08-12 15:54:42.000000000 -0500
-@@ -1981,6 +1981,23 @@
-   fi
-   ;;
-+linux-uclibc*)
-+  version_type=linux
-+  need_lib_prefix=no
-+  need_version=no
-+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+  soname_spec='${libname}${release}.so$major'
-+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+  shlibpath_var=LD_LIBRARY_PATH
-+  shlibpath_overrides_runpath=no
-+  deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-+  file_magic_cmd=/usr/bin/file
-+  file_magic_test_file=`echo /lib/libuClibc-*.so`
-+
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   version_type=sunos
-   if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-diff -urN gcc-3.4.1-dist/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h
---- gcc-3.4.1-dist/gcc/config/arm/linux-elf.h  2004-01-31 00:18:11.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/linux-elf.h       2004-08-12 15:54:42.000000000 -0500
-@@ -81,6 +81,18 @@
-   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
- #undef  LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define LINK_SPEC "%{h*} %{version:-v} \
-+   %{b} %{Wl,*:%*} \
-+   %{static:-Bstatic} \
-+   %{shared:-shared} \
-+   %{symbolic:-Bsymbolic} \
-+   %{rdynamic:-export-dynamic} \
-+   %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \
-+   -X \
-+   %{mbig-endian:-EB}" \
-+   SUBTARGET_EXTRA_LINK_SPEC
-+#else
- #define LINK_SPEC "%{h*} %{version:-v} \
-    %{b} %{Wl,*:%*} \
-    %{static:-Bstatic} \
-@@ -91,6 +103,7 @@
-    -X \
-    %{mbig-endian:-EB}" \
-    SUBTARGET_EXTRA_LINK_SPEC
-+#endif
- #define TARGET_OS_CPP_BUILTINS() LINUX_TARGET_OS_CPP_BUILTINS()
-diff -urN gcc-3.4.1-dist/gcc/config/cris/linux.h gcc-3.4.1/gcc/config/cris/linux.h
---- gcc-3.4.1-dist/gcc/config/cris/linux.h     2003-11-28 21:08:09.000000000 -0600
-+++ gcc-3.4.1/gcc/config/cris/linux.h  2004-08-12 15:54:43.000000000 -0500
-@@ -79,6 +79,25 @@
- #undef CRIS_DEFAULT_CPU_VERSION
- #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG
-+#ifdef USE_UCLIBC
-+
-+#undef CRIS_SUBTARGET_VERSION
-+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc"
-+
-+#undef CRIS_LINK_SUBTARGET_SPEC
-+#define CRIS_LINK_SUBTARGET_SPEC \
-+ "-mcrislinux\
-+  -rpath-link include/asm/../..%s\
-+  %{shared} %{static}\
-+  %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\
-+  %{!shared: \
-+    %{!static: \
-+      %{rdynamic:-export-dynamic} \
-+      %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \
-+  %{!r:%{O2|O3: --gc-sections}}"
-+
-+#else  /* USE_UCLIBC */
-+
- #undef CRIS_SUBTARGET_VERSION
- #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu"
-@@ -93,6 +112,8 @@
-   %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\
-   %{!r:%{O2|O3: --gc-sections}}"
-+#endif  /* USE_UCLIBC */
-+
- /* Node: Run-time Target */
-diff -urN gcc-3.4.1-dist/gcc/config/cris/t-linux-uclibc gcc-3.4.1/gcc/config/cris/t-linux-uclibc
---- gcc-3.4.1-dist/gcc/config/cris/t-linux-uclibc      1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.1/gcc/config/cris/t-linux-uclibc   2004-08-12 15:54:43.000000000 -0500
-@@ -0,0 +1,3 @@
-+T_CFLAGS = -DUSE_UCLIBC
-+TARGET_LIBGCC2_CFLAGS += -fPIC
-+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS)
-diff -urN gcc-3.4.1-dist/gcc/config/i386/linux.h gcc-3.4.1/gcc/config/i386/linux.h
---- gcc-3.4.1-dist/gcc/config/i386/linux.h     2003-11-28 21:08:10.000000000 -0600
-+++ gcc-3.4.1/gcc/config/i386/linux.h  2004-08-12 15:54:43.000000000 -0500
-@@ -118,6 +118,15 @@
-       %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \
-       %{static:-static}}}"
- #else
-+#if defined USE_UCLIBC
-+#define LINK_SPEC "-m elf_i386 %{shared:-shared} \
-+  %{!shared: \
-+    %{!ibcs: \
-+      %{!static: \
-+      %{rdynamic:-export-dynamic} \
-+      %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
-+      %{static:-static}}}"
-+#else
- #define LINK_SPEC "-m elf_i386 %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-@@ -126,6 +135,7 @@
-       %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-       %{static:-static}}}"
- #endif
-+#endif
- /* A C statement (sans semicolon) to output to the stdio stream
-    FILE the assembler definition of uninitialized global DECL named
-diff -urN gcc-3.4.1-dist/gcc/config/mips/linux.h gcc-3.4.1/gcc/config/mips/linux.h
---- gcc-3.4.1-dist/gcc/config/mips/linux.h     2004-06-15 20:42:24.000000000 -0500
-+++ gcc-3.4.1/gcc/config/mips/linux.h  2004-08-12 15:54:43.000000000 -0500
-@@ -109,6 +109,17 @@
- /* Borrowed from sparc/linux.h */
- #undef LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define LINK_SPEC \
-+ "%(endian_spec) \
-+  %{shared:-shared} \
-+  %{!shared: \
-+    %{!ibcs: \
-+      %{!static: \
-+        %{rdynamic:-export-dynamic} \
-+        %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
-+        %{static:-static}}}"
-+#else
- #define LINK_SPEC \
-  "%(endian_spec) \
-   %{shared:-shared} \
-@@ -118,6 +129,7 @@
-         %{rdynamic:-export-dynamic} \
-         %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-         %{static:-static}}}"
-+#endif
- #undef SUBTARGET_ASM_SPEC
- #define SUBTARGET_ASM_SPEC "\
-diff -urN gcc-3.4.1-dist/gcc/config/rs6000/linux.h gcc-3.4.1/gcc/config/rs6000/linux.h
---- gcc-3.4.1-dist/gcc/config/rs6000/linux.h   2004-02-25 09:11:19.000000000 -0600
-+++ gcc-3.4.1/gcc/config/rs6000/linux.h        2004-08-12 15:54:43.000000000 -0500
-@@ -61,7 +61,11 @@
- #define LINK_START_DEFAULT_SPEC "%(link_start_linux)"
- #undef        LINK_OS_DEFAULT_SPEC
-+#ifdef USE_UCLIBC
-+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)"
-+#else
- #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
-+#endif
- #define LINK_GCC_C_SEQUENCE_SPEC \
-   "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}"
-diff -urN gcc-3.4.1-dist/gcc/config/rs6000/sysv4.h gcc-3.4.1/gcc/config/rs6000/sysv4.h
---- gcc-3.4.1-dist/gcc/config/rs6000/sysv4.h   2004-06-10 01:39:50.000000000 -0500
-+++ gcc-3.4.1/gcc/config/rs6000/sysv4.h        2004-08-12 15:54:43.000000000 -0500
-@@ -947,6 +947,7 @@
-   mcall-linux  : %(link_os_linux)       ; \
-   mcall-gnu    : %(link_os_gnu)         ; \
-   mcall-netbsd : %(link_os_netbsd)      ; \
-+  mcall-linux-uclibc : %(link_os_linux_uclibc); \
-   mcall-openbsd: %(link_os_openbsd)     ; \
-                : %(link_os_default)     }"
-@@ -1124,6 +1125,10 @@
-   %{rdynamic:-export-dynamic} \
-   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
-+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \
-+  %{rdynamic:-export-dynamic} \
-+  %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}"
-+
- #if defined(HAVE_LD_EH_FRAME_HDR)
- # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
- #endif
-@@ -1290,6 +1295,7 @@
-   { "link_os_sim",            LINK_OS_SIM_SPEC },                     \
-   { "link_os_freebsd",                LINK_OS_FREEBSD_SPEC },                 \
-   { "link_os_linux",          LINK_OS_LINUX_SPEC },                   \
-+  { "link_os_linux_uclibc",   LINK_OS_LINUX_UCLIBC_SPEC },            \
-   { "link_os_gnu",            LINK_OS_GNU_SPEC },                     \
-   { "link_os_netbsd",         LINK_OS_NETBSD_SPEC },                  \
-   { "link_os_openbsd",                LINK_OS_OPENBSD_SPEC },                 \
-diff -urN gcc-3.4.1-dist/gcc/config/sh/linux.h gcc-3.4.1/gcc/config/sh/linux.h
---- gcc-3.4.1-dist/gcc/config/sh/linux.h       2004-01-11 20:29:13.000000000 -0600
-+++ gcc-3.4.1/gcc/config/sh/linux.h    2004-08-12 15:54:43.000000000 -0500
-@@ -73,12 +73,21 @@
- #undef SUBTARGET_LINK_EMUL_SUFFIX
- #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
- #undef SUBTARGET_LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define SUBTARGET_LINK_SPEC \
-+  "%{shared:-shared} \
-+   %{!static: \
-+     %{rdynamic:-export-dynamic} \
-+     %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
-+   %{static:-static}"
-+#else
- #define SUBTARGET_LINK_SPEC \
-   "%{shared:-shared} \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
-      %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-    %{static:-static}"
-+#endif
- #undef LIB_SPEC
- #define LIB_SPEC \
-diff -urN gcc-3.4.1-dist/gcc/config/sh/t-linux-uclibc gcc-3.4.1/gcc/config/sh/t-linux-uclibc
---- gcc-3.4.1-dist/gcc/config/sh/t-linux-uclibc        1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.1/gcc/config/sh/t-linux-uclibc     2004-08-12 15:54:43.000000000 -0500
-@@ -0,0 +1,13 @@
-+T_CFLAGS = -DUSE_UCLIBC
-+
-+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES
-+LIB1ASMFUNCS_CACHE = _ic_invalidate
-+
-+LIB2FUNCS_EXTRA=
-+
-+MULTILIB_OPTIONS= $(MULTILIB_ENDIAN) m3e/m4
-+MULTILIB_DIRNAMES= 
-+MULTILIB_MATCHES = 
-+MULTILIB_EXCEPTIONS=
-+
-+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
-diff -urN gcc-3.4.1-dist/gcc/config/sh/t-sh64-uclibc gcc-3.4.1/gcc/config/sh/t-sh64-uclibc
---- gcc-3.4.1-dist/gcc/config/sh/t-sh64-uclibc 1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.1/gcc/config/sh/t-sh64-uclibc      2004-08-12 15:54:43.000000000 -0500
-@@ -0,0 +1,13 @@
-+EXTRA_MULTILIB_PARTS= crt1.o crti.o crtn.o crtbegin.o crtend.o
-+
-+LIB1ASMFUNCS = \
-+  _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \
-+  _shcompact_call_trampoline _shcompact_return_trampoline \
-+  _shcompact_incoming_args _ic_invalidate _nested_trampoline \
-+  _push_pop_shmedia_regs \
-+  _udivdi3 _divdi3 _umoddi3 _moddi3
-+
-+MULTILIB_OPTIONS = $(MULTILIB_ENDIAN) m5-32media-nofpu/m5-compact/m5-compact-nofpu/m5-64media/m5-64media-nofpu
-+MULTILIB_DIRNAMES= $(MULTILIB_ENDIAN) nofpu compact nofpu/compact media64 nofpu/media64
-+MULTILIB_MATCHES=
-+MULTILIB_EXCEPTIONS=
-diff -urN gcc-3.4.1-dist/gcc/config/t-linux-uclibc gcc-3.4.1/gcc/config/t-linux-uclibc
---- gcc-3.4.1-dist/gcc/config/t-linux-uclibc   1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.1/gcc/config/t-linux-uclibc        2004-08-12 15:54:43.000000000 -0500
-@@ -0,0 +1,15 @@
-+T_CFLAGS = -DUSE_UCLIBC
-+
-+# Compile crtbeginS.o and crtendS.o with pic.
-+CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC
-+# Compile libgcc2.a with pic.
-+TARGET_LIBGCC2_CFLAGS = -fPIC
-+
-+# Override t-slibgcc-elf-ver to export some libgcc symbols with
-+# the symbol versions that glibc used.
-+SHLIB_MAPFILES += $(srcdir)/config/libgcc-glibc.ver
-+
-+# Use unwind-dw2-fde
-+LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/unwind-dw2-fde.c \
-+  $(srcdir)/unwind-sjlj.c $(srcdir)/gthr-gnat.c $(srcdir)/unwind-c.c
-+LIB2ADDEHDEP = unwind.inc unwind-dw2-fde.h
-diff -urN gcc-3.4.1-dist/gcc/config.gcc gcc-3.4.1/gcc/config.gcc
---- gcc-3.4.1-dist/gcc/config.gcc      2004-04-21 10:12:35.000000000 -0500
-+++ gcc-3.4.1/gcc/config.gcc   2004-08-12 15:59:46.000000000 -0500
-@@ -664,6 +664,12 @@
-       extra_parts=""
-       use_collect2=yes
-       ;;
-+arm*-*-linux-uclibc*)         # ARM GNU/Linux with ELF - uClibc
-+      tm_file="dbxelf.h elfos.h linux.h arm/elf.h  arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
-+      tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux"
-+      extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
-+      gnu_ld=yes
-+      ;;
- arm*-*-linux*)                        # ARM GNU/Linux with ELF
-       tm_file="dbxelf.h elfos.h linux.h arm/elf.h  arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
-       tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux"
-@@ -725,6 +731,10 @@
-       tmake_file="cris/t-cris cris/t-elfmulti"
-       gas=yes
-       ;;
-+cris-*-linux-uclibc*)
-+      tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h"
-+      tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux-uclibc"
-+      ;;
- cris-*-linux*)
-       tm_file="dbxelf.h elfos.h svr4.h ${tm_file} linux.h cris/linux.h"
-       tmake_file="cris/t-cris t-slibgcc-elf-ver cris/t-linux"
-@@ -988,6 +998,11 @@
-               thread_file='single'
-       fi
-       ;;
-+i[34567]86-*-linux*uclibc*)   # Intel 80386's running GNU/Linux
-+                              # with ELF format using uClibc
-+      tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h svr4.h linux.h i386/linux.h"
-+      tmake_file="t-slibgcc-elf-ver t-linux-uclibc i386/t-crtstuff"
-+      ;;
- i[34567]86-*-linux*)  # Intel 80386's running GNU/Linux
-                       # with ELF format using glibc 2
-                       # aka GNU/Linux C library 6
-@@ -1547,6 +1562,16 @@
-       gnu_ld=yes
-       gas=yes
-       ;;
-+mips*-*-linux-uclibc*)                        # Linux MIPS, either endian. uClibc
-+        tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
-+      case ${target} in
-+        mipsisa32*-*)
-+                target_cpu_default="MASK_SOFT_FLOAT"
-+              tm_defines="MIPS_ISA_DEFAULT=32"
-+                ;;
-+        esac
-+      tmake_file="t-slibgcc-elf-ver t-linux-uclibc"
-+      ;;
- mips*-*-linux*)                               # Linux MIPS, either endian.
-         tm_file="dbxelf.h elfos.h svr4.h linux.h ${tm_file} mips/linux.h"
-       case ${target} in
-@@ -1764,6 +1789,10 @@
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h rs6000/linuxspe.h"
-       tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
-       ;;
-+powerpc-*-linux-uclibc*)
-+      tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
-+      tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux-uclibc rs6000/t-ppccomm"
-+      ;;
- powerpc-*-linux*)
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h freebsd-spec.h rs6000/sysv4.h rs6000/linux.h"
-       tmake_file="rs6000/t-fprules rs6000/t-ppcos t-slibgcc-elf-ver t-linux rs6000/t-ppccomm"
-@@ -1916,7 +1945,7 @@
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/embed-elf.h sh/rtemself.h rtems.h"
-       ;;
- sh-*-linux* | sh[2346lbe]*-*-linux*)
--      tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux"
-+      tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver"
-       case ${target} in
-       sh*be-*-* | sh*eb-*-*) ;;
-       *)
-@@ -1924,9 +1953,17 @@
-               tmake_file="${tmake_file} sh/t-le"
-               ;;
-       esac
--      tmake_file="${tmake_file} sh/t-linux"
-+      case ${target} in
-+      *-*-linux-uclibc*) tmake_file="${tmake_file} t-linux-uclibc sh/t-linux-uclibc" ;;
-+      *) tmake_file="${tmake_file} t-linux sh/t-linux" ;;
-+      esac
-       tm_file="${tm_file} dbxelf.h elfos.h svr4.h sh/elf.h sh/linux.h"
-       case ${target} in
-+      sh64*-*-linux-uclibc*)
-+              tmake_file="${tmake_file} sh/t-sh64-uclibc"
-+              tm_file="${tm_file} sh/sh64.h"
-+              extra_headers="shmedia.h ushmedia.h sshmedia.h"
-+              ;;
-       sh64*)
-               tmake_file="${tmake_file} sh/t-sh64"
-               tm_file="${tm_file} sh/sh64.h"
-diff -urN gcc-3.4.1-dist/libtool.m4 gcc-3.4.1/libtool.m4
---- gcc-3.4.1-dist/libtool.m4  2004-05-18 04:08:37.000000000 -0500
-+++ gcc-3.4.1/libtool.m4       2004-08-12 15:54:43.000000000 -0500
-@@ -689,6 +689,11 @@
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd*)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
-diff -urN gcc-3.4.1-dist/ltconfig gcc-3.4.1/ltconfig
---- gcc-3.4.1-dist/ltconfig    2004-03-05 15:05:41.000000000 -0600
-+++ gcc-3.4.1/ltconfig 2004-08-12 15:55:48.000000000 -0500
-@@ -602,6 +602,7 @@
- # Transform linux* to *-*-linux-gnu*, to support old configure scripts.
- case $host_os in
-+linux-uclibc*) ;;
- linux-gnu*) ;;
- linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'`
- esac
-@@ -1262,6 +1263,24 @@
-   dynamic_linker='GNU/Linux ld.so'
-   ;;
-+linux-uclibc*)
-+  version_type=linux
-+  need_lib_prefix=no
-+  need_version=no
-+  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-+  soname_spec='${libname}${release}.so$major'
-+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-+  shlibpath_var=LD_LIBRARY_PATH
-+  shlibpath_overrides_runpath=no
-+  # This implies no fast_install, which is unacceptable.
-+  # Some rework will be needed to allow for fast_install
-+  # before this can be enabled.
-+  # Note: copied from linux-gnu, and may not be appropriate.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
diff --git a/toolchain/gcc/3.4.1/200-uclibc-locale.patch b/toolchain/gcc/3.4.1/200-uclibc-locale.patch
deleted file mode 100644 (file)
index 51cd7fc..0000000
+++ /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/toolchain/gcc/3.4.1/400-mips-delay-slot.patch b/toolchain/gcc/3.4.1/400-mips-delay-slot.patch
deleted file mode 100644 (file)
index 8111dba..0000000
+++ /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/toolchain/gcc/3.4.1/800-arm-bigendian.patch b/toolchain/gcc/3.4.1/800-arm-bigendian.patch
deleted file mode 100644 (file)
index 0bae8f4..0000000
+++ /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/toolchain/gcc/3.4.1/810-arm-bigendian-uclibc.patch b/toolchain/gcc/3.4.1/810-arm-bigendian-uclibc.patch
deleted file mode 100644 (file)
index a4d87e2..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -urN gcc-3.4.1-dist/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h
---- gcc-3.4.1-dist/gcc/config/arm/linux-elf.h  2004-08-16 16:08:18.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/linux-elf.h       2004-08-16 16:06:24.000000000 -0500
-@@ -107,7 +107,7 @@
-    %{rdynamic:-export-dynamic} \
-    %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \
-    -X \
--   %{mbig-endian:-EB}" \
-+   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
-    SUBTARGET_EXTRA_LINK_SPEC
- #else
- #define LINK_SPEC "%{h*} %{version:-v} \
-diff -urN gcc-3.4.1-dist/gcc/config.gcc gcc-3.4.1/gcc/config.gcc
---- gcc-3.4.1-dist/gcc/config.gcc      2004-08-16 16:08:18.000000000 -0500
-+++ gcc-3.4.1/gcc/config.gcc   2004-08-16 16:03:25.000000000 -0500
-@@ -666,6 +666,11 @@
-       ;;
- arm*-*-linux-uclibc*)         # ARM GNU/Linux with ELF - uClibc
-       tm_file="dbxelf.h elfos.h linux.h arm/elf.h  arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
-+      case $target in
-+      arm*b-*)
-+              tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines"
-+              ;;
-+      esac
-       tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux"
-       extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
-       gnu_ld=yes
diff --git a/toolchain/gcc/3.4.1/arm-softfloat.patch.conditional b/toolchain/gcc/3.4.1/arm-softfloat.patch.conditional
deleted file mode 100644 (file)
index 19d1b90..0000000
+++ /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
\f
- /* 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
\f
- #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
index b19a36deca53978d96fd8d484f75e79eb5d46d9b..1ba9614be696df9e5f9895bc67c66a6d2f80b4b1 100644 (file)
@@ -1,6 +1,4 @@
 # Choose gcc version.
-# WARNING -- 2.95 currently only builds for i386, arm, mips*, and powerpc.
-# WARNING -- 2.95 does not currently build natively for the target.
 
 comment "Gcc Options"
 
@@ -10,25 +8,12 @@ choice
        help
          Select the version of gcc you wish to use.
 
-       config BR2_GCC_VERSION_2_95
-               bool "gcc 2.95"
-               depends on BR2_arm || BR2_i386 || BR2_mips || BR2_powerpc
-
        config BR2_GCC_VERSION_3_3_3
                bool "gcc 3.3.3"
 
-       config BR2_GCC_VERSION_3_3_4
-               bool "gcc 3.3.4"
-
        config BR2_GCC_VERSION_3_3_5
                bool "gcc 3.3.5"
 
-       config BR2_GCC_VERSION_3_4_0
-               bool "gcc 3.4.0"
-
-       config BR2_GCC_VERSION_3_4_1
-               bool "gcc 3.4.1"
-
        config BR2_GCC_VERSION_3_4_2
                bool "gcc 3.4.2"
 
@@ -45,12 +30,8 @@ endchoice
 
 config BR2_GCC_VERSION
        string
-       default "2.95"      if BR2_GCC_VERSION_2_95
        default "3.3.3"     if BR2_GCC_VERSION_3_3_3
-       default "3.3.4"     if BR2_GCC_VERSION_3_3_4
        default "3.3.5"     if BR2_GCC_VERSION_3_3_5
-       default "3.4.0"     if BR2_GCC_VERSION_3_4_0
-       default "3.4.1"     if BR2_GCC_VERSION_3_4_1
        default "3.4.2"     if BR2_GCC_VERSION_3_4_2
        default "3.4.3"     if BR2_GCC_VERSION_3_4_3
        default "4.0.0"     if BR2_GCC_VERSION_4_0_0
diff --git a/toolchain/gcc/gcc-uclibc-2.95.mk b/toolchain/gcc/gcc-uclibc-2.95.mk
deleted file mode 100644 (file)
index acc5a6e..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-# Makefile for to build a gcc/uClibc toolchain
-#
-# Copyright (C) 2002-2003 Erik Andersen <andersen@uclibc.org>
-# Copyright (C) 2004 Manuel Novoa III <mjn3@uclibc.org>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-
-ifeq ($(findstring 2.95,$(GCC_VERSION)),2.95)
-GCC_VERSION:=$(strip $(GCC_VERSION))
-
-GCC_SITE:=http://www.uclibc.org/downloads/toolchain
-GCC_SOURCE:=gcc-20011006.tar.bz2
-GCC_DIR:=$(TOOL_BUILD_DIR)/gcc-20011006
-GCC_CAT:=bzcat
-
-STLPORT_SITE=http://www.stlport.org/archive
-STLPORT_SOURCE=STLport-4.5.3.tar.gz
-STLPORT_DIR=$(TOOL_BUILD_DIR)/STLport-4.5.3
-GCC_STRIP_HOST_BINARIES:=true
-
-#############################################################
-#
-# Setup some initial stuff
-#
-#############################################################
-
-ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
-TARGET_LANGUAGES:=c,c++
-STLPORT_TARGET=stlport
-else
-TARGET_LANGUAGES:=c
-STLPORT_TARGET=
-endif
-
-#############################################################
-#
-# build the first pass gcc compiler
-#
-#############################################################
-GCC_BUILD_DIR1:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION)-initial
-
-$(DL_DIR)/$(GCC_SOURCE):
-       mkdir -p $(DL_DIR)
-       $(WGET) -P $(DL_DIR) $(GCC_SITE)/$(GCC_SOURCE)
-
-$(GCC_DIR)/.unpacked: $(DL_DIR)/$(GCC_SOURCE)
-       mkdir -p $(TOOL_BUILD_DIR)
-       $(GCC_CAT) $(DL_DIR)/$(GCC_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) -
-       touch $(GCC_DIR)/.unpacked
-
-$(GCC_DIR)/.patched: $(GCC_DIR)/.unpacked
-       # Apply any files named gcc-*.patch from the source directory to gcc
-       toolchain/patch-kernel.sh $(GCC_DIR) toolchain/gcc/$(GCC_VERSION) \*.patch\*
-       #
-       # We do not wish to build the libstdc++ library provided with gcc,
-       # since it doesn't seem to work at all with uClibc plus gcc 2.95...
-       #
-       mv $(GCC_DIR)/libstdc++ $(GCC_DIR)/libstdc++.orig
-       mv $(GCC_DIR)/libio $(GCC_DIR)/libio.orig
-       #
-       touch $(GCC_DIR)/.patched
-
-# The --without-headers option stopped working with gcc 3.0 and has never been
-# # fixed, so we need to actually have working C library header files prior to
-# # the step or libgcc will not build...
-$(GCC_BUILD_DIR1)/.configured: $(GCC_DIR)/.patched
-       mkdir -p $(GCC_BUILD_DIR1)
-       -mkdir -p $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include
-       # Important!  Required for limits.h to be fixed.
-       ln -snf include $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/sys-include
-       (cd $(GCC_BUILD_DIR1); PATH=$(TARGET_PATH) \
-               $(GCC_DIR)/configure \
-               --prefix=$(STAGING_DIR) \
-               --build=$(GNU_HOST_NAME) \
-               --host=$(GNU_HOST_NAME) \
-               --target=$(REAL_GNU_TARGET_NAME) \
-               --enable-languages=c \
-               --disable-shared \
-               --includedir=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include \
-               --with-headers=$(TOOL_BUILD_DIR)/uClibc_dev/usr/include \
-               --disable-__cxa_atexit \
-               --enable-target-optspace \
-               --with-gnu-ld \
-               $(DISABLE_NLS) \
-               $(MULTILIB) \
-               $(SOFT_FLOAT_CONFIG_OPTION) \
-               $(EXTRA_GCC_CONFIG_OPTIONS));
-       touch $(GCC_BUILD_DIR1)/.configured
-
-$(GCC_BUILD_DIR1)/.compiled: $(GCC_BUILD_DIR1)/.configured
-       PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR1) all-gcc
-       touch $(GCC_BUILD_DIR1)/.compiled
-
-$(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc: $(GCC_BUILD_DIR1)/.compiled
-       PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR1) install-gcc
-       #rm -f $(STAGING_DIR)/bin/gccbug $(STAGING_DIR)/bin/gcov
-       #rm -rf $(STAGING_DIR)/info $(STAGING_DIR)/man $(STAGING_DIR)/share/doc $(STAGING_DIR)/share/locale
-
-gcc_initial: uclibc-configured binutils $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)-gcc
-
-gcc_initial-clean:
-       rm -rf $(GCC_BUILD_DIR1)
-       rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)*
-
-gcc_initial-dirclean:
-       rm -rf $(GCC_BUILD_DIR1)
-
-#############################################################
-#
-# STLport -- an alternative C++ library
-#
-#############################################################
-STLPORT_PATCH=toolchain/gcc/2.95/STLport-4.5.3.patch
-
-$(DL_DIR)/$(STLPORT_SOURCE):
-       $(WGET) -P $(DL_DIR) $(STLPORT_SITE)/$(STLPORT_SOURCE)
-
-$(STLPORT_DIR)/Makefile: $(DL_DIR)/$(STLPORT_SOURCE) $(STLPORT_PATCH)
-       zcat $(DL_DIR)/$(STLPORT_SOURCE) | tar -C $(TOOL_BUILD_DIR) $(TAR_OPTIONS) - 
-       cat $(STLPORT_PATCH) | patch -d $(STLPORT_DIR) -p1
-
-$(STLPORT_DIR)/lib/libstdc++.a: $(STLPORT_DIR)/Makefile
-       $(MAKE) ARCH=$(OPTIMIZE_FOR_CPU) PREFIX=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME) -C $(STLPORT_DIR)
-
-$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++.a: $(STLPORT_DIR)/lib/libstdc++.a
-       $(MAKE) ARCH=$(OPTIMIZE_FOR_CPU) PREFIX=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME) -C $(STLPORT_DIR) install
-
-stlport: $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++.a
-
-stlport-source: $(DL_DIR)/$(STLPORT_SOURCE)
-
-stlport-clean:
-       rm -f $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++*
-       rm -f $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include/c++*
-       -$(MAKE) -C $(STLPORT_DIR) clean
-
-stlport-dirclean:
-       rm -f $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libstdc++*
-       rm -f $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include/g++-v3*
-       rm -rf $(STLPORT_DIR)
-
-#############################################################
-#
-# second pass compiler build.  Build the compiler targeting 
-# the newly built shared uClibc library.
-#
-#############################################################
-GCC_BUILD_DIR2:=$(TOOL_BUILD_DIR)/gcc-$(GCC_VERSION)-final
-
-$(GCC_BUILD_DIR2)/.configured: $(GCC_DIR)/.patched $(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/lib/libc.a
-       mkdir -p $(GCC_BUILD_DIR2)
-       (cd $(GCC_BUILD_DIR2); PATH=$(TARGET_PATH) \
-               $(GCC_DIR)/configure \
-               --prefix=$(STAGING_DIR) \
-               --build=$(GNU_HOST_NAME) \
-               --host=$(GNU_HOST_NAME) \
-               --target=$(REAL_GNU_TARGET_NAME) \
-               --enable-languages=$(TARGET_LANGUAGES) \
-               --enable-shared \
-               --with-gxx-include-dir=$(STAGING_DIR)/$(REAL_GNU_TARGET_NAME)/include/c++ \
-               --disable-__cxa_atexit \
-               --enable-target-optspace \
-               --with-gnu-ld \
-               $(DISABLE_NLS) \
-               $(MULTILIB) \
-               $(SOFT_FLOAT_CONFIG_OPTION) \
-               $(EXTRA_GCC_CONFIG_OPTIONS));
-       touch $(GCC_BUILD_DIR2)/.configured
-
-$(GCC_BUILD_DIR2)/.compiled: $(GCC_BUILD_DIR2)/.configured
-       PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR2) all
-       touch $(GCC_BUILD_DIR2)/.compiled
-
-$(GCC_BUILD_DIR2)/.installed: $(GCC_BUILD_DIR2)/.compiled
-       PATH=$(TARGET_PATH) $(MAKE) -C $(GCC_BUILD_DIR2) install
-       # Strip the host binaries
-ifeq ($(GCC_STRIP_HOST_BINARIES),true)
-       -strip --strip-all -R .note -R .comment $(STAGING_DIR)/bin/*
-endif
-       # Set up the symlinks to enable lying about target name.
-       set -e; \
-       (cd $(STAGING_DIR); \
-               ln -snf $(REAL_GNU_TARGET_NAME) $(GNU_TARGET_NAME); \
-               cd bin; \
-               for app in $(REAL_GNU_TARGET_NAME)-* ; do \
-                       ln -snf $${app} \
-                       $(GNU_TARGET_NAME)$${app##$(REAL_GNU_TARGET_NAME)}; \
-               done; \
-       );
-       touch $(GCC_BUILD_DIR2)/.installed
-
-gcc: uclibc-configured binutils gcc_initial $(LIBFLOAT_TARGET) uclibc \
-       $(GCC_BUILD_DIR2)/.installed $(GCC_TARGETS) $(STLPORT_TARGET)
-
-gcc-source: $(DL_DIR)/$(GCC_SOURCE)
-
-gcc-clean:
-       rm -rf $(GCC_BUILD_DIR2)
-       rm -f $(STAGING_DIR)/bin/$(REAL_GNU_TARGET_NAME)*
-
-gcc-dirclean:
-       rm -rf $(GCC_BUILD_DIR2)
-
-#############################################################
-#
-# Next build target gcc compiler
-#
-#############################################################
-GCC_BUILD_DIR3:=$(BUILD_DIR)/gcc-$(GCC_VERSION)-target
-
-$(GCC_BUILD_DIR3)/.configured: $(GCC_BUILD_DIR2)/.installed
-       mkdir -p $(GCC_BUILD_DIR3)
-       (cd $(GCC_BUILD_DIR3); PATH=$(TARGET_PATH) \
-               $(GCC_DIR)/configure \
-               --prefix=/usr \
-               --build=$(GNU_HOST_NAME) \
-               --host=$(REAL_GNU_TARGET_NAME) \
-               --target=$(REAL_GNU_TARGET_NAME) \
-               --enable-languages=$(TARGET_LANGUAGES) \
-               --enable-shared \
-               --with-gxx-include-dir=/usr/include/c++ \
-               --disable-__cxa_atexit \
-               --enable-target-optspace \
-               --with-gnu-ld \
-               $(DISABLE_NLS) \
-               $(MULTILIB) \
-               $(SOFT_FLOAT_CONFIG_OPTION) \
-               $(EXTRA_GCC_CONFIG_OPTIONS));
-       touch $(GCC_BUILD_DIR3)/.configured
-
-$(GCC_BUILD_DIR3)/.compiled: $(GCC_BUILD_DIR3)/.configured
-       PATH=$(TARGET_PATH) \
-       $(MAKE) $(TARGET_GCC_ARGS) -C $(GCC_BUILD_DIR3) all
-       touch $(GCC_BUILD_DIR3)/.compiled
-
-$(TARGET_DIR)/usr/bin/gcc: $(GCC_BUILD_DIR3)/.compiled
-       PATH=$(TARGET_PATH) \
-       $(MAKE) DESTDIR=$(TARGET_DIR) -C $(GCC_BUILD_DIR3) install
-       # Remove broken specs file (cross compile flag is set).
-       rm -f $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/specs
-       -(cd $(TARGET_DIR)/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1)
-       -(cd $(TARGET_DIR)/usr/bin; find -type f | xargs $(STRIP) > /dev/null 2>&1)
-       -(cd $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION); $(STRIP) cc1 cc1plus collect2 > /dev/null 2>&1)
-       -(cd $(TARGET_DIR)/usr/lib; $(STRIP) libstdc++.so.*.*.* > /dev/null 2>&1)
-       -(cd $(TARGET_DIR)/lib; $(STRIP) libgcc_s.so.*.*.* > /dev/null 2>&1)
-       #
-       rm -f $(TARGET_DIR)/usr/lib/*.la*
-       #rm -rf $(TARGET_DIR)/share/locale $(TARGET_DIR)/usr/info \
-       #       $(TARGET_DIR)/usr/man $(TARGET_DIR)/usr/share/doc
-       # Work around problem of missing syslimits.h
-       cp -f $(STAGING_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/include/syslimits.h $(TARGET_DIR)/usr/lib/gcc-lib/$(REAL_GNU_TARGET_NAME)/$(GCC_VERSION)/include/
-       # These are in /lib, so...
-       #rm -rf $(TARGET_DIR)/usr/lib/libgcc_s.so*
-       #touch -c $(TARGET_DIR)/usr/bin/gcc
-
-gcc_target: uclibc_target binutils_target $(TARGET_DIR)/usr/bin/gcc
-
-gcc_target-clean:
-       rm -rf $(GCC_BUILD_DIR3)
-       rm -f $(TARGET_DIR)/bin/$(REAL_GNU_TARGET_NAME)*
-
-gcc_target-dirclean:
-       rm -rf $(GCC_BUILD_DIR3)
-
-endif
index 3f731eb1fcaa5fd1bd6e348bab04491beca1ee23..6027cf8b7d0332783d30da9ba2219e0f80b71a18 100644 (file)
@@ -17,7 +17,6 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
-ifneq ($(findstring 2.95,$(GCC_VERSION)),2.95)
 GCC_VERSION:=$(strip $(GCC_VERSION))
 
 #GCC_SITE:=ftp://ftp.gnu.org/gnu/gcc/releases/gcc-$(GCC_VERSION)
@@ -340,4 +339,3 @@ gcc_target-clean:
 gcc_target-dirclean:
        rm -rf $(GCC_BUILD_DIR3)
 
-endif