Index: toolchain/kernel-headers/Config.in
===================================================================
--- toolchain/kernel-headers/Config.in	(revision 20005)
+++ toolchain/kernel-headers/Config.in	(working copy)
@@ -6,12 +6,15 @@
 
 choice
 	prompt "Kernel Headers"
-	default BR2_KERNEL_HEADERS_2_6_22_1
+	default BR2_KERNEL_HEADERS_2_6_22
 	help
 	  Select the version of kernel header files you wish to use.
 	  You must select the correct set of header files to match
 	  the kernel you intend to use on your target system.
 
+	  For the snapshot, you have to provide the
+	  linux-2.6.tar.bz2 tarball in your download dir.
+
 	config BR2_KERNEL_HEADERS_2_4_25
 		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
 		bool "Linux 2.4.25 kernel headers"
@@ -64,6 +67,9 @@
 		depends !BR2_avr32 && !BR2_nios2
 		bool "Latest Linux 2.6.22.x kernel headers"
 
+	config BR2_KERNEL_HEADERS_SNAP
+		bool "Linux 2.6 snapshot"
+
 endchoice
 
 config BR2_KERNEL_HEADERS_IPMI
@@ -107,9 +113,10 @@
 	default "2.6.11"    if BR2_KERNEL_HEADERS_2_6_11
 	default "2.6.12"    if BR2_KERNEL_HEADERS_2_6_12
 	default "2.6.20.4"  if BR2_KERNEL_HEADERS_2_6_20_4
-	default "2.6.20.19"  if BR2_KERNEL_HEADERS_2_6_20
+	default "2.6.20.20" if BR2_KERNEL_HEADERS_2_6_20
 	default "2.6.21.5"  if BR2_KERNEL_HEADERS_2_6_21_5
 	default "2.6.21.7"  if BR2_KERNEL_HEADERS_2_6_21
 	default "2.6.22.1"  if BR2_KERNEL_HEADERS_2_6_22_1
-	default "2.6.22.7"  if BR2_KERNEL_HEADERS_2_6_22
+	default "2.6.22.8"  if BR2_KERNEL_HEADERS_2_6_22
+	default "2.6"       if BR2_KERNEL_HEADERS_SNAP
 
Index: toolchain/binutils/2.17.50.0.9/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.9/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.9/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.9/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.9/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.9/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.9/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.9/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.9/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.9/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.9/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.9/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.14.90.0.8/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.14.90.0.8/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.14.90.0.8/100-uclibc-conf.patch	(working copy)
@@ -1,608 +0,0 @@
-diff -urN binutils-2.14.90.0.8-001-debian/bfd/config.bfd binutils-2.14.90.0.8/bfd/config.bfd
---- binutils-2.14.90.0.8-001-debian/bfd/config.bfd	2004-01-14 15:07:43.000000000 -0600
-+++ binutils-2.14.90.0.8/bfd/config.bfd	2004-02-12 14:18:14.000000000 -0600
-@@ -121,7 +121,7 @@
-     targ_defvec=ecoffalpha_little_vec
-     targ_selvecs=bfd_elf64_alpha_vec
-     ;;
--  alpha*-*-linux-gnu* | alpha*-*-elf*)
-+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc* | alpha*-*-elf*)
-     targ_defvec=bfd_elf64_alpha_vec
-     targ_selvecs=ecoffalpha_little_vec
-     ;;
-@@ -131,7 +131,7 @@
-   alpha*-*-*)
-     targ_defvec=ecoffalpha_little_vec
-     ;;
--  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
-+  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-linux-uclibc* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
-     targ_defvec=bfd_elf64_ia64_little_vec
-     targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
-     ;;
-@@ -208,7 +208,7 @@
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-     ;;
--  armeb-*-elf | arm*b-*-linux-gnu*)
-+  armeb-*-elf | arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_bigarm_vec
-     targ_selvecs=bfd_elf32_littlearm_vec
-     ;;
-@@ -216,8 +216,8 @@
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-     ;;
--  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \
--  arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks)
-+  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-linux-uclibc* | \
-+  arm*-*-conix* | arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks)
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-     ;;
-@@ -350,7 +350,7 @@
-     ;;
- 
- #ifdef BFD64
--  hppa*64*-*-linux-gnu*)
-+  hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)
-     targ_defvec=bfd_elf64_hppa_linux_vec
-     targ_selvecs=bfd_elf64_hppa_vec
-     ;;
-@@ -361,7 +361,7 @@
-     ;;
- #endif
- 
--  hppa*-*-linux-gnu* | hppa*-*-netbsd*)
-+  hppa*-*-linux-gnu* | hppa*-*-linux-uclibc* | hppa*-*-netbsd*)
-     targ_defvec=bfd_elf32_hppa_linux_vec
-     targ_selvecs=bfd_elf32_hppa_vec
-     ;;
-@@ -483,7 +483,7 @@
-     targ_selvecs=bfd_elf32_i386_vec
-     targ_underscore=yes
-     ;;
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_i386_vec
-     targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
-     targ64_selvecs=bfd_elf64_x86_64_vec
-@@ -497,7 +497,7 @@
-     targ_defvec=bfd_elf64_x86_64_vec
-     targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
-     ;;
--  x86_64-*-linux-gnu*)
-+  x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*)
-     targ_defvec=bfd_elf64_x86_64_vec
-     targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
-     ;;
-@@ -672,7 +672,7 @@
-     targ_selvecs=bfd_elf32_m68k_vec
-     targ_underscore=yes
-     ;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_m68k_vec
-     targ_selvecs=m68klinux_vec
-     ;;
-@@ -952,7 +952,8 @@
-     ;;
- #endif
-   powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
--  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
-+  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-linux-uclibc* | \
-+  powerpc-*-rtems* | \
-   powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*)
-     targ_defvec=bfd_elf32_powerpc_vec
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
-@@ -984,8 +985,8 @@
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
-     ;;
-   powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
--  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
--  powerpcle-*-rtems*)
-+  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-linux-uclibc* |\
-+  powerpcle-*-vxworks* | powerpcle-*-rtems*)
-     targ_defvec=bfd_elf32_powerpcle_vec
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
-     targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
-@@ -1141,7 +1142,7 @@
-     targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
-     targ_underscore=yes
-     ;;
--  sparc-*-linux-gnu*)
-+  sparc-*-linux-gnu* | sparc-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_sparc_vec
-     targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec"
-     ;;
-@@ -1188,7 +1189,7 @@
-     targ_defvec=sunos_big_vec
-     targ_underscore=yes
-     ;;
--  sparc64-*-linux-gnu*)
-+  sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)
-     targ_defvec=bfd_elf64_sparc_vec
-     targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
-     ;;
-diff -urN binutils-2.14.90.0.8-001-debian/bfd/configure binutils-2.14.90.0.8/bfd/configure
---- binutils-2.14.90.0.8-001-debian/bfd/configure	2004-01-14 15:07:43.000000000 -0600
-+++ binutils-2.14.90.0.8/bfd/configure	2004-02-12 14:09:10.000000000 -0600
-@@ -1699,6 +1699,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]+$'
-@@ -5278,7 +5283,7 @@
-   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
- 	COREFILE=''
- 	;;
--  alpha*-*-linux-gnu*)
-+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/alphalinux.h"'
- 	;;
-@@ -5338,7 +5343,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386mach3.h"'
- 	;;
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386linux.h"'
- 	;;
-@@ -5388,7 +5393,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/hp300bsd.h"'
- 	;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/m68klinux.h"'
- 	;;
-diff -urN binutils-2.14.90.0.8-001-debian/bfd/configure.in binutils-2.14.90.0.8/bfd/configure.in
---- binutils-2.14.90.0.8-001-debian/bfd/configure.in	2004-01-14 15:07:43.000000000 -0600
-+++ binutils-2.14.90.0.8/bfd/configure.in	2004-02-12 14:09:10.000000000 -0600
-@@ -178,7 +178,7 @@
-   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
- 	COREFILE=''
- 	;;
--  alpha*-*-linux-gnu*)
-+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/alphalinux.h"'
- 	;;
-@@ -259,7 +259,7 @@
- 	TRAD_HEADER='"hosts/i386mach3.h"'
- 	;;
- changequote(,)dnl
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
- changequote([,])dnl
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386linux.h"'
-@@ -312,7 +312,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/hp300bsd.h"'
- 	;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/m68klinux.h"'
- 	;;
-diff -urN binutils-2.14.90.0.8-001-debian/configure binutils-2.14.90.0.8/configure
---- binutils-2.14.90.0.8-001-debian/configure	2004-01-14 15:07:42.000000000 -0600
-+++ binutils-2.14.90.0.8/configure	2004-02-12 14:09:10.000000000 -0600
-@@ -1273,6 +1273,18 @@
-   i[3456789]86-*-freebsd* | i[3456789]86-*-kfreebsd*-gnu)
-     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
-     ;;
-+  i[3456789]86-*-linux-uclibc)
-+    # This section makes it possible to build newlib natively on linux.
-+    # If we are using a cross compiler then don't configure newlib.
-+    if test x${is_cross_compiler} != xno ; then
-+      noconfigdirs="$noconfigdirs target-newlib"
-+    fi
-+    noconfigdirs="$noconfigdirs target-libgloss"
-+    # If we are not using a cross compiler, do configure newlib.
-+    # Note however, that newlib will only be configured in this situation
-+    # if the --with-newlib option has been given, because otherwise
-+    # 'target-newlib' will appear in skipdirs.
-+    ;;
-   i[3456789]86-*-linux*)
-     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
-     # not build java stuff by default.
-diff -urN binutils-2.14.90.0.8-001-debian/configure.in binutils-2.14.90.0.8/configure.in
---- binutils-2.14.90.0.8-001-debian/configure.in	2004-01-14 15:07:42.000000000 -0600
-+++ binutils-2.14.90.0.8/configure.in	2004-02-12 14:50:56.000000000 -0600
-@@ -512,6 +512,18 @@
-   i[[3456789]]86-*-freebsd* | i[[3456789]]86-*-kfreebsd*-gnu)
-     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
-     ;;
-+  i[[3456789]]86-*-linux-uclibc)
-+    # This section makes it possible to build newlib natively on linux.
-+    # If we are using a cross compiler then don't configure newlib.
-+    if test x${is_cross_compiler} != xno ; then
-+      noconfigdirs="$noconfigdirs target-newlib"
-+    fi
-+    noconfigdirs="$noconfigdirs target-libgloss"
-+    # If we are not using a cross compiler, do configure newlib.
-+    # Note however, that newlib will only be configured in this situation
-+    # if the --with-newlib option has been given, because otherwise
-+    # 'target-newlib' will appear in skipdirs.
-+    ;;
-   i[[3456789]]86-*-linux*)
-     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
-     # not build java stuff by default.
-diff -urN binutils-2.14.90.0.8-001-debian/gas/configure binutils-2.14.90.0.8/gas/configure
---- binutils-2.14.90.0.8-001-debian/gas/configure	2004-01-14 15:07:45.000000000 -0600
-+++ binutils-2.14.90.0.8/gas/configure	2004-02-12 14:57:43.000000000 -0600
-@@ -3215,6 +3215,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]+$'
-@@ -4030,6 +4035,7 @@
-       alpha*-*-osf*)			fmt=ecoff ;;
-       alpha*-*-linuxecoff*)		fmt=ecoff ;;
-       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
-+      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
-       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
-       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
- 
-@@ -4046,6 +4052,7 @@
-       arm*-*-conix*)			fmt=elf ;;
-       arm-*-linux*aout*)		fmt=aout em=linux ;;
-       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
-+      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
-       arm*-*-uclinux*)			fmt=elf  em=linux ;;
-       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
-       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
-@@ -4059,6 +4066,7 @@
-       avr-*-*)				fmt=elf ;;
- 
-       cris-*-linux-gnu*)		fmt=multi bfd_gas=yes em=linux ;;
-+      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
-       cris-*-*)				fmt=multi bfd_gas=yes ;;
- 
-       d10v-*-*)				fmt=elf ;;
-@@ -4115,7 +4123,9 @@
-       i386-*-linux*oldld)		fmt=aout em=linux ;;
-       i386-*-linux*coff*)		fmt=coff em=linux ;;
-       i386-*-linux-gnu*)		fmt=elf em=linux ;;
-+      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
-       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       i386-*-lynxos*)			fmt=coff em=lynx ;;
-       i386-*-sysv[45]*)			fmt=elf ;;
-       i386-*-solaris*)			fmt=elf ;;
-@@ -4175,6 +4185,7 @@
-       ia64-*-elf*)			fmt=elf ;;
-       ia64-*-aix*)			fmt=elf em=ia64aix ;;
-       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       ia64-*-hpux*)			fmt=elf em=hpux ;;
-       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
- 
-@@ -4202,6 +4213,7 @@
-       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
-       m68k-*-linux*aout*)		fmt=aout em=linux ;;
-       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
-+      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
-       m68k-*-uclinux*)			fmt=elf ;;
-       m68k-*-gnu*)			fmt=elf ;;
-       m68k-*-lynxos*)			fmt=coff em=lynx ;;
-@@ -4265,6 +4277,7 @@
-       ppc-*-beos*)			fmt=coff ;;
-       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
-       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
-+      ppc-*-linux-uclibc* | \
-       ppc-*-linux-gnu*)			fmt=elf em=linux
- 	    case "$endian" in
- 		big)  ;;
-@@ -4292,7 +4305,9 @@
-       ppc-*-kaos*)			fmt=elf ;;
- 
-       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
-       s390-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
- 
-       sh*-*-linux*)			fmt=elf em=linux
- 	    case ${cpu} in
-@@ -4325,6 +4340,7 @@
-       sparc-*-coff)			fmt=coff ;;
-       sparc-*-linux*aout*)		fmt=aout em=linux ;;
-       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
-+      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
-       sparc-*-lynxos*)			fmt=coff em=lynx ;;
-       sparc-fujitsu-none)		fmt=aout ;;
-       sparc-*-elf)			fmt=elf ;;
-diff -urN binutils-2.14.90.0.8-001-debian/gas/configure.in binutils-2.14.90.0.8/gas/configure.in
---- binutils-2.14.90.0.8-001-debian/gas/configure.in	2004-01-14 15:07:45.000000000 -0600
-+++ binutils-2.14.90.0.8/gas/configure.in	2004-02-12 14:21:06.000000000 -0600
-@@ -194,6 +194,7 @@
-       alpha*-*-osf*)			fmt=ecoff ;;
-       alpha*-*-linuxecoff*)		fmt=ecoff ;;
-       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
-+      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
-       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
-       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
- 
-@@ -210,6 +211,7 @@
-       arm*-*-conix*)			fmt=elf ;;
-       arm-*-linux*aout*)		fmt=aout em=linux ;;
-       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
-+      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
-       arm*-*-uclinux*)			fmt=elf  em=linux ;;
-       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
-       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
-@@ -223,6 +225,7 @@
-       avr-*-*)				fmt=elf ;;
- 
-       cris-*-linux-gnu*)		fmt=multi bfd_gas=yes em=linux ;;
-+      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
-       cris-*-*)				fmt=multi bfd_gas=yes ;;
- 
-       d10v-*-*)				fmt=elf ;;
-@@ -279,7 +282,9 @@
-       i386-*-linux*oldld)		fmt=aout em=linux ;;
-       i386-*-linux*coff*)		fmt=coff em=linux ;;
-       i386-*-linux-gnu*)		fmt=elf em=linux ;;
-+      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
-       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       i386-*-lynxos*)			fmt=coff em=lynx ;;
- changequote(,)dnl
-       i386-*-sysv[45]*)			fmt=elf ;;
-@@ -332,6 +337,7 @@
-       ia64-*-elf*)			fmt=elf ;;
-       ia64-*-aix*)			fmt=elf em=ia64aix ;;
-       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       ia64-*-hpux*)			fmt=elf em=hpux ;;
-       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
- 
-@@ -359,6 +365,7 @@
-       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
-       m68k-*-linux*aout*)		fmt=aout em=linux ;;
-       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
-+      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
-       m68k-*-uclinux*)			fmt=elf ;;
-       m68k-*-gnu*)			fmt=elf ;;
-       m68k-*-lynxos*)			fmt=coff em=lynx ;;
-@@ -419,6 +426,7 @@
-       ppc-*-beos*)			fmt=coff ;;
-       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
-       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
-+      ppc-*-linux-uclibc* | \
-       ppc-*-linux-gnu*)			fmt=elf em=linux
- 	    case "$endian" in
- 		big)  ;;
-@@ -439,7 +447,9 @@
-       ppc-*-kaos*)			fmt=elf ;;
- 
-       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
-       s390-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
- 
-       sh*-*-linux*)			fmt=elf em=linux
- 	    case ${cpu} in
-@@ -472,6 +482,7 @@
-       sparc-*-coff)			fmt=coff ;;
-       sparc-*-linux*aout*)		fmt=aout em=linux ;;
-       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
-+      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
-       sparc-*-lynxos*)			fmt=coff em=lynx ;;
-       sparc-fujitsu-none)		fmt=aout ;;
-       sparc-*-elf)			fmt=elf ;;
-diff -urN binutils-2.14.90.0.8-001-debian/ld/configure binutils-2.14.90.0.8/ld/configure
---- binutils-2.14.90.0.8-001-debian/ld/configure	2003-05-05 16:46:49.000000000 -0500
-+++ binutils-2.14.90.0.8/ld/configure	2004-02-12 14:09:10.000000000 -0600
-@@ -1578,6 +1578,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 binutils-2.14.90.0.8-001-debian/ld/configure.tgt binutils-2.14.90.0.8/ld/configure.tgt
---- binutils-2.14.90.0.8-001-debian/ld/configure.tgt	2004-01-14 15:07:52.000000000 -0600
-+++ binutils-2.14.90.0.8/ld/configure.tgt	2004-02-12 14:14:12.000000000 -0600
-@@ -30,6 +30,7 @@
- 			targ_extra_emuls="criself crislinux"
- 			targ_extra_libpath=$targ_extra_emuls ;;
- cris-*-linux-gnu*)	targ_emul=crislinux ;;
-+cris-*-linux-uclibc*)	targ_emul=crislinux ;;
- cris-*-*)		targ_emul=criself
- 			targ_extra_emuls="crisaout crislinux"
- 			targ_extra_libpath=$targ_extra_emuls ;;
-@@ -59,14 +60,16 @@
- 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'`
- 			tdir_sun4=sparc-sun-sunos4
- 			;;
--sparc64-*-linux-gnu*)	targ_emul=elf64_sparc
-+sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)	 \
-+			targ_emul=elf64_sparc
- 			targ_extra_emuls="elf32_sparc sparclinux sun4"
- 			targ_extra_libpath=elf32_sparc
- 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
- 			tdir_sparclinux=${tdir_elf32_sparc}aout
- 			tdir_sun4=sparc-sun-sunos4
- 			;;
--sparc*-*-linux-gnu*)	targ_emul=elf32_sparc
-+sparc*-*-linux-gnu* | sparc*-*-linux-uclibc*) \
-+			targ_emul=elf32_sparc
- 			targ_extra_emuls="sparclinux elf64_sparc sun4"
- 			targ_extra_libpath=elf64_sparc
- 			tdir_sparclinux=${targ_alias}aout
-@@ -128,7 +131,7 @@
- m68*-ericsson-ose)	targ_emul=sun3 ;;
- m68*-apple-aux*)	targ_emul=m68kaux ;;
- *-tandem-none)		targ_emul=st2000 ;;
--i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;;
-+i370-*-elf* | i370-*-linux-gnu* | i370-*-linux-uclibc*) targ_emul=elf32i370 ;;
- i[3-7]86-*-nto-qnx*)	targ_emul=i386nto ;;
- i[3-7]86-*-vsta)	targ_emul=vsta ;;
- i[3-7]86-go32-rtems*)	targ_emul=i386go32 ;;
-@@ -152,14 +155,16 @@
- 			tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'`
- 			;;
- i[3-7]86-*-linux*oldld)	targ_emul=i386linux; targ_extra_emuls=elf_i386 ;;
--i[3-7]86-*-linux-gnu*)	targ_emul=elf_i386
-+i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) \
-+			targ_emul=elf_i386
- 			targ_extra_emuls=i386linux
- 			if test x${want64} = xtrue; then
- 			  targ_extra_emuls="$targ_extra_emuls elf_x86_64"
- 			fi
- 			tdir_i386linux=${targ_alias}aout
- 			;;
--x86_64-*-linux-gnu*)	targ_emul=elf_x86_64
-+x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) \
-+			targ_emul=elf_x86_64
- 			targ_extra_emuls="elf_i386 i386linux"
- 			targ_extra_libpath=elf_i386
- 			tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'`
-@@ -259,10 +264,13 @@
- arm9e-*-elf)		targ_emul=armelf ;;
- arm-*-oabi)		targ_emul=armelf_oabi ;;
- arm*b-*-linux-gnu*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
-+arm*b-*-linux-uclibc*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
- arm*-*-linux-gnu*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
-+arm*-*-linux-uclibc*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- arm*-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- arm*-*-conix*)		targ_emul=armelf ;;
--thumb-*-linux-gnu* | thumb-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
-+thumb-*-linux-gnu* | thumb-*-linux-uclibc* | thumb-*-uclinux*) \
-+			targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- strongarm-*-coff)	targ_emul=armcoff ;;
- strongarm-*-elf)	targ_emul=armelf ;;
- strongarm-*-kaos*)	targ_emul=armelf ;;
-@@ -363,7 +371,8 @@
- 			targ_extra_emuls=m68kelf
- 			tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'`
- 			;;
--m68k-*-linux-gnu*)	targ_emul=m68kelf
-+m68k-*-linux-gnu* | m68k-*-linux-uclibc*) \
-+			targ_emul=m68kelf
- 			targ_extra_emuls=m68klinux
- 			tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'`
- 			;;
-@@ -380,9 +389,9 @@
- m68*-*-psos*)		targ_emul=m68kpsos ;;
- m68*-*-rtemscoff*)	targ_emul=m68kcoff ;;
- m68*-*-rtems*)		targ_emul=m68kelf ;;
--hppa*64*-*-linux-gnu*)	targ_emul=hppa64linux ;;
-+hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)  targ_emul=hppa64linux ;;
- hppa*64*-*)		targ_emul=elf64hppa ;;
--hppa*-*-linux-gnu*)	targ_emul=hppalinux ;;
-+hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*)	targ_emul=hppalinux ;;
- hppa*-*-*elf*)		targ_emul=hppaelf ;;
- hppa*-*-lites*)		targ_emul=hppaelf ;;
- hppa*-*-netbsd*)	targ_emul=hppanbsd ;;
-@@ -429,16 +438,20 @@
- mips*-*-vxworks*)	targ_emul=elf32ebmip
- 		        targ_extra_emuls="elf32elmip" ;;
- mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
--mips64*el-*-linux-gnu*)	targ_emul=elf32ltsmipn32
-+mips64*el-*-linux-gnu* | mips64*el-*-linux-uclibc*) \
-+			targ_emul=elf32ltsmipn32
- 			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
- 			;;
--mips64*-*-linux-gnu*)	targ_emul=elf32btsmipn32
-+mips64*-*-linux-gnu* | mips64*-*-linux-uclibc*) \
-+			targ_emul=elf32btsmipn32
- 			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
- 			;;
--mips*el-*-linux-gnu*)	targ_emul=elf32ltsmip
-+mips*el-*-linux-gnu* | mips*el-*-linux-uclibc*) \
-+			targ_emul=elf32ltsmip
- 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
- 			;;
--mips*-*-linux-gnu*)	targ_emul=elf32btsmip
-+mips*-*-linux-gnu* | mips*-*-linux-uclibc*) \
-+			targ_emul=elf32btsmip
- 			targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip"
- 			;;
- mips*-*-lnews*)		targ_emul=mipslnews ;;
-@@ -461,6 +474,10 @@
- alpha*-*-linux-gnu*)	targ_emul=elf64alpha targ_extra_emuls=alpha
- 			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
- 			;;
-+alpha*-*-linux-uclibc*)	targ_emul=elf64alpha targ_extra_emuls=alpha
-+			# The following needs to be checked...
-+			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
-+			;;
- alpha*-*-osf*)		targ_emul=alpha ;;
- alpha*-*-gnu*)		targ_emul=elf64alpha ;;
- alpha*-*-netware*)	targ_emul=alpha ;;
-diff -urN binutils-2.14.90.0.8-001-debian/libtool.m4 binutils-2.14.90.0.8/libtool.m4
---- binutils-2.14.90.0.8-001-debian/libtool.m4	2003-05-05 16:46:46.000000000 -0500
-+++ binutils-2.14.90.0.8/libtool.m4	2004-02-12 14:09:10.000000000 -0600
-@@ -645,6 +645,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 binutils-2.14.90.0.8-001-debian/ltconfig binutils-2.14.90.0.8/ltconfig
---- binutils-2.14.90.0.8-001-debian/ltconfig	2004-01-14 15:07:42.000000000 -0600
-+++ binutils-2.14.90.0.8/ltconfig	2004-02-12 14:09:10.000000000 -0600
-@@ -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
- 
-@@ -1259,6 +1260,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
Index: toolchain/binutils/2.14.90.0.8/400-mips-ELF_MAXPAGESIZE-4K.patch
===================================================================
--- toolchain/binutils/2.14.90.0.8/400-mips-ELF_MAXPAGESIZE-4K.patch	(revision 20005)
+++ toolchain/binutils/2.14.90.0.8/400-mips-ELF_MAXPAGESIZE-4K.patch	(working copy)
@@ -1,26 +0,0 @@
---- binutils/bfd/elf32-mips.c~
-+++ binutils/bfd/elf32-mips.c
-@@ -1611,7 +1611,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
---- binutils/bfd/elfn32-mips.c~
-+++ binutils/bfd/elfn32-mips.c
-@@ -1976,7 +1976,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
Index: toolchain/binutils/2.14.90.0.8/600-arm-textrel.patch
===================================================================
--- toolchain/binutils/2.14.90.0.8/600-arm-textrel.patch	(revision 20005)
+++ toolchain/binutils/2.14.90.0.8/600-arm-textrel.patch	(working copy)
@@ -1,63 +0,0 @@
-http://sources.redhat.com/ml/binutils/2004-06/msg00010.html
---- binutils-2.15.90.0.3-old/bfd/elf32-arm.h	2004-04-12 14:56:33.000000000 -0500
-+++ binutils-2.15.90.0.3/bfd/elf32-arm.h	2004-09-03 06:56:40.000000000 -0500
-@@ -87,6 +87,8 @@
- #endif
- static bfd_boolean allocate_dynrelocs 
-   PARAMS ((struct elf_link_hash_entry *h, PTR inf));
-+static bfd_boolean elf32_arm_readonly_dynrelocs
-+  PARAMS ((struct elf_link_hash_entry *, PTR));
- static bfd_boolean create_got_section 
-   PARAMS ((bfd * dynobj, struct bfd_link_info * info));
- static bfd_boolean elf32_arm_create_dynamic_sections 
-@@ -3531,6 +3533,37 @@
-   return TRUE;
- }
- 
-+/* Find any dynamic relocs that apply to read-only sections.  */
-+
-+static bfd_boolean
-+elf32_arm_readonly_dynrelocs (h, inf)
-+     struct elf_link_hash_entry *h;
-+     PTR inf;
-+{
-+  struct elf32_arm_link_hash_entry *eh;
-+  struct elf32_arm_relocs_copied *p;
-+
-+  if (h->root.type == bfd_link_hash_warning)
-+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-+
-+  eh = (struct elf32_arm_link_hash_entry *) h;
-+  for (p = eh->relocs_copied; p != NULL; p = p->next)
-+    {
-+      asection *s = p->section;
-+
-+      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-+       {
-+         struct bfd_link_info *info = (struct bfd_link_info *) inf;
-+
-+         info->flags |= DF_TEXTREL;
-+
-+         /* Not an error, just cut short the traversal.  */
-+         return FALSE;
-+       }
-+    }
-+  return TRUE;
-+}
-+
- /* Set the sizes of the dynamic sections.  */
- 
- static bfd_boolean
-@@ -3740,6 +3773,12 @@
- 	    return FALSE;
- 	}
- 
-+      /* If any dynamic relocs apply to a read-only section,
-+         then we need a DT_TEXTREL entry.  */
-+      if ((info->flags & DF_TEXTREL) == 0)
-+        elf_link_hash_traverse (&htab->root, elf32_arm_readonly_dynrelocs,
-+                                (PTR) info);
-+
-       if ((info->flags & DF_TEXTREL) != 0)
- 	{
- 	  if (!add_dynamic_entry (DT_TEXTREL, 0))
Index: toolchain/binutils/2.14.90.0.8/210-cflags.patch
===================================================================
--- toolchain/binutils/2.14.90.0.8/210-cflags.patch	(revision 20005)
+++ toolchain/binutils/2.14.90.0.8/210-cflags.patch	(working copy)
@@ -1,32 +0,0 @@
-diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.am binutils-2.14.90.0.6.new/bfd/doc/Makefile.am
---- binutils-2.14.90.0.6/bfd/doc/Makefile.am	2003-07-23 10:08:09.000000000 -0500
-+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.am	2004-03-01 16:05:16.000000000 -0600
-@@ -55,10 +55,10 @@
- MKDOC = chew$(EXEEXT_FOR_BUILD)
- 
- $(MKDOC): chew.o
--	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
-+	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
- 
- chew.o: chew.c
--	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
-+	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
- 
- protos: libbfd.h libcoff.h bfd.h
- 
-diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.in binutils-2.14.90.0.6.new/bfd/doc/Makefile.in
---- binutils-2.14.90.0.6/bfd/doc/Makefile.in	2003-07-23 10:08:09.000000000 -0500
-+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.in	2004-03-01 16:05:03.000000000 -0600
-@@ -469,10 +469,10 @@
- 
- 
- $(MKDOC): chew.o
--	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
-+	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
- 
- chew.o: chew.c
--	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
-+	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
- 
- protos: libbfd.h libcoff.h bfd.h
- 
Index: toolchain/binutils/2.14.90.0.8/001-debian.patch
===================================================================
--- toolchain/binutils/2.14.90.0.8/001-debian.patch	(revision 20005)
+++ toolchain/binutils/2.14.90.0.8/001-debian.patch	(working copy)
@@ -1,142 +0,0 @@
-diff -urN binutils-2.14.90.0.8-dist/bfd/elf64-alpha.c binutils-2.14.90.0.8/bfd/elf64-alpha.c
---- binutils-2.14.90.0.8-dist/bfd/elf64-alpha.c	2004-01-14 15:07:43.000000000 -0600
-+++ binutils-2.14.90.0.8/bfd/elf64-alpha.c	2004-02-11 03:42:05.000000000 -0600
-@@ -4144,9 +4144,12 @@
- 
-   loc = srel->contents;
-   loc += srel->reloc_count++ * sizeof (Elf64_External_Rela);
--  bfd_elf64_swap_reloca_out (abfd, &outrel, loc);
--  BFD_ASSERT (sizeof (Elf64_External_Rela) * srel->reloc_count
--	      <= srel->_cooked_size);
-+  if (loc)
-+    {
-+      bfd_elf64_swap_reloca_out (abfd, &outrel, loc);
-+      BFD_ASSERT (sizeof (Elf64_External_Rela) * srel->reloc_count
-+		  <= srel->_cooked_size);
-+    }
- }
- 
- /* Relocate an Alpha ELF section for a relocatable link.
-diff -urN binutils-2.14.90.0.8-dist/bfd/opncls.c binutils-2.14.90.0.8/bfd/opncls.c
---- binutils-2.14.90.0.8-dist/bfd/opncls.c	2004-01-14 15:07:43.000000000 -0600
-+++ binutils-2.14.90.0.8/bfd/opncls.c	2004-02-11 03:42:01.000000000 -0600
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
-diff -urN binutils-2.14.90.0.8-dist/gprof/gprof.texi binutils-2.14.90.0.8/gprof/gprof.texi
---- binutils-2.14.90.0.8-dist/gprof/gprof.texi	2004-01-14 15:07:51.000000000 -0600
-+++ binutils-2.14.90.0.8/gprof/gprof.texi	2004-02-11 03:42:01.000000000 -0600
-@@ -138,6 +138,10 @@
- If more than one profile file is specified, the @code{gprof}
- output shows the sum of the profile information in the given profile files.
- 
-+If you use gcc 2.95.x or 3.0 to compile your binaries, you may need
-+to add the @samp{-fprofile-arcs} to the compile command line in order
-+for the call graphs to be properly stored in gmon.out.
-+
- @code{Gprof} calculates the amount of time spent in each routine.
- Next, these times are propagated along the edges of the call graph.
- Cycles are discovered, and calls into a cycle are made to share the time
-@@ -182,7 +186,7 @@
- @c man end
- 
- @c man begin SEEALSO
--monitor(3), profil(2), cc(1), prof(1), and the Info entry for @file{gprof}.
-+profil(2), cc(1), prof(1), and the Info entry for @file{gprof}.
- 
- ``An Execution Profiler for Modular Programs'',
- by S. Graham, P. Kessler, M. McKusick;
-@@ -268,6 +272,11 @@
- options.  The same option, @samp{-pg}, alters either compilation or linking
- to do what is necessary for profiling.  Here are examples:
- 
-+If you use gcc 2.95.x or 3.0.x, you may need to add the
-+@samp{-fprofile-arcs} option to the compile line along with @samp{-pg}
-+in order to allow the call-graphs to be properly included in the gmon.out
-+file.
-+
- @example
- cc -g -c myprog.c utils.c -pg
- cc -o myprog myprog.o utils.o -pg
-diff -urN binutils-2.14.90.0.8-dist/ld/Makefile.am binutils-2.14.90.0.8/ld/Makefile.am
---- binutils-2.14.90.0.8-dist/ld/Makefile.am	2004-01-14 15:07:52.000000000 -0600
-+++ binutils-2.14.90.0.8/ld/Makefile.am	2004-02-11 03:42:01.000000000 -0600
-@@ -19,7 +19,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
-diff -urN binutils-2.14.90.0.8-dist/ld/Makefile.in binutils-2.14.90.0.8/ld/Makefile.in
---- binutils-2.14.90.0.8-dist/ld/Makefile.in	2004-01-14 15:07:52.000000000 -0600
-+++ binutils-2.14.90.0.8/ld/Makefile.in	2004-02-11 03:42:01.000000000 -0600
-@@ -128,7 +128,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
-diff -urN binutils-2.14.90.0.8-dist/ld/emultempl/elf32.em binutils-2.14.90.0.8/ld/emultempl/elf32.em
---- binutils-2.14.90.0.8-dist/ld/emultempl/elf32.em	2004-01-14 15:07:53.000000000 -0600
-+++ binutils-2.14.90.0.8/ld/emultempl/elf32.em	2004-02-11 03:42:01.000000000 -0600
-@@ -671,6 +671,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, l->name,
- 						      force))
- 		break;
-@@ -850,6 +852,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf${ELFSIZE}_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
-diff -urN binutils-2.14.90.0.8-dist/ltmain.sh binutils-2.14.90.0.8/ltmain.sh
---- binutils-2.14.90.0.8-dist/ltmain.sh	2002-03-22 16:06:16.000000000 -0600
-+++ binutils-2.14.90.0.8/ltmain.sh	2004-02-11 03:42:05.000000000 -0600
-@@ -4413,6 +4413,10 @@
-       # LD_LIBRARY_PATH before the program is installed.
-       $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
-       $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
-+      if test -n "$linkname"; then
-+        $show "(cd $output_objdir && $rm ../$linkname && $LN_S $output_objdir/$linkname ../$linkname)"
-+        $run eval '(cd $output_objdir && $rm ../$linkname && $LN_S $output_objdir/$linkname ../$linkname)' || exit $?
-+      fi
-       ;;
-     esac
-     exit 0
-diff -urN binutils-2.14.90.0.8-dist/opcodes/i386-dis.c binutils-2.14.90.0.8/opcodes/i386-dis.c
---- binutils-2.14.90.0.8-dist/opcodes/i386-dis.c	2004-01-14 15:07:55.000000000 -0600
-+++ binutils-2.14.90.0.8/opcodes/i386-dis.c	2004-02-11 03:42:01.000000000 -0600
-@@ -1879,7 +1879,7 @@
-  * The function returns the length of this instruction in bytes.
-  */
- 
--static char intel_syntax;
-+static signed char intel_syntax;
- static char open_char;
- static char close_char;
- static char separator_char;
Index: toolchain/binutils/2.16.91.0.5/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.16.91.0.5/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.5/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.16.91.0.5/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.16.91.0.5/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.5/100-uclibc-conf.patch	(working copy)
@@ -1,200 +0,0 @@
-diff -Nurp binutils-2.16.91.0.2.orig/bfd/configure binutils-2.16.91.0.2/bfd/configure
---- binutils-2.16.91.0.2.orig/bfd/configure	2005-07-20 15:27:27.000000000 -0400
-+++ binutils-2.16.91.0.2/bfd/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3585,6 +3585,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/binutils/configure binutils-2.16.91.0.2/binutils/configure
---- binutils-2.16.91.0.2.orig/binutils/configure	2005-07-20 15:27:27.000000000 -0400
-+++ binutils-2.16.91.0.2/binutils/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3420,6 +3420,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/configure binutils-2.16.91.0.2/configure
---- binutils-2.16.91.0.2.orig/configure	2005-07-20 15:27:26.000000000 -0400
-+++ binutils-2.16.91.0.2/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -1130,7 +1130,7 @@ no)
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-@@ -1235,7 +1235,7 @@ case "${target}" in
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1530,7 +1530,7 @@ case "${target}" in
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
-diff -Nurp binutils-2.16.91.0.2.orig/configure.in binutils-2.16.91.0.2/configure.in
---- binutils-2.16.91.0.2.orig/configure.in	2005-07-20 15:27:26.000000000 -0400
-+++ binutils-2.16.91.0.2/configure.in	2005-08-02 00:17:47.000000000 -0400
-@@ -341,7 +341,7 @@ no)
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-@@ -446,7 +446,7 @@ case "${target}" in
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -741,7 +741,7 @@ case "${target}" in
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
-diff -Nurp binutils-2.16.91.0.2.orig/gas/configure binutils-2.16.91.0.2/gas/configure
---- binutils-2.16.91.0.2.orig/gas/configure	2005-07-20 15:27:27.000000000 -0400
-+++ binutils-2.16.91.0.2/gas/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3421,6 +3421,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/gprof/configure binutils-2.16.91.0.2/gprof/configure
---- binutils-2.16.91.0.2.orig/gprof/configure	2005-04-29 13:50:29.000000000 -0400
-+++ binutils-2.16.91.0.2/gprof/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3419,6 +3419,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/ld/configure binutils-2.16.91.0.2/ld/configure
---- binutils-2.16.91.0.2.orig/ld/configure	2005-06-22 16:53:35.000000000 -0400
-+++ binutils-2.16.91.0.2/ld/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3422,6 +3422,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/libtool.m4 binutils-2.16.91.0.2/libtool.m4
---- binutils-2.16.91.0.2.orig/libtool.m4	2005-07-20 15:27:26.000000000 -0400
-+++ binutils-2.16.91.0.2/libtool.m4	2005-08-02 00:17:47.000000000 -0400
-@@ -645,6 +645,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
-diff -Nurp binutils-2.16.91.0.2.orig/ltconfig binutils-2.16.91.0.2/ltconfig
---- binutils-2.16.91.0.2.orig/ltconfig	2005-07-20 15:27:26.000000000 -0400
-+++ binutils-2.16.91.0.2/ltconfig	2005-08-02 00:17:47.000000000 -0400
-@@ -602,6 +602,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-
- 
- # 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
-@@ -1270,6 +1271,23 @@ linux-gnu*)
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
-diff -Nurp binutils-2.16.91.0.2.orig/opcodes/configure binutils-2.16.91.0.2/opcodes/configure
---- binutils-2.16.91.0.2.orig/opcodes/configure	2005-07-20 15:27:28.000000000 -0400
-+++ binutils-2.16.91.0.2/opcodes/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3588,6 +3588,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/binutils/2.16.91.0.5/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.16.91.0.5/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.5/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.16.91.0.5/400-mips-ELF_MAXPAGESIZE-4K.patch
===================================================================
--- toolchain/binutils/2.16.91.0.5/400-mips-ELF_MAXPAGESIZE-4K.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.5/400-mips-ELF_MAXPAGESIZE-4K.patch	(working copy)
@@ -1,26 +0,0 @@
---- binutils/bfd/elf32-mips.c~
-+++ binutils/bfd/elf32-mips.c
-@@ -1613,7 +1613,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
---- binutils/bfd/elfn32-mips.c~
-+++ binutils/bfd/elfn32-mips.c
-@@ -2399,7 +2399,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
Index: toolchain/binutils/2.16.91.0.5/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.16.91.0.5/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.5/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.16.91.0.6/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.16.91.0.6/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.6/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.16.91.0.6/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.16.91.0.6/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.6/100-uclibc-conf.patch	(working copy)
@@ -1,200 +0,0 @@
-diff -Nurp binutils-2.16.91.0.2.orig/bfd/configure binutils-2.16.91.0.2/bfd/configure
---- binutils-2.16.91.0.2.orig/bfd/configure	2005-07-20 15:27:27.000000000 -0400
-+++ binutils-2.16.91.0.2/bfd/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3585,6 +3585,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/binutils/configure binutils-2.16.91.0.2/binutils/configure
---- binutils-2.16.91.0.2.orig/binutils/configure	2005-07-20 15:27:27.000000000 -0400
-+++ binutils-2.16.91.0.2/binutils/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3420,6 +3420,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/configure binutils-2.16.91.0.2/configure
---- binutils-2.16.91.0.2.orig/configure	2005-07-20 15:27:26.000000000 -0400
-+++ binutils-2.16.91.0.2/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -1130,7 +1130,7 @@ no)
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-@@ -1235,7 +1235,7 @@ case "${target}" in
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1530,7 +1530,7 @@ case "${target}" in
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
-diff -Nurp binutils-2.16.91.0.2.orig/configure.in binutils-2.16.91.0.2/configure.in
---- binutils-2.16.91.0.2.orig/configure.in	2005-07-20 15:27:26.000000000 -0400
-+++ binutils-2.16.91.0.2/configure.in	2005-08-02 00:17:47.000000000 -0400
-@@ -341,7 +341,7 @@ no)
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-@@ -446,7 +446,7 @@ case "${target}" in
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -741,7 +741,7 @@ case "${target}" in
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
-diff -Nurp binutils-2.16.91.0.2.orig/gas/configure binutils-2.16.91.0.2/gas/configure
---- binutils-2.16.91.0.2.orig/gas/configure	2005-07-20 15:27:27.000000000 -0400
-+++ binutils-2.16.91.0.2/gas/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3421,6 +3421,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/gprof/configure binutils-2.16.91.0.2/gprof/configure
---- binutils-2.16.91.0.2.orig/gprof/configure	2005-04-29 13:50:29.000000000 -0400
-+++ binutils-2.16.91.0.2/gprof/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3419,6 +3419,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/ld/configure binutils-2.16.91.0.2/ld/configure
---- binutils-2.16.91.0.2.orig/ld/configure	2005-06-22 16:53:35.000000000 -0400
-+++ binutils-2.16.91.0.2/ld/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3422,6 +3422,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -Nurp binutils-2.16.91.0.2.orig/libtool.m4 binutils-2.16.91.0.2/libtool.m4
---- binutils-2.16.91.0.2.orig/libtool.m4	2005-07-20 15:27:26.000000000 -0400
-+++ binutils-2.16.91.0.2/libtool.m4	2005-08-02 00:17:47.000000000 -0400
-@@ -645,6 +645,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
-diff -Nurp binutils-2.16.91.0.2.orig/ltconfig binutils-2.16.91.0.2/ltconfig
---- binutils-2.16.91.0.2.orig/ltconfig	2005-07-20 15:27:26.000000000 -0400
-+++ binutils-2.16.91.0.2/ltconfig	2005-08-02 00:17:47.000000000 -0400
-@@ -602,6 +602,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-
- 
- # 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
-@@ -1270,6 +1271,23 @@ linux-gnu*)
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
-diff -Nurp binutils-2.16.91.0.2.orig/opcodes/configure binutils-2.16.91.0.2/opcodes/configure
---- binutils-2.16.91.0.2.orig/opcodes/configure	2005-07-20 15:27:28.000000000 -0400
-+++ binutils-2.16.91.0.2/opcodes/configure	2005-08-02 00:17:47.000000000 -0400
-@@ -3588,6 +3588,11 @@ linux-gnu*)
-   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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/binutils/2.16.91.0.6/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.16.91.0.6/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.6/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.16.91.0.6/400-mips-ELF_MAXPAGESIZE-4K.patch
===================================================================
--- toolchain/binutils/2.16.91.0.6/400-mips-ELF_MAXPAGESIZE-4K.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.6/400-mips-ELF_MAXPAGESIZE-4K.patch	(working copy)
@@ -1,26 +0,0 @@
---- binutils/bfd/elf32-mips.c~
-+++ binutils/bfd/elf32-mips.c
-@@ -1613,7 +1613,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
---- binutils/bfd/elfn32-mips.c~
-+++ binutils/bfd/elfn32-mips.c
-@@ -2399,7 +2399,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
Index: toolchain/binutils/2.16.91.0.6/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.16.91.0.6/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.6/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.16.91.0.7/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.16.91.0.7/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.7/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.16.91.0.7/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.16.91.0.7/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.7/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.16.91.0.7/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.16.91.0.7/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.7/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.16.91.0.7/400-mips-ELF_MAXPAGESIZE-4K.patch
===================================================================
--- toolchain/binutils/2.16.91.0.7/400-mips-ELF_MAXPAGESIZE-4K.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.7/400-mips-ELF_MAXPAGESIZE-4K.patch	(working copy)
@@ -1,26 +0,0 @@
---- binutils/bfd/elf32-mips.c~
-+++ binutils/bfd/elf32-mips.c
-@@ -1613,7 +1613,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
---- binutils/bfd/elfn32-mips.c~
-+++ binutils/bfd/elfn32-mips.c
-@@ -2399,7 +2399,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
Index: toolchain/binutils/2.16.91.0.7/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.16.91.0.7/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.7/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.16.91.0.7/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.16.91.0.7/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.16.91.0.7/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.15/700-nios2-2.15.patch
===================================================================
--- toolchain/binutils/2.15/700-nios2-2.15.patch	(revision 20005)
+++ toolchain/binutils/2.15/700-nios2-2.15.patch	(working copy)
@@ -1,38356 +0,0 @@
---- binutils-2.15/bfd/Makefile.am	2004-05-17 21:35:56.000000000 +0200
-+++ binutils-2.15-nios2/bfd/Makefile.am	2005-05-17 12:20:13.000000000 +0200
-@@ -82,6 +82,7 @@ ALL_MACHINES = \
- 	cpu-mips.lo \
- 	cpu-mmix.lo \
- 	cpu-msp430.lo \
-+	cpu-nios2.lo \
- 	cpu-or32.lo \
- 	cpu-ns32k.lo \
- 	cpu-openrisc.lo \
-@@ -139,6 +140,7 @@ ALL_MACHINES_CFILES = \
- 	cpu-msp430.c \
- 	cpu-or32.c \
- 	cpu-ns32k.c \
-+	cpu-nios2.c \
- 	cpu-openrisc.c \
- 	cpu-pdp11.c \
- 	cpu-pj.c \
-@@ -241,6 +243,7 @@ BFD32_BACKENDS = \
- 	elfxx-mips.lo \
- 	elf32-mips.lo \
- 	elf32-msp430.lo \
-+	elf32-nios2.lo \
- 	elf32-openrisc.lo \
- 	elf32-or32.lo \
- 	elf32-pj.lo \
-@@ -405,6 +408,7 @@ BFD32_BACKENDS_CFILES = \
- 	elfxx-mips.c \
- 	elf32-mips.c \
- 	elf32-msp430.c \
-+	elf32-nios2.c \
- 	elf32-openrisc.c \
- 	elf32-or32.c \
- 	elf32-pj.c \
-@@ -943,6 +947,7 @@ cpu-mcore.lo: cpu-mcore.c $(INCDIR)/file
- cpu-mips.lo: cpu-mips.c $(INCDIR)/filenames.h
- cpu-mmix.lo: cpu-mmix.c $(INCDIR)/filenames.h
- cpu-msp430.lo: cpu-msp430.c $(INCDIR)/filenames.h
-+cpu-nios2.lo: cpu-nios2.c $(INCDIR)/filenames.h
- cpu-or32.lo: cpu-or32.c $(INCDIR)/filenames.h
- cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h
- cpu-openrisc.lo: cpu-openrisc.c $(INCDIR)/filenames.h
-@@ -1250,6 +1255,10 @@ elf32-msp430.lo: elf32-msp430.c $(INCDIR
-   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
-   $(INCDIR)/elf/msp430.h $(INCDIR)/elf/reloc-macros.h \
-   elf32-target.h
-+elf32-nios2.lo: elf32-nios2.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
-+  genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
-+  $(INCDIR)/elf/external.h $(INCDIR)/elf/nios2.h \
-+  $(INCDIR)/elf/reloc-macros.h elf32-target.h
- elf32-openrisc.lo: elf32-openrisc.c $(INCDIR)/filenames.h \
-   elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
-   $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/openrisc.h \
---- binutils-2.15/bfd/Makefile.in	2004-05-17 21:35:56.000000000 +0200
-+++ binutils-2.15-nios2/bfd/Makefile.in	2005-05-17 12:20:13.000000000 +0200
-@@ -210,6 +210,7 @@ ALL_MACHINES = \
- 	cpu-mips.lo \
- 	cpu-mmix.lo \
- 	cpu-msp430.lo \
-+	cpu-nios2.lo \
- 	cpu-or32.lo \
- 	cpu-ns32k.lo \
- 	cpu-openrisc.lo \
-@@ -267,6 +268,7 @@ ALL_MACHINES_CFILES = \
- 	cpu-mmix.c \
- 	cpu-msp430.c \
- 	cpu-or32.c \
-+	cpu-nios2.c \
- 	cpu-ns32k.c \
- 	cpu-openrisc.c \
- 	cpu-pdp11.c \
-@@ -371,6 +373,7 @@ BFD32_BACKENDS = \
- 	elfxx-mips.lo \
- 	elf32-mips.lo \
- 	elf32-msp430.lo \
-+	elf32-nios2.lo \
- 	elf32-openrisc.lo \
- 	elf32-or32.lo \
- 	elf32-pj.lo \
-@@ -536,6 +539,7 @@ BFD32_BACKENDS_CFILES = \
- 	elfxx-mips.c \
- 	elf32-mips.c \
- 	elf32-msp430.c \
-+	elf32-nios2.c \
- 	elf32-openrisc.c \
- 	elf32-or32.c \
- 	elf32-pj.c \
-@@ -1482,6 +1486,7 @@ cpu-mmix.lo: cpu-mmix.c $(INCDIR)/filena
- cpu-msp430.lo: cpu-msp430.c $(INCDIR)/filenames.h
- cpu-or32.lo: cpu-or32.c $(INCDIR)/filenames.h
- cpu-ns32k.lo: cpu-ns32k.c $(INCDIR)/filenames.h ns32k.h
-+cpu-nios2.lo: cpu-nios2.c $(INCDIR)/filenames.h
- cpu-openrisc.lo: cpu-openrisc.c $(INCDIR)/filenames.h
- cpu-pdp11.lo: cpu-pdp11.c $(INCDIR)/filenames.h
- cpu-pj.lo: cpu-pj.c $(INCDIR)/filenames.h
-@@ -1787,6 +1792,10 @@ elf32-msp430.lo: elf32-msp430.c $(INCDIR
-   $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
-   $(INCDIR)/elf/msp430.h $(INCDIR)/elf/reloc-macros.h \
-   elf32-target.h
-+elf32-nios2.lo: elf32-nios2.c $(INCDIR)/filenames.h $(INCDIR)/bfdlink.h \
-+  genlink.h elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
-+  $(INCDIR)/elf/external.h $(INCDIR)/elf/nios2.h \
-+  $(INCDIR)/elf/reloc-macros.h elf32-target.h
- elf32-openrisc.lo: elf32-openrisc.c $(INCDIR)/filenames.h \
-   elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
-   $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(INCDIR)/elf/openrisc.h \
---- binutils-2.15/bfd/archures.c	2003-12-03 18:38:48.000000000 +0100
-+++ binutils-2.15-nios2/bfd/archures.c	2005-05-17 12:20:13.000000000 +0200
-@@ -330,6 +330,8 @@ DESCRIPTION
- .#define bfd_mach_msp44          44
- .  bfd_arch_xtensa,    {* Tensilica's Xtensa cores.  *}
- .#define bfd_mach_xtensa	1
-+.  bfd_arch_nios2,
-+.#define bfd_mach_nios2			   1
- .  bfd_arch_last
- .  };
- */
-@@ -422,6 +424,7 @@ extern const bfd_arch_info_type bfd_w65_
- extern const bfd_arch_info_type bfd_xstormy16_arch;
- extern const bfd_arch_info_type bfd_xtensa_arch;
- extern const bfd_arch_info_type bfd_z8k_arch;
-+extern const bfd_arch_info_type bfd_nios2_arch;
- 
- static const bfd_arch_info_type * const bfd_archures_list[] =
-   {
-@@ -460,6 +463,7 @@ static const bfd_arch_info_type * const 
-     &bfd_mn10200_arch,
-     &bfd_mn10300_arch,
-     &bfd_msp430_arch,
-+	&bfd_nios2_arch,
-     &bfd_ns32k_arch,
-     &bfd_openrisc_arch,
-     &bfd_or32_arch,
---- binutils-2.15/bfd/bfd-in2.h	2004-05-17 21:35:56.000000000 +0200
-+++ binutils-2.15-nios2/bfd/bfd-in2.h	2005-05-17 12:20:13.000000000 +0200
-@@ -830,37 +830,48 @@ extern void bfd_elf64_ia64_after_parse
-   (int);
- 
- /* Extracted from init.c.  */
--void bfd_init (void);
-+void
-+bfd_init PARAMS ((void));
- 
- /* Extracted from opncls.c.  */
--bfd *bfd_openr (const char *filename, const char *target);
-+bfd *
-+bfd_openr PARAMS ((const char *filename, const char *target));
- 
--bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
-+bfd *
-+bfd_fdopenr PARAMS ((const char *filename, const char *target, int fd));
- 
--bfd *bfd_openstreamr (const char *, const char *, void *);
-+bfd *
-+bfd_openstreamr PARAMS ((const char *, const char *, void *));
- 
--bfd *bfd_openw (const char *filename, const char *target);
-+bfd *
-+bfd_openw PARAMS ((const char *filename, const char *target));
- 
--bfd_boolean bfd_close (bfd *abfd);
-+bfd_boolean
-+bfd_close PARAMS ((bfd *abfd));
- 
--bfd_boolean bfd_close_all_done (bfd *);
-+bfd_boolean
-+bfd_close_all_done PARAMS ((bfd *));
- 
--bfd *bfd_create (const char *filename, bfd *templ);
-+bfd *
-+bfd_create PARAMS ((const char *filename, bfd *templ));
- 
--bfd_boolean bfd_make_writable (bfd *abfd);
-+bfd_boolean
-+bfd_make_writable PARAMS ((bfd *abfd));
- 
--bfd_boolean bfd_make_readable (bfd *abfd);
-+bfd_boolean
-+bfd_make_readable PARAMS ((bfd *abfd));
- 
--unsigned long bfd_calc_gnu_debuglink_crc32
--   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
-+unsigned long
-+bfd_calc_gnu_debuglink_crc32 PARAMS ((unsigned long crc, const unsigned char *buf, bfd_size_type len));
- 
--char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
-+char *
-+bfd_follow_gnu_debuglink PARAMS ((bfd *abfd, const char *dir));
- 
--struct bfd_section *bfd_create_gnu_debuglink_section
--   (bfd *abfd, const char *filename);
-+struct bfd_section *
-+bfd_create_gnu_debuglink_section PARAMS ((bfd *abfd, const char *filename));
- 
--bfd_boolean bfd_fill_in_gnu_debuglink_section
--   (bfd *abfd, struct bfd_section *sect, const char *filename);
-+bfd_boolean
-+bfd_fill_in_gnu_debuglink_section PARAMS ((bfd *abfd, struct bfd_section *sect, const char *filename));
- 
- /* Extracted from libbfd.c.  */
- 
-@@ -976,9 +987,11 @@ bfd_boolean bfd_fill_in_gnu_debuglink_se
- 
- 
- /* Extracted from bfdio.c.  */
--long bfd_get_mtime (bfd *abfd);
-+long
-+bfd_get_mtime PARAMS ((bfd *abfd));
- 
--long bfd_get_size (bfd *abfd);
-+long
-+bfd_get_size PARAMS ((bfd *abfd));
- 
- /* Extracted from bfdwin.c.  */
- /* Extracted from section.c.  */
-@@ -1421,48 +1434,54 @@ extern const struct bfd_symbol * const b
-     }                                                  \
-   while (0)
- 
--void bfd_section_list_clear (bfd *);
-+void
-+bfd_section_list_clear PARAMS ((bfd *));
- 
--asection *bfd_get_section_by_name (bfd *abfd, const char *name);
-+asection *
-+bfd_get_section_by_name PARAMS ((bfd *abfd, const char *name));
- 
--char *bfd_get_unique_section_name
--   (bfd *abfd, const char *templat, int *count);
-+char *
-+bfd_get_unique_section_name PARAMS ((bfd *abfd, const char *templat, int *count));
- 
--asection *bfd_make_section_old_way (bfd *abfd, const char *name);
-+asection *
-+bfd_make_section_old_way PARAMS ((bfd *abfd, const char *name));
- 
--asection *bfd_make_section_anyway (bfd *abfd, const char *name);
-+asection *
-+bfd_make_section_anyway PARAMS ((bfd *abfd, const char *name));
- 
--asection *bfd_make_section (bfd *, const char *name);
-+asection *
-+bfd_make_section PARAMS ((bfd *, const char *name));
- 
--bfd_boolean bfd_set_section_flags
--   (bfd *abfd, asection *sec, flagword flags);
-+bfd_boolean
-+bfd_set_section_flags PARAMS ((bfd *abfd, asection *sec, flagword flags));
- 
--void bfd_map_over_sections
--   (bfd *abfd,
-+void
-+bfd_map_over_sections PARAMS ((bfd *abfd,
-     void (*func) (bfd *abfd, asection *sect, void *obj),
--    void *obj);
-+    void *obj));
- 
--bfd_boolean bfd_set_section_size
--   (bfd *abfd, asection *sec, bfd_size_type val);
-+bfd_boolean
-+bfd_set_section_size PARAMS ((bfd *abfd, asection *sec, bfd_size_type val));
- 
--bfd_boolean bfd_set_section_contents
--   (bfd *abfd, asection *section, const void *data,
--    file_ptr offset, bfd_size_type count);
-+bfd_boolean
-+bfd_set_section_contents PARAMS ((bfd *abfd, asection *section, const void *data,
-+    file_ptr offset, bfd_size_type count));
- 
--bfd_boolean bfd_get_section_contents
--   (bfd *abfd, asection *section, void *location, file_ptr offset,
--    bfd_size_type count);
-+bfd_boolean
-+bfd_get_section_contents PARAMS ((bfd *abfd, asection *section, void *location, file_ptr offset,
-+    bfd_size_type count));
- 
--bfd_boolean bfd_copy_private_section_data
--   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
-+bfd_boolean
-+bfd_copy_private_section_data PARAMS ((bfd *ibfd, asection *isec, bfd *obfd, asection *osec));
- 
- #define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
-      BFD_SEND (obfd, _bfd_copy_private_section_data, \
-                (ibfd, isection, obfd, osection))
--void _bfd_strip_section_from_output
--   (struct bfd_link_info *info, asection *section);
-+void
-+_bfd_strip_section_from_output PARAMS ((struct bfd_link_info *info, asection *section));
- 
--bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
-+bfd_boolean
-+bfd_generic_discard_group PARAMS ((bfd *abfd, asection *group));
- 
- /* Extracted from archures.c.  */
- enum bfd_architecture
-@@ -1728,6 +1747,8 @@ enum bfd_architecture
- #define bfd_mach_msp44          44
-   bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
- #define bfd_mach_xtensa        1
-+  bfd_arch_nios2,
-+#define bfd_mach_nios2                    1
-   bfd_arch_last
-   };
- 
-@@ -1754,37 +1775,47 @@ typedef struct bfd_arch_info
- }
- bfd_arch_info_type;
- 
--const char *bfd_printable_name (bfd *abfd);
-+const char *
-+bfd_printable_name PARAMS ((bfd *abfd));
- 
--const bfd_arch_info_type *bfd_scan_arch (const char *string);
-+const bfd_arch_info_type *
-+bfd_scan_arch PARAMS ((const char *string));
- 
--const char **bfd_arch_list (void);
-+const char **
-+bfd_arch_list PARAMS ((void));
- 
--const bfd_arch_info_type *bfd_arch_get_compatible
--   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
-+const bfd_arch_info_type *
-+bfd_arch_get_compatible PARAMS ((const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns));
- 
--void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
-+void
-+bfd_set_arch_info PARAMS ((bfd *abfd, const bfd_arch_info_type *arg));
- 
--enum bfd_architecture bfd_get_arch (bfd *abfd);
-+enum bfd_architecture
-+bfd_get_arch PARAMS ((bfd *abfd));
- 
--unsigned long bfd_get_mach (bfd *abfd);
-+unsigned long
-+bfd_get_mach PARAMS ((bfd *abfd));
- 
--unsigned int bfd_arch_bits_per_byte (bfd *abfd);
-+unsigned int
-+bfd_arch_bits_per_byte PARAMS ((bfd *abfd));
- 
--unsigned int bfd_arch_bits_per_address (bfd *abfd);
-+unsigned int
-+bfd_arch_bits_per_address PARAMS ((bfd *abfd));
- 
--const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
-+const bfd_arch_info_type *
-+bfd_get_arch_info PARAMS ((bfd *abfd));
- 
--const bfd_arch_info_type *bfd_lookup_arch
--   (enum bfd_architecture arch, unsigned long machine);
-+const bfd_arch_info_type *
-+bfd_lookup_arch PARAMS ((enum bfd_architecture arch, unsigned long machine));
- 
--const char *bfd_printable_arch_mach
--   (enum bfd_architecture arch, unsigned long machine);
-+const char *
-+bfd_printable_arch_mach PARAMS ((enum bfd_architecture arch, unsigned long machine));
- 
--unsigned int bfd_octets_per_byte (bfd *abfd);
-+unsigned int
-+bfd_octets_per_byte PARAMS ((bfd *abfd));
- 
--unsigned int bfd_arch_mach_octets_per_byte
--   (enum bfd_architecture arch, unsigned long machine);
-+unsigned int
-+bfd_arch_mach_octets_per_byte PARAMS ((enum bfd_architecture arch, unsigned long machine));
- 
- /* Extracted from reloc.c.  */
- typedef enum bfd_reloc_status
-@@ -1967,7 +1998,8 @@ struct reloc_howto_struct
-       }                                                 \
-   }
- 
--unsigned int bfd_get_reloc_size (reloc_howto_type *);
-+unsigned int
-+bfd_get_reloc_size PARAMS ((reloc_howto_type *));
- 
- typedef struct relent_chain
- {
-@@ -1976,27 +2008,27 @@ typedef struct relent_chain
- }
- arelent_chain;
- 
--bfd_reloc_status_type bfd_check_overflow
--   (enum complain_overflow how,
-+bfd_reloc_status_type
-+bfd_check_overflow PARAMS ((enum complain_overflow how,
-     unsigned int bitsize,
-     unsigned int rightshift,
-     unsigned int addrsize,
--    bfd_vma relocation);
-+    bfd_vma relocation));
- 
--bfd_reloc_status_type bfd_perform_relocation
--   (bfd *abfd,
-+bfd_reloc_status_type
-+bfd_perform_relocation PARAMS ((bfd *abfd,
-     arelent *reloc_entry,
-     void *data,
-     asection *input_section,
-     bfd *output_bfd,
--    char **error_message);
-+    char **error_message));
- 
--bfd_reloc_status_type bfd_install_relocation
--   (bfd *abfd,
-+bfd_reloc_status_type
-+bfd_install_relocation PARAMS ((bfd *abfd,
-     arelent *reloc_entry,
-     void *data, bfd_vma data_start,
-     asection *input_section,
--    char **error_message);
-+    char **error_message));
- 
- enum bfd_reloc_code_real {
-   _dummy_first_bfd_reloc_code_real,
-@@ -3439,6 +3471,23 @@ This is the 5 bits of a value.  */
-   BFD_RELOC_MSP430_16_PCREL_BYTE,
-   BFD_RELOC_MSP430_16_BYTE,
- 
-+/* Relocations used by the Altera New Jersey core  */
-+  BFD_RELOC_NIOS2_S16,
-+  BFD_RELOC_NIOS2_U16,
-+  BFD_RELOC_NIOS2_CALL26,
-+  BFD_RELOC_NIOS2_IMM5,
-+  BFD_RELOC_NIOS2_CACHE_OPX,
-+  BFD_RELOC_NIOS2_IMM6,
-+  BFD_RELOC_NIOS2_IMM8,
-+  BFD_RELOC_NIOS2_HI16,
-+  BFD_RELOC_NIOS2_LO16,
-+  BFD_RELOC_NIOS2_HIADJ16,
-+  BFD_RELOC_NIOS2_GPREL,
-+  BFD_RELOC_NIOS2_UJMP,
-+  BFD_RELOC_NIOS2_CJMP,
-+  BFD_RELOC_NIOS2_CALLR,
-+  BFD_RELOC_NIOS2_ALIGN,
-+
- /* IQ2000 Relocations.  */
-   BFD_RELOC_IQ2000_OFFSET_16,
-   BFD_RELOC_IQ2000_OFFSET_21,
-@@ -3477,10 +3526,11 @@ BFD_RELOC_XTENSA_ASM_EXPAND.  */
-   BFD_RELOC_XTENSA_ASM_SIMPLIFY,
-   BFD_RELOC_UNUSED };
- typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
--reloc_howto_type *bfd_reloc_type_lookup
--   (bfd *abfd, bfd_reloc_code_real_type code);
-+reloc_howto_type *
-+bfd_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type code));
- 
--const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
-+const char *
-+bfd_get_reloc_code_name PARAMS ((bfd_reloc_code_real_type code));
- 
- /* Extracted from syms.c.  */
- 
-@@ -3611,9 +3661,11 @@ asymbol;
- #define bfd_get_symtab_upper_bound(abfd) \
-      BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
- 
--bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
-+bfd_boolean
-+bfd_is_local_label PARAMS ((bfd *abfd, asymbol *sym));
- 
--bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
-+bfd_boolean
-+bfd_is_local_label_name PARAMS ((bfd *abfd, const char *name));
- 
- #define bfd_is_local_label_name(abfd, name) \
-   BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
-@@ -3621,27 +3673,32 @@ bfd_boolean bfd_is_local_label_name (bfd
- #define bfd_canonicalize_symtab(abfd, location) \
-   BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
- 
--bfd_boolean bfd_set_symtab
--   (bfd *abfd, asymbol **location, unsigned int count);
-+bfd_boolean
-+bfd_set_symtab PARAMS ((bfd *abfd, asymbol **location, unsigned int count));
- 
--void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
-+void
-+bfd_print_symbol_vandf PARAMS ((bfd *abfd, void *file, asymbol *symbol));
- 
- #define bfd_make_empty_symbol(abfd) \
-   BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
- 
--asymbol *_bfd_generic_make_empty_symbol (bfd *);
-+asymbol *
-+_bfd_generic_make_empty_symbol PARAMS ((bfd *));
- 
- #define bfd_make_debug_symbol(abfd,ptr,size) \
-   BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
- 
--int bfd_decode_symclass (asymbol *symbol);
-+int
-+bfd_decode_symclass PARAMS ((asymbol *symbol));
- 
--bfd_boolean bfd_is_undefined_symclass (int symclass);
-+bfd_boolean
-+bfd_is_undefined_symclass PARAMS ((int symclass));
- 
--void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
-+void
-+bfd_symbol_info PARAMS ((asymbol *symbol, symbol_info *ret));
- 
--bfd_boolean bfd_copy_private_symbol_data
--   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
-+bfd_boolean
-+bfd_copy_private_symbol_data PARAMS ((bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym));
- 
- #define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
-   BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
-@@ -3840,57 +3897,76 @@ typedef enum bfd_error
- }
- bfd_error_type;
- 
--bfd_error_type bfd_get_error (void);
-+bfd_error_type
-+bfd_get_error PARAMS ((void));
- 
--void bfd_set_error (bfd_error_type error_tag);
-+void
-+bfd_set_error PARAMS ((bfd_error_type error_tag));
- 
--const char *bfd_errmsg (bfd_error_type error_tag);
-+const char *
-+bfd_errmsg PARAMS ((bfd_error_type error_tag));
- 
--void bfd_perror (const char *message);
-+void
-+bfd_perror PARAMS ((const char *message));
- 
- typedef void (*bfd_error_handler_type) (const char *, ...);
- 
--bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
-+bfd_error_handler_type
-+bfd_set_error_handler PARAMS ((bfd_error_handler_type));
- 
--void bfd_set_error_program_name (const char *);
-+void
-+bfd_set_error_program_name PARAMS ((const char *));
- 
--bfd_error_handler_type bfd_get_error_handler (void);
-+bfd_error_handler_type
-+bfd_get_error_handler PARAMS ((void));
- 
--const char *bfd_archive_filename (bfd *);
-+const char *
-+bfd_archive_filename PARAMS ((bfd *));
- 
--long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
-+long
-+bfd_get_reloc_upper_bound PARAMS ((bfd *abfd, asection *sect));
- 
--long bfd_canonicalize_reloc
--   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
-+long
-+bfd_canonicalize_reloc PARAMS ((bfd *abfd, asection *sec, arelent **loc, asymbol **syms));
- 
--void bfd_set_reloc
--   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
-+void
-+bfd_set_reloc PARAMS ((bfd *abfd, asection *sec, arelent **rel, unsigned int count));
- 
--bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
-+bfd_boolean
-+bfd_set_file_flags PARAMS ((bfd *abfd, flagword flags));
- 
--int bfd_get_arch_size (bfd *abfd);
-+int
-+bfd_get_arch_size PARAMS ((bfd *abfd));
- 
--int bfd_get_sign_extend_vma (bfd *abfd);
-+int
-+bfd_get_sign_extend_vma PARAMS ((bfd *abfd));
- 
--bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
-+bfd_boolean
-+bfd_set_start_address PARAMS ((bfd *abfd, bfd_vma vma));
- 
--unsigned int bfd_get_gp_size (bfd *abfd);
-+unsigned int
-+bfd_get_gp_size PARAMS ((bfd *abfd));
- 
--void bfd_set_gp_size (bfd *abfd, unsigned int i);
-+void
-+bfd_set_gp_size PARAMS ((bfd *abfd, unsigned int i));
- 
--bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
-+bfd_vma
-+bfd_scan_vma PARAMS ((const char *string, const char **end, int base));
- 
--bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
-+bfd_boolean
-+bfd_copy_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd));
- 
- #define bfd_copy_private_bfd_data(ibfd, obfd) \
-      BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
-                (ibfd, obfd))
--bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
-+bfd_boolean
-+bfd_merge_private_bfd_data PARAMS ((bfd *ibfd, bfd *obfd));
- 
- #define bfd_merge_private_bfd_data(ibfd, obfd) \
-      BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
-                (ibfd, obfd))
--bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
-+bfd_boolean
-+bfd_set_private_flags PARAMS ((bfd *abfd, flagword flags));
- 
- #define bfd_set_private_flags(abfd, flags) \
-      BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
-@@ -3968,7 +4044,8 @@ extern bfd_byte *bfd_get_relocated_secti
-   (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
-    bfd_boolean, asymbol **);
- 
--bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
-+bfd_boolean
-+bfd_alt_mach_code PARAMS ((bfd *abfd, int alternative));
- 
- struct bfd_preserve
- {
-@@ -3982,27 +4059,34 @@ struct bfd_preserve
-   struct bfd_hash_table section_htab;
- };
- 
--bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
-+bfd_boolean
-+bfd_preserve_save PARAMS ((bfd *, struct bfd_preserve *));
- 
--void bfd_preserve_restore (bfd *, struct bfd_preserve *);
-+void
-+bfd_preserve_restore PARAMS ((bfd *, struct bfd_preserve *));
- 
--void bfd_preserve_finish (bfd *, struct bfd_preserve *);
-+void
-+bfd_preserve_finish PARAMS ((bfd *, struct bfd_preserve *));
- 
- /* Extracted from archive.c.  */
--symindex bfd_get_next_mapent
--   (bfd *abfd, symindex previous, carsym **sym);
-+symindex
-+bfd_get_next_mapent PARAMS ((bfd *abfd, symindex previous, carsym **sym));
- 
--bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
-+bfd_boolean
-+bfd_set_archive_head PARAMS ((bfd *output, bfd *new_head));
- 
--bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
-+bfd *
-+bfd_openr_next_archived_file PARAMS ((bfd *archive, bfd *previous));
- 
- /* Extracted from corefile.c.  */
--const char *bfd_core_file_failing_command (bfd *abfd);
-+const char *
-+bfd_core_file_failing_command PARAMS ((bfd *abfd));
- 
--int bfd_core_file_failing_signal (bfd *abfd);
-+int
-+bfd_core_file_failing_signal PARAMS ((bfd *abfd));
- 
--bfd_boolean core_file_matches_executable_p
--   (bfd *core_bfd, bfd *exec_bfd);
-+bfd_boolean
-+core_file_matches_executable_p PARAMS ((bfd *core_bfd, bfd *exec_bfd));
- 
- /* Extracted from targets.c.  */
- #define BFD_SEND(bfd, message, arglist) \
-@@ -4362,35 +4446,42 @@ typedef struct bfd_target
- 
- } bfd_target;
- 
--bfd_boolean bfd_set_default_target (const char *name);
-+bfd_boolean
-+bfd_set_default_target PARAMS ((const char *name));
- 
--const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
-+const bfd_target *
-+bfd_find_target PARAMS ((const char *target_name, bfd *abfd));
- 
--const char ** bfd_target_list (void);
-+const char **
-+bfd_target_list PARAMS ((void));
- 
--const bfd_target *bfd_search_for_target
--   (int (*search_func) (const bfd_target *, void *),
--    void *);
-+const bfd_target *
-+bfd_search_for_target PARAMS ((int (*search_func) (const bfd_target *, void *),
-+    void *));
- 
- /* Extracted from format.c.  */
--bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
-+bfd_boolean
-+bfd_check_format PARAMS ((bfd *abfd, bfd_format format));
- 
--bfd_boolean bfd_check_format_matches
--   (bfd *abfd, bfd_format format, char ***matching);
-+bfd_boolean
-+bfd_check_format_matches PARAMS ((bfd *abfd, bfd_format format, char ***matching));
- 
--bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
-+bfd_boolean
-+bfd_set_format PARAMS ((bfd *abfd, bfd_format format));
- 
--const char *bfd_format_string (bfd_format format);
-+const char *
-+bfd_format_string PARAMS ((bfd_format format));
- 
- /* Extracted from linker.c.  */
--bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
-+bfd_boolean
-+bfd_link_split_section PARAMS ((bfd *abfd, asection *sec));
- 
- #define bfd_link_split_section(abfd, sec) \
-        BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
- 
- /* Extracted from simple.c.  */
--bfd_byte *bfd_simple_get_relocated_section_contents
--   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
-+bfd_byte *
-+bfd_simple_get_relocated_section_contents PARAMS ((bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table));
- 
- #ifdef __cplusplus
- }
---- binutils-2.15/bfd/config.bfd	2004-05-17 21:35:56.000000000 +0200
-+++ binutils-2.15-nios2/bfd/config.bfd	2005-05-17 12:20:13.000000000 +0200
-@@ -59,6 +59,7 @@ m6812*|m68hc12*) targ_archs="bfd_m68hc12
- m68*)	         targ_archs=bfd_m68k_arch ;;
- m88*)	         targ_archs=bfd_m88k_arch ;;
- mips*)	         targ_archs=bfd_mips_arch ;;
-+nios2*)      targ_archs=bfd_nios2_arch ;;
- or32*)		 targ_archs=bfd_or32_arch ;;
- pdp11*)	         targ_archs=bfd_pdp11_arch ;;
- pj*)	         targ_archs="bfd_pj_arch bfd_i386_arch";;
-@@ -874,6 +875,10 @@ case "${targ}" in
-     targ_underscore=yes
-     ;;
- 
-+  nios2-*-*)
-+    targ_defvec=bfd_elf32_littlenios2_vec
-+    ;;
-+    
-   openrisc-*-elf)
-     targ_defvec=bfd_elf32_openrisc_vec
-     ;;
---- binutils-2.15/bfd/configure	2004-05-17 21:35:57.000000000 +0200
-+++ binutils-2.15-nios2/bfd/configure	2005-05-17 12:20:13.000000000 +0200
-@@ -6322,6 +6322,7 @@ do
-     bfd_elf32_mcore_little_vec)	tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
-     bfd_elf32_mn10200_vec)	tb="$tb elf-m10200.lo elf32.lo $elf" ;;
-     bfd_elf32_mn10300_vec)	tb="$tb elf-m10300.lo elf32.lo $elf" ;;
-+    bfd_elf32_littlenios2_vec)     tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
-     bfd_elf32_msp430_vec)	tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
-     bfd_elf32_nbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-     bfd_elf32_nlittlemips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
---- binutils-2.15/bfd/configure.in	2004-05-17 21:35:57.000000000 +0200
-+++ binutils-2.15-nios2/bfd/configure.in	2005-05-17 12:20:13.000000000 +0200
-@@ -631,6 +631,7 @@ do
-     bfd_elf32_mcore_little_vec)	tb="$tb elf32-mcore.lo elf32.lo $elf" ;;
-     bfd_elf32_mn10200_vec)	tb="$tb elf-m10200.lo elf32.lo $elf" ;;
-     bfd_elf32_mn10300_vec)	tb="$tb elf-m10300.lo elf32.lo $elf" ;;
-+    bfd_elf32_littlenios2_vec)     tb="$tb elf32-nios2.lo elf32.lo $elf" ;;
-     bfd_elf32_msp430_vec)	tb="$tb elf32-msp430.lo elf32.lo $elf" ;;
-     bfd_elf32_nbigmips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
-     bfd_elf32_nlittlemips_vec)	tb="$tb elfn32-mips.lo elfxx-mips.lo elf32.lo $elf ecofflink.lo"; target_size=64 ;;
---- binutils-2.15/bfd/cpu-nios2.c	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/bfd/cpu-nios2.c	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,70 @@
-+/* bfd back-end for Altera Nios II support
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+ 
-+This file is part of BFD, the Binary File Descriptor library.
-+
-+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.  */
-+
-+#include "bfd.h"
-+#include "sysdep.h"
-+#include "libbfd.h"
-+
-+static const bfd_arch_info_type *nios2_compatible
-+  (const bfd_arch_info_type *, const bfd_arch_info_type *);
-+
-+/* The default routine tests bits_per_word, which is wrong on mips as
-+   mips word size doesn't correlate with reloc size.  */
-+
-+static const bfd_arch_info_type *
-+nios2_compatible (const bfd_arch_info_type *a, const bfd_arch_info_type *b)
-+{
-+  if (a->arch != b->arch)
-+    return NULL;
-+
-+  /* Machine compatibility is checked in
-+     _bfd_mips_elf_merge_private_bfd_data.  */
-+
-+  return a;
-+}
-+
-+#define N(BITS_WORD, BITS_ADDR, NUMBER, PRINT, DEFAULT, NEXT)		\
-+  {							\
-+    BITS_WORD, /*  bits in a word */			\
-+    BITS_ADDR, /* bits in an address */			\
-+    8,	/* 8 bits in a byte */				\
-+    bfd_arch_nios2,					\
-+    NUMBER,						\
-+    "nios2",						\
-+    PRINT,						\
-+    3,							\
-+    DEFAULT,						\
-+    nios2_compatible,					\
-+    bfd_default_scan,					\
-+    NEXT,						\
-+  }
-+
-+#define NN(index) (&arch_info_struct[(index) + 1])
-+
-+static const bfd_arch_info_type arch_info_struct[] =
-+{
-+  N (32, 32, bfd_mach_nios2, "nios2", FALSE, 0),
-+};
-+
-+/* There is only one architecture - but we give the default a machine number of 0
-+   so the linker can distinguish it */
-+const bfd_arch_info_type bfd_nios2_arch =
-+N (32, 32, 0, "nios2", TRUE, &arch_info_struct[0]);
---- binutils-2.15/bfd/elf.c	2004-05-17 21:35:57.000000000 +0200
-+++ binutils-2.15-nios2/bfd/elf.c	2005-05-17 12:20:13.000000000 +0200
-@@ -3286,9 +3286,14 @@ map_sections_to_segments (bfd *abfd)
-       phdr_size = elf_tdata (abfd)->program_header_size;
-       if (phdr_size == 0)
- 	phdr_size = get_elf_backend_data (abfd)->s->sizeof_phdr;
-+
-+      /* NG - for standalone embedded applications we don't want the program
-+         headers or ELF header in the output memory map (cf CSP) */
-       if ((abfd->flags & D_PAGED) == 0
- 	  || sections[0]->lma < phdr_size
--	  || sections[0]->lma % maxpagesize < phdr_size % maxpagesize)
-+	  || sections[0]->lma % maxpagesize < phdr_size % maxpagesize
-+	  || (elf_tdata (abfd)->elf_header[0].e_ident[EI_OSABI] 
-+	      == ELFOSABI_STANDALONE))
- 	phdr_in_segment = FALSE;
-     }
- 
---- binutils-2.15/bfd/elf32-nios2.c	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/bfd/elf32-nios2.c	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,2188 @@
-+/* New Jersey-specific support for 32-bit ELF
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+
-+This file is part of BFD, the Binary File Descriptor library.
-+
-+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.  */
-+
-+/* This file handles Altera New Jersey ELF targets  */
-+
-+#include "bfd.h"
-+#include "sysdep.h"
-+#include "libbfd.h"
-+#include "bfdlink.h"
-+#include "genlink.h"
-+#include "elf-bfd.h"
-+#include "elf/nios2.h"
-+#include "opcode/nios2.h"
-+
-+/* use RELA relocations*/
-+#ifndef USE_RELA
-+#define USE_RELA
-+#endif
-+
-+#ifdef USE_REL
-+#undef USE_REL
-+#endif
-+
-+/* Function prototypes */
-+
-+static reloc_howto_type *nios2_elf32_bfd_reloc_type_lookup
-+  (bfd *, bfd_reloc_code_real_type);
-+
-+static bfd_boolean nios2_elf32_relax_section
-+  (bfd *, asection *, struct bfd_link_info *, bfd_boolean *);
-+
-+static bfd_boolean nios2_elf32_relax_delete_bytes
-+  (bfd *, asection *, bfd_vma, int);
-+
-+static reloc_howto_type *nios2_elf32_rtype_to_howto
-+  (unsigned int r_type, bfd_boolean rela_p);
-+
-+static void nios2_elf32_info_to_howto
-+  (bfd * abfd, arelent * cache_ptr, Elf_Internal_Rela * dst);
-+
-+static bfd_boolean nios2_elf32_relocate_section
-+  (bfd * output_bfd, struct bfd_link_info * info, bfd * input_bfd,
-+   asection * input_section, bfd_byte * contents,
-+   Elf_Internal_Rela * relocs, Elf_Internal_Sym * local_syms,
-+   asection ** local_sections);
-+
-+static reloc_howto_type *lookup_howto   (unsigned int rtype);
-+
-+static bfd_reloc_status_type nios2_elf_final_gp
-+  (bfd *, asymbol *, bfd_boolean, char **, bfd_vma *,
-+	 struct bfd_link_info *);
-+
-+static bfd_boolean nios2_elf_assign_gp
-+  (bfd *, bfd_vma *, struct bfd_link_info *);
-+
-+static bfd_reloc_status_type nios2_elf32_ignore_reloc
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_hi16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_lo16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_hiadj16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_pcrel16_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_call26_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_gprel_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_ujmp_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_cjmp_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_callr_relocate
-+  (bfd *, arelent *, asymbol *, void *, asection *, bfd *, char **);
-+
-+static bfd_reloc_status_type nios2_elf32_do_hi16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_lo16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_hiadj16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_pcrel16_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_call26_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_gprel_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_ujmp_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_cjmp_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+static bfd_reloc_status_type nios2_elf32_do_callr_relocate
-+  (bfd *, reloc_howto_type *, asection *,
-+	 bfd_byte *, bfd_vma, bfd_vma, bfd_vma);
-+
-+
-+static void nios2_elf32_post_process_headers
-+  (bfd *, struct bfd_link_info *);
-+
-+static bfd_boolean nios2_elf32_section_from_shdr
-+  (bfd *, Elf_Internal_Shdr *, const char *name);
-+
-+static bfd_boolean nios2_elf32_section_flags
-+  (flagword *, Elf_Internal_Shdr *);
-+
-+static bfd_boolean nios2_elf32_fake_sections
-+  (bfd *, Elf_Internal_Shdr *, asection *);
-+
-+
-+
-+static bfd_boolean nios2_elf32_check_relocs
-+  (bfd *, struct bfd_link_info *, asection *,
-+	 const Elf_Internal_Rela *);
-+
-+static asection *nios2_elf32_gc_mark_hook   (asection * sec,
-+						   struct bfd_link_info *
-+						   info,
-+						   Elf_Internal_Rela * rel,
-+						   struct elf_link_hash_entry
-+						   * h,
-+						   Elf_Internal_Sym * sym);
-+
-+
-+/* target vector */
-+extern const bfd_target bfd_elf32_littlenios2_vec;
-+
-+/* The relocation table used for SHT_REL sections.  */
-+
-+static reloc_howto_type elf_nios2_howto_table_rel[] = {
-+  /* No relocation.  */
-+  HOWTO (R_NIOS2_NONE,		/* type */
-+	 0,			/* rightshift */
-+	 0,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 0,			/* bitsize */
-+	 FALSE,			/* pc_relative */
-+	 0,			/* bitpos */
-+	 complain_overflow_dont,	/* complain_on_overflow */
-+	 bfd_elf_generic_reloc,	/* special_function */
-+	 "R_NIOS2_NONE",	/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0,			/* src_mask */
-+	 0,			/* dst_mask */
-+	 FALSE),		/* pcrel_offset */
-+
-+  /* 16-bit signed immediate relocation */
-+  HOWTO (R_NIOS2_S16,		/* type */
-+	 0,			/* rightshift */
-+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 16,			/* bitsize */
-+	 FALSE,			/* pc_relative */
-+	 6,			/* bitpos */
-+	 complain_overflow_signed,	/* complain on overflow */
-+	 bfd_elf_generic_reloc,	/* special function */
-+	 "R_NIOS2_S16",		/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0x003fffc0,		/* src_mask */
-+	 0x003fffc0,		/* dest_mask */
-+	 FALSE),		/* pcrel_offset */
-+
-+  /* 16-bit unsigned immediate relocation */
-+  HOWTO (R_NIOS2_U16,		/* type */
-+	 0,			/* rightshift */
-+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 16,			/* bitsize */
-+	 FALSE,			/* pc_relative */
-+	 6,			/* bitpos */
-+	 complain_overflow_unsigned,	/* complain on overflow */
-+	 bfd_elf_generic_reloc,	/* special function */
-+	 "R_NIOS2_U16",		/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0x003fffc0,		/* src_mask */
-+	 0x003fffc0,		/* dest_mask */
-+	 FALSE),		/* pcrel_offset */
-+
-+  HOWTO (R_NIOS2_PCREL16,	/* type */
-+	 0,			/* rightshift */
-+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 16,			/* bitsize */
-+	 TRUE,			/* pc_relative */
-+	 6,			/* bitpos */
-+	 complain_overflow_signed,	/* complain on overflow */
-+	 nios2_elf32_pcrel16_relocate,	/* special function */
-+	 "R_NIOS2_PCREL16",	/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0x003fffc0,		/* src_mask */
-+	 0x003fffc0,		/* dest_mask */
-+	 TRUE),			/* pcrel_offset */
-+
-+  HOWTO (R_NIOS2_CALL26,	/* type */
-+	 2,			/* rightshift */
-+	 2,			/* size (0 = byte, 1 = short, 2 = long) */
-+	 26,			/* bitsize */
-+	 FALSE,			/* pc_relative */
-+	 6,			/* bitpos */
-+	 complain_overflow_dont,	/* complain on overflow */
-+	 nios2_elf32_call26_relocate,	/* special function */
-+	 "R_NIOS2_CALL26",	/* name */
-+	 FALSE,			/* partial_inplace */
-+	 0xffffffc0,		/* src_mask */
-+	 0xffffffc0,		/* dst_mask */
-+	 FALSE),		/* pcrel_offset */
-+
-+  HOWTO (R_NIOS2_IMM5,
-+	 0,
-+	 2,
-+	 5,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_IMM5",
-+	 FALSE,
-+	 0x000007c0,
-+	 0x000007c0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_CACHE_OPX,
-+	 0,
-+	 2,
-+	 5,
-+	 FALSE,
-+	 22,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_CACHE_OPX",
-+	 FALSE,
-+	 0x07c00000,
-+	 0x07c00000,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_IMM6,
-+	 0,
-+	 2,
-+	 6,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_IMM6",
-+	 FALSE,
-+	 0x00000fc0,
-+	 0x00000fc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_IMM8,
-+	 0,
-+	 2,
-+	 8,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_IMM8",
-+	 FALSE,
-+	 0x00003fc0,
-+	 0x00003fc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_HI16,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_hi16_relocate,
-+	 "R_NIOS2_HI16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_LO16,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_lo16_relocate,
-+	 "R_NIOS2_LO16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_HIADJ16,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_hiadj16_relocate,
-+	 "R_NIOS2_HIADJ16",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_BFD_RELOC_32,
-+	 0,
-+	 2,			/* long */
-+	 32,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_BFD_RELOC32",
-+	 FALSE,
-+	 0xffffffff,
-+	 0xffffffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_BFD_RELOC_16,
-+	 0,
-+	 1,			/* short */
-+	 16,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_BFD_RELOC16",
-+	 FALSE,
-+	 0x0000ffff,
-+	 0x0000ffff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_BFD_RELOC_8,
-+	 0,
-+	 0,			/* byte */
-+	 8,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_bitfield,
-+	 bfd_elf_generic_reloc,
-+	 "R_NIOS2_BFD_RELOC8",
-+	 FALSE,
-+	 0x000000ff,
-+	 0x000000ff,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GPREL,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_gprel_relocate,
-+	 "R_NIOS2_GPREL",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GNU_VTINHERIT,
-+	 0,
-+	 2,			/* short */
-+	 0,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 NULL,
-+	 "R_NIOS2_GNU_VTINHERIT",
-+	 FALSE,
-+	 0,
-+	 0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_GNU_VTENTRY,
-+	 0,
-+	 2,			/* byte */
-+	 0,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 _bfd_elf_rel_vtable_reloc_fn,
-+	 "R_NIOS2_GNU_VTENTRY",
-+	 FALSE,
-+	 0,
-+	 0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_UJMP,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_ujmp_relocate,
-+	 "R_NIOS2_UJMP",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_CJMP,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_cjmp_relocate,
-+	 "R_NIOS2_CJMP",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_CALLR,
-+	 0,
-+	 2,
-+	 32,
-+	 FALSE,
-+	 6,
-+	 complain_overflow_dont,
-+	 nios2_elf32_callr_relocate,
-+	 "R_NIOS2_CALLR",
-+	 FALSE,
-+	 0x003fffc0,
-+	 0x003fffc0,
-+	 FALSE),
-+
-+  HOWTO (R_NIOS2_ALIGN,
-+	 0,
-+	 2,
-+	 0,
-+	 FALSE,
-+	 0,
-+	 complain_overflow_dont,
-+	 nios2_elf32_ignore_reloc,
-+	 "R_NIOS2_ALIGN",
-+	 FALSE,
-+	 0,
-+	 0,
-+	 TRUE),
-+
-+/* add other relocations here */
-+};
-+
-+static unsigned char elf_code_to_howto_index[R_NIOS2_ILLEGAL + 1];
-+
-+static reloc_howto_type *
-+lookup_howto (unsigned int rtype)
-+{
-+  static int initialized = 0;
-+  int i;
-+  int howto_tbl_size = (int) (sizeof (elf_nios2_howto_table_rel)
-+			      / sizeof (elf_nios2_howto_table_rel[0]));
-+
-+  if (!initialized)
-+    {
-+      initialized = 1;
-+      memset (elf_code_to_howto_index, 0xff,
-+	      sizeof (elf_code_to_howto_index));
-+      for (i = 0; i < howto_tbl_size; i++)
-+	elf_code_to_howto_index[elf_nios2_howto_table_rel[i].type] = i;
-+    }
-+
-+  BFD_ASSERT (rtype <= R_NIOS2_ILLEGAL);
-+  i = elf_code_to_howto_index[rtype];
-+  if (i >= howto_tbl_size)
-+    return 0;
-+  return elf_nios2_howto_table_rel + i;
-+}
-+
-+/*
-+   map for converting BFD reloc types to New Jersey
-+   reloc types
-+ */
-+struct elf_reloc_map
-+{
-+  bfd_reloc_code_real_type bfd_val;
-+  enum elf_nios2_reloc_type elf_val;
-+};
-+
-+static const struct elf_reloc_map nios2_reloc_map[] = {
-+  {BFD_RELOC_NIOS2_S16, R_NIOS2_S16},
-+  {BFD_RELOC_NIOS2_U16, R_NIOS2_U16},
-+  {BFD_RELOC_16_PCREL, R_NIOS2_PCREL16},
-+  {BFD_RELOC_NIOS2_CALL26, R_NIOS2_CALL26},
-+  {BFD_RELOC_NIOS2_IMM5, R_NIOS2_IMM5},
-+  {BFD_RELOC_NIOS2_CACHE_OPX, R_NIOS2_CACHE_OPX},
-+  {BFD_RELOC_NIOS2_IMM6, R_NIOS2_IMM6},
-+  {BFD_RELOC_NIOS2_IMM8, R_NIOS2_IMM8},
-+  {BFD_RELOC_NIOS2_HI16, R_NIOS2_HI16},
-+  {BFD_RELOC_NIOS2_LO16, R_NIOS2_LO16},
-+  {BFD_RELOC_NIOS2_HIADJ16, R_NIOS2_HIADJ16},
-+  {BFD_RELOC_32, R_NIOS2_BFD_RELOC_32},
-+  {BFD_RELOC_16, R_NIOS2_BFD_RELOC_16},
-+  {BFD_RELOC_8, R_NIOS2_BFD_RELOC_8},
-+  {BFD_RELOC_NIOS2_GPREL, R_NIOS2_GPREL},
-+  {BFD_RELOC_VTABLE_INHERIT, R_NIOS2_GNU_VTINHERIT},
-+  {BFD_RELOC_VTABLE_ENTRY, R_NIOS2_GNU_VTENTRY},
-+  {BFD_RELOC_NIOS2_UJMP, R_NIOS2_UJMP},
-+  {BFD_RELOC_NIOS2_CJMP, R_NIOS2_CJMP},
-+  {BFD_RELOC_NIOS2_CALLR, R_NIOS2_CALLR},
-+  {BFD_RELOC_NIOS2_ALIGN, R_NIOS2_ALIGN},
-+};
-+
-+/* Given a BFD reloc type, return a howto structure.  */
-+
-+static reloc_howto_type *
-+nios2_elf32_bfd_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED,
-+				   bfd_reloc_code_real_type code)
-+{
-+  int i;
-+  for (i = 0;
-+       i < (int) (sizeof (nios2_reloc_map) / sizeof (struct elf_reloc_map));
-+       ++i)
-+    {
-+      if (nios2_reloc_map[i].bfd_val == code)
-+	return &elf_nios2_howto_table_rel[(int) nios2_reloc_map[i].elf_val];
-+    }
-+
-+  return NULL;
-+}
-+
-+/* Helper function for nios2_elf32_info_to_howto */
-+
-+static reloc_howto_type *
-+nios2_elf32_rtype_to_howto (unsigned int r_type,
-+			    bfd_boolean rela_p ATTRIBUTE_UNUSED)
-+{
-+  BFD_ASSERT (r_type < R_NIOS2_ILLEGAL);
-+  return &elf_nios2_howto_table_rel[r_type];
-+}
-+
-+/* Given a ELF32 relocation, fill in a arelent structure */
-+
-+static void
-+nios2_elf32_info_to_howto (bfd * abfd ATTRIBUTE_UNUSED, arelent * cache_ptr,
-+			   Elf_Internal_Rela * dst)
-+{
-+  unsigned int r_type;
-+
-+  r_type = ELF32_R_TYPE (dst->r_info);
-+  cache_ptr->howto = nios2_elf32_rtype_to_howto (r_type, FALSE);
-+
-+  // FIXME - do we need to do anything else here???
-+}
-+
-+/* The assembler has output long jmp/call sequences for all calls
-+ * and pc-relative branches that it cannot guarantee are within
-+ * range, so the linker must attempt to "relax" these sequences to
-+ * short branches and calls if it can. We avoid having to re-relax by
-+ * replacing redundant instructions with nops instead of deleting them.
-+ *
-+ *
-+ **/
-+static bfd_boolean
-+nios2_elf32_relax_section (bfd * abfd,
-+			   asection * sec,
-+			   struct bfd_link_info *link_info, bfd_boolean * again)
-+{
-+  Elf_Internal_Shdr *symtab_hdr;
-+  Elf_Internal_Rela *internal_relocs;
-+  Elf_Internal_Rela *irel, *irelend;
-+  bfd_byte *contents = NULL;
-+  Elf_Internal_Sym *isymbuf = NULL;
-+
-+#define OP_MATCH_NOP 0x0001883a
-+
-+  /* Assume nothing changes.  */
-+  *again = FALSE;
-+
-+  /* We don't have to do anything for a relocatable link, if
-+     this section does not have relocs, or if this is not a
-+     code section.  */
-+  if (link_info->relocatable
-+      || (sec->flags & SEC_RELOC) == 0
-+      || sec->reloc_count == 0 || (sec->flags & SEC_CODE) == 0)
-+    return TRUE;
-+
-+  /* If this is the first time we have been called for this section,
-+     initialize the cooked size.  */
-+  if (sec->_cooked_size == 0)
-+    sec->_cooked_size = sec->_raw_size;
-+
-+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-+
-+  /* Get a copy of the native relocations.  */
-+  internal_relocs = (_bfd_elf_link_read_relocs
-+		     (abfd, sec, (void *) NULL, (Elf_Internal_Rela *) NULL,
-+		      link_info->keep_memory));
-+  if (internal_relocs == NULL)
-+    goto error_return;
-+
-+  /* Walk through them looking for relaxing opportunities.  */
-+  irelend = internal_relocs + sec->reloc_count;
-+  for (irel = internal_relocs; irel < irelend; irel++)
-+    {
-+      bfd_vma symval;
-+
-+      /* If this isn't something that can be relaxed, then ignore
-+         this reloc.  */
-+      if (ELF32_R_TYPE (irel->r_info) != (int) R_NIOS2_UJMP
-+	  && ELF32_R_TYPE (irel->r_info) != (int) R_NIOS2_CJMP
-+	  && ELF32_R_TYPE (irel->r_info) != (int) R_NIOS2_CALLR)
-+	{
-+	  continue;
-+	}
-+
-+      /* Get the section contents if we haven't done so already.  */
-+      if (contents == NULL)
-+	{
-+	  /* Get cached copy if it exists.  */
-+	  if (elf_section_data (sec)->this_hdr.contents != NULL)
-+	    contents = elf_section_data (sec)->this_hdr.contents;
-+	  else
-+	    {
-+	      /* Go get them off disk.  */
-+	      contents = (bfd_byte *) bfd_malloc (sec->_raw_size);
-+	      if (contents == NULL)
-+		goto error_return;
-+
-+	      if (!bfd_get_section_contents (abfd, sec, contents,
-+					     (file_ptr) 0, sec->_raw_size))
-+		goto error_return;
-+	    }
-+	}
-+
-+      /* Read this BFD's local symbols if we haven't done so already.  */
-+      if (isymbuf == NULL && symtab_hdr->sh_info != 0)
-+	{
-+	  isymbuf = (Elf_Internal_Sym *) symtab_hdr->contents;
-+	  if (isymbuf == NULL)
-+	    isymbuf = bfd_elf_get_elf_syms (abfd, symtab_hdr,
-+					    symtab_hdr->sh_info, 0,
-+					    NULL, NULL, NULL);
-+	  if (isymbuf == NULL)
-+	    goto error_return;
-+	}
-+
-+      /* Get the value of the symbol referred to by the reloc.  */
-+      if (ELF32_R_SYM (irel->r_info) < symtab_hdr->sh_info)
-+	{
-+	  /* A local symbol.  */
-+	  Elf_Internal_Sym *isym;
-+	  asection *sym_sec;
-+
-+	  isym = isymbuf + ELF32_R_SYM (irel->r_info);
-+	  if (isym->st_shndx == SHN_UNDEF)
-+	    sym_sec = bfd_und_section_ptr;
-+	  else if (isym->st_shndx == SHN_ABS)
-+	    sym_sec = bfd_abs_section_ptr;
-+	  else if (isym->st_shndx == SHN_COMMON)
-+	    sym_sec = bfd_com_section_ptr;
-+	  else
-+	    sym_sec = bfd_section_from_elf_index (abfd, isym->st_shndx);
-+	  symval = (isym->st_value
-+		    + sym_sec->output_section->vma + sym_sec->output_offset);
-+	}
-+      else
-+	{
-+	  unsigned long indx;
-+	  struct elf_link_hash_entry *h;
-+
-+	  /* An external symbol.  */
-+	  indx = ELF32_R_SYM (irel->r_info) - symtab_hdr->sh_info;
-+	  h = elf_sym_hashes (abfd)[indx];
-+	  BFD_ASSERT (h != NULL);
-+	  if (h->root.type != bfd_link_hash_defined
-+	      && h->root.type != bfd_link_hash_defweak)
-+	    {
-+	      /* This appears to be a reference to an undefined
-+	         symbol.  Just ignore it--it will be caught by the
-+	         regular reloc processing.  */
-+	      continue;
-+	    }
-+
-+	  symval = (h->root.u.def.value
-+		    + h->root.u.def.section->output_section->vma
-+		    + h->root.u.def.section->output_offset);
-+	}
-+
-+      /* For simplicity of coding, we are going to modify the section
-+         contents, the section relocs, and the BFD symbol table.  We
-+         must tell the rest of the code not to free up this
-+         information.  It would be possible to instead create a table
-+         of changes which have to be made, as is done in coff-mips.c;
-+         that would be more work, but would require less memory when
-+         the linker is run.  */
-+
-+      /* try to turn :
-+       *      movhi at, %hi(symbol)
-+       *      movui at, %lo(symbol)
-+       *      callr at
-+       * into:
-+       *      call symbol
-+       */
-+      if (ELF32_R_TYPE (irel->r_info) == (int) R_NIOS2_CALLR)
-+	{
-+	  bfd_vma targ_addr = symval + irel->r_addend;
-+	  bfd_vma curr_addr = (sec->output_section->vma + sec->output_offset);
-+	  bfd_vma targ_page, curr_page;
-+	  targ_page = targ_addr & 0xf0000000;
-+	  curr_page = curr_addr & 0xf0000000;
-+
-+	  if (targ_page == curr_page)
-+	    {
-+	      /* change the opcode to a call */
-+	      bfd_put_32 (abfd, OP_MATCH_CALL, contents + irel->r_offset);
-+	      /* Note that we've changed the relocs, section contents, etc.  */
-+	      elf_section_data (sec)->relocs = internal_relocs;
-+	      elf_section_data (sec)->this_hdr.contents = contents;
-+	      symtab_hdr->contents = (unsigned char *) isymbuf;
-+
-+	      /* Fix the relocation's type.  */
-+	      irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
-+					   R_NIOS2_CALL26);
-+
-+	      /* replace next two instructions with nops */
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 4);
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 8);
-+	    }
-+	}
-+
-+      /* try to turn :
-+       *    movhi at, %hi(symbol)
-+       *    movui at, %lo(symbol)
-+       *    jmp at
-+       * into:
-+       *    br symbol
-+       */
-+      if (ELF32_R_TYPE (irel->r_info) == (int) R_NIOS2_UJMP)
-+	{
-+	  bfd_vma pcrel_offset;
-+	  Elf_Internal_Rela *irelalign = NULL;
-+	  Elf_Internal_Rela *irela = elf_section_data (sec)->relocs;
-+	  Elf_Internal_Rela *irelend = irel + sec->reloc_count;
-+
-+	  for (; irela < irelend; irela++)
-+	    {
-+	      if (ELF32_R_TYPE (irela->r_info) == (int) R_NIOS2_ALIGN
-+		  && irela->r_offset > irel->r_offset + 4
-+		  && 8 < (1 << irela->r_addend))
-+		{
-+		  irelalign = irela;
-+		  break;
-+		}
-+	    }
-+
-+	  /* calculate the pcrelative offset from current location */
-+	  pcrel_offset = symval;
-+	  pcrel_offset -= (sec->output_section->vma + sec->output_offset);
-+	  pcrel_offset += irel->r_addend;
-+
-+	  /* we need to compute the pcrel_offset from the next instruction */
-+	  pcrel_offset -= (irel->r_offset + 4);
-+
-+	  /* does this value fit in 16 bits  */
-+	  if ((irelalign == NULL && (long) pcrel_offset <= 0x8004
-+	       && (long) pcrel_offset >= -0x8000) || (irelalign != NULL
-+						      && (long) pcrel_offset
-+						      <= 0x7ffc
-+						      && (long) pcrel_offset
-+						      >= -0x8000))
-+	    {
-+	      /* change the opcode to an unconditional branch */
-+	      bfd_put_32 (abfd, OP_MATCH_BR, contents + irel->r_offset);
-+	      /* Note that we've changed the relocs, section contents, etc.  */
-+	      elf_section_data (sec)->relocs = internal_relocs;
-+	      elf_section_data (sec)->this_hdr.contents = contents;
-+	      symtab_hdr->contents = (unsigned char *) isymbuf;
-+
-+	      /* Fix the relocation's type.  */
-+	      irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
-+					   R_NIOS2_PCREL16);
-+
-+	      /* replace next two instructions with nops */
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 4);
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 8);
-+	    }
-+	}
-+
-+      /* try to turn :
-+       *   b{cond} a, b skip
-+       *   movhi at, %hi(symbol)
-+       *   movui at, %lo(symbol)
-+       *   jmp at
-+       * skip:
-+       *   ...
-+       * into:
-+       *   br{opp_cond} a, b, symbol
-+       */
-+      if (ELF32_R_TYPE (irel->r_info) == (int) R_NIOS2_CJMP)
-+	{
-+	  bfd_vma pcrel_offset;
-+	  Elf_Internal_Rela *irelalign = NULL;
-+	  Elf_Internal_Rela *irela = elf_section_data (sec)->relocs;
-+	  Elf_Internal_Rela *irelend = irel + sec->reloc_count;
-+
-+	  for (; irela < irelend; irela++)
-+	    {
-+	      if (ELF32_R_TYPE (irela->r_info) == (int) R_NIOS2_ALIGN
-+		  && irela->r_offset > irel->r_offset + 4
-+		  && 8 < (1 << irela->r_addend))
-+		{
-+		  irelalign = irela;
-+		  break;
-+		}
-+	    }
-+
-+	  /* calculate the pcrelative offset from current location */
-+	  pcrel_offset = symval;
-+	  pcrel_offset -= (sec->output_section->vma + sec->output_offset);
-+	  pcrel_offset += irel->r_addend;
-+
-+	  /* we need to compute the pcrel_offset from this instruction
-+	   * ie the movhi */
-+	  pcrel_offset -= (irel->r_offset);
-+
-+	  /* does this value fit in 16 bits */
-+	  if ((irelalign == NULL && (long) pcrel_offset <= 0x8008
-+	       && (long) pcrel_offset >= -0x8000) || (irelalign != NULL
-+						      && (long) pcrel_offset
-+						      <= 0x7ffc
-+						      && (long) pcrel_offset
-+						      >= -0x8000))
-+	    {
-+	      unsigned long opcode, op_a, op_b;
-+	      /* get the conditional branch opcode */
-+	      opcode = bfd_get_32 (abfd, contents + irel->r_offset - 4);
-+	      /* reverse the condition */
-+	      switch (opcode & OP_MASK_OP)
-+		{
-+		case OP_MATCH_BEQ:
-+		  opcode = (opcode & ~OP_MASK_OP) | OP_MATCH_BNE;
-+		  break;
-+		case OP_MATCH_BNE:
-+		  opcode = (opcode & ~OP_MASK_OP) | OP_MATCH_BEQ;
-+		  break;
-+		case OP_MATCH_BGE:
-+		case OP_MATCH_BGEU:
-+		case OP_MATCH_BLT:
-+		case OP_MATCH_BLTU:
-+		  /* swap the operands */
-+		  op_a = (opcode & OP_MASK_RRT) << 5;
-+		  op_b = (opcode & OP_MASK_RRS) >> 5;
-+		  opcode =
-+		    (opcode & ~(OP_MASK_RRS | OP_MASK_RRT)) | op_a | op_b;
-+		  break;
-+		default:
-+		  fprintf (stderr,
-+			   "relaxation error - expecting conditional branch, aborting\n");
-+		  abort ();
-+		  break;
-+		}
-+
-+	      /* we must set the branch target to zero so that the skip over the jmp doesn't get
-+	       * added to the jmp */
-+	      opcode = opcode & (~OP_MASK_IMM16);
-+
-+	      /* change the opcode to the reversed conditional branch */
-+	      bfd_put_32 (abfd, opcode, contents + irel->r_offset - 4);
-+	      /* Note that we've changed the relocs, section contents, etc.  */
-+	      elf_section_data (sec)->relocs = internal_relocs;
-+	      elf_section_data (sec)->this_hdr.contents = contents;
-+	      symtab_hdr->contents = (unsigned char *) isymbuf;
-+
-+	      /* Fix the relocation's type.  */
-+	      irel->r_info = ELF32_R_INFO (ELF32_R_SYM (irel->r_info),
-+					   R_NIOS2_PCREL16);
-+
-+	      /* this relocation's offset has also been reduced by 4 bytes */
-+	      irel->r_offset -= 4;
-+
-+	      /* replace next two instructions with nops */
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 4);
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 8);
-+	      bfd_put_32 (abfd, OP_MATCH_NOP, contents + irel->r_offset + 12);
-+	    }
-+	}
-+
-+      /* otherwise, leave alone */
-+    }
-+
-+  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
-+    {
-+      if (!link_info->keep_memory)
-+	free (isymbuf);
-+      else
-+	{
-+	  /* Cache the symbols for elf_link_input_bfd.  */
-+	  symtab_hdr->contents = (unsigned char *) isymbuf;
-+	}
-+    }
-+
-+  if (contents != NULL
-+      && elf_section_data (sec)->this_hdr.contents != contents)
-+    {
-+      if (!link_info->keep_memory)
-+	free (contents);
-+      else
-+	{
-+	  /* Cache the section contents for elf_link_input_bfd.  */
-+	  elf_section_data (sec)->this_hdr.contents = contents;
-+	}
-+    }
-+
-+  if (internal_relocs != NULL
-+      && elf_section_data (sec)->relocs != internal_relocs)
-+    free (internal_relocs);
-+
-+
-+  return TRUE;
-+
-+error_return:
-+  if (isymbuf != NULL && symtab_hdr->contents != (unsigned char *) isymbuf)
-+    free (isymbuf);
-+  if (contents != NULL
-+      && elf_section_data (sec)->this_hdr.contents != contents)
-+    free (contents);
-+  if (internal_relocs != NULL
-+      && elf_section_data (sec)->relocs != internal_relocs)
-+    free (internal_relocs);
-+
-+  return FALSE;
-+}
-+
-+/* Delete some bytes from a section while relaxing.
-+ * Copied from mn10200 port */
-+
-+static bfd_boolean
-+nios2_elf32_relax_delete_bytes (bfd * abfd,
-+				asection * sec, bfd_vma addr, int count)
-+{
-+  Elf_Internal_Shdr *symtab_hdr;
-+  unsigned int sec_shndx;
-+  bfd_byte *contents;
-+  Elf_Internal_Rela *irel, *irelend;
-+  Elf_Internal_Rela *irelalign;
-+  bfd_vma toaddr;
-+  Elf_Internal_Sym *isym;
-+  Elf_Internal_Sym *isymend;
-+  struct elf_link_hash_entry **sym_hashes;
-+  struct elf_link_hash_entry **end_hashes;
-+  unsigned int symcount;
-+  asection *asec;
-+
-+  sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec);
-+
-+  contents = elf_section_data (sec)->this_hdr.contents;
-+
-+  /* The deletion must stop at the next ALIGN reloc for an aligment
-+     power larger than the number of bytes we are deleting.  */
-+
-+  irelalign = NULL;
-+  /* +1 because we need to readjust symbols at end of section */
-+  toaddr = sec->_cooked_size + 1;
-+
-+  irel = elf_section_data (sec)->relocs;
-+  irelend = irel + sec->reloc_count;
-+
-+  for (; irel < irelend; irel++)
-+    {
-+      if (ELF32_R_TYPE (irel->r_info) == (int) R_NIOS2_ALIGN
-+	  && irel->r_offset > addr && count < (1 << irel->r_addend))
-+	{
-+	  irelalign = irel;
-+	  /* +1 because we need to readjust symbols at end of section */
-+	  toaddr = irel->r_offset + 1;
-+	  break;
-+	}
-+    }
-+
-+
-+  /* Actually delete the bytes.  */
-+  memmove (contents + addr, contents + addr + count,
-+	   (size_t) ((toaddr - 1) - addr - count));
-+
-+  if (irelalign == NULL)
-+    sec->_cooked_size -= count;
-+  else
-+    {
-+      int i;
-+
-+#define NOP_OPCODE  (0x0001883a)
-+
-+      BFD_ASSERT ((count & 3) == 0);
-+      for (i = 0; i < count; i += 4)
-+	bfd_put_32 (abfd, (bfd_vma) NOP_OPCODE,
-+		    contents + (toaddr - 1) - count + i);
-+    }
-+
-+  /* get the symbol table */
-+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-+  isym = (Elf_Internal_Sym *) symtab_hdr->contents;
-+
-+  /* Adjust all the reloc offsets in this section.  */
-+  for (irel = elf_section_data (sec)->relocs; irel < irelend; irel++)
-+    {
-+      /* Get the new reloc address.  */
-+      if ((irel->r_offset > addr && irel->r_offset < toaddr))
-+	irel->r_offset -= count;
-+    }
-+
-+  /* Adjust relocations against targets in this section whose positions
-+   * have moved as a result of the relaxation */
-+
-+  for (asec = abfd->sections; asec; asec = asec->next)
-+    {
-+      irelend = elf_section_data (asec)->relocs + asec->reloc_count;
-+      for (irel = elf_section_data (asec)->relocs; irel < irelend; irel++)
-+	{
-+	  Elf_Internal_Sym *sym;
-+	  /* if the symbol which this reloc is against doesn't change
-+	   * we need to change the reloc addend */
-+
-+	  sym = isym + ELF32_R_SYM (irel->r_info);
-+	  if (sym->st_shndx == sec_shndx
-+	      && !(sym->st_value > addr && sym->st_value < toaddr)
-+	      && sym->st_value + irel->r_addend > addr
-+	      && sym->st_value + irel->r_addend < toaddr)
-+	    {
-+	      irel->r_addend -= count;
-+	    }
-+
-+	}
-+    }
-+
-+  /* Adjust the local symbols defined in this section.  */
-+  for (isymend = isym + symtab_hdr->sh_info; isym < isymend; isym++)
-+    {
-+      if (isym->st_shndx == sec_shndx
-+	  && isym->st_value > addr && isym->st_value < toaddr)
-+	isym->st_value -= count;
-+
-+
-+    }
-+
-+  /* Now adjust the global symbols defined in this section.  */
-+  symcount = (symtab_hdr->sh_size / sizeof (Elf32_External_Sym)
-+	      - symtab_hdr->sh_info);
-+  sym_hashes = elf_sym_hashes (abfd);
-+  end_hashes = sym_hashes + symcount;
-+  for (; sym_hashes < end_hashes; sym_hashes++)
-+    {
-+      struct elf_link_hash_entry *sym_hash = *sym_hashes;
-+      if ((sym_hash->root.type == bfd_link_hash_defined
-+	   || sym_hash->root.type == bfd_link_hash_defweak)
-+	  && sym_hash->root.u.def.section == sec
-+	  && sym_hash->root.u.def.value > addr
-+	  && sym_hash->root.u.def.value < toaddr)
-+	{
-+	  sym_hash->root.u.def.value -= count;
-+	}
-+    }
-+
-+  return TRUE;
-+}
-+
-+struct bfd_link_info *nios2_link_info = NULL;
-+
-+void
-+_bfd_set_link_info (info)
-+     struct bfd_link_info *info;
-+{
-+  nios2_link_info = info;
-+}
-+
-+bfd_boolean linker_force_make_executable = FALSE;
-+
-+void
-+_bfd_set_force_make_executable (force)
-+     bfd_boolean force;
-+{
-+  linker_force_make_executable = force;
-+}
-+
-+/* Set the GP value for OUTPUT_BFD.  Returns FALSE if this is a
-+   dangerous relocation.  */
-+
-+static bfd_boolean
-+nios2_elf_assign_gp (bfd *output_bfd, bfd_vma *pgp, struct bfd_link_info *info)
-+{
-+
-+  bfd_boolean gp_found;
-+  struct bfd_hash_entry *h;
-+  struct bfd_link_hash_entry *lh;
-+
-+  /* If we've already figured out what GP will be, just return it. */
-+  *pgp = _bfd_get_gp_value (output_bfd);
-+  if (*pgp)
-+    return TRUE;
-+
-+  h = bfd_hash_lookup (&info->hash->table, "_gp", FALSE, FALSE);
-+  lh = (struct bfd_link_hash_entry *) h;
-+lookup:
-+  if (lh)
-+    {
-+      switch (lh->type)
-+	{
-+	case bfd_link_hash_undefined:
-+	case bfd_link_hash_undefweak:
-+	case bfd_link_hash_common:
-+	  gp_found = FALSE;
-+	  break;
-+	case bfd_link_hash_defined:
-+	case bfd_link_hash_defweak:
-+	  gp_found = TRUE;
-+	  *pgp = lh->u.def.value;
-+	  break;
-+	case bfd_link_hash_indirect:
-+	case bfd_link_hash_warning:
-+	  lh = lh->u.i.link;
-+	  /* @@FIXME  ignoring warning for now */
-+	  goto lookup;
-+	case bfd_link_hash_new:
-+	default:
-+	  abort ();
-+	}
-+    }
-+  else
-+    gp_found = FALSE;
-+
-+  if (!gp_found)
-+    {
-+      /* Only get the error once. */
-+      *pgp = 4;
-+      _bfd_set_gp_value (output_bfd, *pgp);
-+      return FALSE;
-+    }
-+
-+  _bfd_set_gp_value (output_bfd, *pgp);
-+
-+  return TRUE;
-+}
-+
-+/* We have to figure out the gp value, so that we can adjust the
-+   symbol value correctly.  We look up the symbol _gp in the output
-+   BFD.  If we can't find it, we're stuck.  We cache it in the ELF
-+   target data.  We don't need to adjust the symbol value for an
-+   external symbol if we are producing relocatable output.  */
-+
-+static bfd_reloc_status_type
-+nios2_elf_final_gp (bfd *output_bfd, asymbol *symbol, bfd_boolean relocatable, 
-+                    char **error_message, bfd_vma *pgp, struct bfd_link_info *info)
-+{
-+  if (bfd_is_und_section (symbol->section) && !relocatable)
-+    {
-+      *pgp = 0;
-+      return bfd_reloc_undefined;
-+    }
-+
-+  *pgp = _bfd_get_gp_value (output_bfd);
-+  if (*pgp == 0 && (!relocatable || (symbol->flags & BSF_SECTION_SYM) != 0))
-+    {
-+      /* if this is called without link_info, then
-+         we cannot be doing a final link */
-+      if (info == NULL)
-+	relocatable = TRUE;
-+
-+      if (relocatable)
-+	{
-+	  /* Make up a value.  */
-+	  *pgp = symbol->section->output_section->vma + 0x4000;
-+	  _bfd_set_gp_value (output_bfd, *pgp);
-+	}
-+      else if (!nios2_elf_assign_gp (output_bfd, pgp, info))
-+	{
-+	  *error_message =
-+	    (char *)
-+	    _("global pointer relative relocation when _gp not defined");
-+	  return bfd_reloc_dangerous;
-+	}
-+    }
-+
-+  return bfd_reloc_ok;
-+}
-+
-+
-+/* Relocations that require special handling */
-+
-+/* This is for relocations used only when relaxing to ensure
-+ * changes in size of section don't screw up .align */
-+static bfd_reloc_status_type
-+nios2_elf32_ignore_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry,
-+     asymbol *symbol ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED,
-+     asection *input_section, bfd *output_bfd, char **error_message ATTRIBUTE_UNUSED)
-+{
-+  if (output_bfd != NULL)
-+    reloc_entry->address += input_section->output_offset;
-+  return bfd_reloc_ok;
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_hi16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol, void *data,
-+     asection *input_section, bfd *output_bfd, char **error_message ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_hi16_relocate (abfd, reloc_entry->howto,
-+				       input_section,
-+				       data, reloc_entry->address,
-+				       (symbol->value
-+					+ symbol->section->output_section->vma
-+					+ symbol->section->output_offset),
-+				       reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_lo16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+     void *data, asection *input_section, bfd *output_bfd, char **error_message ATTRIBUTE_UNUSED)
-+{
-+/* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_lo16_relocate (abfd, reloc_entry->howto,
-+				       input_section,
-+				       data, reloc_entry->address,
-+				       (symbol->value
-+					+ symbol->section->output_section->vma
-+					+ symbol->section->output_offset),
-+				       reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_hiadj16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+     void *data, asection *input_section, bfd *output_bfd, 
-+     char **error_message ATTRIBUTE_UNUSED)
-+{
-+/* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_hiadj16_relocate (abfd, reloc_entry->howto,
-+					  input_section,
-+					  data, reloc_entry->address,
-+					  (symbol->value
-+					   +
-+					   symbol->section->output_section->
-+					   vma +
-+					   symbol->section->output_offset),
-+					  reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_pcrel16_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+     void *data, asection *input_section, bfd *output_bfd, 
-+     char **error_message ATTRIBUTE_UNUSED)
-+{
-+/* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_pcrel16_relocate (abfd, reloc_entry->howto,
-+					  input_section,
-+					  data, reloc_entry->address,
-+					  (symbol->value
-+					   +
-+					   symbol->section->output_section->
-+					   vma +
-+					   symbol->section->output_offset),
-+					  reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_call26_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+     void *data, asection *input_section, bfd *output_bfd, char **error_message ATTRIBUTE_UNUSED)
-+{
-+/* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_call26_relocate (abfd, reloc_entry->howto,
-+					 input_section,
-+					 data, reloc_entry->address,
-+					 (symbol->value
-+					  +
-+					  symbol->section->output_section->
-+					  vma +
-+					  symbol->section->output_offset),
-+					 reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_gprel_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+     void *data, asection *input_section, bfd *output_bfd, char **msg)
-+{
-+  bfd_vma relocation;
-+  bfd_vma gp;
-+  bfd_reloc_status_type r;
-+
-+
-+/* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  relocation = symbol->value
-+    + symbol->section->output_section->vma + symbol->section->output_offset;
-+
-+  if ((r =
-+       nios2_elf_final_gp (abfd, symbol, FALSE, msg, &gp,
-+			   nios2_link_info)) == bfd_reloc_ok)
-+    {
-+      relocation = relocation + reloc_entry->addend - gp;
-+      reloc_entry->addend = 0;
-+      if ((signed) relocation < -32768 || (signed) relocation > 32767)
-+	{
-+	  *msg = _("global pointer relative address out of range");
-+	  r = bfd_reloc_outofrange;
-+	}
-+      else
-+	{
-+	  r = nios2_elf32_do_gprel_relocate (abfd, reloc_entry->howto,
-+					     input_section,
-+					     data, reloc_entry->address,
-+					     relocation, reloc_entry->addend);
-+	}
-+    }
-+
-+  return r;
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_ujmp_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+     void *data, asection *input_section, bfd *output_bfd, char **msg ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_ujmp_relocate (abfd, reloc_entry->howto,
-+				       input_section,
-+				       data, reloc_entry->address,
-+				       (symbol->value
-+					+ symbol->section->output_section->vma
-+					+ symbol->section->output_offset),
-+				       reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_cjmp_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+     void *data, asection *input_section, bfd *output_bfd, char **msg ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+  return nios2_elf32_do_cjmp_relocate (abfd, reloc_entry->howto,
-+				       input_section,
-+				       data, reloc_entry->address,
-+				       (symbol->value
-+					+ symbol->section->output_section->vma
-+					+ symbol->section->output_offset),
-+				       reloc_entry->addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_callr_relocate (bfd *abfd, arelent *reloc_entry, asymbol *symbol,
-+     void *data, asection *input_section, bfd *output_bfd, char **msg ATTRIBUTE_UNUSED)
-+{
-+  /* This part is from bfd_elf_generic_reloc.  */
-+  if (output_bfd != (bfd *) NULL
-+      && (symbol->flags & BSF_SECTION_SYM) == 0
-+      && (!reloc_entry->howto->partial_inplace || reloc_entry->addend == 0))
-+    {
-+      reloc_entry->address += input_section->output_offset;
-+      return bfd_reloc_ok;
-+    }
-+
-+  if (output_bfd != NULL)
-+    /* FIXME: See bfd_perform_relocation.  Is this right?  */
-+    return bfd_reloc_ok;
-+
-+
-+  return nios2_elf32_do_callr_relocate (abfd, reloc_entry->howto,
-+					input_section,
-+					data, reloc_entry->address,
-+					(symbol->value
-+					 +
-+					 symbol->section->output_section->
-+					 vma +
-+					 symbol->section->output_offset),
-+					reloc_entry->addend);
-+}
-+
-+/* Do the relocations which require special handling */
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_hi16_relocate (bfd *abfd, reloc_howto_type *howto, 
-+     asection *input_section ATTRIBUTE_UNUSED, bfd_byte *data,
-+     bfd_vma offset, bfd_vma symbol_value, bfd_vma addend)
-+{
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_value = (symbol_value >> 16) & 0xffff;
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_lo16_relocate (bfd *abfd, reloc_howto_type *howto,
-+     asection *input_section ATTRIBUTE_UNUSED, bfd_byte *data,
-+     bfd_vma offset, bfd_vma symbol_value, bfd_vma addend)
-+{
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_value = symbol_value & 0xffff;
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_hiadj16_relocate (bfd *abfd, reloc_howto_type *howto,
-+     asection *input_section ATTRIBUTE_UNUSED, bfd_byte *data, bfd_vma offset,
-+     bfd_vma symbol_value, bfd_vma addend)
-+{
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_value =
-+    ((symbol_value >> 16) & 0xffff) + ((symbol_value >> 15) & 0x01);
-+  return _bfd_final_link_relocate (howto, abfd, input_section, data, offset,
-+				   symbol_value, addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_pcrel16_relocate (bfd *abfd, reloc_howto_type *howto,
-+     asection *input_section ATTRIBUTE_UNUSED, bfd_byte *data,
-+     bfd_vma offset, bfd_vma symbol_value, bfd_vma addend)
-+{
-+  // NIOS2 pc relative relocations are relative to the next 32-bit instruction so we need
-+  // to subtract 4 before doing a final_link_relocate
-+  symbol_value = symbol_value + addend - 4;
-+  addend = 0;
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_call26_relocate (bfd *abfd, reloc_howto_type *howto,
-+     asection *input_section ATTRIBUTE_UNUSED, bfd_byte *data,
-+     bfd_vma offset, bfd_vma symbol_value, bfd_vma addend)
-+{
-+  /* check that the relocation is in the same page as the current address */
-+  if (((symbol_value + addend) & 0xf0000000)
-+      != ((input_section->output_section->vma + offset) & 0xf0000000))
-+    return bfd_reloc_overflow;
-+
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_gprel_relocate (bfd *abfd, reloc_howto_type *howto,
-+     asection *input_section ATTRIBUTE_UNUSED, bfd_byte *data,
-+     bfd_vma offset, bfd_vma symbol_value, bfd_vma addend)
-+{
-+  // because we need the output_bfd, the special handling is done
-+  // in nios2_elf32_relocate_section or in nios2_elf32_gprel_relocate
-+  return _bfd_final_link_relocate (howto, abfd, input_section,
-+				   data, offset, symbol_value, addend);
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_ujmp_relocate (bfd *abfd, reloc_howto_type *howto,
-+     asection *input_section ATTRIBUTE_UNUSED, bfd_byte *data,
-+     bfd_vma offset, bfd_vma symbol_value, bfd_vma addend)
-+{
-+  bfd_vma symbol_lo16, symbol_hi16;
-+  bfd_reloc_status_type r;
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_hi16 = (symbol_value >> 16) & 0xffff;
-+  symbol_lo16 = symbol_value & 0xffff;
-+
-+  r = _bfd_final_link_relocate (howto, abfd, input_section,
-+				data, offset, symbol_hi16, addend);
-+
-+  if (r == bfd_reloc_ok)
-+    return _bfd_final_link_relocate (howto, abfd, input_section,
-+				     data, offset + 4, symbol_lo16, addend);
-+
-+  return r;
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_cjmp_relocate (bfd *abfd, reloc_howto_type *howto,
-+     asection *input_section ATTRIBUTE_UNUSED, bfd_byte *data,
-+     bfd_vma offset, bfd_vma symbol_value, bfd_vma addend)
-+{
-+  bfd_vma symbol_lo16, symbol_hi16;
-+  bfd_reloc_status_type r;
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_hi16 = (symbol_value >> 16) & 0xffff;
-+  symbol_lo16 = symbol_value & 0xffff;
-+
-+  r = _bfd_final_link_relocate (howto, abfd, input_section,
-+				data, offset, symbol_hi16, addend);
-+
-+  if (r == bfd_reloc_ok)
-+    return _bfd_final_link_relocate (howto, abfd, input_section,
-+				     data, offset + 4, symbol_lo16, addend);
-+
-+  return r;
-+}
-+
-+static bfd_reloc_status_type
-+nios2_elf32_do_callr_relocate (bfd *abfd, reloc_howto_type *howto,
-+     asection *input_section ATTRIBUTE_UNUSED, bfd_byte *data,
-+     bfd_vma offset, bfd_vma symbol_value, bfd_vma addend)
-+{
-+  bfd_vma symbol_lo16, symbol_hi16;
-+  bfd_reloc_status_type r;
-+  symbol_value = symbol_value + addend;
-+  addend = 0;
-+  symbol_hi16 = (symbol_value >> 16) & 0xffff;
-+  symbol_lo16 = symbol_value & 0xffff;
-+
-+  r = _bfd_final_link_relocate (howto, abfd, input_section,
-+				data, offset, symbol_hi16, addend);
-+
-+  if (r == bfd_reloc_ok)
-+    return _bfd_final_link_relocate (howto, abfd, input_section,
-+				     data, offset + 4, symbol_lo16, addend);
-+
-+  return r;
-+}
-+
-+/*
-+   The function nios2_elf32_relocate_section is used by the linker
-+   to perform relocations
-+*/
-+static bfd_boolean
-+nios2_elf32_relocate_section (bfd * output_bfd,
-+			      struct bfd_link_info *info,
-+			      bfd * input_bfd,
-+			      asection * input_section,
-+			      bfd_byte * contents,
-+			      Elf_Internal_Rela * relocs,
-+			      Elf_Internal_Sym * local_syms,
-+			      asection ** local_sections)
-+{
-+  Elf_Internal_Shdr *symtab_hdr;
-+  struct elf_link_hash_entry **sym_hashes;
-+  Elf_Internal_Rela *rel;
-+  Elf_Internal_Rela *relend;
-+
-+  symtab_hdr = &elf_tdata (input_bfd)->symtab_hdr;
-+  sym_hashes = elf_sym_hashes (input_bfd);
-+  relend = relocs + input_section->reloc_count;
-+
-+//  size_t psymalloc = 0;
-+//  _bfd_generic_link_output_symbols(output_bfd, input_bfd, info, &psymalloc);
-+  for (rel = relocs; rel < relend; rel++)
-+    {
-+      reloc_howto_type *howto;
-+      unsigned long r_symndx;
-+      Elf_Internal_Sym *sym;
-+      asection *sec;
-+      struct elf_link_hash_entry *h;
-+      bfd_vma relocation;
-+      bfd_vma gp;
-+      bfd_vma reloc_address;
-+      bfd_reloc_status_type r = bfd_reloc_ok;
-+      const char *name = NULL;
-+      int r_type;
-+      const char *format;
-+      char msgbuf[256];
-+      const char* msg = (const char*) NULL;
-+
-+       
-+
-+      r_type = ELF32_R_TYPE (rel->r_info);
-+
-+      r_symndx = ELF32_R_SYM (rel->r_info);
-+
-+      if (info->relocatable)
-+	{
-+	  /* This is a relocatable link.  We don't have to change
-+	     anything, unless the reloc is against a section symbol,
-+	     in which case we have to adjust according to where the
-+	     section symbol winds up in the output section.  */
-+	  if (r_symndx < symtab_hdr->sh_info)
-+	    {
-+	      sym = local_syms + r_symndx;
-+
-+	      if (ELF_ST_TYPE (sym->st_info) == STT_SECTION)
-+		{
-+		  sec = local_sections[r_symndx];
-+		  rel->r_addend += sec->output_offset + sym->st_value;
-+		}
-+	    }
-+	  continue;
-+	}
-+
-+      /* This is a final link.  */
-+      howto = lookup_howto ((unsigned) ELF32_R_TYPE (rel->r_info));
-+      h = NULL;
-+      sym = NULL;
-+      sec = NULL;
-+
-+      if (r_symndx < symtab_hdr->sh_info)
-+	{
-+	  sym = local_syms + r_symndx;
-+	  sec = local_sections[r_symndx];
-+
-+	  relocation = (sec->output_section->vma
-+			+ sec->output_offset + sym->st_value);
-+
-+	  // this ensures that relocations against duplicated symbols
-+	  // in merged sections that have been removed are fixed up against
-+	  // the remaining symbol and not the one that has been removed
-+	  if ((sec->flags & SEC_MERGE)
-+	      && ELF_ST_TYPE (sym->st_info) == STT_SECTION)
-+	    {
-+	      rel->r_addend =
-+		_bfd_elf_rel_local_sym (output_bfd, sym, &sec, rel->r_addend);
-+	      rel->r_addend -= relocation;
-+	      rel->r_addend += sec->output_section->vma + sec->output_offset;
-+	    }
-+
-+	  name = bfd_elf_string_from_elf_section
-+	    (input_bfd, symtab_hdr->sh_link, sym->st_name);
-+
-+	  name = (name == NULL) ? bfd_section_name (input_bfd, sec) : name;
-+	}
-+      else
-+	{
-+	  h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-+
-+	  while (h->root.type == bfd_link_hash_indirect
-+		 || h->root.type == bfd_link_hash_warning)
-+	    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-+
-+	  name = h->root.root.string;
-+
-+	  if (h->root.type == bfd_link_hash_defined
-+	      || h->root.type == bfd_link_hash_defweak)
-+	    {
-+	      sec = h->root.u.def.section;
-+
-+	      relocation = (h->root.u.def.value
-+			    + sec->output_section->vma + sec->output_offset);
-+	    }
-+	  else if (h->root.type == bfd_link_hash_undefweak)
-+	    {
-+	      relocation = 0;
-+	    }
-+	  else
-+	    {
-+	      if (!((*info->callbacks->undefined_symbol)
-+		    (info, h->root.root.string, input_bfd,
-+		     input_section, rel->r_offset, TRUE)))
-+		return FALSE;
-+	      relocation = 0;
-+	    }
-+	}
-+
-+	if (sec)
-+		reloc_address = sec->output_section->vma + sec->output_offset + rel->r_offset;
-+	else
-+		reloc_address = 0;
-+		
-+      if (howto != NULL)
-+	{
-+	  switch (howto->type)
-+	    {
-+	    case R_NIOS2_HI16:
-+	      r =
-+		nios2_elf32_do_hi16_relocate (input_bfd, howto, input_section,
-+					      contents, rel->r_offset,
-+					      relocation, rel->r_addend);
-+	      break;
-+	    case R_NIOS2_LO16:
-+	      r =
-+		nios2_elf32_do_lo16_relocate (input_bfd, howto, input_section,
-+					      contents, rel->r_offset,
-+					      relocation, rel->r_addend);
-+	      break;
-+	    case R_NIOS2_HIADJ16:
-+	      r =
-+		nios2_elf32_do_hiadj16_relocate (input_bfd, howto,
-+						 input_section, contents,
-+						 rel->r_offset, relocation,
-+						 rel->r_addend);
-+	      break;
-+	    case R_NIOS2_PCREL16:
-+	      r =
-+		nios2_elf32_do_pcrel16_relocate (input_bfd, howto,
-+						 input_section, contents,
-+						 rel->r_offset, relocation,
-+						 rel->r_addend);
-+	      break;
-+	    case R_NIOS2_GPREL:
-+	      // turns an absolute address into a gp-relative address
-+	      if (!nios2_elf_assign_gp (output_bfd, &gp, info))
-+		{
-+		  format = _("global pointer relative relocation at address 0x%08x when _gp not defined\n");
-+		  sprintf(msgbuf, format, reloc_address);
-+		  msg = msgbuf;
-+		  r = bfd_reloc_dangerous;
-+		}
-+	      else
-+		{
-+		  relocation = relocation + rel->r_addend - gp;
-+		  rel->r_addend = 0;
-+		  if ((signed) relocation < -32768
-+		      || (signed) relocation > 32767)
-+		    {
-+		      format = _("global pointer relative offset %d at address 0x%08x out of range -32678 to 32767\n");
-+		      sprintf(msgbuf, format, (signed)relocation, reloc_address); 
-+		      msg = msgbuf;
-+		      r = bfd_reloc_outofrange;
-+		    }
-+		  else
-+		    {
-+		      r =
-+			_bfd_final_link_relocate (howto, input_bfd,
-+						  input_section, contents,
-+						  rel->r_offset, relocation,
-+						  rel->r_addend);
-+		    }
-+		}
-+
-+	      break;
-+	    case R_NIOS2_UJMP:
-+	      r =
-+		nios2_elf32_do_ujmp_relocate (input_bfd, howto, input_section,
-+					      contents, rel->r_offset,
-+					      relocation, rel->r_addend);
-+	      break;
-+	    case R_NIOS2_CJMP:
-+	      r =
-+		nios2_elf32_do_cjmp_relocate (input_bfd, howto, input_section,
-+					      contents, rel->r_offset,
-+					      relocation, rel->r_addend);
-+	      break;
-+	    case R_NIOS2_CALLR:
-+	      r =
-+		nios2_elf32_do_callr_relocate (input_bfd, howto,
-+					       input_section, contents,
-+					       rel->r_offset, relocation,
-+					       rel->r_addend);
-+	      break;
-+	    case R_NIOS2_CALL26:
-+	      r =
-+		nios2_elf32_do_call26_relocate (input_bfd, howto,
-+						input_section, contents,
-+						rel->r_offset, relocation,
-+						rel->r_addend);
-+	      break;
-+	    case R_NIOS2_ALIGN:
-+	      r = bfd_reloc_ok;
-+	      /* comment - for symmetry this would be
-+	      		r = nios2_elf32_do_ignore_reloc (input_bfd, howto, input_section,
-+										    contents, rel->r_offset,
-+					    					relocation, rel->r_addend);
-+		  	 but do_ignore_reloc would do no more than return bfd_reloc_ok */
-+	      break;
-+	    default:
-+	      r = _bfd_final_link_relocate (howto, input_bfd, input_section,
-+					    contents, rel->r_offset,
-+					    relocation, rel->r_addend);
-+	      break;
-+	    }
-+	}
-+      else
-+	{
-+	  r = bfd_reloc_notsupported;
-+	}
-+
-+      if (r != bfd_reloc_ok)
-+	{
-+	  if (h != NULL)
-+	    name = h->root.root.string;
-+	  else
-+	    {
-+	      name = (bfd_elf_string_from_elf_section
-+		      (input_bfd, symtab_hdr->sh_link, sym->st_name));
-+	      if (name == NULL || *name == '\0')
-+		name = bfd_section_name (input_bfd, sec);
-+	    }
-+
-+	  switch (r)
-+	    {
-+	    case bfd_reloc_overflow:
-+	      r = info->callbacks->reloc_overflow
-+		(info, name, howto->name, (bfd_vma) 0,
-+		 input_bfd, input_section, rel->r_offset);
-+	      break;
-+
-+	    case bfd_reloc_undefined:
-+	      r = info->callbacks->undefined_symbol
-+		(info, name, input_bfd, input_section, rel->r_offset, TRUE);
-+	      break;
-+
-+	    case bfd_reloc_outofrange:
-+	      if (msg == NULL)
-+		msg = _("relocation out of range");
-+	      break;
-+
-+	    case bfd_reloc_notsupported:
-+	      if (msg == NULL)
-+		msg = _("unsupported relocation");
-+	      break;
-+
-+	    case bfd_reloc_dangerous:
-+	      if (msg == NULL)
-+		msg = _("dangerous relocation");
-+	      break;
-+
-+	    default:
-+	      if (msg == NULL)
-+		msg = _("unknown error");
-+	      break;
-+	    }
-+
-+	  if (msg)
-+	    {
-+	      r = info->callbacks->warning
-+		(info, msg, name, input_bfd, input_section, rel->r_offset);
-+	      return linker_force_make_executable;
-+	    }
-+	}
-+    }
-+  return TRUE;
-+}
-+
-+
-+
-+/* Handle an NIOS2 specific section when reading an object file.  This
-+   is called when elfcode.h finds a section with an unknown type.
-+   FIXME: We need to handle the SHF_NIOS2_GPREL flag */
-+
-+static bfd_boolean
-+nios2_elf32_section_from_shdr (bfd *abfd,
-+     Elf_Internal_Shdr *hdr, const char *name)
-+{
-+  asection *newsect;
-+
-+  /* NG - I'm keeping this code commented out at the moment
-+     in case we add a .mdebug section */
-+
-+  /*
-+     switch (hdr->sh_type)
-+     {
-+     case SHT_NIOS2_DEBUG:
-+     if (strcmp (name, ".mdebug") != 0)
-+     return FALSE;
-+     break;
-+     default:
-+     return FALSE;
-+     }
-+   */
-+
-+  if (!_bfd_elf_make_section_from_shdr (abfd, hdr, name))
-+    return FALSE;
-+
-+  newsect = hdr->bfd_section;
-+
-+  /* ditto */
-+  /*
-+     if (hdr->sh_type == SHT_NIOS2_DEBUG)
-+     {
-+     if (! bfd_set_section_flags (abfd, newsect,
-+     (bfd_get_section_flags (abfd, newsect)
-+     | SEC_DEBUGGING)))
-+     return FALSE;
-+     }
-+   */
-+  return TRUE;
-+}
-+
-+/* Convert NIOS2 specific section flags to bfd internal section flags.  */
-+
-+static bfd_boolean
-+nios2_elf32_section_flags (flagword *flags, Elf_Internal_Shdr *hdr)
-+{
-+  if (hdr->sh_flags & SHF_NIOS2_GPREL)
-+    *flags |= SEC_SMALL_DATA;
-+
-+  return TRUE;
-+}
-+
-+/* Set the correct type for an NIOS2 ELF section.  We do this by the
-+   section name, which is a hack, but ought to work.  */
-+
-+static bfd_boolean
-+nios2_elf32_fake_sections (bfd *abfd ATTRIBUTE_UNUSED,
-+     Elf_Internal_Shdr *hdr, asection *sec)
-+{
-+  register const char *name;
-+
-+  name = bfd_get_section_name (abfd, sec);
-+
-+  if (strcmp (name, ".mdebug") == 0)
-+    {
-+      /* we don't yet have an .mdebug section, but I'm leaving this here
-+         in case we ever do
-+         hdr->sh_type = SHT_NIOS2_DEBUG;
-+
-+         if ((abfd->flags & DYNAMIC) != 0 )
-+         hdr->sh_entsize = 0;
-+         else
-+         hdr->sh_entsize = 1;
-+       */
-+    }
-+  else if ((sec->flags & SEC_SMALL_DATA)
-+	   || strcmp (name, ".sdata") == 0
-+	   || strcmp (name, ".sbss") == 0
-+	   || strcmp (name, ".lit4") == 0 || strcmp (name, ".lit8") == 0)
-+    hdr->sh_flags |= SHF_NIOS2_GPREL;
-+
-+  return TRUE;
-+}
-+
-+/* Look through the relocs for a section during the first phase.
-+   Since we don't do .gots or .plts, we just need to consider the
-+   virtual table relocs for gc.  */
-+
-+static bfd_boolean
-+nios2_elf32_check_relocs (bfd *abfd, struct bfd_link_info *info,
-+     asection *sec, const Elf_Internal_Rela *relocs)
-+{
-+  Elf_Internal_Shdr *symtab_hdr;
-+  struct elf_link_hash_entry **sym_hashes, **sym_hashes_end;
-+  const Elf_Internal_Rela *rel;
-+  const Elf_Internal_Rela *rel_end;
-+
-+  if (info->relocatable)
-+    return TRUE;
-+
-+  symtab_hdr = &elf_tdata (abfd)->symtab_hdr;
-+  sym_hashes = elf_sym_hashes (abfd);
-+  sym_hashes_end =
-+    sym_hashes + symtab_hdr->sh_size / sizeof (Elf32_External_Sym);
-+  if (!elf_bad_symtab (abfd))
-+    sym_hashes_end -= symtab_hdr->sh_info;
-+
-+  rel_end = relocs + sec->reloc_count;
-+  for (rel = relocs; rel < rel_end; rel++)
-+    {
-+      struct elf_link_hash_entry *h;
-+      unsigned long r_symndx;
-+
-+      r_symndx = ELF32_R_SYM (rel->r_info);
-+      if (r_symndx < symtab_hdr->sh_info)
-+	h = NULL;
-+      else
-+	h = sym_hashes[r_symndx - symtab_hdr->sh_info];
-+
-+      switch (ELF32_R_TYPE (rel->r_info))
-+	{
-+	  /* This relocation describes the C++ object vtable hierarchy.
-+	     Reconstruct it for later use during GC.  */
-+	case R_NIOS2_GNU_VTINHERIT:
-+	  if (!bfd_elf_gc_record_vtinherit (abfd, sec, h, rel->r_offset))
-+	    return FALSE;
-+	  break;
-+
-+	  /* This relocation describes which C++ vtable entries are actually
-+	     used.  Record for later use during GC.  */
-+	case R_NIOS2_GNU_VTENTRY:
-+	  if (!bfd_elf_gc_record_vtentry (abfd, sec, h, rel->r_addend))
-+	    return FALSE;
-+	  break;
-+	}
-+    }
-+
-+  return TRUE;
-+}
-+
-+
-+/* Return the section that should be marked against GC for a given
-+   relocation.  */
-+
-+asection *
-+nios2_elf32_gc_mark_hook (asection *sec,
-+     struct bfd_link_info *info ATTRIBUTE_UNUSED,
-+     Elf_Internal_Rela *rel, struct elf_link_hash_entry *h,
-+     Elf_Internal_Sym *sym)
-+{
-+  if (h != NULL)
-+    {
-+      switch (ELF32_R_TYPE (rel->r_info))
-+	{
-+	case R_NIOS2_GNU_VTINHERIT:
-+	case R_NIOS2_GNU_VTENTRY:
-+	  break;
-+
-+	default:
-+	  switch (h->root.type)
-+	    {
-+	    case bfd_link_hash_defined:
-+	    case bfd_link_hash_defweak:
-+	      return h->root.u.def.section;
-+
-+	    case bfd_link_hash_common:
-+	      return h->root.u.c.p->section;
-+
-+	    default:
-+	      break;
-+	    }
-+	}
-+    }
-+  else
-+    return bfd_section_from_elf_index (sec->owner, sym->st_shndx);
-+
-+  return NULL;
-+}
-+
-+/*
-+	NG ??? I'm marking the sections as standalone ie. I'm linking for
-+	standalone embedded applications, not for UNIX System V or any other
-+	OS/ABI - this may need to change when we deal with embedded PIC or
-+	dynamic linking
-+*/
-+
-+static void
-+nios2_elf32_post_process_headers (bfd *abfd,
-+     struct bfd_link_info *link_info ATTRIBUTE_UNUSED)
-+{
-+  Elf_Internal_Ehdr *i_ehdrp;	/* Elf file header, internal form */
-+
-+  i_ehdrp = elf_elfheader (abfd);
-+  i_ehdrp->e_ident[EI_OSABI] = ELFOSABI_STANDALONE;
-+}
-+
-+#define ELF_ARCH                            bfd_arch_nios2
-+#define ELF_MACHINE_CODE                EM_ALTERA_NIOS2
-+
-+/* for now we just make this 1, as we have no MMU in New Jersey */
-+
-+#define ELF_MAXPAGESIZE                 1
-+
-+/* relocation table lookup macros */
-+
-+#define bfd_elf32_bfd_reloc_type_lookup   nios2_elf32_bfd_reloc_type_lookup
-+
-+/* JUMP_TABLE_LINK macros */
-+
-+#define bfd_elf32_bfd_relax_section		  nios2_elf32_relax_section
-+
-+/* elf_info_to_howto (using RELA relocations) */
-+
-+#define elf_info_to_howto                 nios2_elf32_info_to_howto
-+
-+/* elf backend functions */
-+
-+#define elf_backend_can_gc_sections	1
-+
-+#define elf_backend_relocate_section      nios2_elf32_relocate_section
-+#define elf_backend_section_from_shdr     nios2_elf32_section_from_shdr
-+#define elf_backend_section_flags         nios2_elf32_section_flags
-+#define elf_backend_fake_sections         nios2_elf32_fake_sections
-+#define elf_backend_post_process_headers  nios2_elf32_post_process_headers
-+#define elf_backend_check_relocs		  nios2_elf32_check_relocs
-+
-+#define elf_backend_gc_mark_hook		  nios2_elf32_gc_mark_hook
-+
-+
-+
-+/* Support for SGI-ish mips targets. */
-+#define TARGET_LITTLE_SYM               bfd_elf32_littlenios2_vec
-+#define TARGET_LITTLE_NAME              "elf32-littlenios2"
-+//#define TARGET_BIG_SYM                        bfd_elf32_bignios2_vec
-+//#define TARGET_BIG_NAME                       "elf32-bignios2"
-+
-+#include "elf32-target.h"
---- binutils-2.15/bfd/libbfd.h	2004-02-12 00:23:20.000000000 +0100
-+++ binutils-2.15-nios2/bfd/libbfd.h	2005-05-17 12:20:13.000000000 +0200
-@@ -652,9 +652,11 @@ extern bfd_boolean _bfd_sh_align_load_sp
- #endif
- /* Extracted from init.c.  */
- /* Extracted from libbfd.c.  */
--bfd_boolean bfd_write_bigendian_4byte_int (bfd *, unsigned int);
-+bfd_boolean
-+bfd_write_bigendian_4byte_int PARAMS ((bfd *, unsigned int));
- 
--unsigned int bfd_log2 (bfd_vma x);
-+unsigned int
-+bfd_log2 PARAMS ((bfd_vma x));
- 
- /* Extracted from bfdio.c.  */
- /* Extracted from bfdwin.c.  */
-@@ -673,13 +675,17 @@ extern bfd *bfd_last_cache;
-     ((x)==bfd_last_cache? \
-       (FILE*) (bfd_last_cache->iostream): \
-        bfd_cache_lookup_worker(x))
--bfd_boolean bfd_cache_init (bfd *abfd);
-+bfd_boolean
-+bfd_cache_init PARAMS ((bfd *abfd));
- 
--bfd_boolean bfd_cache_close (bfd *abfd);
-+bfd_boolean
-+bfd_cache_close PARAMS ((bfd *abfd));
- 
--FILE* bfd_open_file (bfd *abfd);
-+FILE*
-+bfd_open_file PARAMS ((bfd *abfd));
- 
--FILE *bfd_cache_lookup_worker (bfd *abfd);
-+FILE *
-+bfd_cache_lookup_worker PARAMS ((bfd *abfd));
- 
- /* Extracted from reloc.c.  */
- #ifdef _BFD_MAKE_TABLE_bfd_reloc_code_real
-@@ -1504,6 +1510,21 @@ static const char *const bfd_reloc_code_
-   "BFD_RELOC_MSP430_16",
-   "BFD_RELOC_MSP430_16_PCREL_BYTE",
-   "BFD_RELOC_MSP430_16_BYTE",
-+  "BFD_RELOC_NIOS2_S16",
-+  "BFD_RELOC_NIOS2_U16",
-+  "BFD_RELOC_NIOS2_CALL26",
-+  "BFD_RELOC_NIOS2_IMM5",
-+  "BFD_RELOC_NIOS2_CACHE_OPX",
-+  "BFD_RELOC_NIOS2_IMM6",
-+  "BFD_RELOC_NIOS2_IMM8",
-+  "BFD_RELOC_NIOS2_HI16",
-+  "BFD_RELOC_NIOS2_LO16",
-+  "BFD_RELOC_NIOS2_HIADJ16",
-+  "BFD_RELOC_NIOS2_GPREL",
-+  "BFD_RELOC_NIOS2_UJMP",
-+  "BFD_RELOC_NIOS2_CJMP",
-+  "BFD_RELOC_NIOS2_CALLR",
-+  "BFD_RELOC_NIOS2_ALIGN",
-   "BFD_RELOC_IQ2000_OFFSET_16",
-   "BFD_RELOC_IQ2000_OFFSET_21",
-   "BFD_RELOC_IQ2000_UHI16",
-@@ -1521,40 +1542,41 @@ static const char *const bfd_reloc_code_
- };
- #endif
- 
--reloc_howto_type *bfd_default_reloc_type_lookup
--   (bfd *abfd, bfd_reloc_code_real_type  code);
-+reloc_howto_type *
-+bfd_default_reloc_type_lookup PARAMS ((bfd *abfd, bfd_reloc_code_real_type  code));
- 
--bfd_boolean bfd_generic_relax_section
--   (bfd *abfd,
-+bfd_boolean
-+bfd_generic_relax_section PARAMS ((bfd *abfd,
-     asection *section,
-     struct bfd_link_info *,
--    bfd_boolean *);
-+    bfd_boolean *));
- 
--bfd_boolean bfd_generic_gc_sections
--   (bfd *, struct bfd_link_info *);
-+bfd_boolean
-+bfd_generic_gc_sections PARAMS ((bfd *, struct bfd_link_info *));
- 
--bfd_boolean bfd_generic_merge_sections
--   (bfd *, struct bfd_link_info *);
-+bfd_boolean
-+bfd_generic_merge_sections PARAMS ((bfd *, struct bfd_link_info *));
- 
--bfd_byte *bfd_generic_get_relocated_section_contents
--   (bfd *abfd,
-+bfd_byte *
-+bfd_generic_get_relocated_section_contents PARAMS ((bfd *abfd,
-     struct bfd_link_info *link_info,
-     struct bfd_link_order *link_order,
-     bfd_byte *data,
-     bfd_boolean relocatable,
--    asymbol **symbols);
-+    asymbol **symbols));
- 
- /* Extracted from archures.c.  */
- extern const bfd_arch_info_type bfd_default_arch_struct;
--bfd_boolean bfd_default_set_arch_mach
--   (bfd *abfd, enum bfd_architecture arch, unsigned long mach);
-+bfd_boolean
-+bfd_default_set_arch_mach PARAMS ((bfd *abfd, enum bfd_architecture arch, unsigned long mach));
- 
--const bfd_arch_info_type *bfd_default_compatible
--   (const bfd_arch_info_type *a, const bfd_arch_info_type *b);
-+const bfd_arch_info_type *
-+bfd_default_compatible PARAMS ((const bfd_arch_info_type *a, const bfd_arch_info_type *b));
- 
--bfd_boolean bfd_default_scan
--   (const struct bfd_arch_info *info, const char *string);
-+bfd_boolean
-+bfd_default_scan PARAMS ((const struct bfd_arch_info *info, const char *string));
- 
- /* Extracted from elf.c.  */
--struct elf_internal_shdr *bfd_elf_find_section (bfd *abfd, char *name);
-+struct elf_internal_shdr *
-+bfd_elf_find_section PARAMS ((bfd *abfd, char *name));
- 
---- binutils-2.15/bfd/reloc.c	2004-01-21 12:17:53.000000000 +0100
-+++ binutils-2.15-nios2/bfd/reloc.c	2005-05-17 12:20:13.000000000 +0200
-@@ -3943,6 +3943,39 @@ ENUMDOC
-   msp430 specific relocation codes
- 
- ENUM
-+  BFD_RELOC_NIOS2_S16
-+ENUMX
-+  BFD_RELOC_NIOS2_U16
-+ENUMX
-+  BFD_RELOC_NIOS2_CALL26
-+ENUMX
-+  BFD_RELOC_NIOS2_IMM5
-+ENUMX
-+  BFD_RELOC_NIOS2_CACHE_OPX
-+ENUMX
-+  BFD_RELOC_NIOS2_IMM6
-+ENUMX
-+  BFD_RELOC_NIOS2_IMM8
-+ENUMX
-+  BFD_RELOC_NIOS2_HI16
-+ENUMX
-+  BFD_RELOC_NIOS2_LO16
-+ENUMX
-+  BFD_RELOC_NIOS2_HIADJ16
-+ENUMX
-+  BFD_RELOC_NIOS2_GPREL
-+ENUMX 
-+  BFD_RELOC_NIOS2_UJMP
-+ENUMX
-+  BFD_RELOC_NIOS2_CJMP
-+ENUMX
-+  BFD_RELOC_NIOS2_CALLR
-+ENUMX
-+  BFD_RELOC_NIOS2_ALIGN
-+ENUMDOC
-+  Relocations used by the Altera New Jersey core
-+
-+ENUM
-   BFD_RELOC_IQ2000_OFFSET_16
- ENUMX
-   BFD_RELOC_IQ2000_OFFSET_21
---- binutils-2.15/bfd/srec.c	2003-11-30 19:40:41.000000000 +0100
-+++ binutils-2.15-nios2/bfd/srec.c	2005-05-17 12:20:13.000000000 +0200
-@@ -1009,9 +1009,14 @@ srec_write_header (abfd)
- {
-   unsigned int len = strlen (abfd->filename);
- 
--  /* I'll put an arbitrary 40 char limit on header size.  */
--  if (len > 40)
--    len = 40;
-+  /* validate Chunk for header */
-+  if (Chunk == 0)
-+    Chunk = 1;
-+  else if (Chunk > MAXCHUNK - 2) /* S0 has 2 address bytes */
-+    Chunk = MAXCHUNK - 2;
-+
-+  if (len > Chunk)
-+    len = Chunk;
- 
-   return srec_write_record (abfd, 0, (bfd_vma) 0,
- 			    abfd->filename, abfd->filename + len);
---- binutils-2.15/bfd/targets.c	2004-05-17 21:36:04.000000000 +0200
-+++ binutils-2.15-nios2/bfd/targets.c	2005-05-17 12:20:13.000000000 +0200
-@@ -559,6 +559,7 @@ extern const bfd_target bfd_elf32_nbigmi
- extern const bfd_target bfd_elf32_nlittlemips_vec;
- extern const bfd_target bfd_elf32_ntradbigmips_vec;
- extern const bfd_target bfd_elf32_ntradlittlemips_vec;
-+extern const bfd_target bfd_elf32_littlenios2_vec;
- extern const bfd_target bfd_elf32_openrisc_vec;
- extern const bfd_target bfd_elf32_or32_big_vec;
- extern const bfd_target bfd_elf32_pj_vec;
-@@ -746,6 +747,7 @@ extern const bfd_target sco5_core_vec;
- extern const bfd_target trad_core_vec;
- 
- extern const bfd_target bfd_elf32_am33lin_vec;
-+extern const bfd_target bfd_elf32_littlenios2_vec;
- static const bfd_target * const _bfd_target_vector[] = {
- 
- #ifdef SELECT_VECS
-@@ -854,6 +856,7 @@ static const bfd_target * const _bfd_tar
- 	&bfd_elf32_ntradbigmips_vec,
- 	&bfd_elf32_ntradlittlemips_vec,
- #endif
-+	&bfd_elf32_littlenios2_vec,
- 	&bfd_elf32_openrisc_vec,
- 	&bfd_elf32_or32_big_vec,
- 	&bfd_elf32_pj_vec,
---- binutils-2.15/binutils/nios2_binutils_xfail.lst	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/binutils/nios2_binutils_xfail.lst	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1 @@
-+No xfails
---- binutils-2.15/binutils/readelf.c	2004-05-17 21:35:52.000000000 +0200
-+++ binutils-2.15-nios2/binutils/readelf.c	2005-05-17 12:20:13.000000000 +0200
-@@ -110,6 +110,8 @@
- 
- #include "aout/ar.h"
- 
-+#include "elf/nios2.h"
-+
- #include "bucomm.h"
- #include "getopt.h"
- #include "libiberty.h"
-@@ -668,6 +670,7 @@ guess_is_rela (unsigned long e_machine)
-     case EM_XTENSA:
-     case EM_XTENSA_OLD:
-     case EM_M32R:
-+    case EM_ALTERA_NIOS2:
-       return TRUE;
- 
-     case EM_MMA:
-@@ -1166,6 +1169,10 @@ dump_relocations (FILE *file,
- 	case EM_XTENSA:
- 	  rtype = elf_xtensa_reloc_type (type);
- 	  break;
-+
-+	case EM_ALTERA_NIOS2:
-+	  rtype = elf_nios2_reloc_type (type);
-+	  break;
- 	}
- 
-       if (rtype == NULL)
-@@ -1649,6 +1656,7 @@ get_machine_name (unsigned e_machine)
-     case EM_IQ2000:       	return "Vitesse IQ2000";
-     case EM_XTENSA_OLD:
-     case EM_XTENSA:		return "Tensilica Xtensa Processor";
-+    case EM_ALTERA_NIOS2:	return "Altera Nios II";
-     default:
-       sprintf (buff, _("<unknown>: %x"), e_machine);
-       return buff;
---- binutils-2.15/binutils/testsuite/binutils-all/bintest.s	1999-05-03 09:29:11.000000000 +0200
-+++ binutils-2.15-nios2/binutils/testsuite/binutils-all/bintest.s	2005-05-17 12:20:13.000000000 +0200
-@@ -1,5 +1,8 @@
- 	.globl text_symbol
- 	.text
-+	# this is needed to get the readelf -s, -S and -r tests to work
-+	# with nios2 as it has relaxation on by default
-+	.set norelax
- text_symbol:	
- static_text_symbol:
- 	.long	1
---- binutils-2.15/binutils-2.15_copied	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/binutils-2.15_copied	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1 @@
-+timestamp
---- binutils-2.15/binutils-2.15_untarred	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/binutils-2.15_untarred	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1 @@
-+timestamp
---- binutils-2.15/configure	2004-05-17 21:36:20.000000000 +0200
-+++ binutils-2.15-nios2/configure	2005-05-17 12:20:13.000000000 +0200
-@@ -1434,6 +1434,10 @@ case "${target}" in
-   mips*-*-*)
-     noconfigdirs="$noconfigdirs gprof ${libgcj}"
-     ;;
-+  nios2-*-*)
-+    skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'`
-+    noconfigdirs="$noconfigdirs"
-+    ;;
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
---- binutils-2.15/configure.in	2004-05-17 21:40:54.000000000 +0200
-+++ binutils-2.15-nios2/configure.in	2005-05-17 12:20:13.000000000 +0200
-@@ -18,6 +18,7 @@
- ##############################################################################
- ### WARNING: this file contains embedded tabs.  Do not run untabify on this file.
- 
-+
- AC_INIT(move-if-change)
- AC_PREREQ(2.13)
- AC_CANONICAL_SYSTEM
-@@ -667,6 +668,10 @@ case "${target}" in
-   mips*-*-*)
-     noconfigdirs="$noconfigdirs gprof ${libgcj}"
-     ;;
-+  nios2-*-*)
-+    skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'`
-+    noconfigdirs="$noconfigdirs"
-+    ;;
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
---- binutils-2.15/gas/Makefile.in	2004-05-17 21:36:07.000000000 +0200
-+++ binutils-2.15-nios2/gas/Makefile.in	2005-05-17 12:20:13.000000000 +0200
-@@ -299,6 +299,7 @@ CPU_TYPES = \
- 	mn10200 \
- 	mn10300 \
- 	msp430 \
-+	nios2 \
- 	ns32k \
- 	openrisc \
- 	or32 \
-@@ -493,6 +494,7 @@ TARGET_CPU_CFILES = \
- 	config/tc-mn10200.c \
- 	config/tc-mn10300.c \
- 	config/tc-msp430.c \
-+	config/tc-nios2.c \
- 	config/tc-ns32k.c \
- 	config/tc-openrisc.c \
- 	config/tc-or32.c \
-@@ -545,6 +547,7 @@ TARGET_CPU_HFILES = \
- 	config/tc-mn10200.h \
- 	config/tc-mn10300.h \
- 	config/tc-msp430.h \
-+	config/tc-nios2.h \
- 	config/tc-ns32k.h \
- 	config/tc-openrisc.h \
- 	config/tc-or32.h \
-@@ -1171,6 +1174,13 @@ DEPTC_msp430_elf = $(INCDIR)/symcat.h $(
-   subsegs.h $(INCDIR)/obstack.h $(INCDIR)/opcode/msp430.h \
-   $(INCDIR)/safe-ctype.h
- 
-+DEPTC_nios2_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
-+  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
-+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-nios2.h \
-+  subsegs.h $(INCDIR)/obstack.h $(INCDIR)/safe-ctype.h \
-+  $(INCDIR)/opcode/nios2.h itbl-ops.h dwarf2dbg.h $(INCDIR)/elf/nios2.h \
-+  $(INCDIR)/elf/reloc-macros.h
-+  
- DEPTC_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
-   $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
-   $(INCDIR)/opcode/ns32k.h $(INCDIR)/obstack.h
-@@ -1824,6 +1834,12 @@ DEPOBJ_msp430_elf = $(INCDIR)/symcat.h $
-   $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
-   struc-symbol.h dwarf2dbg.h $(INCDIR)/aout/aout64.h
- 
-+DEPOBJ_nios2_elf = $(INCDIR)/symcat.h $(srcdir)/config/obj-elf.h \
-+  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
-+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-nios2.h \
-+  $(INCDIR)/safe-ctype.h subsegs.h $(INCDIR)/obstack.h \
-+  $(INCDIR)/elf/nios2.h $(INCDIR)/elf/reloc-macros.h 
-+
- DEPOBJ_ns32k_aout = $(INCDIR)/symcat.h $(srcdir)/config/obj-aout.h \
-   $(srcdir)/config/tc-ns32k.h $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h \
-   $(INCDIR)/aout/aout64.h $(INCDIR)/obstack.h
-@@ -2349,6 +2365,10 @@ DEP_msp430_elf = $(srcdir)/config/obj-el
-   $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
-   $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-msp430.h
- 
-+DEP_nios2_elf = $(srcdir)/config/obj-elf.h $(INCDIR)/symcat.h \
-+  $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/internal.h \
-+  $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h $(srcdir)/config/tc-nios2.h
-+  
- DEP_ns32k_aout = $(srcdir)/config/obj-aout.h $(srcdir)/config/tc-ns32k.h \
-   $(BFDDIR)/libaout.h $(INCDIR)/bfdlink.h
- 
---- binutils-2.15/gas/config/obj-elf.c	2004-05-17 21:36:08.000000000 +0200
-+++ binutils-2.15-nios2/gas/config/obj-elf.c	2005-05-17 12:20:13.000000000 +0200
-@@ -53,6 +53,10 @@
- #include "elf/i370.h"
- #endif
- 
-+#ifdef TC_NIOS2
-+#include "elf/nios2.h"
-+#endif
-+
- static void obj_elf_line (int);
- static void obj_elf_size (int);
- static void obj_elf_type (int);
---- binutils-2.15/gas/config/tc-nios2.c	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/config/tc-nios2.c	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,2996 @@
-+/* tc-nios2.c -- assemble code for a New Jersey processor.
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+
-+   This file is part of GAS.
-+
-+   GAS 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.
-+
-+   GAS 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 GAS; see the file COPYING.  If not, write to the Free
-+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-+   02111-1307, USA.  */
-+
-+
-+#include <stdio.h>
-+#include <limits.h>
-+#include <string.h>
-+#include <stdlib.h>
-+#include "as.h"
-+#include "opcode/nios2.h"
-+#include "elf/nios2.h"
-+#include "tc-nios2.h"
-+#include "bfd.h"
-+#include "dwarf2dbg.h"
-+#include "subsegs.h"
-+#include "safe-ctype.h"
-+
-+#ifndef OBJ_ELF
-+	/* we are not supporting any other target
-+	   so we throw a compile time error */
-+OBJ_ELF not defined
-+#endif
-+  typedef enum
-+{
-+  relax_section = 0,
-+  relax_none,
-+  relax_all
-+}
-+relax_optionT;
-+
-+
-+/* struct contains all assembler options set with .set */
-+struct
-+{
-+  /*
-+     .set noat -> noat = 1 allows assembly code to use at without warning
-+     and macro expansions will generate a warning.
-+     .set at -> noat = 0, assembly code using at will warn
-+     macro expansions will not generate warnings
-+   */
-+  bfd_boolean noat;
-+
-+  /*
-+     .set nobreak -> nobreak = 1 allows assembly code to use ba,bt without warning
-+     .set break -> nobreak = 0, assembly code using ba,bt will warn
-+   */
-+  bfd_boolean nobreak;
-+
-+  /*
-+     .cmd line option -relax-all allows all branches and calls to be replaced
-+     with longer versions
-+     -no-relax inhibits branch/call conversion
-+     default value is relax_section, which relaxes branches within a section
-+   */
-+  relax_optionT relax;
-+
-+}
-+nios2_as_options = 
-+{
-+FALSE, FALSE, relax_section};
-+
-+
-+typedef struct nios2_insn_reloc
-+{
-+  /* any expression in the instruction is parsed into
-+     this field which is passed to fix_new_exp() to
-+     generate a fixup */
-+  expressionS reloc_expression;
-+
-+  /* the type of the relocation to be applied */
-+  bfd_reloc_code_real_type reloc_type;
-+
-+  /* pc relative */
-+  unsigned int reloc_pcrel;
-+
-+  /* the next relocation to be applied to the instruction */
-+  struct nios2_insn_reloc *reloc_next;
-+}
-+nios2_insn_relocS;
-+
-+
-+/* ------------------------------------------------------------------
-+	This struct is used by the functions in tc-nios2.c to assemble an
-+	instruction
-+   ------------------------------------------------------------------*/
-+
-+typedef struct nios2_insn_info
-+{
-+  /* assembled instruction */
-+  unsigned long insn_code;
-+  /* ptr to the relevant bit of the opcode table */
-+  const struct nios2_opcode *insn_nios2_opcode;
-+  /* after parsing ptrs to the tokens in the instruction fill this array
-+     it is terminated with a null pointer ( hence the first +1
-+     The second +1 is because in some parts of the code the opcode
-+     is not counted as a token, but still placed in this array*/
-+  const char *insn_tokens[NIOS2_MAX_INSN_TOKENS + 1 + 1];
-+
-+  /* this holds information used to generate fixups
-+     and eventually relocations if it is not null */
-+  nios2_insn_relocS *insn_reloc;
-+}
-+nios2_insn_infoS;
-+
-+
-+/*
-+	This struct associates an argument assemble function with
-+	an argument syntax string. Used by the assembler to find out
-+	how to parse and assemble a set of instruction operands and return the instruction
-+	field values
-+*/
-+
-+typedef struct nios2_arg_info
-+{
-+  const char *args;
-+  void (*assemble_args_func) (nios2_insn_infoS * insn_info);
-+}
-+nios2_arg_infoS;
-+
-+/*
-+	This struct is used to convert New Jersey pseudo-ops into the
-+	corresponding real op
-+ */
-+typedef struct nios2_ps_insn_info
-+{
-+  const char *pseudo_insn;
-+  const char *insn;
-+  const char *arg_modifier;
-+  void (*arg_modifer_func) (const char *arg, char **parsedArgs, int numArg,
-+			    int startIndex);
-+  int num;
-+  int index;
-+}
-+nios2_ps_insn_infoS;
-+
-+
-+
-+/* function prototypes */
-+static void NIOS2_CHECK_ASSEMBLY (unsigned int opcode,
-+				  const char *exp_opcode);
-+static void s_nios2_sdata (int);
-+void nios2_assemble_args_dst (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_tsi (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_tsu (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_o (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_m (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_s (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_tis (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_dc (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_cs (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_ldst (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_none (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_dsj (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_is (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_sto (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_d (nios2_insn_infoS * insn_info);
-+void nios2_assemble_args_b (nios2_insn_infoS * insn_info);
-+
-+nios2_insn_relocS *nios2_insn_reloc_new (bfd_reloc_code_real_type reloc_type,
-+					 unsigned int pcrel);
-+void nios2_insn_reloc_destroy (nios2_insn_relocS * reloc);
-+unsigned long nios2_assemble_expression (const char *exprstr,
-+					 nios2_insn_infoS * insn,
-+					 nios2_insn_relocS * prev_reloc,
-+					 bfd_reloc_code_real_type reloc_type,
-+					 unsigned int pcrel);
-+char *nios2_consume_separator (char *argStr, const char *separator);
-+char *nios2_consume_arg (char *argStr, const char *argType);
-+void nios2_parse_args (char *argStr, const char *parseStr, char **parsedArgs);
-+
-+void nios2_modify_arg (const char *modifier, char **parsedArgs, int unused,
-+		       int index);
-+void nios2_append_arg (const char *append, char **parsedArgs, int numAppend,
-+		       int startIndex);
-+void nios2_insert_arg (const char *insert, char **parsedArgs, int numInsert,
-+		       int startIndex);
-+void nios2_swap_args (const char *unused, char **parsedArgs, int index_1,
-+		      int index_2);
-+void nios2_negate_arg (const char *modifier ATTRIBUTE_UNUSED,
-+		       char **parsedArgs, int unused ATTRIBUTE_UNUSED,
-+		       int index);
-+void nios2_translate_pseudo_insn (nios2_insn_infoS * insn);
-+valueT md_chars_to_number (char *buf, int n);
-+void md_number_to_imm (char *buf, valueT val, int n);
-+void md_number_to_disp (char *buf, valueT val, int n);
-+void md_number_to_field (char *buf, valueT val, int n);
-+static void nios2_align (int log_size, const char *pfill, symbolS * sym);
-+static void s_nios2_ucons (int nbytes);
-+static void s_nios2_set (int equiv);
-+static void s_nios2_align (int ignore);
-+static void s_nios2_text (int);
-+static void s_nios2_data (int);
-+static void s_nios2_section (int);
-+static bfd_boolean nios2_coproc_reg (const char *reg_name);
-+static void output_insn (void);
-+static void output_ubranch (void);
-+static void output_cbranch (void);
-+static void output_call (void);
-+static void output_movia (void);
-+
-+
-+bfd_boolean nios2_check_overflow (valueT fixup, reloc_howto_type * howto);
-+
-+/* The known current alignment of the current section.  */
-+static int nios2_current_align;
-+static segT nios2_current_align_seg;
-+
-+/* The last seen label in the current section.  This is used to auto-align
-+   labels preceeding instructions.  */
-+static symbolS *nios2_last_label;
-+
-+
-+static int nios2_auto_align_on = 1;
-+
-+/* This array holds the chars that always start a comment.  If the
-+    pre-processor is disabled, these aren't very useful */
-+const char comment_chars[] = "#";
-+
-+/* This array holds the chars that only start a comment at the beginning of
-+   a line.  If the line seems to have the form '# 123 filename'
-+   .line and .file directives will appear in the pre-processed output */
-+/* Note that input_file.c hand checks for '#' at the beginning of the
-+   first line of the input file.  This is because the compiler outputs
-+   #NO_APP at the beginning of its output.  */
-+/* Also note that C style comments are always supported.  */
-+const char line_comment_chars[] = "#";
-+
-+/* This array holds machine specific line separator characters.  */
-+const char line_separator_chars[] = ";";
-+
-+/* Chars that can be used to separate mant from exp in floating point nums */
-+const char EXP_CHARS[] = "eE";
-+
-+/* Chars that mean this number is a floating point constant */
-+/* As in 0f12.456 */
-+/* or    0d1.2345e12 */
-+const char FLT_CHARS[] = "rRsSfFdDxXpP";
-+
-+/* Also be aware that MAXIMUM_NUMBER_OF_CHARS_FOR_FLOAT may have to be
-+   changed in read.c .  Ideally it shouldn't have to know about it at all,
-+   but nothing is ideal around here.
-+ */
-+
-+/* handle of the OPCODE hash table */
-+static struct hash_control *nios2_opcode_hash = NULL;
-+
-+/* handle of the Register hash table */
-+static struct hash_control *nios2_reg_hash = NULL;
-+
-+/* handle of the parse args hash table */
-+static struct hash_control *nios2_arg_hash = NULL;
-+
-+/* pseudo-op hash table */
-+static struct hash_control *nios2_ps_hash = NULL;
-+
-+/* mode of the assembler */
-+typedef enum
-+{
-+  NIOS2_MODE_ASSEMBLE,		// ordinary operation
-+  NIOS2_MODE_TEST		// hidden mode used for self testing
-+}
-+NIOS2_MODE;
-+
-+static NIOS2_MODE nios2_mode = NIOS2_MODE_ASSEMBLE;
-+
-+/* this function is used to in self-checking mode
-+   to check the assembled instruction
-+   opcode should be the assembled opcode, and exp_opcode
-+   the parsed string representing the expected opcode */
-+void
-+NIOS2_CHECK_ASSEMBLY (unsigned int opcode, const char *exp_opcode)
-+{
-+  if (nios2_mode == NIOS2_MODE_TEST)
-+    {
-+      if ((exp_opcode) == NULL)
-+	{
-+	  as_bad (_("expecting opcode string in self test mode"));
-+	}
-+      else if ((opcode) != strtoul ((exp_opcode), NULL, 16))
-+	{
-+	  as_bad (_("assembly 0x%08x, expected %s"), (opcode), (exp_opcode));
-+	}
-+    }
-+}
-+
-+/* Machine-dependent command-line options */
-+
-+const char *md_shortopts = "r";
-+
-+struct option md_longopts[] = {
-+#define OPTION_RELAX_ALL (OPTION_MD_BASE + 0)
-+  {"relax-all", no_argument, NULL, OPTION_RELAX_ALL},
-+#define OPTION_NORELAX (OPTION_MD_BASE + 1)
-+  {"no-relax", no_argument, NULL, OPTION_NORELAX},
-+#define OPTION_RELAX_SECTION (OPTION_MD_BASE + 2)
-+  {"relax-section", no_argument, NULL, OPTION_RELAX_SECTION}
-+};
-+
-+size_t md_longopts_size = sizeof (md_longopts);
-+
-+/* Machine dependent pseudo-ops
-+   These are actually assembler directives
-+   format of each entry is
-+
-+  { "directive", handler_func, param }
-+*/
-+const pseudo_typeS md_pseudo_table[] = {
-+  {"align", s_nios2_align, 0},
-+  {"text", s_nios2_text, 0},
-+  {"data", s_nios2_data, 0},
-+  {"section", s_nios2_section, 0},
-+  {"section.s", s_nios2_section, 0},
-+  {"sect", s_nios2_section, 0},
-+  {"sect.s", s_nios2_section, 0},
-+  /* .dword and .half are included for
-+     compatibility with MIPS */
-+  {"dword", cons, 8},
-+  {"half", cons, 2},
-+  /* NIOS2 native word size is 4 bytes, so we override
-+     the GAS default of 2 */
-+  {"word", cons, 4},
-+  /* explicitly unaligned directives */
-+  {"2byte", s_nios2_ucons, 2},
-+  {"4byte", s_nios2_ucons, 4},
-+  {"8byte", s_nios2_ucons, 8},
-+  {"16byte", s_nios2_ucons, 16},
-+#ifdef OBJ_ELF
-+  {"sdata", s_nios2_sdata, 0},
-+#endif
-+  {"set", s_nios2_set, 0},
-+  {NULL, NULL, 0}
-+};
-+
-+#define BYTE_F		32764
-+#define BYTE_B		-32768
-+#define ABS		(long)0xffffffff	/* special value to indicate non-pc relative jmp */
-+
-+#define UBRANCH		1
-+#define UJMP		2
-+#define CBRANCH		3
-+#define CJMP		4
-+
-+
-+#define RELAX_MAX_SIZE(type) nios2_relax_table[nios2_relax_table[type].rlx_more].rlx_length
-+#define RELAX_SIZE(type) nios2_relax_table[type].rlx_length
-+#define RELAX_SUBSTATE(type)  type
-+
-+/* machine dependent relaxations */
-+struct relax_type nios2_relax_table[] = {
-+  /* first entry unused (ends relaxation sequence) */
-+  {1, 1, 0, 0},
-+  /* unconditional branch */
-+  {BYTE_F, BYTE_B, 4, 2},	/* br label (label is in range) */
-+  /* unconditional jmp */
-+  {ABS, ABS, 12, 0},		/* movhi at, %hi(label) ; ori at, %lo(label) ; jmp at */
-+  /* conditional branch */
-+  {BYTE_F, BYTE_B, 4, 4},	/* br{cond} label (label is in range) */
-+  /* conditional jmp */
-+  {ABS, ABS, 16, 0},		/* br{opp_cond} skip ; movhi at, %hi(label) ; ori at, %lo(label) ; jmp at ; skip: } */
-+};
-+
-+
-+/* this is just the generic relax_frag function but
-+   amended to include absolute jmps in the relax table
-+ */
-+
-+long
-+nios2_relax_frag (segT segment, fragS * fragP, long stretch)
-+{
-+  const relax_typeS *this_type;
-+  const relax_typeS *start_type;
-+  relax_substateT next_state;
-+  relax_substateT this_state;
-+  long growth;
-+  offsetT aim;
-+  addressT target;
-+  addressT address;
-+  symbolS *symbolP;
-+  const relax_typeS *table;
-+
-+  target = fragP->fr_offset;
-+  address = fragP->fr_address;
-+  table = nios2_relax_table;
-+  this_state = fragP->fr_subtype;
-+  start_type = this_type = table + this_state;
-+  symbolP = fragP->fr_symbol;
-+
-+  if (symbolP)
-+    {
-+      fragS *sym_frag;
-+
-+      sym_frag = symbol_get_frag (symbolP);
-+
-+#ifndef DIFF_EXPR_OK
-+#if !defined (MANY_SEGMENTS) && !defined (BFD_ASSEMBLER)
-+      know ((S_GET_SEGMENT (symbolP) == SEG_ABSOLUTE)
-+	    || (S_GET_SEGMENT (symbolP) == SEG_DATA)
-+	    || (S_GET_SEGMENT (symbolP) == SEG_BSS)
-+	    || (S_GET_SEGMENT (symbolP) == SEG_TEXT));
-+#endif
-+      know (sym_frag != NULL);
-+#endif
-+      know (!(S_GET_SEGMENT (symbolP) == absolute_section)
-+	    || sym_frag == &zero_address_frag);
-+      target += S_GET_VALUE (symbolP);
-+
-+      /* If frag has yet to be reached on this pass,
-+         assume it will move by STRETCH just as we did.
-+         If this is not so, it will be because some frag
-+         between grows, and that will force another pass.  */
-+
-+      if (stretch != 0
-+	  && sym_frag->relax_marker != fragP->relax_marker
-+	  && S_GET_SEGMENT (symbolP) == segment)
-+	{
-+	  target += stretch;
-+	}
-+    }
-+
-+
-+  /* NG we subtract 4 because all pc relative branches are
-+     from the next instruction */
-+  aim = target - address - fragP->fr_fix - 4;
-+
-+  if (aim < 0)
-+    {
-+      /* Look backwards.  */
-+      for (next_state = this_type->rlx_more; next_state;)
-+	{
-+	  if (aim >= this_type->rlx_backward
-+	      || this_type->rlx_backward == ABS)
-+	    next_state = 0;
-+	  else
-+	    {
-+	      /* Grow to next state.  */
-+	      this_state = next_state;
-+	      this_type = table + this_state;
-+	      next_state = this_type->rlx_more;
-+	    }
-+	}
-+    }
-+  else
-+    {
-+      /* Look forwards.  */
-+
-+      for (next_state = this_type->rlx_more; next_state;)
-+	{
-+	  if (aim <= this_type->rlx_forward || this_type->rlx_forward == ABS)
-+	    next_state = 0;
-+	  else
-+	    {
-+	      /* Grow to next state.  */
-+	      this_state = next_state;
-+	      this_type = table + this_state;
-+	      next_state = this_type->rlx_more;
-+	    }
-+	}
-+    }
-+
-+
-+  growth = this_type->rlx_length - start_type->rlx_length;
-+
-+  if (growth != 0)
-+    fragP->fr_subtype = this_state;
-+
-+  return growth;
-+}
-+
-+/*--------------------------------------------------------------------------------
-+   The next table associates pointers to functions which parse the arguments to an
-+   instruction and fill in the relevant fields of the instruction
-+  --------------------------------------------------------------------------------*/
-+
-+const nios2_arg_infoS nios2_arg_info_structs[] = {
-+  /* args                 assemble_args_func */
-+  {"d,s,t", nios2_assemble_args_dst},
-+  {"d,s,t,E", nios2_assemble_args_dst},
-+  {"t,s,i", nios2_assemble_args_tsi},
-+  {"t,s,i,E", nios2_assemble_args_tsi},
-+  {"t,s,u", nios2_assemble_args_tsu},
-+  {"t,s,u,E", nios2_assemble_args_tsu},
-+  {"s,t,o", nios2_assemble_args_sto},
-+  {"s,t,o,E", nios2_assemble_args_sto},
-+  {"o", nios2_assemble_args_o},
-+  {"o,E", nios2_assemble_args_o},
-+  {"s", nios2_assemble_args_s},
-+  {"s,E", nios2_assemble_args_s},
-+  {"", nios2_assemble_args_none},
-+  {"E", nios2_assemble_args_none},
-+  {"i(s)", nios2_assemble_args_is},
-+  {"i(s)E", nios2_assemble_args_is},
-+  {"m", nios2_assemble_args_m},
-+  {"m,E", nios2_assemble_args_m},
-+  {"t,i(s)", nios2_assemble_args_tis},
-+  {"t,i(s)E", nios2_assemble_args_tis},
-+  {"d,c", nios2_assemble_args_dc},
-+  {"d,c,E", nios2_assemble_args_dc},
-+  {"c,s", nios2_assemble_args_cs},
-+  {"c,s,E", nios2_assemble_args_cs},
-+  {"l,d,s,t", nios2_assemble_args_ldst},
-+  {"l,d,s,t,E", nios2_assemble_args_ldst},
-+  {"d,s,j", nios2_assemble_args_dsj},
-+  {"d,s,j,E", nios2_assemble_args_dsj},
-+  {"d", nios2_assemble_args_d},
-+  {"d,E", nios2_assemble_args_d},
-+  {"b", nios2_assemble_args_b},
-+  {"b,E", nios2_assemble_args_b}
-+};
-+
-+#define NIOS2_NUM_ARGS \
-+	((sizeof(nios2_arg_info_structs)/sizeof(nios2_arg_info_structs[0])))
-+const int nios2_num_arg_info_structs = NIOS2_NUM_ARGS;
-+
-+
-+const nios2_ps_insn_infoS nios2_ps_insn_info_structs[] = {
-+  /* pseudo-op         real-op         arg                     arg_modifier_func   num         index */
-+  {"mov", "add", "zero", nios2_append_arg, 1, 3},
-+  {"movi", "addi", "zero", nios2_insert_arg, 1, 2},
-+  {"movhi", "orhi", "zero", nios2_insert_arg, 1, 2},
-+  {"movui", "ori", "zero", nios2_insert_arg, 1, 2},
-+  {"movia", "orhi", "zero", nios2_insert_arg, 1, 2},
-+  {"nop", "add", "zero", nios2_append_arg, 3, 1},
-+  {"bgt", "blt", "", nios2_swap_args, 1, 2},
-+  {"bgtu", "bltu", "", nios2_swap_args, 1, 2},
-+  {"ble", "bge", "", nios2_swap_args, 1, 2},
-+  {"bleu", "bgeu", "", nios2_swap_args, 1, 2},
-+  {"cmpgt", "cmplt", "", nios2_swap_args, 2, 3},
-+  {"cmpgtu", "cmpltu", "", nios2_swap_args, 2, 3},
-+  {"cmple", "cmpge", "", nios2_swap_args, 2, 3},
-+  {"cmpleu", "cmpgeu", "", nios2_swap_args, 2, 3},
-+  {"cmpgti", "cmpgei", "+1", nios2_modify_arg, 0, 3},
-+  {"cmpgtui", "cmpgeui", "+1", nios2_modify_arg, 0, 3},
-+  {"cmplei", "cmplti", "+1", nios2_modify_arg, 0, 3},
-+  {"cmpleui", "cmpltui", "+1", nios2_modify_arg, 0, 3},
-+  {"subi", "addi", "", nios2_negate_arg, 0, 3}
-+  /* add further pseudo-ops here */
-+};
-+
-+#define NIOS2_NUM_PSEUDO_INSNS \
-+	((sizeof(nios2_ps_insn_info_structs)/sizeof(nios2_ps_insn_info_structs[0])))
-+const int nios2_num_ps_insn_info_structs = NIOS2_NUM_PSEUDO_INSNS;
-+
-+/* special relocation directive strings */
-+
-+struct nios2_special_relocS
-+{
-+  const char *string;
-+  bfd_reloc_code_real_type reloc_type;
-+};
-+
-+struct nios2_special_relocS nios2_special_reloc[] = {
-+  {"%hiadj", BFD_RELOC_NIOS2_HIADJ16},
-+  {"%hi", BFD_RELOC_NIOS2_HI16},
-+  {"%lo", BFD_RELOC_NIOS2_LO16},
-+  {"%gprel", BFD_RELOC_NIOS2_GPREL}
-+};
-+
-+#define NIOS2_NUM_SPECIAL_RELOCS \
-+	(sizeof(nios2_special_reloc)/sizeof(nios2_special_reloc[0]))
-+const int nios2_num_special_relocs = NIOS2_NUM_SPECIAL_RELOCS;
-+
-+/*
-+	The function nios2_modify_arg appends the string modifier to the string contained
-+	in the argument at index in the array parsedArgs[]
-+*/
-+void
-+nios2_modify_arg (const char *modifier,
-+		  char **parsedArgs, int unused ATTRIBUTE_UNUSED, int index)
-+{
-+  assert (index < NIOS2_MAX_INSN_TOKENS);
-+
-+/*
-+    we can't just strcat here because strcat will free the memory pointed to by the first
-+    argument and allocate new memory - but at this stage, parsedArgs[index] may point into
-+    the middle of a block of allocated memory, so trying to free it will cause a seg fault.
-+
-+ */
-+  char *tmp = parsedArgs[index];
-+  parsedArgs[index] =
-+    (char *) malloc (strlen (parsedArgs[index]) + strlen (modifier) + 1);
-+  strcpy (parsedArgs[index], tmp);
-+  strcat (parsedArgs[index], modifier);
-+}
-+
-+
-+void
-+nios2_negate_arg (const char *modifier ATTRIBUTE_UNUSED,
-+		  char **parsedArgs, int unused ATTRIBUTE_UNUSED, int index)
-+{
-+  char *tmp = parsedArgs[index];
-+  parsedArgs[index] =
-+    (char *) malloc (strlen ("~(") + strlen (parsedArgs[index]) +
-+		     strlen (")+1") + 1);
-+
-+  strcpy (parsedArgs[index], "~(");
-+  strcat (parsedArgs[index], tmp);
-+  strcat (parsedArgs[index], ")+1");
-+}
-+
-+/*
-+	The function nios2_swap_args swaps the pointers at indices index_1 and
-+	index_2 in the array parsedArgs[] - this is used for operand swapping
-+	for comparison operations
-+  */
-+void
-+nios2_swap_args (const char *unused ATTRIBUTE_UNUSED,
-+		 char **parsedArgs, int index_1, int index_2)
-+{
-+  char *tmp;
-+  assert (index_1 < NIOS2_MAX_INSN_TOKENS && index_2 < NIOS2_MAX_INSN_TOKENS);
-+  tmp = parsedArgs[index_1];
-+  parsedArgs[index_1] = parsedArgs[index_2];
-+  parsedArgs[index_2] = tmp;
-+}
-+
-+/*
-+	This function appends the string append to the array of strings in
-+	parsedArgs numAppend times starting at index startIndex in the array
-+*/
-+void
-+nios2_append_arg (const char *append, char **parsedArgs, int numAppend,
-+		  int startIndex)
-+{
-+  int i, count;
-+  char *tmp;
-+
-+  assert ((startIndex + numAppend) < NIOS2_MAX_INSN_TOKENS);
-+  i = startIndex;
-+  count = numAppend;
-+
-+  if (nios2_mode == NIOS2_MODE_TEST)
-+    tmp = parsedArgs[startIndex];
-+  else
-+    tmp = NULL;
-+
-+  while (count > 0)
-+    {
-+      parsedArgs[i] = (char *) append;
-+      ++i;
-+      --count;
-+    }
-+
-+  assert (i == (startIndex + numAppend));
-+  parsedArgs[i] = tmp;
-+  parsedArgs[i + 1] = NULL;
-+}
-+
-+/* This function inserts the string insert numInsert times in the array parsedArgs,
-+	starting at the index startIndex
-+ */
-+void
-+nios2_insert_arg (const char *insert, char **parsedArgs, int numInsert,
-+		  int startIndex)
-+{
-+  int i, count, from, to;
-+
-+  assert ((startIndex + numInsert) < NIOS2_MAX_INSN_TOKENS);
-+
-+  to = startIndex + numInsert;
-+  from = startIndex;
-+
-+  /* move the existing arguments up to create space */
-+  i = NIOS2_MAX_INSN_TOKENS;
-+  while ((i - numInsert) >= startIndex)
-+    {
-+      parsedArgs[i] = parsedArgs[i - numInsert];
-+      --i;
-+    }
-+
-+  i = startIndex;
-+  count = numInsert;
-+  while (count > 0)
-+    {
-+      parsedArgs[i] = (char *) insert;
-+      ++i;
-+      --count;
-+    }
-+}
-+
-+/*
-+	This function swaps the pseudo-op for a real op
-+	FIXME - only works for 1-to-1 correspondence
-+  */
-+void
-+nios2_translate_pseudo_insn (nios2_insn_infoS * insn)
-+{
-+
-+  nios2_ps_insn_infoS *ps_insn;
-+
-+  /* find which real insn the pseudo-op transates to and
-+     switch the insn_info ptr to point to it */
-+  ps_insn =
-+    (nios2_ps_insn_infoS *) hash_find (nios2_ps_hash,
-+				       insn->insn_nios2_opcode->name);
-+
-+  if (ps_insn != NULL)
-+    {
-+      insn->insn_nios2_opcode =
-+	(struct nios2_opcode *) hash_find (nios2_opcode_hash, ps_insn->insn);
-+      insn->insn_tokens[0] = insn->insn_nios2_opcode->name;
-+      // modify the args so they work with the real insn
-+      ps_insn->arg_modifer_func (ps_insn->arg_modifier,
-+				 (char **) insn->insn_tokens, ps_insn->num,
-+				 ps_insn->index);
-+    }
-+  else
-+    {
-+      // we cannot recover from this
-+      as_fatal (_("unrecognized pseudo-instruction %s"),
-+		ps_insn->pseudo_insn);
-+    }
-+}
-+
-+/********************************************************************
-+	The following functions are called by machine-independent parts of
-+	the assembler
-+ ********************************************************************/
-+
-+/*
-+   Function : void md_parse_option
-+              (char** option_ptr, int* argc_ptr, char*** argv_ptr)
-+
-+   Description :
-+
-+ */
-+int
-+md_parse_option (int c, char *arg ATTRIBUTE_UNUSED)
-+{
-+  switch (c)
-+    {
-+    case 'r':
-+      /* hidden option for self-test mode */
-+      nios2_mode = NIOS2_MODE_TEST;
-+      break;
-+    case OPTION_RELAX_ALL:
-+      nios2_as_options.relax = relax_all;
-+      break;
-+    case OPTION_NORELAX:
-+      nios2_as_options.relax = relax_none;
-+      break;
-+    case OPTION_RELAX_SECTION:
-+      nios2_as_options.relax = relax_section;
-+      break;
-+    default:
-+      return 0;
-+      break;
-+    }
-+
-+  return 1;
-+}
-+
-+/*
-+   Function : md_show_usage(FILE* stream)
-+
-+  Description : machine-dependent usage message
-+*/
-+void
-+md_show_usage (FILE * stream)
-+{
-+  fprintf (stream, "\
-+	NIOS2 options:\n\
-+  -relax-all		replace all branch and call instructions with jmp and callr sequences\n\
-+  -relax-section	replace identified out of range branches with jmp sequences (default)\n\
-+  -no-relax			do not replace any branches or calls\n");
-+}
-+
-+/*
-+   Function : void md_begin()
-+
-+   Description :
-+      This function is called once, at assembler startup time.
-+      It should set up all the tables, etc. that the MD part of the
-+	  assembler will need.
-+*/
-+void
-+md_begin ()
-+{
-+  int i;
-+  const char *inserted;
-+
-+  /* create and fill a hashtable for the New Jersey opcodes, registers and arguments */
-+  nios2_opcode_hash = hash_new ();
-+  nios2_reg_hash = hash_new ();
-+  nios2_arg_hash = hash_new ();
-+  nios2_ps_hash = hash_new ();
-+
-+  for (i = 0; i < NUMOPCODES; ++i)
-+    {
-+      inserted =
-+	hash_insert (nios2_opcode_hash, nios2_opcodes[i].name,
-+		     (PTR) & nios2_opcodes[i]);
-+      if (inserted != NULL)
-+	{
-+	  fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
-+		   nios2_opcodes[i].name, inserted);
-+	  /* Probably a memory allocation problem?  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+    }
-+
-+  for (i = 0; i < nios2_num_regs; ++i)
-+    {
-+      inserted =
-+	hash_insert (nios2_reg_hash, nios2_regs[i].name,
-+		     (PTR) & nios2_regs[i]);
-+      if (inserted != NULL)
-+	{
-+	  fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
-+		   nios2_regs[i].name, inserted);
-+	  /* Probably a memory allocation problem?  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+
-+    }
-+
-+  for (i = 0; i < nios2_num_arg_info_structs; ++i)
-+    {
-+      inserted =
-+	hash_insert (nios2_arg_hash, nios2_arg_info_structs[i].args,
-+		     (PTR) & nios2_arg_info_structs[i]);
-+      if (inserted != NULL)
-+	{
-+	  fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
-+		   nios2_arg_info_structs[i].args, inserted);
-+	  /* Probably a memory allocation problem?  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+    }
-+
-+  for (i = 0; i < nios2_num_ps_insn_info_structs; ++i)
-+    {
-+      inserted =
-+	hash_insert (nios2_ps_hash, nios2_ps_insn_info_structs[i].pseudo_insn,
-+		     (PTR) & nios2_ps_insn_info_structs[i]);
-+      if (inserted != NULL)
-+	{
-+	  fprintf (stderr, _("internal error: can't hash `%s': %s\n"),
-+		   nios2_ps_insn_info_structs[i].pseudo_insn, inserted);
-+	  /* Probably a memory allocation problem?  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+    }
-+
-+  /* assembler option defaults */
-+  nios2_as_options.noat = FALSE;
-+  nios2_as_options.nobreak = FALSE;
-+
-+  /* debug information is incompatible with relaxation */
-+  if (debug_type != DEBUG_UNSPECIFIED)
-+    {
-+      nios2_as_options.relax = relax_none;
-+    }
-+
-+  /* initialize the alignment data */
-+  nios2_current_align_seg = now_seg;
-+  nios2_last_label = NULL;
-+  nios2_current_align = 0;
-+}
-+
-+
-+
-+
-+/* made this global to avoid changing one function prototype */
-+nios2_insn_infoS insn;
-+
-+/*
-+   Function: void md_assemble(char* op_str)
-+
-+   Description: assembles a single line of Nios II assembly
-+                language
-+ */
-+void
-+md_assemble (char *op_str)
-+{
-+  char *argstr; 
-+  char *op_strdup;
-+  nios2_arg_infoS *arg_info;
-+  unsigned long saved_pinfo = 0;
-+
-+  /* make sure we are aligned on a 4-byte boundary */
-+  if (nios2_current_align < 2)
-+    nios2_align (2, NULL, nios2_last_label);
-+  else if (nios2_current_align > 2)
-+    nios2_current_align = 2;
-+  nios2_last_label = NULL;
-+
-+
-+  /* we don't want to clobber to op_str
-+     because we want to be able to use it in messages */
-+  op_strdup = strdup (op_str);
-+
-+  insn.insn_tokens[0] = strtok (op_strdup, " ");
-+  argstr = strtok (NULL, "");
-+
-+  /* assemble the opcode */
-+  insn.insn_nios2_opcode =
-+    (struct nios2_opcode *) hash_find (nios2_opcode_hash,
-+				       insn.insn_tokens[0]);
-+  insn.insn_reloc = NULL;
-+
-+  if (insn.insn_nios2_opcode != NULL)
-+    {
-+      /* set the opcode for the instruction */
-+      insn.insn_code = insn.insn_nios2_opcode->match;
-+
-+      /* parse the arguments pointed to by argstr */
-+      if (nios2_mode == NIOS2_MODE_ASSEMBLE)
-+	{
-+	  nios2_parse_args (argstr, insn.insn_nios2_opcode->args,
-+			    (char **) &insn.insn_tokens[1]);
-+	}
-+      else
-+	{
-+	  nios2_parse_args (argstr, insn.insn_nios2_opcode->args_test,
-+			    (char **) &insn.insn_tokens[1]);
-+	}
-+
-+      /* we need to preserve the MOVIA macro as this is clobbered by translate_pseudo_insn */
-+      if (insn.insn_nios2_opcode->pinfo == NIOS2_INSN_MACRO_MOVIA)
-+	{
-+	  saved_pinfo = NIOS2_INSN_MACRO_MOVIA;
-+	}
-+      /* if the instruction is an pseudo-instruction, we want to replace it with its
-+         real equivalent, and then continue */
-+      if ((insn.insn_nios2_opcode->pinfo & NIOS2_INSN_MACRO) ==
-+	  NIOS2_INSN_MACRO)
-+	{
-+	  nios2_translate_pseudo_insn (&insn);
-+	}
-+
-+      /* find the assemble function, and call it */
-+      arg_info =
-+	(nios2_arg_infoS *) hash_find (nios2_arg_hash,
-+				       insn.insn_nios2_opcode->args);
-+      if (arg_info != NULL)
-+	{
-+	  arg_info->assemble_args_func (&insn);
-+
-+	  if (nios2_as_options.relax != relax_none
-+	      && insn.insn_nios2_opcode->pinfo & NIOS2_INSN_UBRANCH)
-+	    output_ubranch ();
-+	  else if (nios2_as_options.relax != relax_none
-+		   && insn.insn_nios2_opcode->pinfo & NIOS2_INSN_CBRANCH)
-+	    output_cbranch ();
-+	  else if (nios2_as_options.relax == relax_all
-+		   && insn.insn_nios2_opcode->pinfo & NIOS2_INSN_CALL)
-+	    output_call ();
-+	  else if (saved_pinfo == NIOS2_INSN_MACRO_MOVIA)
-+	    output_movia ();
-+	  else
-+	    output_insn ();
-+	}
-+      else
-+	{
-+	  /* the assembler is broken */
-+	  fprintf (stderr,
-+		   _("internal error: %s is not a valid argument syntax\n"),
-+		   insn.insn_nios2_opcode->args);
-+	  /* Probably a memory allocation problem?  Give up now.  */
-+	  as_fatal (_("Broken assembler.  No assembly attempted."));
-+	}
-+    }
-+  else
-+    {
-+      /* unrecognised instruction - error */
-+      as_bad (_("unrecognised instruction %s"), insn.insn_tokens[0]);
-+    }
-+}
-+
-+/* output a normal instruction */
-+static void
-+output_insn ()
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+
-+  f = frag_more (4);
-+  /* this allocates enough space for the instruction
-+     and puts it in the current frag */
-+  md_number_to_chars (f, insn.insn_code, 4);
-+  /* emit debug info */
-+  dwarf2_emit_insn (4);
-+  /* create any fixups */
-+  reloc = insn.insn_reloc;
-+  while (reloc != NULL)
-+    {
-+      /* this creates any fixups to be acted on later */
-+      fix_new_exp (frag_now, f - frag_now->fr_literal, 4,
-+		   &reloc->reloc_expression, reloc->reloc_pcrel,
-+		   reloc->reloc_type);
-+      reloc = reloc->reloc_next;
-+    }
-+}
-+
-+/* output an unconditional branch */
-+static void
-+output_ubranch ()
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+  symbolS *symp;
-+  offsetT offset;
-+
-+  reloc = insn.insn_reloc;
-+
-+  /* if the reloc is NULL, there was an error assembling the branch */
-+  if (reloc != NULL)
-+    {
-+
-+      symp = reloc->reloc_expression.X_add_symbol;
-+      offset = reloc->reloc_expression.X_add_number;
-+
-+      /* we must tag debug info here since we can't do it after
-+         calling frag_var */
-+      dwarf2_emit_insn (4);
-+
-+      /* we create a machine dependent frag which can grow
-+         to accommodate the largest possible instruction sequence
-+         this may generate */
-+      f = frag_var (rs_machine_dependent,
-+		    RELAX_MAX_SIZE (UBRANCH),
-+		    RELAX_SIZE (UBRANCH),
-+		    RELAX_SUBSTATE (UBRANCH), symp, offset, NULL);
-+
-+      md_number_to_chars (f, insn.insn_code, 4);
-+
-+      /* we leave fixup generation to md_convert_frag */
-+    }
-+}
-+
-+/* output a conditional branch */
-+static void
-+output_cbranch ()
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+  symbolS *symp;
-+  offsetT offset;
-+
-+  reloc = insn.insn_reloc;
-+
-+  /* if the reloc is NULL, there was an error assembling the branch */
-+  if (reloc != NULL)
-+    {
-+
-+      symp = reloc->reloc_expression.X_add_symbol;
-+      offset = reloc->reloc_expression.X_add_number;
-+
-+      /* we must tag debug info here since we can't do it after
-+         calling frag_var */
-+      dwarf2_emit_insn (4);
-+
-+      /* we create a machine dependent frag which can grow
-+         to accommodate the largest possible instruction sequence
-+         this may generate */
-+      f = frag_var (rs_machine_dependent,
-+		    RELAX_MAX_SIZE (CBRANCH),
-+		    RELAX_SIZE (CBRANCH),
-+		    RELAX_SUBSTATE (CBRANCH), symp, offset, NULL);
-+
-+      md_number_to_chars (f, insn.insn_code, 4);
-+
-+
-+      /* we leave fixup generation to md_convert_frag */
-+    }
-+}
-+
-+/* Output a call sequence. Since calls are not pc-relative for NIOS2,
-+   but are page-relative, we cannot tell at any stage in assembly
-+   whether a call will be out of range since a section may be linked
-+   at any address. So if we are relaxing, we convert all call instructions
-+   to long call sequences, and rely on the linker to relax them back to
-+   short calls */
-+static void
-+output_call ()
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+  f = frag_more (12);
-+  /* this allocates enough space for the instruction
-+     and puts it in the current frag */
-+  reloc = insn.insn_reloc;
-+
-+  /* if the reloc is NULL, there was an error assembling the branch */
-+  if (reloc != NULL)
-+    {
-+      md_number_to_chars (f, OP_MATCH_ORHI | 0x00400000, 4);
-+      dwarf2_emit_insn (4);
-+      md_number_to_chars (f + 4, OP_MATCH_ORI | 0x08400000, 4);
-+      dwarf2_emit_insn (4);
-+      md_number_to_chars (f + 8, OP_MATCH_CALLR | 0x08000000, 4);
-+      dwarf2_emit_insn (4);
-+      fix_new (frag_now, f - frag_now->fr_literal, 4,
-+	       reloc->reloc_expression.X_add_symbol,
-+	       reloc->reloc_expression.X_add_number, 0,
-+	       BFD_RELOC_NIOS2_CALLR);
-+
-+
-+    }
-+}
-+
-+/* output a movhi/addi pair for the movia pseudo-op */
-+static void
-+output_movia ()
-+{
-+  char *f;
-+  nios2_insn_relocS *reloc;
-+  f = frag_more (8);
-+  unsigned long reg_index = GET_INSN_FIELD (IRT, insn.insn_code);
-+
-+  /* this allocates enough space for the instruction
-+     and puts it in the current frag */
-+  reloc = insn.insn_reloc;
-+
-+  /* if the reloc is NULL, there was an error assembling the movia */
-+  if (reloc != NULL)
-+    {
-+      md_number_to_chars (f, insn.insn_code, 4);
-+      dwarf2_emit_insn (4);
-+      md_number_to_chars (f + 4,
-+			  OP_MATCH_ADDI | (reg_index << OP_SH_IRT) |
-+			  (reg_index << OP_SH_IRS), 4);
-+      dwarf2_emit_insn (4);
-+      fix_new (frag_now, f - frag_now->fr_literal, 4,
-+	       reloc->reloc_expression.X_add_symbol,
-+	       reloc->reloc_expression.X_add_number, 0,
-+	       BFD_RELOC_NIOS2_HIADJ16);
-+      fix_new (frag_now, f + 4 - frag_now->fr_literal, 4,
-+	       reloc->reloc_expression.X_add_symbol,
-+	       reloc->reloc_expression.X_add_number, 0, BFD_RELOC_NIOS2_LO16);
-+
-+    }
-+}
-+
-+/*
-+	Function md_chars_to_number takes the sequence of
-+	bytes in bug and returns the corresponding value
-+	in an int. n must be 1, 2 or 4.
-+ */
-+valueT
-+md_chars_to_number (char *buf, int n)
-+{
-+  // this assumes little endian format
-+  int i;
-+  valueT val;
-+
-+  assert (n == 1 || n == 2 || n == 4);
-+
-+  val = 0;
-+  for (i = 0; i < n; ++i)
-+    {
-+      val = val | ((buf[i] & 0xff) << 8 * i);
-+    }
-+  return val;
-+}
-+
-+
-+/*
-+	Function : void md_number_to_chars(char *buf, valueT val, int n)
-+
-+	Description : this function turns a C long int, short int or char
-+	              into the series of bytes that represent the number
-+				  on the target machine
-+ */
-+void
-+md_number_to_chars (char *buf, valueT val, int n)
-+{
-+  /* this assumes little endian format */
-+  int i;
-+  assert (n == 1 || n == 2 || n == 4);
-+  for (i = 0; i < n; ++i)
-+    {
-+      buf[i] = val & 0xFF;
-+      val >>= 8;
-+    }
-+}
-+
-+/*
-+	Function : void md_number_to_imm(char *buf, valueT val, int n)
-+
-+	Description : this function is identical to md_number_to_chars
-+ */
-+void
-+md_number_to_imm (char *buf, valueT val, int n)
-+{
-+  md_number_to_chars (buf, val, n);
-+}
-+
-+/*
-+	Function : void md_number_to_disp(char *buf, valueT val, int n)
-+
-+	Description : this function is identical to md_number_to_chars
-+ */
-+void
-+md_number_to_disp (char *buf, valueT val, int n)
-+{
-+  md_number_to_chars (buf, val, n);
-+}
-+
-+/*
-+	Function : void md_number_to_field(char *buf, valueT val, int n)
-+
-+	Description : this function is identical to md_number_to_chars
-+ */
-+void
-+md_number_to_field (char *buf, valueT val, int n)
-+{
-+  md_number_to_chars (buf, val, n);
-+}
-+
-+/*
-+
-+   Function : char * md_atof(int type, char *litP,int *sizeP)
-+
-+   Description :
-+   Turn a string in input_line_pointer into a floating point constant
-+   of type TYPE, and store the appropriate bytes in *LITP.  The number
-+   of LITTLENUMS emitted is stored in *SIZEP.  An error message is
-+   returned, or NULL on OK.
-+
-+ */
-+
-+char *
-+md_atof (int type, char *litP, int *sizeP)
-+{
-+  int prec;
-+  LITTLENUM_TYPE words[4];
-+  char *t;
-+  int i;
-+
-+  switch (type)
-+    {
-+    case 'f':
-+      prec = 2;
-+      break;
-+    case 'd':
-+      prec = 4;
-+      break;
-+    default:
-+      *sizeP = 0;
-+      return _("bad call to md_atof");
-+    }
-+
-+  t = atof_ieee (input_line_pointer, type, words);
-+  if (t)
-+    input_line_pointer = t;
-+
-+  *sizeP = prec * 2;
-+
-+  /* little endian target */
-+  for (i = prec - 1; i >= 0; i--)
-+    {
-+      md_number_to_chars (litP, (valueT) words[i], 2);
-+      litP += 2;
-+    }
-+
-+  return NULL;
-+}
-+
-+
-+
-+int md_short_jump_size;
-+int md_long_jump_size;
-+
-+void
-+md_create_short_jump (char *result_ptr ATTRIBUTE_UNUSED,
-+		      addressT from_addr ATTRIBUTE_UNUSED,
-+		      addressT to_addr ATTRIBUTE_UNUSED,
-+		      fragS * frag ATTRIBUTE_UNUSED,
-+		      symbolS * to_symbol ATTRIBUTE_UNUSED)
-+{
-+  abort ();
-+}
-+
-+void
-+md_create_long_jump (char *ptr ATTRIBUTE_UNUSED,
-+		     addressT from_addr ATTRIBUTE_UNUSED,
-+		     addressT to_addr ATTRIBUTE_UNUSED,
-+		     fragS * frag ATTRIBUTE_UNUSED,
-+		     symbolS * to_symbol ATTRIBUTE_UNUSED)
-+{
-+  abort ();
-+}
-+
-+int
-+md_estimate_size_before_relax (fragS * fragp, segT segment ATTRIBUTE_UNUSED)
-+{
-+  /* we only support ELF targets */
-+
-+  switch (nios2_as_options.relax)
-+    {
-+    case relax_none:
-+    case relax_section:
-+      break;
-+    case relax_all:
-+      /* The NIOS2 linker performs relaxation so the assembler
-+         always assumes the worst case, so that the linker can
-+         replace with a better case if possible - this way, linker
-+         relaxation can never cause a short branch to be out of range
-+       */
-+      while (nios2_relax_table[fragp->fr_subtype].rlx_more != 0)
-+	fragp->fr_subtype = nios2_relax_table[fragp->fr_subtype].rlx_more;
-+      break;
-+    default:
-+      abort ();
-+      break;
-+    }
-+
-+  /* return the estimated size of the frag */
-+  return nios2_relax_table[fragp->fr_subtype].rlx_length;
-+}
-+
-+
-+void
-+md_convert_frag (bfd * headers ATTRIBUTE_UNUSED, segT seg ATTRIBUTE_UNUSED,
-+		 fragS * fragp)
-+{
-+  unsigned char *buffer = fragp->fr_literal + fragp->fr_fix;
-+  relax_substateT subtype = fragp->fr_subtype;
-+  unsigned int growth = RELAX_SIZE (subtype);
-+  unsigned int br_opcode, br_op_a, br_op_b;
-+
-+  switch (subtype)
-+    {
-+    case UBRANCH:
-+      /* we just need to generate the fixup for the symbol and offset */
-+      fix_new (fragp, fragp->fr_fix, 4, fragp->fr_symbol, fragp->fr_offset, 1,
-+	       BFD_RELOC_16_PCREL);
-+      break;
-+    case UJMP:
-+      /* replace ubranch at fr_fix with :
-+         movhi at, %hi(symbol+offset)
-+         ori at, %lo(symbol+offset)
-+         jmp at
-+       */
-+      md_number_to_chars (buffer, OP_MATCH_ORHI | 0x00400000, 4);
-+      md_number_to_chars (buffer + 4, OP_MATCH_ORI | 0x08400000, 4);
-+      md_number_to_chars (buffer + 8, OP_MATCH_JMP | 0x08000000, 4);
-+      fix_new (fragp, fragp->fr_fix, 4, fragp->fr_symbol, fragp->fr_offset, 0,
-+	       BFD_RELOC_NIOS2_UJMP);
-+      break;
-+    case CBRANCH:
-+      /* we just need to generate the fixup for the symbol and offset */
-+      fix_new (fragp, fragp->fr_fix, 4, fragp->fr_symbol, fragp->fr_offset, 1,
-+	       BFD_RELOC_16_PCREL);
-+      break;
-+    case CJMP:
-+      /* replace cbranch at fr_fix with :
-+         b(opposite condition) r, s, skip
-+         movhi at, %hi(symbol+offset)
-+         ori at, %lo(symbol+offset)
-+         jmp at
-+         skip:
-+         ...
-+       */
-+      br_opcode = md_chars_to_number (buffer, 4);
-+
-+      switch (br_opcode & OP_MASK_OP)
-+	{
-+	case OP_MATCH_BEQ:
-+	  br_opcode =
-+	    (br_opcode & ~OP_MASK_OP) | OP_MATCH_BNE | (12 << OP_SH_IMM16);
-+	  break;
-+	case OP_MATCH_BNE:
-+	  br_opcode =
-+	    (br_opcode & ~OP_MASK_OP) | OP_MATCH_BEQ | (12 << OP_SH_IMM16);
-+	  break;
-+	case OP_MATCH_BGE:
-+	case OP_MATCH_BGEU:
-+	case OP_MATCH_BLT:
-+	case OP_MATCH_BLTU:
-+	  /* swap the operands */
-+	  br_op_a = (br_opcode & OP_MASK_RRT) << 5;
-+	  br_op_b = (br_opcode & OP_MASK_RRS) >> 5;
-+	  br_opcode =
-+	    (br_opcode & ~(OP_MASK_RRS | OP_MASK_RRT)) | br_op_a | br_op_b |
-+	    (12 << OP_SH_IMM16);
-+	  break;
-+	default:
-+	  as_bad_where (fragp->fr_file, fragp->fr_line,
-+			_("expecting conditional branch for relaxation\n"));
-+	  abort ();
-+	}
-+
-+      md_number_to_chars (buffer, br_opcode, 4);
-+      md_number_to_chars (buffer + 4, OP_MATCH_ORHI | 0x00400000, 4);
-+      md_number_to_chars (buffer + 8, OP_MATCH_ORI | 0x08400000, 4);
-+      md_number_to_chars (buffer + 12, OP_MATCH_JMP | 0x08000000, 4);
-+      fix_new (fragp, fragp->fr_fix + 4, 4, fragp->fr_symbol,
-+	       fragp->fr_offset, 0, BFD_RELOC_NIOS2_CJMP);
-+      break;
-+    default:
-+      as_bad_where (fragp->fr_file, fragp->fr_line,
-+		    _("can't relax instruction\n"));
-+      abort ();
-+      break;
-+    }
-+
-+  fragp->fr_fix += growth;
-+}
-+
-+
-+/* round up section size */
-+valueT
-+md_section_align (asection * seg ATTRIBUTE_UNUSED, valueT size)
-+{
-+  /* I think byte alignment is fine here */
-+  return size;
-+}
-+
-+
-+int
-+nios2_force_relocation (fixS * fixp)
-+{
-+  if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
-+      || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY
-+      || fixp->fx_r_type == BFD_RELOC_NIOS2_ALIGN)
-+    return 1;
-+
-+  return 0;
-+}
-+
-+/* nios2_fix_adjustable is called to see whether a reloc against a defined symbol
-+   should be converted into a reloc against a section. */
-+
-+int
-+nios2_fix_adjustable (fixS * fixp)
-+{
-+#ifdef OBJ_ELF
-+  /* Prevent all adjustments to global symbols.  */
-+  if (OUTPUT_FLAVOR == bfd_target_elf_flavour
-+      && (S_IS_EXTERN (fixp->fx_addsy) || S_IS_WEAK (fixp->fx_addsy)))
-+    return 0;
-+#endif
-+  if (fixp->fx_r_type == BFD_RELOC_VTABLE_INHERIT
-+      || fixp->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
-+    return 0;
-+
-+  return 1;
-+}
-+
-+/*
-+	nios2_frob_symbol is called in adjust_reloc_syms through the macro
-+	tc_frob_symbol - it is used to remove *ABS* references from the
-+	symbol table
-+ */
-+int
-+nios2_frob_symbol (symbolS * symp)
-+{
-+  if ((OUTPUT_FLAVOR == bfd_target_elf_flavour
-+       && (symp) == section_symbol (absolute_section))
-+      || !S_IS_DEFINED (symp))
-+    return 1;
-+  else
-+    return 0;
-+}
-+
-+/*
-+  The function tc_gen_reloc creates a relocation structure for the
-+  fixup fixp, and returns a pointer to it. This structure is passed
-+  to bfd_install_relocation so that it can be written to the object
-+  file for linking
-+*/
-+arelent *
-+tc_gen_reloc (asection * section ATTRIBUTE_UNUSED, fixS * fixp)
-+{
-+  arelent *reloc;
-+  reloc = (arelent *) xmalloc (sizeof (arelent));
-+  reloc->sym_ptr_ptr = (asymbol **) xmalloc (sizeof (asymbol *));
-+  *reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
-+
-+  reloc->address = fixp->fx_frag->fr_address + fixp->fx_where;
-+  reloc->addend = fixp->fx_addnumber;
-+  reloc->howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type);
-+  if (reloc->howto == NULL)
-+    {
-+      as_bad_where (fixp->fx_file, fixp->fx_line,
-+		    _("can't represent relocation type %s"),
-+		    bfd_get_reloc_code_name (fixp->fx_r_type));
-+
-+      /* Set howto to a garbage value so that we can keep going.  */
-+      reloc->howto = bfd_reloc_type_lookup (stdoutput, BFD_RELOC_32);
-+      assert (reloc->howto != NULL);
-+    }
-+  return reloc;
-+}
-+
-+long
-+md_pcrel_from (fixS * fixP ATTRIBUTE_UNUSED)
-+{
-+  return 0;
-+}
-+
-+
-+/* Apply a fixup to the object file.  */
-+void
-+md_apply_fix3 (fixS * fixP, valueT * valP, segT seg ATTRIBUTE_UNUSED)
-+{
-+  const struct nios2_opcode *opcode;
-+  enum overflow_type overflow_msg_type;
-+  bfd_boolean overflowed = FALSE;
-+  valueT fixup = 0;
-+
-+  /* assert that the fixup is one we can handle */
-+  assert (fixP != NULL && valP != NULL &&
-+	  (fixP->fx_r_type == BFD_RELOC_8 ||
-+	   fixP->fx_r_type == BFD_RELOC_16 ||
-+	   fixP->fx_r_type == BFD_RELOC_32 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_S16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_U16 ||
-+	   fixP->fx_r_type == BFD_RELOC_16_PCREL ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_CALL26 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_IMM5 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_CACHE_OPX ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_IMM6 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_IMM8 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_HI16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_LO16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_HIADJ16 ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_GPREL ||
-+	   fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT ||
-+	   fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_UJMP ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_CJMP ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_CALLR ||
-+	   fixP->fx_r_type == BFD_RELOC_NIOS2_ALIGN
-+	   // add other relocs here as we generate them
-+	  ));
-+
-+
-+  /* The value passed in valP can be the value of a fully
-+     resolved expression, or it can be the value of a partially
-+     resolved expression. In the former case, both fixP->fx_addsy
-+     and fixP->fx_subsy are NULL, and fixP->fx_offset == *valP, and
-+     we can fix up the instruction that fixP relates to.
-+     In the latter case, one or both of fixP->fx_addsy and
-+     fixP->fx_subsy are not NULL, and fixP->fx_offset may or may not
-+     equal *valP. We don't need to check for fixP->fx_subsy being null
-+     because the generic part of the assembler generates an error if
-+     it is not an absolute symbol */
-+
-+  if (fixP->fx_addsy != NULL)
-+    {
-+      fixP->fx_addnumber = fixP->fx_offset;
-+      fixP->fx_done = 0;
-+    }
-+  else
-+    {
-+      valueT value;
-+
-+      char *buf;
-+      reloc_howto_type *howto;
-+      howto = bfd_reloc_type_lookup (stdoutput, fixP->fx_r_type);
-+
-+      if (howto == NULL)
-+	{
-+	  as_bad_where (fixP->fx_file, fixP->fx_line,
-+			_("relocation is not supported"));
-+	}
-+      else
-+	{
-+	  fixup += *valP;
-+
-+	  /* If this is a pc-relative relocation, we need to
-+	     subtract the current offset within the object file
-+	     FIXME : for some reason fixP->fx_pcrel isn't 1 when it should be
-+	     so I'm using the howto structure instead to determine this */
-+	  if (howto->pc_relative == 1)
-+	    fixup = fixup - (fixP->fx_frag->fr_address + fixP->fx_where + 4);
-+
-+
-+
-+	  /* Get the instruction to be fixed up */
-+	  buf = fixP->fx_frag->fr_literal + fixP->fx_where;
-+	  value = md_chars_to_number (buf, 4);
-+
-+	  /* What opcode is the instruction? This will determine
-+	     whether we check for overflow in immediate values
-+	     and what error message we get */
-+	  opcode = nios2_find_opcode_hash (value);
-+	  overflow_msg_type = opcode->overflow_msg;
-+
-+	  overflowed = nios2_check_overflow (fixup, howto);
-+
-+
-+	  if (overflowed)
-+	    {
-+	      unsigned int range_min;
-+	      unsigned int range_max;
-+	      unsigned int address;
-+	      switch (overflow_msg_type)
-+		{
-+		case call_target_overflow:
-+		  range_min =
-+		    ((fixP->fx_frag->fr_address +
-+		      fixP->fx_where) & 0xf0000000);
-+		  range_max = range_min + 0x0fffffff;
-+		  address = fixup | range_min;
-+
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[call_target_overflow]),
-+				address, range_min, range_max);
-+		  break;
-+		case branch_target_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[branch_target_overflow]),
-+				fixup, BYTE_B, BYTE_F);
-+		  break;
-+		case address_offset_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[address_offset_overflow]),
-+				opcode->name, fixup, -32768, 32767);
-+		  break;
-+		case signed_immed16_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[signed_immed16_overflow]),
-+				fixup, -32768, 32767);
-+		  break;
-+		case unsigned_immed16_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[unsigned_immed16_overflow]),
-+				fixup, 0, 65535);
-+		  break;
-+		case unsigned_immed5_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[unsigned_immed5_overflow]),
-+				fixup, 0, 31);
-+		  break;
-+		case custom_opcode_overflow:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_(overflow_msgs[custom_opcode_overflow]),
-+				fixup, 0, 255);
-+		  break;
-+		default:
-+		  as_bad_where (fixP->fx_file, fixP->fx_line,
-+				_
-+				("unspecified overflow in immediate argument"));
-+		  break;
-+		}
-+	    }
-+
-+
-+	  /* apply the rightshift */
-+	  (signed) fixup >>= howto->rightshift;
-+
-+	  /* truncate the fixup to right size */
-+	  switch (fixP->fx_r_type)
-+	    {
-+	    case BFD_RELOC_NIOS2_HI16:
-+	      fixup = (fixup >> 16) & 0xFFFF;
-+	      break;
-+	    case BFD_RELOC_NIOS2_LO16:
-+	      fixup = fixup & 0xFFFF;
-+	      break;
-+	    case BFD_RELOC_NIOS2_HIADJ16:
-+	      fixup = ((fixup >> 16) & 0xFFFF) + ((fixup >> 15) & 0x01);
-+	      break;
-+	    default:
-+	      fixup =
-+		(fixup << (32 - howto->bitsize)) >> (32 - howto->bitsize);
-+	      break;
-+	    }
-+
-+	  /* fixup the instruction */
-+	  value = (value & ~howto->dst_mask) | (fixup << howto->bitpos);
-+	  md_number_to_chars (buf, value, 4);
-+	}
-+
-+      fixP->fx_done = 1;
-+    }
-+
-+  if (fixP->fx_r_type == BFD_RELOC_VTABLE_INHERIT)
-+    {
-+      fixP->fx_done = 0;
-+      if (fixP->fx_addsy
-+	  && !S_IS_DEFINED (fixP->fx_addsy) && !S_IS_WEAK (fixP->fx_addsy))
-+	S_SET_WEAK (fixP->fx_addsy);
-+    }
-+  else if (fixP->fx_r_type == BFD_RELOC_VTABLE_ENTRY)
-+    {
-+      fixP->fx_done = 0;
-+    }
-+}
-+
-+bfd_boolean
-+nios2_check_overflow (valueT fixup, reloc_howto_type * howto)
-+{
-+  /* apply the rightshift before checking for overflow */
-+  (signed) fixup >>= howto->rightshift;
-+
-+  /* check for overflow - return TRUE if overflow, FALSE if not */
-+  switch (howto->complain_on_overflow)
-+    {
-+    case complain_overflow_dont:
-+      break;
-+    case complain_overflow_bitfield:
-+      if ((fixup >> howto->bitsize) != 0)
-+	return TRUE;
-+      break;
-+    case complain_overflow_signed:
-+      if ((fixup & 0x80000000) > 0)
-+	{
-+	  /* check for negative overflow */
-+	  if ((signed) fixup < ((signed) 0x80000000 >> howto->bitsize))
-+	    return TRUE;
-+	}
-+      else
-+	{
-+	  /* check for positive overflow */
-+	  if (fixup >= ((unsigned) 1 << (howto->bitsize - 1)))
-+	    return TRUE;
-+	}
-+      break;
-+    case complain_overflow_unsigned:
-+      if ((fixup >> howto->bitsize) != 0)
-+	return TRUE;
-+      break;
-+    default:
-+      as_bad (_("error checking for overflow - broken assembler"));
-+      break;
-+    }
-+
-+  return FALSE;
-+}
-+
-+/*
-+   Function : void md_end()
-+   Description : Called just before the assembler exits
-+ */
-+void
-+md_end ()
-+{
-+  /* FIXME - not yet implemented */
-+}
-+
-+
-+/*
-+	Creates a new nios2_insn_relocS and returns a pointer to it
-+*/
-+nios2_insn_relocS *
-+nios2_insn_reloc_new (bfd_reloc_code_real_type reloc_type, unsigned int pcrel)
-+{
-+  nios2_insn_relocS *retval;
-+  retval = (nios2_insn_relocS *) malloc (sizeof (nios2_insn_relocS));
-+  if (retval == NULL)
-+    {
-+      as_bad (_("can't create relocation"));
-+      abort ();
-+    }
-+
-+  /* fill out the fields with default values */
-+  retval->reloc_next = NULL;
-+  retval->reloc_type = reloc_type;
-+  retval->reloc_pcrel = pcrel;
-+  return retval;
-+}
-+
-+/*
-+	Frees up memory previously allocated by nios2_insn_reloc_new()
-+  */
-+void
-+nios2_insn_reloc_destroy (nios2_insn_relocS * reloc)
-+{
-+  assert (reloc != NULL);
-+  free (reloc);
-+}
-+
-+/*
-+   Function : nios2_assemble_expression(char* exprstr)
-+
-+   Description : The various nios2_assemble_* functions call this
-+                 function to generate an expression from a
-+				 string representing an expression
-+				 It then tries to evaluate the expression, and
-+				 if it can, returns its value.
-+				 If not, it creates a new nios2_insn_relocS
-+				 and stores the expression and reloc_type
-+				 for future use
-+ */
-+unsigned long
-+nios2_assemble_expression (const char *exprstr,
-+			   nios2_insn_infoS * insn,
-+			   nios2_insn_relocS * prev_reloc,
-+			   bfd_reloc_code_real_type reloc_type,
-+			   unsigned int pcrel)
-+{
-+  nios2_insn_relocS *reloc;
-+  char *saved_line_ptr;
-+  unsigned short value;
-+  int i;
-+
-+  assert (exprstr != NULL);
-+  assert (insn != NULL);
-+
-+  /* check for %gprel, %hi, %lo or %hiadj
-+     change the relocation type
-+     and advance the ptr to the start of
-+     the expression proper */
-+  for (i = 0; i < nios2_num_special_relocs; i++)
-+    {
-+      if (strstr (exprstr, nios2_special_reloc[i].string) != NULL)
-+	{
-+	  reloc_type = nios2_special_reloc[i].reloc_type;
-+	  exprstr += strlen (nios2_special_reloc[i].string) + 1;
-+	  break;
-+	}
-+    }
-+
-+  /* we potentially have a relocation */
-+  reloc = nios2_insn_reloc_new (reloc_type, pcrel);
-+  if (prev_reloc != NULL)
-+    prev_reloc->reloc_next = reloc;
-+  else
-+    insn->insn_reloc = reloc;
-+
-+  /* parse the expression string */
-+  saved_line_ptr = input_line_pointer;
-+  input_line_pointer = (char *) exprstr;
-+  expression (&reloc->reloc_expression);
-+  input_line_pointer = saved_line_ptr;
-+
-+  /* this is redundant as the fixup will put this into
-+     the instruction, but it is included here so that
-+     self-test mode (-r) works */
-+  value = 0;
-+  if (nios2_mode == NIOS2_MODE_TEST)
-+    {
-+      if (reloc->reloc_expression.X_op == O_constant)
-+	value = reloc->reloc_expression.X_add_number;
-+    }
-+
-+  return (unsigned long) value;
-+}
-+
-+/*
-+	The function consume_separate takes a pointer into a string
-+	of instruction tokens (args) and a pointer into a string representing
-+	the expected sequence of tokens and separators. It finds the first
-+	instance of the character pointed to by separator in argStr, and
-+	returns a pointer to the next element of argStr, which is the
-+	following token in the sequence.
-+  */
-+char *
-+nios2_consume_separator (char *argStr, const char *separator)
-+{
-+  char *argPtr;
-+
-+  /* if we have a opcode reg, expr(reg) type instruction, and
-+   * we are separating the expr from the (reg), we find the last
-+   * (, just in case the expression has brackets */
-+
-+  if (*separator == '(')
-+    argPtr = strrchr (argStr, *separator);
-+  else
-+    argPtr = strchr (argStr, *separator);
-+
-+  if (argPtr != NULL)
-+    *argPtr++ = 0;
-+  else
-+    as_bad (_("expecting %c near %s"), *separator, argStr);
-+  return argPtr;
-+}
-+
-+/*
-+	The function consume_arg takes a pointer into a string
-+	of instruction tokens (args) and a pointer into a string
-+	representing the expected sequence of tokens and separators.
-+	It checks whether the first argument in argStr is of the
-+	expected type, throwing an error if it is not, and returns
-+	the pointer argStr.
-+  */
-+char *
-+nios2_consume_arg (char *argStr, const char *argType)
-+{
-+  char *temp;
-+  int regno = -1;
-+  
-+  switch (*argType)
-+    {
-+    case 'c':
-+      if (strncmp (argStr, "ctl", strlen ("ctl")) != 0
-+	  && strncmp (argStr, "status", strlen ("status")) != 0
-+	  && strncmp (argStr, "estatus", strlen ("estatus")) != 0
-+	  && strncmp (argStr, "bstatus", strlen ("bstatus")) != 0
-+	  && strncmp (argStr, "ienable", strlen ("ienable")) != 0
-+	  && strncmp (argStr, "ipending", strlen ("ipending")) != 0)
-+	{
-+	  as_bad (_("expecting control register"));
-+	}
-+      break;
-+    case 'd':
-+    case 's':
-+    case 't':
-+
-+      /* we check to make sure we don't have a control register */
-+      if (strncmp (argStr, "ctl", strlen ("ctl")) == 0
-+	  || strncmp (argStr, "status", strlen ("status")) == 0
-+	  || strncmp (argStr, "estatus", strlen ("estatus")) == 0
-+	  || strncmp (argStr, "bstatus", strlen ("bstatus")) == 0
-+	  || strncmp (argStr, "ienable", strlen ("ienable")) == 0
-+	  || strncmp (argStr, "ipending", strlen ("ipending")) == 0)
-+	{
-+	  as_bad (_("illegal use of control register"));
-+	}
-+
-+      /* and whether coprocessor registers are valid here */
-+      if (nios2_coproc_reg (argStr)
-+	  && insn.insn_nios2_opcode->match != OP_MATCH_CUSTOM)
-+	{
-+	  as_bad (_("illegal use of coprocessor register\n"));
-+	}
-+
-+
-+      /* extract a register number if the register is of the 
-+         form r[0-9]+, if it is a normal register, set
-+         regno to its number (0-31), else set regno to -1 */
-+      if (argStr[0] == 'r' && ISDIGIT (argStr[1]))
-+        {
-+	  char *p = argStr;
-+	  
-+	  ++p;
-+	  regno = 0;
-+	  do
-+	    {
-+	      regno *= 10;
-+	      regno += *p - '0';
-+	      ++p;
-+	    }
-+	  while (ISDIGIT (*p));
-+	}
-+      else
-+        {
-+	  regno = -1;
-+	}
-+
-+      /* and whether we are using at */
-+      if (!nios2_as_options.noat
-+	  && (regno == 1
-+	      || strncmp (argStr, "at", strlen ("at")) == 0))
-+	{
-+	  as_warn (_("Register at (r1) can sometimes be corrupted by assembler optimizations.\n"
-+	             "Use .set noat to turn off those optimizations (and this warning)."));
-+	}
-+	
-+      /* and whether we are using oci registers */
-+      if (!nios2_as_options.nobreak
-+	  && (regno == 25
-+	      || strncmp (argStr, "bt", strlen ("bt")) == 0))
-+	{
-+	  as_warn (_("The debugger will corrupt bt (r25). If you don't need to debug this\n"
-+	             "code then use .set nobreak to turn off this warning."));
-+	}
-+	
-+      if (!nios2_as_options.nobreak
-+	  && (regno == 30
-+	      || strncmp (argStr, "ba", strlen ("ba")) == 0))
-+	{
-+	  as_warn (_("The debugger will corrupt ba (r30). If you don't need to debug this\n"
-+	             "code then use .set nobreak to turn off this warning."));
-+	}
-+      break;
-+    case 'i':
-+    case 'u':
-+      if (*argStr == '%')
-+	{
-+	  if (strstr (argStr, "%hi(") || strstr (argStr, "%lo(")
-+	      || strstr (argStr, "%hiadj(") || strstr (argStr, "%gprel("))
-+	    {
-+	      // we zap the brackets because we don't want them confused with separators
-+	      temp = strchr (argStr, '(');
-+	      if (temp != NULL)
-+		*temp = ' ';
-+	      temp = strchr (argStr, ')');
-+	      if (temp != NULL)
-+		*temp = ' ';
-+	    }
-+	  else
-+	    {
-+	      as_bad (_("badly formed expression near %s"), argStr);
-+	    }
-+	}
-+      break;
-+    case 'm':
-+    case 'j':
-+    case 'k':
-+    case 'l':
-+    case 'b':
-+      /* we can't have %hi, %lo or %hiadj here */
-+      if (*argStr == '%')
-+	as_bad (_("badly formed expression near %s"), argStr);
-+      break;
-+    default:
-+      break;
-+    }
-+  return argStr;
-+}
-+
-+/*
-+	The principal argument parsing function which takes a string
-+	representing the instruction arguments, and extracts the argument
-+	tokens
-+  */
-+void
-+nios2_parse_args (char *argStr, const char *parseStr, char **parsedArgs)
-+{
-+  char *p;
-+  char *end = NULL;
-+  int i;
-+  p = argStr;
-+  i = 0;
-+  bfd_boolean terminate = FALSE;
-+  
-+  /* This rest of this function is it too fragile and it mostly works,
-+     therefore special case this one */
-+  if (*parseStr == 0 && argStr != 0)
-+    {
-+      as_bad (_("too many arguments"));
-+      parsedArgs[0] = NULL;
-+      return;
-+    }
-+  
-+
-+  while (p != NULL && !terminate && i < NIOS2_MAX_INSN_TOKENS)
-+    {
-+      parsedArgs[i] = nios2_consume_arg (p, parseStr);
-+      ++parseStr;
-+      if (*parseStr != '\0')
-+	{
-+	  p = nios2_consume_separator (p, parseStr);
-+	  ++parseStr;
-+	}
-+      else
-+	{
-+	  /* check that the argument string has no trailing arguments */
-+	  /* if we've got a %lo etc relocation, we've zapped the brackets with spaces */
-+	  if (strstr (p, "%lo") == p || strstr (p, "%hi") == p
-+	      || strstr (p, "%hiadj") == p || strstr (p, "%gprel") == p)
-+	    end = strpbrk (p, ",");
-+	  else
-+	    end = strpbrk (p, " ,");
-+
-+	  if (end != NULL)
-+	    as_bad (_("too many arguments"));
-+	}
-+
-+      if (*parseStr == '\0' || (p != NULL && *p == '\0'))
-+	{
-+	  terminate = TRUE;
-+	}
-+      ++i;
-+    }
-+
-+  parsedArgs[i] = NULL;
-+
-+  if (*parseStr != '\0' && insn.insn_nios2_opcode->match != OP_MATCH_BREAK)
-+    as_bad (_("missing argument"));
-+
-+}
-+
-+
-+/* checks whether the register name is a coprocessor
-+   register - returns TRUE if it is, FALSE otherwise */
-+
-+static bfd_boolean
-+nios2_coproc_reg (const char *reg_name)
-+{
-+  assert (reg_name != NULL);
-+
-+/* check that we do have a valid register name and that it is a
-+ * coprocessor register
-+ * it must begin with c, not be a control register, and be a valid
-+ * register name */
-+
-+  if (strncmp (reg_name, "c", 1) == 0 &&
-+      strncmp (reg_name, "ctl", strlen ("ctl")) != 0 &&
-+      hash_find (nios2_reg_hash, reg_name) != NULL)
-+    return TRUE;
-+  else
-+    return FALSE;
-+}
-+
-+
-+/*********************************************************************
-+ Argument assemble functions
-+
-+ Description : All take an instruction argument string, and a pointer
-+   			   to an instruction opcode. Upon return the insn_opcode
-+			   has the relevant fields filled in to represent the arg
-+			   string. The return value is NULL if successful, or
-+			   an error message if an error was detected
-+ *********************************************************************/
-+
-+/* assembles register arguments "dst, src1, src2" */
-+void
-+nios2_assemble_args_dst (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1, *src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src2 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[3]);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src1->index);
-+
-+      if (src2 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[3]);
-+      else
-+	SET_INSN_FIELD (RRT, insn_info->insn_code, src2->index);
-+
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+    }
-+}
-+
-+
-+/* assembles arguments successfully parsed by nios2_parse_args_tsi */
-+void
-+nios2_assemble_args_tsi (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1;
-+  unsigned int src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src2 =
-+	nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_NIOS2_S16,
-+				   0);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (IRT, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (IRS, insn_info->insn_code, src1->index);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, src2);
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+/* assembles args successfully parsed by nios2_parse_args_tsu */
-+void
-+nios2_assemble_args_tsu (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1;
-+  unsigned int src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src2 =
-+	nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_NIOS2_U16,
-+				   0);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (IRT, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (IRS, insn_info->insn_code, src1->index);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, src2);
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+/* assembles args successfully parsed by nios2_parse_args_sti */
-+void
-+nios2_assemble_args_sto (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1;
-+  unsigned int src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src2 =
-+	nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_16_PCREL,
-+				   1);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (IRS, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (IRT, insn_info->insn_code, src1->index);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, src2);
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_o (nios2_insn_infoS * insn_info)
-+{
-+  unsigned long immed;
-+
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      immed =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_16_PCREL,
-+				   1);
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, immed);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_is (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *addr_src;
-+  unsigned long immed;
-+
-+  if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
-+    {
-+      addr_src =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+
-+      immed =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_NIOS2_S16,
-+				   0);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, immed);
-+
-+      if (addr_src == NULL)
-+	as_bad (_("unknown base register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, addr_src->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[3]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_m (nios2_insn_infoS * insn_info)
-+{
-+  unsigned long immed;
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      immed =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc,
-+				   BFD_RELOC_NIOS2_CALL26, 0);
-+
-+      SET_INSN_FIELD (IMM26, insn_info->insn_code, immed);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+
-+      SET_INSN_FIELD (IMM26, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_s (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *src;
-+
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      src =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+
-+      if (src == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_tis (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *addr_src, *dst;
-+  unsigned long immed;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      addr_src =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[3]);
-+      immed =
-+	nios2_assemble_expression (insn_info->insn_tokens[2], insn_info,
-+				   insn_info->insn_reloc, BFD_RELOC_NIOS2_S16,
-+				   0);
-+
-+
-+      if (addr_src == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[3]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, addr_src->index);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRT, insn_info->insn_code, dst->index);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, immed);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM16, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+/* assemble rdctl dst, ctl */
-+void
-+nios2_assemble_args_dc (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *ctl;
-+
-+  if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
-+    {
-+      ctl =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+
-+      if (ctl == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RCTL, insn_info->insn_code, ctl->index);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[3]);
-+    }
-+}
-+
-+
-+/* assemble wrctl ctl, src */
-+void
-+nios2_assemble_args_cs (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *src, *ctl;
-+
-+  if (insn_info->insn_tokens[1] != NULL && insn_info->insn_tokens[2] != NULL)
-+    {
-+      ctl =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+
-+      if (ctl == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else if (ctl->index == 4)
-+	as_bad (_("ipending control register (ctl4) is read-only\n"));
-+      else
-+	SET_INSN_FIELD (RCTL, insn_info->insn_code, ctl->index);
-+
-+      if (src == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[3]);
-+    }
-+}
-+
-+
-+
-+void
-+nios2_assemble_args_ldst (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1, *src2;
-+  unsigned long custom_n;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL &&
-+      insn_info->insn_tokens[3] != NULL && insn_info->insn_tokens[4] != NULL)
-+    {
-+#if 0				/* ??? Unused/half commented out code */
-+      char *end_p;
-+      /* custom_n = nios2_strtoul(insn_info->insn_tokens[1], &end_p); */
-+#endif
-+      custom_n =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc,
-+				   BFD_RELOC_NIOS2_IMM8, 0);
-+
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[3]);
-+      src2 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (CUSTOM_N, insn_info->insn_code, custom_n);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[3]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src1->index);
-+
-+      if (src2 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[4]);
-+      else
-+	SET_INSN_FIELD (RRT, insn_info->insn_code, src2->index);
-+
-+      /* set or clear the bits to indicate whether coprocessor registers are used */
-+      if (nios2_coproc_reg (insn_info->insn_tokens[2]))
-+	SET_INSN_FIELD (CUSTOM_C, insn_info->insn_code, 0);
-+      else
-+	SET_INSN_FIELD (CUSTOM_C, insn_info->insn_code, 1);
-+
-+      if (nios2_coproc_reg (insn_info->insn_tokens[3]))
-+	SET_INSN_FIELD (CUSTOM_A, insn_info->insn_code, 0);
-+      else
-+	SET_INSN_FIELD (CUSTOM_A, insn_info->insn_code, 1);
-+
-+      if (nios2_coproc_reg (insn_info->insn_tokens[4]))
-+	SET_INSN_FIELD (CUSTOM_B, insn_info->insn_code, 0);
-+      else
-+	SET_INSN_FIELD (CUSTOM_B, insn_info->insn_code, 1);
-+
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[5]);
-+    }
-+}
-+
-+
-+void
-+nios2_assemble_args_none (nios2_insn_infoS * insn_info ATTRIBUTE_UNUSED)
-+{
-+  // nothing to do
-+}
-+
-+
-+void
-+nios2_assemble_args_dsj (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst, *src1;
-+  unsigned int src2;
-+
-+  if (insn_info->insn_tokens[1] != NULL &&
-+      insn_info->insn_tokens[2] != NULL && insn_info->insn_tokens[3] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+      src1 =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[2]);
-+
-+      // a 5-bit constant expression
-+      src2 =
-+	nios2_assemble_expression (insn_info->insn_tokens[3], insn_info,
-+				   insn_info->insn_reloc,
-+				   BFD_RELOC_NIOS2_IMM5, 0);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      if (src1 == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[2]);
-+      else
-+	SET_INSN_FIELD (RRS, insn_info->insn_code, src1->index);
-+
-+      SET_INSN_FIELD (IMM5, insn_info->insn_code, src2);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[4]);
-+
-+      SET_INSN_FIELD (IMM5, insn_info->insn_code, 0);
-+    }
-+}
-+
-+
-+/* assembles register arguments "dst" */
-+void
-+nios2_assemble_args_d (nios2_insn_infoS * insn_info)
-+{
-+  struct nios2_reg *dst;
-+
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      dst =
-+	(struct nios2_reg *) hash_find (nios2_reg_hash,
-+					insn_info->insn_tokens[1]);
-+
-+      if (dst == NULL)
-+	as_bad (_("unknown register %s"), insn_info->insn_tokens[1]);
-+      else
-+	SET_INSN_FIELD (RRD, insn_info->insn_code, dst->index);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+    }
-+}
-+
-+/* assemble break op */
-+void
-+nios2_assemble_args_b (nios2_insn_infoS * insn_info)
-+{
-+  unsigned int imm5 = 0;
-+
-+  if (insn_info->insn_tokens[1] != NULL)
-+    {
-+      // a 5-bit constant expression
-+      imm5 =
-+	nios2_assemble_expression (insn_info->insn_tokens[1], insn_info,
-+				   insn_info->insn_reloc,
-+				   BFD_RELOC_NIOS2_IMM5, 0);
-+
-+      SET_INSN_FIELD (TRAP_IMM5, insn_info->insn_code, imm5);
-+
-+      NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+    }
-+
-+  SET_INSN_FIELD (TRAP_IMM5, insn_info->insn_code, imm5);
-+
-+  NIOS2_CHECK_ASSEMBLY (insn_info->insn_code, insn_info->insn_tokens[2]);
-+}
-+
-+/* Machine-dependent assembler directive handling follows */
-+
-+/*
-+	.set sets assembler options eg noat/at and is also used
-+	to set symbol values (.equ, .equiv )
-+*/
-+void
-+s_nios2_set (int equiv)
-+{
-+  char *directive = input_line_pointer;
-+  char delim = get_symbol_end ();
-+  char *endline;
-+  endline = input_line_pointer;
-+  *endline = delim;
-+
-+  /* we only want to handle ".set XXX" if the
-+     user has tried ".set XXX, YYY" they are not
-+     trying a directive. This prevents
-+     us from polluting the name space */
-+     
-+  SKIP_WHITESPACE ();
-+ 
-+  if (is_end_of_line[(unsigned char) *input_line_pointer]) 
-+    {
-+      bfd_boolean done = FALSE;
-+      *endline = 0;
-+      
-+      if (!strcmp (directive, "noat"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.noat = TRUE;
-+	}
-+
-+      if (!strcmp (directive, "at"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.noat = FALSE;
-+	}
-+
-+      if (!strcmp (directive, "nobreak"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.nobreak = TRUE;
-+	}
-+
-+      if (!strcmp (directive, "break"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.nobreak = FALSE;
-+	}
-+
-+      if (!strcmp (directive, "norelax"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.relax = relax_none;
-+	}
-+      else if (!strcmp (directive, "relaxsection"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.relax = relax_section;
-+	}
-+      else if (!strcmp (directive, "relaxall"))
-+	{
-+	  done = TRUE;
-+	  nios2_as_options.relax = relax_all;
-+	}
-+	
-+	
-+      if (done)
-+	{
-+	  *endline = delim;
-+	  demand_empty_rest_of_line ();
-+	  return;
-+	}
-+    }
-+
-+
-+  /* If we fall through to here, either we have ".set XXX, YYY"
-+     or we have ".set XXX" where XXX is unknown or we have 
-+     a syntax error */
-+  input_line_pointer = directive;
-+  *endline = delim;
-+  s_set (equiv);
-+}
-+
-+/* nop fill pattern for text section */
-+static char const nop[4] = { 0x3a, 0x88, 0x01, 0x00 };
-+
-+/* nios2_frob_label() is called when after a label is recognized.  */
-+
-+void
-+nios2_frob_label (symbolS * lab)
-+{
-+  /* Update the label's address with the current output pointer.  */
-+  symbol_set_frag (lab, frag_now);
-+  S_SET_VALUE (lab, (valueT) frag_now_fix ());
-+
-+  /* Record this label for future adjustment after we find out what
-+     kind of data it references, and the required alignment therewith.  */
-+  nios2_last_label = lab;
-+}
-+
-+
-+
-+/* Hook into cons for auto-alignment.  */
-+
-+void
-+nios2_cons_align (int size)
-+{
-+  int log_size;
-+  const char *pfill = NULL;
-+
-+  log_size = 0;
-+  while ((size >>= 1) != 0)
-+    ++log_size;
-+
-+  if (subseg_text_p (now_seg))
-+    {
-+      pfill = (const char *) &nop;
-+    }
-+  else
-+    pfill = NULL;
-+
-+  if (nios2_auto_align_on)
-+    nios2_align (log_size, pfill, NULL);
-+
-+  nios2_last_label = NULL;
-+}
-+
-+static void
-+s_nios2_sdata (int ignore ATTRIBUTE_UNUSED)
-+{
-+  int temp;
-+
-+  temp = get_absolute_expression ();
-+  subseg_new (".sdata", 0);
-+  demand_empty_rest_of_line ();
-+}
-+
-+/* Map 's' to SHF_NIOS2_GPREL.  */
-+/* this is from the Alpha code tc-alpha.c */
-+int
-+nios2_elf_section_letter (int letter, char **ptr_msg)
-+{
-+  if (letter == 's')
-+    return SHF_NIOS2_GPREL;
-+
-+  *ptr_msg = _("Bad .section directive: want a,s,w,x,M,S,G,T in string");
-+  return 0;
-+}
-+
-+/* Map SHF_ALPHA_GPREL to SEC_SMALL_DATA.  */
-+/* this is from the Alpha code tc-alpha.c */
-+flagword
-+nios2_elf_section_flags (flagword flags, int attr, int type ATTRIBUTE_UNUSED)
-+{
-+  if (attr & SHF_NIOS2_GPREL)
-+    flags |= SEC_SMALL_DATA;
-+  return flags;
-+}
-+
-+/* explicitly unaligned cons */
-+
-+static void
-+s_nios2_ucons (int nbytes)
-+{
-+  int hold;
-+  hold = nios2_auto_align_on;
-+  nios2_auto_align_on = 0;
-+  cons (nbytes);
-+  nios2_auto_align_on = hold;
-+}
-+
-+/* Handles all machine-dependent alignment needs */
-+static void
-+nios2_align (int log_size, const char *pfill, symbolS * label)
-+{
-+  int align;
-+  long max_alignment = 15;
-+
-+  /* The front end is prone to changing segments out from under us
-+     temporarily when -g is in effect.  */
-+  int switched_seg_p = (nios2_current_align_seg != now_seg);
-+
-+  align = log_size;
-+  if (align > max_alignment)
-+    {
-+      align = max_alignment;
-+      as_bad (_("Alignment too large: %d. assumed"), align);
-+    }
-+  else if (align < 0)
-+    {
-+      as_warn (_("Alignment negative: 0 assumed"));
-+      align = 0;
-+    }
-+
-+  if (align != 0)
-+    {
-+      if (subseg_text_p (now_seg) && align >= 2)
-+	{
-+	  /* First, make sure we're on a four-byte boundary, in case
-+	     someone has been putting .byte values the text section.  */
-+	  if (nios2_current_align < 2 || switched_seg_p)
-+	    frag_align (2, 0, 0);
-+
-+	  /* now fill in the alignment pattern */
-+	  if (pfill != NULL)
-+	    frag_align_pattern (align, pfill, sizeof nop, 0);
-+	  else
-+	    frag_align (align, 0, 0);
-+	}
-+      else
-+	{
-+	  frag_align (align, 0, 0);
-+	}
-+
-+      if (!switched_seg_p)
-+	nios2_current_align = align;
-+
-+      /* If the last label was in a different section we can't align it */
-+      if (label != NULL && !switched_seg_p)
-+	{
-+	  symbolS *sym;
-+	  int label_seen = FALSE;
-+	  struct frag *old_frag;
-+	  valueT old_value;
-+	  valueT new_value;
-+
-+	  assert (S_GET_SEGMENT (label) == now_seg);
-+
-+	  old_frag = symbol_get_frag (label);
-+	  old_value = S_GET_VALUE (label);
-+	  new_value = (valueT) frag_now_fix ();
-+
-+	  /* It is possible to have more than one label at a particular
-+	     address, especially if debugging is enabled, so we must
-+	     take care to adjust all the labels at this address in this
-+	     fragment.  To save time we search from the end of the symbol
-+	     list, backwards, since the symbols we are interested in are
-+	     almost certainly the ones that were most recently added.
-+	     Also to save time we stop searching once we have seen at least
-+	     one matching label, and we encounter a label that is no longer
-+	     in the target fragment.  Note, this search is guaranteed to
-+	     find at least one match when sym == label, so no special case
-+	     code is necessary.  */
-+	  for (sym = symbol_lastP; sym != NULL; sym = symbol_previous (sym))
-+	    {
-+	      if (symbol_get_frag (sym) == old_frag
-+		  && S_GET_VALUE (sym) == old_value)
-+		{
-+		  label_seen = TRUE;
-+		  symbol_set_frag (sym, frag_now);
-+		  S_SET_VALUE (sym, new_value);
-+		}
-+	      else if (label_seen && symbol_get_frag (sym) != old_frag)
-+		break;
-+	    }
-+	}
-+      record_alignment (now_seg, align);
-+    }
-+}
-+
-+/* This is called from HANDLE_ALIGN in tc-nios2.h.  */
-+
-+void
-+nios2_handle_align (fragS * fragp)
-+{
-+  /* If we are expecting to relax in the linker, then we must output a relocation
-+   * to tell the linker we are aligning code */
-+  if (nios2_as_options.relax == relax_all
-+      && (fragp->fr_type == rs_align
-+	  || fragp->fr_type == rs_align_code)
-+      && fragp->fr_address + fragp->fr_fix > 0
-+      && fragp->fr_offset > 1 && now_seg != bss_section)
-+    fix_new (fragp, fragp->fr_fix, 4, &abs_symbol, fragp->fr_offset, 0,
-+	     BFD_RELOC_NIOS2_ALIGN);
-+
-+}
-+
-+/* Handle the .align pseudo-op.  This aligns to a power of two.  It
-+   also adjusts any current instruction label.  We treat this the same
-+   way the MIPS port does: .align 0 turns off auto alignment.  */
-+
-+static void
-+s_nios2_align (int ignore ATTRIBUTE_UNUSED)
-+{
-+  int align;
-+  char fill;
-+  const char *pfill = NULL;
-+  long max_alignment = 15;
-+
-+
-+  align = get_absolute_expression ();
-+  if (align > max_alignment)
-+    {
-+      align = max_alignment;
-+      as_bad (_("Alignment too large: %d. assumed"), align);
-+    }
-+  else if (align < 0)
-+    {
-+      as_warn (_("Alignment negative: 0 assumed"));
-+      align = 0;
-+    }
-+
-+  if (*input_line_pointer == ',')
-+    {
-+      input_line_pointer++;
-+      fill = get_absolute_expression ();
-+      pfill = (const char *) &fill;
-+    }
-+  else if (subseg_text_p (now_seg))
-+    {
-+      pfill = (const char *) &nop;
-+    }
-+  else
-+    {
-+      pfill = NULL;
-+      nios2_last_label = NULL;
-+    }
-+
-+  if (align != 0)
-+    {
-+      nios2_auto_align_on = 1;
-+      nios2_align (align, pfill, nios2_last_label);
-+      nios2_last_label = NULL;
-+    }
-+  else
-+    {
-+      nios2_auto_align_on = 0;
-+    }
-+
-+  demand_empty_rest_of_line ();
-+}
-+
-+
-+/* Handle the .text pseudo-op.  This is like the usual one, but it
-+   clears the saved last label and resets known alignment.  */
-+
-+static void
-+s_nios2_text (int i)
-+{
-+  s_text (i);
-+  nios2_last_label = NULL;
-+  nios2_current_align = 0;
-+  nios2_current_align_seg = now_seg;
-+}
-+
-+/* Handle the .data pseudo-op.  This is like the usual one, but it
-+   clears the saved last label and resets known alignment.  */
-+
-+static void
-+s_nios2_data (int i)
-+{
-+  s_data (i);
-+  nios2_last_label = NULL;
-+  nios2_current_align = 0;
-+  nios2_current_align_seg = now_seg;
-+}
-+
-+/* Handle the .section pseudo-op.  This is like the usual one, but it
-+   clears the saved last label and resets known alignment.  */
-+
-+static void
-+s_nios2_section (int ignore)
-+{
-+  obj_elf_section (ignore);
-+  nios2_last_label = NULL;
-+  nios2_current_align = 0;
-+  nios2_current_align_seg = now_seg;
-+}
---- binutils-2.15/gas/config/tc-nios2.h	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/config/tc-nios2.h	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,98 @@
-+/* tc-nios2.h -- header file for tc-nios2.c.
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+   This file is part of GAS.
-+
-+   GAS 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.
-+
-+   GAS 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 GAS; see the file COPYING.  If not, write to the Free
-+   Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-+   02111-1307, USA.  */
-+
-+#ifndef TC_NIOS2
-+#define TC_NIOS2
-+
-+
-+#define TARGET_BYTES_BIG_ENDIAN 0
-+
-+#ifdef OBJ_ELF
-+#define TARGET_FORMAT  "elf32-littlenios2"
-+#define TARGET_ARCH    bfd_arch_nios2
-+#endif
-+
-+/* An NIOS2 instruction consists of tokens and separator characters
-+// the tokens are things like the instruction name (add, or jmp etc),
-+// the register indices ($5, $7 etc), and constant expressions. The
-+// separator characters are commas, brackets and space.
-+// The instruction name is always separated from other tokens by a space
-+// The maximum number of tokens in an instruction is 5 (the instruction name,
-+// 3 arguments, and a 4th string representing the expected instructin opcode
-+// after assembly. The latter is only used when the assemble is running in
-+// self test mode, otherwise its presence will generate an error. */
-+#define NIOS2_MAX_INSN_TOKENS	6
-+
-+/* There are no machine-specific operands so we #define this to nothing */
-+#define md_operand(x)
-+
-+/* NG this may need to change when we look at implementing symbols */
-+#define md_undefined_symbol(name)	(0)
-+
-+/* function prototypes exported to rest of GAS */
-+extern void md_assemble (char *op_str);
-+extern void md_end (void);
-+extern void md_begin (void);
-+
-+#define TC_FORCE_RELOCATION(fixp) nios2_force_relocation (fixp)
-+extern int nios2_force_relocation (struct fix *);
-+
-+#define tc_fix_adjustable(fixp) nios2_fix_adjustable (fixp)
-+extern int nios2_fix_adjustable (struct fix *);
-+
-+#define tc_frob_label(lab)	     nios2_frob_label(lab)
-+extern void nios2_frob_label (symbolS *);
-+
-+#define tc_frob_symbol(symp, punt)  punt = nios2_frob_symbol(symp) ? 1 : punt
-+extern int nios2_frob_symbol (symbolS * symp);
-+
-+#define md_cons_align(nbytes) nios2_cons_align (nbytes)
-+extern void nios2_cons_align (int);
-+
-+extern void md_convert_frag (bfd * headers, segT sec, fragS * fragP);
-+
-+/* When relaxing, we need to generate relocations for alignment
-+   directives.  */
-+#define HANDLE_ALIGN(frag) nios2_handle_align (frag)
-+extern void nios2_handle_align (fragS *);
-+
-+
-+#define md_relax_frag nios2_relax_frag
-+extern long nios2_relax_frag
-+  (segT segment, fragS * fragP, long stretch);
-+
-+#ifdef OBJ_ELF
-+#define ELF_TC_SPECIAL_SECTIONS \
-+  { ".sdata",   SHT_PROGBITS,   SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL  }, \
-+  { ".sbss",    SHT_NOBITS,     SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL  }, \
-+  { ".lit4",	SHT_PROGBITS,	SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL  }, \
-+  { ".lit8",	SHT_PROGBITS,	SHF_ALLOC + SHF_WRITE + SHF_NIOS2_GPREL  },
-+
-+/* Processor specific section directives */
-+#define md_elf_section_letter		nios2_elf_section_letter
-+extern int nios2_elf_section_letter (int, char **);
-+#define md_elf_section_flags		nios2_elf_section_flags
-+extern flagword nios2_elf_section_flags (flagword, int, int);
-+#endif
-+
-+
-+#endif // TC_NIOS2
---- binutils-2.15/gas/configure	2004-05-17 21:36:07.000000000 +0200
-+++ binutils-2.15-nios2/gas/configure	2005-05-17 12:20:13.000000000 +0200
-@@ -4173,6 +4173,7 @@ for this_target in $target $canon_target
-       m8*)		cpu_type=m88k ;;
-       mips*el)		cpu_type=mips endian=little ;;
-       mips*)		cpu_type=mips endian=big ;;
-+      nios2*|nios2*)		cpu_type=nios2 ;;
-       or32*)		cpu_type=or32 endian=big ;;
-       pjl*)		cpu_type=pj endian=little ;;
-       pj*)		cpu_type=pj endian=big ;;
-@@ -4439,6 +4440,7 @@ echo "$as_me: error: Unknown vendor for 
-       mn10200-*-*)			fmt=elf ;;
-       mn10300-*-*)			fmt=elf ;;
-       msp430-*-*)			fmt=elf ;;
-+      nios2-*-*)			fmt=elf ;;
-       openrisc-*-*)			fmt=elf ;;
-       or32-*-rtems*)			fmt=elf ;;
-       or32-*-coff)			fmt=coff ;;
-@@ -4589,7 +4591,7 @@ _ACEOF
-     fi
- 
-     case ${cpu_type}-${fmt} in
--	alpha*-* | arm-* | i386-* | ia64*-* | mips-* | ns32k-* \
-+	alpha*-* | arm-* | i386-* | ia64*-* | mips-* | nios2-* | ns32k-* \
- 		| pdp11-* | ppc-* | sparc-* | strongarm-* | xscale-* \
- 		| *-elf | *-ecoff | *-som)
- 	    bfd_gas=yes ;;
---- binutils-2.15/gas/configure.in	2004-05-17 21:36:07.000000000 +0200
-+++ binutils-2.15-nios2/gas/configure.in	2005-05-17 12:20:13.000000000 +0200
-@@ -143,6 +143,7 @@ changequote([,])dnl
-       m8*)		cpu_type=m88k ;;
-       mips*el)		cpu_type=mips endian=little ;;
-       mips*)		cpu_type=mips endian=big ;;
-+      nios2*|nios2*)		cpu_type=nios2 ;;
-       or32*)		cpu_type=or32 endian=big ;;
-       pjl*)		cpu_type=pj endian=little ;;
-       pj*)		cpu_type=pj endian=big ;;
-@@ -400,6 +401,7 @@ changequote([,])dnl
-       mn10200-*-*)			fmt=elf ;;
-       mn10300-*-*)			fmt=elf ;;
-       msp430-*-*)			fmt=elf ;;
-+      nios2-*-*)			fmt=elf ;;
-       openrisc-*-*)			fmt=elf ;;
-       or32-*-rtems*)			fmt=elf ;;
-       or32-*-coff)			fmt=coff ;;
-@@ -539,7 +541,7 @@ changequote([,])dnl
-     fi
- 
-     case ${cpu_type}-${fmt} in
--	alpha*-* | arm-* | i386-* | ia64*-* | mips-* | ns32k-* \
-+	alpha*-* | arm-* | i386-* | ia64*-* | mips-* | nios2-* | ns32k-* \
- 		| pdp11-* | ppc-* | sparc-* | strongarm-* | xscale-* \
- 		| *-elf | *-ecoff | *-som)
- 	    bfd_gas=yes ;;
---- binutils-2.15/gas/doc/Makefile.am	2004-01-05 23:16:05.000000000 +0100
-+++ binutils-2.15-nios2/gas/doc/Makefile.am	2005-05-17 12:20:13.000000000 +0200
-@@ -24,6 +24,7 @@ asconfig.texi: $(CONFIG).texi
- 	  || cp $(srcdir)/$(CONFIG).texi ./asconfig.texi
- 
- CPU_DOCS = \
-+	c-nios2.texi \
- 	c-a29k.texi \
- 	c-alpha.texi \
- 	c-arc.texi \
---- binutils-2.15/gas/doc/Makefile.in	2004-05-17 21:36:11.000000000 +0200
-+++ binutils-2.15-nios2/gas/doc/Makefile.in	2005-05-17 12:20:13.000000000 +0200
-@@ -213,6 +213,7 @@ POD2MAN = pod2man --center="GNU Developm
- man_MANS = as.1
- info_TEXINFOS = as.texinfo 
- CPU_DOCS = \
-+	c-nios2.texi \
- 	c-a29k.texi \
- 	c-alpha.texi \
- 	c-arc.texi \
---- binutils-2.15/gas/doc/all.texi	2003-04-01 17:50:30.000000000 +0200
-+++ binutils-2.15-nios2/gas/doc/all.texi	2005-05-17 12:20:13.000000000 +0200
-@@ -26,6 +26,7 @@
- 
- @c CPUs of interest
- @c ================
-+@set NIOSII
- @set A29K
- @set ALPHA
- @set ARC
---- binutils-2.15/gas/doc/as.texinfo	2004-01-09 03:34:04.000000000 +0100
-+++ binutils-2.15-nios2/gas/doc/as.texinfo	2005-05-17 12:20:13.000000000 +0200
-@@ -238,6 +238,15 @@ gcc(1), ld(1), and the Info entries for 
- @c
- @c Target dependent options are listed below.  Keep the list sorted.
- @c Add an empty line for separation. 
-+
-+
-+@ifset NIOSII
-+@emph{Target Altera Nios II options:}
-+   [@b{-relax-all}]
-+   [@b{-relax-section}]
-+   [@b{-no-relax}] 
-+@end ifset
-+
- @ifset A29K
- @c am29k has no machine-dependent assembler options
- @end ifset
-@@ -577,6 +586,21 @@ Standard input, or source files to assem
- 
- @end table
- 
-+@ifset NIOSII
-+The following options are available when @value{AS} is configured for
-+an Altera Nios II processor.
-+
-+@table @gcctabopt
-+@item -relax-all
-+Replace all branch and call instructions with @code{jmp} and @code{callr} sequences
-+@item -relax-section
-+Replace identified out of range branches with @code{jmp} sequences (default)
-+@item -no-relax
-+Do not replace any branches or calls
-+@end table
-+@end ifset
-+
-+
- @ifset ARC
- The following options are available when @value{AS} is configured for
- an ARC processor.
-@@ -2035,6 +2059,9 @@ This means you may not nest these commen
- @cindex line comment character
- Anything from the @dfn{line comment} character to the next newline
- is considered a comment and is ignored.  The line comment character is
-+@ifset NIOSII
-+@samp{#} for the Altera Nios II family;
-+@end ifset
- @ifset A29K
- @samp{;} for the AMD 29K family;
- @end ifset
-@@ -3876,7 +3903,7 @@ is already a multiple of 8, no change is
- first expression is the alignment request in words.
- 
- For other systems, including the i386 using a.out format, and the arm and
--strongarm, it is the
-+strongarm, and the Altera Nios II, it is the
- number of low-order zero bits the location counter must have after
- advancement.  For example @samp{.align 3} advances the location
- counter until it a multiple of 8.  If the location counter is already a
-@@ -5864,6 +5891,9 @@ include details on any machine's instruc
- subject, see the hardware manufacturer's manual.
- 
- @menu
-+@ifset NIOSII
-+* NiosII-Dependent::            Altera Nios II Dependent Features
-+@end ifset
- @ifset A29K
- * AMD29K-Dependent::            AMD 29K Dependent Features
- @end ifset
-@@ -5974,6 +6004,11 @@ subject, see the hardware manufacturer's
- @c node and sectioning commands; hence the repetition of @chapter BLAH
- @c in both conditional blocks.
- 
-+
-+@ifset NIOSII
-+@include c-nios2.texi
-+@end ifset
-+
- @ifset A29K
- @include c-a29k.texi
- @end ifset
---- binutils-2.15/gas/doc/c-nios2.texi	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/doc/c-nios2.texi	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,214 @@
-+@c Copyright 2004 
-+@c This is part of the GAS manual.
-+@c For copying conditions, see the file as.texinfo.
-+@ifset GENERIC
-+@page
-+@node NiosII-Dependent
-+@chapter Altera Nios II Dependent Features
-+@end ifset
-+@ifclear GENERIC
-+@node Machine Dependencies
-+@chapter ltera Nios II Dependent Features
-+@end ifclear
-+
-+@cindex Altera Nios II support
-+@cindex Nios support
-+@cindex Nios II support
-+@menu
-+* Nios II Options::              Options
-+* Nios II Syntax::               Syntax
-+* Nios II Relocations::          Relocations
-+* Nios II Directives::           Nios II Machine Directives
-+* Nios II Opcodes::              Opcodes
-+@end menu
-+
-+@node Nios II Options
-+@section Options
-+@cindex Nios II options
-+@cindex options for Nios II
-+
-+@table @code
-+
-+@cindex @code{relax-all} command line option, Nios II
-+@item -relax-all
-+Replace all branch and call instructions with @code{jmp} and @code{callr} sequences
-+
-+@cindex @code{relax-section} command line option, Nios II
-+@item -relax-section
-+Replace identified out of range branches with @code{jmp} sequences (default)
-+
-+@cindex @code{no-relax} command line option, Nios II
-+@item -no-relax
-+Do not replace any branches or calls
-+
-+@end table
-+
-+
-+@node Nios II Syntax
-+@section Syntax
-+@menu
-+* Nios II Chars::                Special Characters
-+@end menu
-+
-+
-+@node Nios II Chars
-+@subsection Special Characters
-+
-+@cindex line comment character, Nios II
-+@cindex Nios II line comment character
-+@samp{#} is the line comment character.
-+
-+@cindex line separator character, Nios II
-+@cindex Nios II line separator character
-+@samp{;} is the line separator character.
-+
-+
-+@node Nios II Relocations
-+@section Nios II Machine Relocations
-+
-+@cindex machine relocations, Nios II
-+@cindex Nios II machine relocations
-+
-+@table @code
-+@cindex @code{hiadj} directive, Nios II
-+@item %hiadj(@var{expression})
-+Extract the upper 16-bits of @var{expression} and add 
-+one if the 15th bit is set. 
-+
-+The value of %hiadj is: 
-+((@var{expression} >> 16) & 0xffff) + ((@var{expression} >> 15) & 0x01).
-+
-+The intention of the @code{%hiadj} relocation is to be used with
-+an @code{addi}, @code{ld} or @code{st} instructions
-+along with a @code{%lo}.
-+
-+@smallexample
-+movhi r2, %hiadj(symbol)
-+addi r2, r2, %lo(symbol)
-+@end smallexample
-+
-+@cindex @code{hi} directive, Nios II
-+@item %hi(@var{expression})
-+Extract the upper 16-bits of @var{expression}.
-+
-+
-+@cindex @code{lo} directive, Nios II
-+@item %lo(@var{expression})
-+Extract the lower 16-bits of @var{expression}.
-+
-+
-+@cindex @code{gprel} directive, Nios II
-+@item %gprel(@var{expression})
-+Subtract the value of the symbol @code{_gp} from
-+@var{expression}. 
-+
-+The intention of the @code{%gprel} relocation is
-+to have a fast small area of memory which only
-+takes a 16-bit immediate to access.
-+
-+@smallexample
-+	.section .sdata
-+fastint:
-+	.int 123
-+	.section .text
-+	ldw r4, %gprel(fastint)(gp)
-+@end smallexample
-+
-+
-+@end table
-+
-+
-+@node Nios II Directives
-+@section Nios II Machine Directives
-+
-+@cindex machine directives, Nios II
-+@cindex Nios II machine directives
-+
-+@table @code
-+
-+@cindex @code{align} directive, Nios II
-+@item .align @var{expression} [, @var{expression}]
-+This is the generic @var{.align} directive, however
-+this aligns to a power of two.
-+
-+@cindex @code{half} directive, Nios II
-+@item .half @var{expression}
-+Create an aligned constant 2-bytes in size
-+
-+@cindex @code{word} directive, Nios II
-+@item .word @var{expression}
-+Create an aligned constant 4-bytes in size
-+
-+@cindex @code{dword} directive, Nios II
-+@item .dword @var{expression}
-+Create an aligned constant 8-bytes in size
-+
-+@cindex @code{2byte} directive, Nios II
-+@item .2byte @var{expression}
-+Create an un-aligned constant 2-bytes in size
-+
-+@cindex @code{4byte} directive, Nios II
-+@item .4byte @var{expression}
-+Create an un-aligned constant 4-bytes in size
-+
-+@cindex @code{8byte} directive, Nios II
-+@item .8byte @var{expression}
-+Create an un-aligned constant 8-bytes in size
-+
-+@cindex @code{16byte} directive, Nios II
-+@item .16byte @var{expression}
-+Create an un-aligned constant 16-bytes in size
-+
-+@cindex @code{set noat} directive, Nios II
-+@item .set noat
-+Allows assembly code to use @code{at} register without 
-+warning and macro or relaxation expansions will 
-+generate a warning.
-+
-+@cindex @code{set at} directive, Nios II
-+@item .set at
-+Assembly code using @code{at} register will generate
-+warnings, and macro expansion and relaxation will be
-+enabled.
-+
-+@cindex @code{set nobreak} directive, Nios II
-+@item .set nobreak
-+Allows assembly code to use @code{ba}, @code{bt}, 
-+registers without warning. 
-+
-+@cindex @code{set break} directive, Nios II
-+@item .set break
-+Turns warnings back on for using @code{ba}, @code{bt}
-+registers.
-+
-+@cindex @code{set norelax} directive, Nios II
-+@item .set norelax
-+Do not replace any branches or calls.
-+
-+@cindex @code{set relaxsection} directive, Nios II
-+@item .set relaxsection
-+Replace identified out of range branches with 
-+@code{jmp} sequences (default).
-+
-+@cindex @code{set relaxall} directive, Nios II
-+@item .set relaxsection
-+Replace all branch and call instructions with
-+@code{jmp} and @code{callr} sequences.
-+
-+@cindex @code{set} directive, Nios II
-+@item .set @dots{}
-+All other @code{.set} are the normal use.
-+
-+@end table
-+
-+@node Nios II Opcodes
-+@section Opcodes
-+
-+@cindex Nios II opcodes
-+@cindex opcodes for Nios II
-+@code{@value{AS}} implements all the standard Nios II opcodes.  No
-+additional pseudo-instructions are needed on this family.
-+
-+For information on the Nios II machine instruction set, see the @cite{Nios II
-+User's Manual}
-+
---- binutils-2.15/gas/testsuite/gas/macros/irp.s	1999-06-10 15:48:35.000000000 +0200
-+++ binutils-2.15-nios2/gas/testsuite/gas/macros/irp.s	2005-05-17 12:20:13.000000000 +0200
-@@ -1,3 +1,4 @@
-+	.set norelax
- 	.irp	param,1,2,3
- 	.long	foo\param
- 	.endr
---- binutils-2.15/gas/testsuite/gas/macros/rept.s	1999-06-10 15:48:39.000000000 +0200
-+++ binutils-2.15-nios2/gas/testsuite/gas/macros/rept.s	2005-05-17 12:20:13.000000000 +0200
-@@ -1,3 +1,4 @@
-+	.set norelax
- 	.rept	3
- 	.long	foo1
- 	.endr
---- binutils-2.15/gas/testsuite/gas/macros/test2.s	2004-02-06 17:00:21.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/macros/test2.s	2005-05-17 12:20:13.000000000 +0200
-@@ -1,3 +1,4 @@
-+	.set norelax
- 	.macro	m arg1 arg2 arg3
- 	.long	\arg1
- 	.ifc	,\arg2\arg3
---- binutils-2.15/gas/testsuite/gas/macros/test3.s	1999-06-10 15:48:44.000000000 +0200
-+++ binutils-2.15-nios2/gas/testsuite/gas/macros/test3.s	2005-05-17 12:20:13.000000000 +0200
-@@ -1,3 +1,4 @@
-+	.set norelax
- 	.macro	m arg1 arg2
- 	\arg1
- 	.exitm
---- binutils-2.15/gas/testsuite/gas/nios2/add.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/add.d	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,16 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 add
-+
-+# Test the add instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> add	r4,r4,r4
-+0+0004 <[^>]*> addi	r4,r4,32767
-+0+0008 <[^>]*> addi	r4,r4,-32768
-+0+000c <[^>]*> addi	r4,r4,0
-+0+0010 <[^>]*> addi	r4,r4,-1
-+0+0014 <[^>]*> addi	r4,r4,-1
-+0+0018 <[^>]*> addi	r4,r4,13398
-+0+001c <[^>]*> nop
---- binutils-2.15/gas/testsuite/gas/nios2/add.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/add.s	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,13 @@
-+# Source file used to test the add and addi instructions.
-+	
-+foo:
-+	add	r4,r4,r4
-+	addi	r4,r4,0x7fff
-+	addi	r4,r4,-0x8000
-+	addi	r4,r4,0x0
-+	addi	r4,r4,-0x01
-+	subi	r4,r4,0x01
-+	addi	r4,r4,0x3456
-+
-+# should disassemble to add r0,0,r0
-+	nop
---- binutils-2.15/gas/testsuite/gas/nios2/align_fill.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/align_fill.d	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,23 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 align_fill
-+
-+# Test the and macro.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> addi	sp,sp,-8
-+0+0004 <[^>]*> stw	fp,4\(sp\)
-+0+0008 <[^>]*> mov	fp,sp
-+0+000c <[^>]*> mov	r3,zero
-+0+0010 <[^>]*> nop
-+0+0014 <[^>]*> nop
-+0+0018 <[^>]*> nop
-+0+001c <[^>]*> nop
-+0+0020 <[^>]*> addi	r3,r3,1
-+0+0024 <[^>]*> cmplti	r2,r3,100
-+0+0028 <[^>]*> bne	r2,zero,0+0020 <[^>*]*>
-+0+002c <[^>]*> ldw	fp,4\(sp\)
-+0+0030 <[^>]*> addi	sp,sp,8
-+0+0034 <[^>]*> ret
-+	...
---- binutils-2.15/gas/testsuite/gas/nios2/align_fill.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/align_fill.s	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,20 @@
-+	.file	"a.c"
-+	.section	.text
-+	.align	3
-+	.global	x
-+	.type	x, @function
-+x:
-+	addi	sp, sp, -8
-+	stw	fp, 4(sp)
-+	mov	fp, sp
-+	mov	r3, zero
-+	.align	5
-+.L6:
-+	addi	r3, r3, 1
-+	cmplti	r2, r3, 100
-+	bne	r2, zero, .L6
-+	ldw	fp, 4(sp)
-+	addi	sp, sp, 8
-+	ret	
-+	.size	x, .-x
-+	.ident	"GCC: (GNU) 3.3.3 (Altera Nios II 1.0 b302)"
---- binutils-2.15/gas/testsuite/gas/nios2/align_text.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/align_text.d	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,22 @@
-+#objdump: -dr
-+#name: NIOS2 align_test
-+
-+# Test alignment in text sections.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+00000000 <label-0x20>:
-+   0:	00000000 	call	0 <label-0x20>
-+   4:	0001883a 	nop
-+   8:	0001883a 	nop
-+   c:	0001883a 	nop
-+  10:	0001883a 	nop
-+  14:	0001883a 	nop
-+  18:	0001883a 	nop
-+  1c:	0001883a 	nop
-+
-+00000020 <label>:
-+  20:	0001883a 	nop
-+00000024 <label2>:
-+	...
-\ No newline at end of file
---- binutils-2.15/gas/testsuite/gas/nios2/align_text.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/align_text.s	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,15 @@
-+ .asciz ""         # empty string
-+ .align 2
-+  
-+ 	nop
-+ 	nop
-+ label:
-+ .align 5
-+ 	nop
-+ label2:
-+ .section mysection
-+ .align 2
-+ 
-+ 
-+ 	
-+ 
---- binutils-2.15/gas/testsuite/gas/nios2/and.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/and.d	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,17 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 and
-+
-+# Test the and macro.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> and	r4,r4,r4
-+0+0004 <[^>]*> andi	r4,r4,32767
-+0+0008 <[^>]*> andi	r4,r4,32768
-+0+000c <[^>]*> andi	r4,r4,65535
-+0+0010 <[^>]*> andi	r4,r4,0
-+0+0014 <[^>]*> andhi	r4,r4,32767
-+0+0018 <[^>]*> andhi	r4,r4,32768
-+0+001c <[^>]*> andhi	r4,r4,65535
-+0+0020 <[^>]*> andhi	r4,r4,0
---- binutils-2.15/gas/testsuite/gas/nios2/and.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/and.s	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,13 @@
-+# Source file used to test the and, andhi and andi instructions
-+	
-+foo:
-+	and	r4,r4,r4
-+	andi	r4,r4,0x7fff
-+	andi	r4,r4,0x8000
-+	andi	r4,r4,0xffff
-+	andi	r4,r4,0x0
-+	andhi	r4,r4,0x7fff
-+	andhi	r4,r4,0x8000
-+	andhi	r4,r4,0xffff
-+	andhi	r4,r4,0x0
-+	
-\ No newline at end of file
---- binutils-2.15/gas/testsuite/gas/nios2/blt.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/blt.d	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1 @@
-+This file is obsolete
-\ No newline at end of file
---- binutils-2.15/gas/testsuite/gas/nios2/blt.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/blt.s	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1 @@
-+This file is obsolete
-\ No newline at end of file
---- binutils-2.15/gas/testsuite/gas/nios2/branch.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/branch.d	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,16 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 branch
-+
-+# Test the branch instructions.
-+dump.o:     file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> beq	r4,r5,00000000 <text_label>
-+0+0004 <[^>]*> bge	r4,r5,00000000 <text_label>
-+0+0008 <[^>]*> bgeu	r4,r5,00000000 <text_label>
-+0+000c <[^>]*> blt	r4,r5,00000000 <text_label>
-+0+0010 <[^>]*> bltu	r4,r5,00000000 <text_label>
-+0+0014 <[^>]*> bne	r4,r5,00000000 <text_label>
-+0+0018 <[^>]*> br	0000001c <text_label\+0x1c>
-+[	]*18: R_NIOS2_PCREL16	external_label
-+
---- binutils-2.15/gas/testsuite/gas/nios2/branch.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/branch.s	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,15 @@
-+# Source file used to test the beq macro.
-+	.globl	text_label	
-+	.text
-+.set norelax
-+text_label:	
-+	beq	r4,r5,text_label
-+	bge	r4,r5,text_label
-+	bgeu	r4,r5,text_label
-+	blt	r4,r5,text_label
-+	bltu	r4,r5,text_label
-+	bne	r4,r5,text_label
-+
-+# Branch to an external label.
-+	br	external_label
-+
---- binutils-2.15/gas/testsuite/gas/nios2/break.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/break.d	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,12 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 break
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> break	0
-+0+0004 <[^>]*> break	0
-+0+0008 <[^>]*> break	31
-+0+000c <[^>]*> break	14
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/break.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/break.s	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,8 @@
-+# Source file used to test the 20-bit break instructions
-+foo:	
-+	break
-+	break 0
-+	break 31
-+	break 14
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/bret.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/bret.d	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,8 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 bret
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> bret
-+
---- binutils-2.15/gas/testsuite/gas/nios2/bret.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/bret.s	2005-05-17 12:20:13.000000000 +0200
-@@ -0,0 +1,5 @@
-+# Source file used to test the bret instructions
-+foo:	
-+	bret
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/cache.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/cache.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,17 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 cache
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> flushd	-32768\(r6\)
-+0+0004 <[^>]*> flushd	32767\(r6\)
-+0+0008 <[^>]*> flushd	0\(r6\)
-+0+000c <[^>]*> flushd	-1\(r6\)
-+0+0010 <[^>]*> flushd	0\(r6\)
-+[	]*10: R_NIOS2_S16	.text
-+0+0014 <[^>]*> flushd	0\(r6\)
-+[	]*14: R_NIOS2_S16	external
-+0+0018 <[^>]*> flushi	r2
-+0+001c <[^>]*> flushp
-+
---- binutils-2.15/gas/testsuite/gas/nios2/cache.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/cache.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,21 @@
-+# Source file used to test the cache instruction
-+foo:
-+	flushd -0x8000(r6)
-+	flushd 0x7fff(r6)
-+	flushd 0x0(r6)
-+	flushd -0x0001(r6)
-+	
-+# use symbol for offset
-+	flushd foo(r6)
-+	
-+# use external symbol
-+	.global external
-+	flushd external(r6)
-+	
-+# flushi
-+	flushi r2
-+
-+#flushp
-+	flushp
-+	
-+
---- binutils-2.15/gas/testsuite/gas/nios2/call.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/call.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,11 @@
-+# objdump: -dr --prefix-addresses
-+#name: NIOS2 call
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> call	00000000 <foo>
-+[	]*0: R_NIOS2_CALL26	.text\+0xc
-+0+0004 <[^>]*> callr	r10
-+0+0008 <[^>]*> call	00000000 <foo>
-+[	]*8: R_NIOS2_CALL26	external
---- binutils-2.15/gas/testsuite/gas/nios2/call.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/call.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,13 @@
-+# Source file used to test the call and callr instructions
-+.text
-+.set norelax
-+foo:
-+	call	func1
-+	callr	r10
-+# use external symbol
-+	.global external
-+	call	external
-+func1:
-+	
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/cmp.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/cmp.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,24 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 cmp
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> cmpeq	r11,r2,r3
-+0+0004 <[^>]*> cmpge	r11,r2,r3
-+0+0008 <[^>]*> cmpgeu	r11,r2,r3
-+0+000c <[^>]*> cmplt	r11,r2,r3
-+0+0010 <[^>]*> cmpltu	r11,r2,r3
-+0+0014 <[^>]*> cmpne	r11,r2,r3
-+0+0018 <[^>]*> cmpgei	r11,r2,0
-+[	]*18: R_NIOS2_S16	value
-+0+001c <[^>]*> cmpgeui	r11,r2,0
-+[	]*1c: R_NIOS2_U16	value\+0x200
-+0+0020 <[^>]*> cmplti	r11,r2,0
-+[	]*20: R_NIOS2_S16	value
-+0+0024 <[^>]*> cmpltui	r11,r2,0
-+[	]*24: R_NIOS2_U16	value\+0x200
-+0+0028 <[^>]*> cmpgei	r11,r2,32767
-+0+002c <[^>]*> cmpgeui	r11,r2,32768
-+0+0030 <[^>]*> cmplti	r11,r2,-32768
-+0+0034 <[^>]*> cmpltui	r11,r2,65535
-\ No newline at end of file
---- binutils-2.15/gas/testsuite/gas/nios2/cmp.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/cmp.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,22 @@
-+# Source file used to test the compare instructions
-+foo:
-+	cmpeq r11,r2,r3
-+	cmpge r11,r2,r3
-+	cmpgeu r11,r2,r3
-+	cmplt r11,r2,r3
-+	cmpltu r11,r2,r3
-+	cmpne r11,r2,r3
-+# test that cmp generates relocations correctly	
-+	cmpgei r11,r2,value
-+	cmpgeui r11,r2,value+0x200
-+	cmplti	r11,r2,value
-+	cmpltui r11,r2,value+0x200
-+
-+	cmpgei r11,r2,0x7fff
-+	cmpgeui r11,r2,0x8000
-+	cmplti	r11,r2,-0x8000
-+	cmpltui r11,r2,0xFFFF
-+.global value	
-+
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/comments.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/comments.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,26 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 comments
-+
-+# Test the add instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> br	0000001c <start>
-+0+0004 <[^>]*> br	00000008 <abort>
-+0+0008 <[^>]*> movui	r3,0
-+0+000c <[^>]*> movui	r2,1
-+0+0010 <[^>]*> movui	r3,0
-+0+0014 <[^>]*> movui	r2,0
-+0+0018 <[^>]*> br	00000044 <exit>
-+0+001c <[^>]*> addi	r2,r2,-4
-+0+0020 <[^>]*> movui	r11,1
-+0+0024 <[^>]*> movui	r5,0
-+0+0028 <[^>]*> movui	r6,0
-+0+002c <[^>]*> br	00000030 <ldst>
-+0+0030 <[^>]*> movui	r2,61452
-+0+0034 <[^>]*> movui	r20,64206
-+0+0038 <[^>]*> stw	r20,0\(r2\)
-+0+003c <[^>]*> ldw	r21,0\(r2\)
-+0+0040 <[^>]*> br	00000010 <end>
-+0+0044 <[^>]*> br	00000044 <exit>
---- binutils-2.15/gas/testsuite/gas/nios2/comments.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/comments.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,28 @@
-+.set norelax
-+_main:	br start
-+trap:
-+	br abort	
-+.globl _main
-+abort: 	movui r3, 0x0
-+	movui  r2, 0x1
-+	
-+end: movui r3, 0x0
-+	movui r2, 0x0
-+	br exit
-+
-+start:	
-+		addi r2, r2, -4		# test for ve numbers
-+		movui r11, 0x1		
-+		ori r5, r0, %lo(0x0)	# r5 = 0x0
-+		ori r6, r0, %lo(0x0)	# r6 = 0x0
-+		br ldst	
-+
-+ldst:
-+		movui r2, 0xF00C
-+		movui r20, 0xFACE
-+		stw r20,(r2)
-+		ldw r21, (r2)		
-+		br end
-+		
-+
-+exit:	br exit
---- binutils-2.15/gas/testsuite/gas/nios2/complex.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/complex.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,12 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 complex
-+
-+# Test complex expression parsing
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> ldw	r2,-1\(r3\)
-+0+0004 <[^>]*> ldw	r2,1\(r3\)
-+0+0008 <[^>]*> ldw	r2,0\(r3\)
-+			8: R_NIOS2_S16	stack_top\+0xffffffff
---- binutils-2.15/gas/testsuite/gas/nios2/complex.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/complex.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,5 @@
-+foo:
-+	ldw r2, (2-3)(r3)
-+	ldw r2, 2 + (2-3)(r3)
-+	ldw r2, 2 + (stack_top-3)(r3)
-+
---- binutils-2.15/gas/testsuite/gas/nios2/ctl.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ctl.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,20 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 ctl
-+
-+# Test the ctl instructions
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> rdctl	r8,ctl31
-+0+0004 <[^>]*> rdctl	r8,ctl30
-+0+0008 <[^>]*> rdctl	r8,ctl29
-+0+000c <[^>]*> rdctl	r8,status
-+0+0010 <[^>]*> rdctl	r8,bstatus
-+0+0014 <[^>]*> rdctl	r8,estatus
-+0+0018 <[^>]*> wrctl	ctl31,r8
-+0+001c <[^>]*> wrctl	ctl30,r8
-+0+0020 <[^>]*> wrctl	ctl29,r8
-+0+0024 <[^>]*> wrctl	status,r8
-+0+0028 <[^>]*> wrctl	bstatus,r8
-+0+002c <[^>]*> wrctl	estatus,r8
---- binutils-2.15/gas/testsuite/gas/nios2/ctl.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ctl.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,18 @@
-+# Source file used to test the nor instruction
-+	
-+foo:
-+	rdctl	r8,ctl31
-+	rdctl	r8,ctl30
-+	rdctl	r8,ctl29
-+	rdctl	r8,status
-+	rdctl	r8,bstatus
-+	rdctl	r8,estatus
-+	wrctl	ctl31,r8
-+	wrctl	ctl30,r8
-+	wrctl	ctl29,r8
-+	wrctl	status,r8
-+	wrctl	bstatus,r8
-+	wrctl	estatus,r8
-+
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/custom.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/custom.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,13 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 custom
-+
-+# Test the custom instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> custom	0,r11,r2,r3
-+0+0004 <[^>]*> custom	255,r11,r2,r3
-+0+0008 <[^>]*> custom	150,c1,r2,r3
-+0+000c <[^>]*> custom	24,c1,c2,r3
-+0+0010 <[^>]*> custom	56,c1,c2,c3
---- binutils-2.15/gas/testsuite/gas/nios2/custom.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/custom.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8 @@
-+# test progam for assembling user instructions
-+
-+foo:
-+	custom 0, r11, r2, r3
-+	custom 255, r11, r2, r3
-+	custom 150, c1, r2, r3
-+	custom 0x18, c1, c2, r3
-+	custom 070, c1, c2, c3
---- binutils-2.15/gas/testsuite/gas/nios2/etbt.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/etbt.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 etbt
-+
-+# Test the et, bt registers
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> add	et,bt,r6
-+0+0004 <[^>]*> add	et,bt,r6
---- binutils-2.15/gas/testsuite/gas/nios2/etbt.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/etbt.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,4 @@
-+.set nobreak
-+foo:
-+	add r24, r25, r6
-+	add et, bt, r6
---- binutils-2.15/gas/testsuite/gas/nios2/hilo_symbol.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/hilo_symbol.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,3 @@
-+.global long_symbol
-+.set long_symbol, 0xDEADBEEF
-+
---- binutils-2.15/gas/testsuite/gas/nios2/illegal.l	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/illegal.l	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,14 @@
-+.*illegal.s: Assembler messages:
-+.*illegal.s:5: Error: unknown register r56
-+.*illegal.s:8: Error: expecting \( near 0x1000
-+.*illegal.s:8: Error: missing argument
-+.*illegal.s:9: Error: expecting \) near r5
-+.*illegal.s:10: Error: expecting \( near 0x1000r5\)
-+.*illegal.s:10: Error: missing argument
-+.*illegal.s:11: Error: expecting \( near 0x1000,r5
-+.*illegal.s:11: Error: missing argument
-+.*illegal.s:12: Error: unknown register 0x1000
-+.*illegal.s:14: Error: unrecognised instruction fop
-+.*illegal.s:16: Error: too many arguments
-+.*illegal.s:17: Error: too many arguments
-+.*illegal.s:17: Error: unknown register r2,r4
---- binutils-2.15/gas/testsuite/gas/nios2/illegal.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/illegal.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,17 @@
-+# Source file used to test illegal operands.
-+
-+foo:
-+# Illegal registers
-+	add r3,r4,r56
-+	add r4,r0,r2
-+# Illegal syntax
-+	ldw r4,0x1000
-+	ldw r4,0x1000(r5
-+	ldw r4,0x1000r5)
-+	ldw r4,0x1000,r5
-+	ldw r4,(0x1000)r5
-+# Illegal opcodes
-+	fop r3,r4,r5
-+# Extra operands
-+	nop Crapola
-+	add r2, r2, r2, r4
---- binutils-2.15/gas/testsuite/gas/nios2/imm5_symbol.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/imm5_symbol.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,4 @@
-+.global imm5
-+.text
-+.byte imm5
-+.set imm5, 31
---- binutils-2.15/gas/testsuite/gas/nios2/jmp.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/jmp.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 jmp
-+
-+# Test the jmp instruction.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> jmp	bt
-+
---- binutils-2.15/gas/testsuite/gas/nios2/jmp.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/jmp.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,6 @@
-+# Source file used to test the jmp instruction.
-+.text
-+.set nobreak
-+foo:
-+	jmp	r25
-+	
---- binutils-2.15/gas/testsuite/gas/nios2/ldb.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ldb.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,196 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 ldb
-+
-+# Test the ld instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> ldb	r4,0\(zero\)
-+0+0004 <[^>]*> ldb	r4,4\(zero\)
-+0+0008 <[^>]*> ldb	r4,32764\(zero\)
-+0+000c <[^>]*> ldb	r4,-32768\(zero\)
-+0+0010 <[^>]*> ldb	r4,0\(r5\)
-+0+0014 <[^>]*> ldb	r4,4\(r5\)
-+0+0018 <[^>]*> ldb	r4,32764\(r5\)
-+0+001c <[^>]*> ldb	r4,-32768\(r5\)
-+0+0020 <[^>]*> ldb	r4,0\(zero\)
-+[	]*20: R_NIOS2_S16	.data
-+0+0024 <[^>]*> ldb	r4,0\(zero\)
-+[	]*24: R_NIOS2_S16	big_external_data_label
-+0+0028 <[^>]*> ldb	r4,0\(zero\)
-+[	]*28: R_NIOS2_S16	small_external_data_label
-+0+002c <[^>]*> ldb	r4,0\(zero\)
-+[	]*2c: R_NIOS2_S16	big_external_common
-+0+0030 <[^>]*> ldb	r4,0\(zero\)
-+[	]*30: R_NIOS2_S16	small_external_common
-+0+0034 <[^>]*> ldb	r4,0\(zero\)
-+[	]*34: R_NIOS2_S16	.bss
-+0+0038 <[^>]*> ldb	r4,0\(zero\)
-+[	]*38: R_NIOS2_S16	.bss\+0x4000
-+0+003c <[^>]*> ldb	r4,0\(zero\)
-+[	]*3c: R_NIOS2_S16	.data\+0x4
-+0+0040 <[^>]*> ldb	r4,0\(zero\)
-+[	]*40: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0044 <[^>]*> ldb	r4,0\(zero\)
-+[	]*44: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0048 <[^>]*> ldb	r4,0\(zero\)
-+[	]*48: R_NIOS2_S16	big_external_common\+0x4
-+0+004c <[^>]*> ldb	r4,0\(zero\)
-+[	]*4c: R_NIOS2_S16	small_external_common\+0x4
-+0+0050 <[^>]*> ldb	r4,0\(zero\)
-+[	]*50: R_NIOS2_S16	.bss\+0x4
-+0+0054 <[^>]*> ldb	r4,0\(zero\)
-+[	]*54: R_NIOS2_S16	.bss\+0x4004
-+0+0058 <[^>]*> ldb	r4,0\(zero\)
-+[	]*58: R_NIOS2_S16	.data\+0xffff8000
-+0+005c <[^>]*> ldb	r4,0\(zero\)
-+[	]*5c: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0060 <[^>]*> ldb	r4,0\(zero\)
-+[	]*60: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0064 <[^>]*> ldb	r4,0\(zero\)
-+[	]*64: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0068 <[^>]*> ldb	r4,0\(zero\)
-+[	]*68: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+006c <[^>]*> ldb	r4,0\(zero\)
-+[	]*6c: R_NIOS2_S16	.bss\+0xffff8000
-+0+0070 <[^>]*> ldb	r4,0\(zero\)
-+[	]*70: R_NIOS2_S16	.bss\+0xffffc000
-+0+0074 <[^>]*> ldb	r4,0\(zero\)
-+[	]*74: R_NIOS2_S16	.data\+0x10000
-+0+0078 <[^>]*> ldb	r4,0\(r5\)
-+[	]*78: R_NIOS2_S16	.data
-+0+007c <[^>]*> ldb	r4,0\(r5\)
-+[	]*7c: R_NIOS2_S16	big_external_data_label
-+0+0080 <[^>]*> ldb	r4,0\(r5\)
-+[	]*80: R_NIOS2_S16	small_external_data_label
-+0+0084 <[^>]*> ldb	r4,0\(r5\)
-+[	]*84: R_NIOS2_S16	big_external_common
-+0+0088 <[^>]*> ldb	r4,0\(r5\)
-+[	]*88: R_NIOS2_S16	small_external_common
-+0+008c <[^>]*> ldb	r4,0\(r5\)
-+[	]*8c: R_NIOS2_S16	.bss
-+0+0090 <[^>]*> ldb	r4,0\(r5\)
-+[	]*90: R_NIOS2_S16	.bss\+0x4000
-+0+0094 <[^>]*> ldb	r4,0\(r5\)
-+[	]*94: R_NIOS2_S16	.data\+0x4
-+0+0098 <[^>]*> ldb	r4,0\(r5\)
-+[	]*98: R_NIOS2_S16	big_external_data_label\+0x4
-+0+009c <[^>]*> ldb	r4,0\(r5\)
-+[	]*9c: R_NIOS2_S16	small_external_data_label\+0x4
-+0+00a0 <[^>]*> ldb	r4,0\(r5\)
-+[	]*a0: R_NIOS2_S16	big_external_common\+0x4
-+0+00a4 <[^>]*> ldb	r4,0\(r5\)
-+[	]*a4: R_NIOS2_S16	small_external_common\+0x4
-+0+00a8 <[^>]*> ldb	r4,0\(r5\)
-+[	]*a8: R_NIOS2_S16	.bss\+0x4
-+0+00ac <[^>]*> ldb	r4,0\(r5\)
-+[	]*ac: R_NIOS2_S16	.bss\+0x4004
-+0+00b0 <[^>]*> ldb	r4,0\(r5\)
-+[	]*b0: R_NIOS2_S16	.data\+0xffff8000
-+0+00b4 <[^>]*> ldb	r4,0\(r5\)
-+[	]*b4: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+00b8 <[^>]*> ldb	r4,0\(r5\)
-+[	]*b8: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+00bc <[^>]*> ldb	r4,0\(r5\)
-+[	]*bc: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+00c0 <[^>]*> ldb	r4,0\(r5\)
-+[	]*c0: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+00c4 <[^>]*> ldb	r4,0\(r5\)
-+[	]*c4: R_NIOS2_S16	.bss\+0xffff8000
-+0+00c8 <[^>]*> ldb	r4,0\(r5\)
-+[	]*c8: R_NIOS2_S16	.bss\+0xffffc000
-+0+00cc <[^>]*> ldbio	r4,0\(zero\)
-+0+00d0 <[^>]*> ldbio	r4,4\(zero\)
-+0+00d4 <[^>]*> ldbio	r4,32764\(zero\)
-+0+00d8 <[^>]*> ldbio	r4,-32768\(zero\)
-+0+00dc <[^>]*> ldbio	r4,0\(r5\)
-+0+00e0 <[^>]*> ldbio	r4,4\(r5\)
-+0+00e4 <[^>]*> ldbio	r4,32764\(r5\)
-+0+00e8 <[^>]*> ldbio	r4,-32768\(r5\)
-+0+00ec <[^>]*> ldbio	r4,0\(zero\)
-+[	]*ec: R_NIOS2_S16	.data
-+0+00f0 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*f0: R_NIOS2_S16	big_external_data_label
-+0+00f4 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*f4: R_NIOS2_S16	small_external_data_label
-+0+00f8 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*f8: R_NIOS2_S16	big_external_common
-+0+00fc <[^>]*> ldbio	r4,0\(zero\)
-+[	]*fc: R_NIOS2_S16	small_external_common
-+0+0100 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*100: R_NIOS2_S16	.bss
-+0+0104 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*104: R_NIOS2_S16	.bss\+0x4000
-+0+0108 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*108: R_NIOS2_S16	.data\+0x4
-+0+010c <[^>]*> ldbio	r4,0\(zero\)
-+[	]*10c: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0110 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*110: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0114 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*114: R_NIOS2_S16	big_external_common\+0x4
-+0+0118 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*118: R_NIOS2_S16	small_external_common\+0x4
-+0+011c <[^>]*> ldbio	r4,0\(zero\)
-+[	]*11c: R_NIOS2_S16	.bss\+0x4
-+0+0120 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*120: R_NIOS2_S16	.bss\+0x4004
-+0+0124 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*124: R_NIOS2_S16	.data\+0xffff8000
-+0+0128 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*128: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+012c <[^>]*> ldbio	r4,0\(zero\)
-+[	]*12c: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0130 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*130: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0134 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*134: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0138 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*138: R_NIOS2_S16	.bss\+0xffff8000
-+0+013c <[^>]*> ldbio	r4,0\(zero\)
-+[	]*13c: R_NIOS2_S16	.bss\+0xffffc000
-+0+0140 <[^>]*> ldbio	r4,0\(zero\)
-+[	]*140: R_NIOS2_S16	.data\+0x10000
-+0+0144 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*144: R_NIOS2_S16	.data
-+0+0148 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*148: R_NIOS2_S16	big_external_data_label
-+0+014c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*14c: R_NIOS2_S16	small_external_data_label
-+0+0150 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*150: R_NIOS2_S16	big_external_common
-+0+0154 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*154: R_NIOS2_S16	small_external_common
-+0+0158 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*158: R_NIOS2_S16	.bss
-+0+015c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*15c: R_NIOS2_S16	.bss\+0x4000
-+0+0160 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*160: R_NIOS2_S16	.data\+0x4
-+0+0164 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*164: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0168 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*168: R_NIOS2_S16	small_external_data_label\+0x4
-+0+016c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*16c: R_NIOS2_S16	big_external_common\+0x4
-+0+0170 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*170: R_NIOS2_S16	small_external_common\+0x4
-+0+0174 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*174: R_NIOS2_S16	.bss\+0x4
-+0+0178 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*178: R_NIOS2_S16	.bss\+0x4004
-+0+017c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*17c: R_NIOS2_S16	.data\+0xffff8000
-+0+0180 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*180: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0184 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*184: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0188 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*188: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+018c <[^>]*> ldbio	r4,0\(r5\)
-+[	]*18c: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0190 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*190: R_NIOS2_S16	.bss\+0xffff8000
-+0+0194 <[^>]*> ldbio	r4,0\(r5\)
-+[	]*194: R_NIOS2_S16	.bss\+0xffffc000
---- binutils-2.15/gas/testsuite/gas/nios2/ldb.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ldb.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,117 @@
-+	.data
-+data_label:
-+	.extern big_external_data_label,0x4000
-+	.extern small_external_data_label,4
-+	.comm big_external_common,0x4000
-+	.comm small_external_common,4
-+	.lcomm big_local_common,0x4000
-+	.lcomm small_local_common,4
-+
-+# the small symbols should have space allocated in the sbss section
-+# but this is not yet supported in the assembler, so space is allocated
-+# in the .bss section and the relocations are not gp-relative. this will
-+# be updated when gp-relative relocations are added
-+	.text
-+	ldb	r4,0(r0)
-+	ldb	r4,4(r0)
-+	ldb	r4,0x7ffc(r0)
-+	ldb	r4,-0x8000(r0)
-+	ldb	r4,0(r5)
-+	ldb	r4,4(r5)
-+	ldb	r4,0x7ffc(r5)
-+	ldb	r4,-0x8000(r5)
-+	ldb	r4,data_label(r0)
-+	ldb	r4,big_external_data_label(r0)
-+	ldb	r4,small_external_data_label(r0)
-+	ldb	r4,big_external_common(r0)
-+	ldb	r4,small_external_common(r0)
-+	ldb	r4,big_local_common(r0)
-+	ldb	r4,small_local_common(r0)
-+	ldb	r4,data_label+4(r0)
-+	ldb	r4,big_external_data_label+4(r0)
-+	ldb	r4,small_external_data_label+4(r0)
-+	ldb	r4,big_external_common+4(r0)
-+	ldb	r4,small_external_common+4(r0)
-+	ldb	r4,big_local_common+4(r0)
-+	ldb	r4,small_local_common+4(r0)
-+	ldb	r4,data_label-0x8000(r0)
-+	ldb	r4,big_external_data_label-0x8000(r0)
-+	ldb	r4,small_external_data_label-0x8000(r0)
-+	ldb	r4,big_external_common-0x8000(r0)
-+	ldb	r4,small_external_common-0x8000(r0)
-+	ldb	r4,big_local_common-0x8000(r0)
-+	ldb	r4,small_local_common-0x8000(r0)
-+	ldb	r4,data_label+0x10000(r0)
-+	ldb	r4,data_label(r5)
-+	ldb	r4,big_external_data_label(r5)
-+	ldb	r4,small_external_data_label(r5)
-+	ldb	r4,big_external_common(r5)
-+	ldb	r4,small_external_common(r5)
-+	ldb	r4,big_local_common(r5)
-+	ldb	r4,small_local_common(r5)
-+	ldb	r4,data_label+4(r5)
-+	ldb	r4,big_external_data_label+4(r5)
-+	ldb	r4,small_external_data_label+4(r5)
-+	ldb	r4,big_external_common+4(r5)
-+	ldb	r4,small_external_common+4(r5)
-+	ldb	r4,big_local_common+4(r5)
-+	ldb	r4,small_local_common+4(r5)
-+	ldb	r4,data_label-0x8000(r5)
-+	ldb	r4,big_external_data_label-0x8000(r5)
-+	ldb	r4,small_external_data_label-0x8000(r5)
-+	ldb	r4,big_external_common-0x8000(r5)
-+	ldb	r4,small_external_common-0x8000(r5)
-+	ldb	r4,big_local_common-0x8000(r5)
-+	ldb	r4,small_local_common-0x8000(r5)
-+	
-+	ldbio	r4,0(r0)
-+	ldbio	r4,4(r0)
-+	ldbio	r4,0x7ffc(r0)
-+	ldbio	r4,-0x8000(r0)
-+	ldbio	r4,0(r5)
-+	ldbio	r4,4(r5)
-+	ldbio	r4,0x7ffc(r5)
-+	ldbio	r4,-0x8000(r5)
-+	ldbio	r4,data_label(r0)
-+	ldbio	r4,big_external_data_label(r0)
-+	ldbio	r4,small_external_data_label(r0)
-+	ldbio	r4,big_external_common(r0)
-+	ldbio	r4,small_external_common(r0)
-+	ldbio	r4,big_local_common(r0)
-+	ldbio	r4,small_local_common(r0)
-+	ldbio	r4,data_label+4(r0)
-+	ldbio	r4,big_external_data_label+4(r0)
-+	ldbio	r4,small_external_data_label+4(r0)
-+	ldbio	r4,big_external_common+4(r0)
-+	ldbio	r4,small_external_common+4(r0)
-+	ldbio	r4,big_local_common+4(r0)
-+	ldbio	r4,small_local_common+4(r0)
-+	ldbio	r4,data_label-0x8000(r0)
-+	ldbio	r4,big_external_data_label-0x8000(r0)
-+	ldbio	r4,small_external_data_label-0x8000(r0)
-+	ldbio	r4,big_external_common-0x8000(r0)
-+	ldbio	r4,small_external_common-0x8000(r0)
-+	ldbio	r4,big_local_common-0x8000(r0)
-+	ldbio	r4,small_local_common-0x8000(r0)
-+	ldbio	r4,data_label+0x10000(r0)
-+	ldbio	r4,data_label(r5)
-+	ldbio	r4,big_external_data_label(r5)
-+	ldbio	r4,small_external_data_label(r5)
-+	ldbio	r4,big_external_common(r5)
-+	ldbio	r4,small_external_common(r5)
-+	ldbio	r4,big_local_common(r5)
-+	ldbio	r4,small_local_common(r5)
-+	ldbio	r4,data_label+4(r5)
-+	ldbio	r4,big_external_data_label+4(r5)
-+	ldbio	r4,small_external_data_label+4(r5)
-+	ldbio	r4,big_external_common+4(r5)
-+	ldbio	r4,small_external_common+4(r5)
-+	ldbio	r4,big_local_common+4(r5)
-+	ldbio	r4,small_local_common+4(r5)
-+	ldbio	r4,data_label-0x8000(r5)
-+	ldbio	r4,big_external_data_label-0x8000(r5)
-+	ldbio	r4,small_external_data_label-0x8000(r5)
-+	ldbio	r4,big_external_common-0x8000(r5)
-+	ldbio	r4,small_external_common-0x8000(r5)
-+	ldbio	r4,big_local_common-0x8000(r5)
-+	ldbio	r4,small_local_common-0x8000(r5)
---- binutils-2.15/gas/testsuite/gas/nios2/ldh.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ldh.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,196 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 ldh
-+
-+# Test the ld instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> ldh	r4,0\(zero\)
-+0+0004 <[^>]*> ldh	r4,4\(zero\)
-+0+0008 <[^>]*> ldh	r4,32764\(zero\)
-+0+000c <[^>]*> ldh	r4,-32768\(zero\)
-+0+0010 <[^>]*> ldh	r4,0\(r5\)
-+0+0014 <[^>]*> ldh	r4,4\(r5\)
-+0+0018 <[^>]*> ldh	r4,32764\(r5\)
-+0+001c <[^>]*> ldh	r4,-32768\(r5\)
-+0+0020 <[^>]*> ldh	r4,0\(zero\)
-+[	]*20: R_NIOS2_S16	.data
-+0+0024 <[^>]*> ldh	r4,0\(zero\)
-+[	]*24: R_NIOS2_S16	big_external_data_label
-+0+0028 <[^>]*> ldh	r4,0\(zero\)
-+[	]*28: R_NIOS2_S16	small_external_data_label
-+0+002c <[^>]*> ldh	r4,0\(zero\)
-+[	]*2c: R_NIOS2_S16	big_external_common
-+0+0030 <[^>]*> ldh	r4,0\(zero\)
-+[	]*30: R_NIOS2_S16	small_external_common
-+0+0034 <[^>]*> ldh	r4,0\(zero\)
-+[	]*34: R_NIOS2_S16	.bss
-+0+0038 <[^>]*> ldh	r4,0\(zero\)
-+[	]*38: R_NIOS2_S16	.bss\+0x4000
-+0+003c <[^>]*> ldh	r4,0\(zero\)
-+[	]*3c: R_NIOS2_S16	.data\+0x4
-+0+0040 <[^>]*> ldh	r4,0\(zero\)
-+[	]*40: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0044 <[^>]*> ldh	r4,0\(zero\)
-+[	]*44: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0048 <[^>]*> ldh	r4,0\(zero\)
-+[	]*48: R_NIOS2_S16	big_external_common\+0x4
-+0+004c <[^>]*> ldh	r4,0\(zero\)
-+[	]*4c: R_NIOS2_S16	small_external_common\+0x4
-+0+0050 <[^>]*> ldh	r4,0\(zero\)
-+[	]*50: R_NIOS2_S16	.bss\+0x4
-+0+0054 <[^>]*> ldh	r4,0\(zero\)
-+[	]*54: R_NIOS2_S16	.bss\+0x4004
-+0+0058 <[^>]*> ldh	r4,0\(zero\)
-+[	]*58: R_NIOS2_S16	.data\+0xffff8000
-+0+005c <[^>]*> ldh	r4,0\(zero\)
-+[	]*5c: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0060 <[^>]*> ldh	r4,0\(zero\)
-+[	]*60: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0064 <[^>]*> ldh	r4,0\(zero\)
-+[	]*64: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0068 <[^>]*> ldh	r4,0\(zero\)
-+[	]*68: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+006c <[^>]*> ldh	r4,0\(zero\)
-+[	]*6c: R_NIOS2_S16	.bss\+0xffff8000
-+0+0070 <[^>]*> ldh	r4,0\(zero\)
-+[	]*70: R_NIOS2_S16	.bss\+0xffffc000
-+0+0074 <[^>]*> ldh	r4,0\(zero\)
-+[	]*74: R_NIOS2_S16	.data\+0x10000
-+0+0078 <[^>]*> ldh	r4,0\(r5\)
-+[	]*78: R_NIOS2_S16	.data
-+0+007c <[^>]*> ldh	r4,0\(r5\)
-+[	]*7c: R_NIOS2_S16	big_external_data_label
-+0+0080 <[^>]*> ldh	r4,0\(r5\)
-+[	]*80: R_NIOS2_S16	small_external_data_label
-+0+0084 <[^>]*> ldh	r4,0\(r5\)
-+[	]*84: R_NIOS2_S16	big_external_common
-+0+0088 <[^>]*> ldh	r4,0\(r5\)
-+[	]*88: R_NIOS2_S16	small_external_common
-+0+008c <[^>]*> ldh	r4,0\(r5\)
-+[	]*8c: R_NIOS2_S16	.bss
-+0+0090 <[^>]*> ldh	r4,0\(r5\)
-+[	]*90: R_NIOS2_S16	.bss\+0x4000
-+0+0094 <[^>]*> ldh	r4,0\(r5\)
-+[	]*94: R_NIOS2_S16	.data\+0x4
-+0+0098 <[^>]*> ldh	r4,0\(r5\)
-+[	]*98: R_NIOS2_S16	big_external_data_label\+0x4
-+0+009c <[^>]*> ldh	r4,0\(r5\)
-+[	]*9c: R_NIOS2_S16	small_external_data_label\+0x4
-+0+00a0 <[^>]*> ldh	r4,0\(r5\)
-+[	]*a0: R_NIOS2_S16	big_external_common\+0x4
-+0+00a4 <[^>]*> ldh	r4,0\(r5\)
-+[	]*a4: R_NIOS2_S16	small_external_common\+0x4
-+0+00a8 <[^>]*> ldh	r4,0\(r5\)
-+[	]*a8: R_NIOS2_S16	.bss\+0x4
-+0+00ac <[^>]*> ldh	r4,0\(r5\)
-+[	]*ac: R_NIOS2_S16	.bss\+0x4004
-+0+00b0 <[^>]*> ldh	r4,0\(r5\)
-+[	]*b0: R_NIOS2_S16	.data\+0xffff8000
-+0+00b4 <[^>]*> ldh	r4,0\(r5\)
-+[	]*b4: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+00b8 <[^>]*> ldh	r4,0\(r5\)
-+[	]*b8: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+00bc <[^>]*> ldh	r4,0\(r5\)
-+[	]*bc: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+00c0 <[^>]*> ldh	r4,0\(r5\)
-+[	]*c0: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+00c4 <[^>]*> ldh	r4,0\(r5\)
-+[	]*c4: R_NIOS2_S16	.bss\+0xffff8000
-+0+00c8 <[^>]*> ldh	r4,0\(r5\)
-+[	]*c8: R_NIOS2_S16	.bss\+0xffffc000
-+0+00cc <[^>]*> ldhio	r4,0\(zero\)
-+0+00d0 <[^>]*> ldhio	r4,4\(zero\)
-+0+00d4 <[^>]*> ldhio	r4,32764\(zero\)
-+0+00d8 <[^>]*> ldhio	r4,-32768\(zero\)
-+0+00dc <[^>]*> ldhio	r4,0\(r5\)
-+0+00e0 <[^>]*> ldhio	r4,4\(r5\)
-+0+00e4 <[^>]*> ldhio	r4,32764\(r5\)
-+0+00e8 <[^>]*> ldhio	r4,-32768\(r5\)
-+0+00ec <[^>]*> ldhio	r4,0\(zero\)
-+[	]*ec: R_NIOS2_S16	.data
-+0+00f0 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*f0: R_NIOS2_S16	big_external_data_label
-+0+00f4 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*f4: R_NIOS2_S16	small_external_data_label
-+0+00f8 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*f8: R_NIOS2_S16	big_external_common
-+0+00fc <[^>]*> ldhio	r4,0\(zero\)
-+[	]*fc: R_NIOS2_S16	small_external_common
-+0+0100 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*100: R_NIOS2_S16	.bss
-+0+0104 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*104: R_NIOS2_S16	.bss\+0x4000
-+0+0108 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*108: R_NIOS2_S16	.data\+0x4
-+0+010c <[^>]*> ldhio	r4,0\(zero\)
-+[	]*10c: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0110 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*110: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0114 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*114: R_NIOS2_S16	big_external_common\+0x4
-+0+0118 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*118: R_NIOS2_S16	small_external_common\+0x4
-+0+011c <[^>]*> ldhio	r4,0\(zero\)
-+[	]*11c: R_NIOS2_S16	.bss\+0x4
-+0+0120 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*120: R_NIOS2_S16	.bss\+0x4004
-+0+0124 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*124: R_NIOS2_S16	.data\+0xffff8000
-+0+0128 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*128: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+012c <[^>]*> ldhio	r4,0\(zero\)
-+[	]*12c: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0130 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*130: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0134 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*134: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0138 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*138: R_NIOS2_S16	.bss\+0xffff8000
-+0+013c <[^>]*> ldhio	r4,0\(zero\)
-+[	]*13c: R_NIOS2_S16	.bss\+0xffffc000
-+0+0140 <[^>]*> ldhio	r4,0\(zero\)
-+[	]*140: R_NIOS2_S16	.data\+0x10000
-+0+0144 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*144: R_NIOS2_S16	.data
-+0+0148 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*148: R_NIOS2_S16	big_external_data_label
-+0+014c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*14c: R_NIOS2_S16	small_external_data_label
-+0+0150 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*150: R_NIOS2_S16	big_external_common
-+0+0154 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*154: R_NIOS2_S16	small_external_common
-+0+0158 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*158: R_NIOS2_S16	.bss
-+0+015c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*15c: R_NIOS2_S16	.bss\+0x4000
-+0+0160 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*160: R_NIOS2_S16	.data\+0x4
-+0+0164 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*164: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0168 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*168: R_NIOS2_S16	small_external_data_label\+0x4
-+0+016c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*16c: R_NIOS2_S16	big_external_common\+0x4
-+0+0170 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*170: R_NIOS2_S16	small_external_common\+0x4
-+0+0174 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*174: R_NIOS2_S16	.bss\+0x4
-+0+0178 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*178: R_NIOS2_S16	.bss\+0x4004
-+0+017c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*17c: R_NIOS2_S16	.data\+0xffff8000
-+0+0180 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*180: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0184 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*184: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0188 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*188: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+018c <[^>]*> ldhio	r4,0\(r5\)
-+[	]*18c: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0190 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*190: R_NIOS2_S16	.bss\+0xffff8000
-+0+0194 <[^>]*> ldhio	r4,0\(r5\)
-+[	]*194: R_NIOS2_S16	.bss\+0xffffc000
---- binutils-2.15/gas/testsuite/gas/nios2/ldh.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ldh.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,117 @@
-+	.data
-+data_label:
-+	.extern big_external_data_label,0x4000
-+	.extern small_external_data_label,4
-+	.comm big_external_common,0x4000
-+	.comm small_external_common,4
-+	.lcomm big_local_common,0x4000
-+	.lcomm small_local_common,4
-+
-+# the small symbols should have space allocated in the sbss section
-+# but this is not yet supported in the assembler, so space is allocated
-+# in the .bss section and the relocations are not gp-relative. this will
-+# be updated when gp-relative relocations are added
-+	.text
-+	ldh	r4,0(r0)
-+	ldh	r4,4(r0)
-+	ldh	r4,0x7ffc(r0)
-+	ldh	r4,-0x8000(r0)
-+	ldh	r4,0(r5)
-+	ldh	r4,4(r5)
-+	ldh	r4,0x7ffc(r5)
-+	ldh	r4,-0x8000(r5)
-+	ldh	r4,data_label(r0)
-+	ldh	r4,big_external_data_label(r0)
-+	ldh	r4,small_external_data_label(r0)
-+	ldh	r4,big_external_common(r0)
-+	ldh	r4,small_external_common(r0)
-+	ldh	r4,big_local_common(r0)
-+	ldh	r4,small_local_common(r0)
-+	ldh	r4,data_label+4(r0)
-+	ldh	r4,big_external_data_label+4(r0)
-+	ldh	r4,small_external_data_label+4(r0)
-+	ldh	r4,big_external_common+4(r0)
-+	ldh	r4,small_external_common+4(r0)
-+	ldh	r4,big_local_common+4(r0)
-+	ldh	r4,small_local_common+4(r0)
-+	ldh	r4,data_label-0x8000(r0)
-+	ldh	r4,big_external_data_label-0x8000(r0)
-+	ldh	r4,small_external_data_label-0x8000(r0)
-+	ldh	r4,big_external_common-0x8000(r0)
-+	ldh	r4,small_external_common-0x8000(r0)
-+	ldh	r4,big_local_common-0x8000(r0)
-+	ldh	r4,small_local_common-0x8000(r0)
-+	ldh	r4,data_label+0x10000(r0)
-+	ldh	r4,data_label(r5)
-+	ldh	r4,big_external_data_label(r5)
-+	ldh	r4,small_external_data_label(r5)
-+	ldh	r4,big_external_common(r5)
-+	ldh	r4,small_external_common(r5)
-+	ldh	r4,big_local_common(r5)
-+	ldh	r4,small_local_common(r5)
-+	ldh	r4,data_label+4(r5)
-+	ldh	r4,big_external_data_label+4(r5)
-+	ldh	r4,small_external_data_label+4(r5)
-+	ldh	r4,big_external_common+4(r5)
-+	ldh	r4,small_external_common+4(r5)
-+	ldh	r4,big_local_common+4(r5)
-+	ldh	r4,small_local_common+4(r5)
-+	ldh	r4,data_label-0x8000(r5)
-+	ldh	r4,big_external_data_label-0x8000(r5)
-+	ldh	r4,small_external_data_label-0x8000(r5)
-+	ldh	r4,big_external_common-0x8000(r5)
-+	ldh	r4,small_external_common-0x8000(r5)
-+	ldh	r4,big_local_common-0x8000(r5)
-+	ldh	r4,small_local_common-0x8000(r5)
-+	
-+	ldhio	r4,0(r0)
-+	ldhio	r4,4(r0)
-+	ldhio	r4,0x7ffc(r0)
-+	ldhio	r4,-0x8000(r0)
-+	ldhio	r4,0(r5)
-+	ldhio	r4,4(r5)
-+	ldhio	r4,0x7ffc(r5)
-+	ldhio	r4,-0x8000(r5)
-+	ldhio	r4,data_label(r0)
-+	ldhio	r4,big_external_data_label(r0)
-+	ldhio	r4,small_external_data_label(r0)
-+	ldhio	r4,big_external_common(r0)
-+	ldhio	r4,small_external_common(r0)
-+	ldhio	r4,big_local_common(r0)
-+	ldhio	r4,small_local_common(r0)
-+	ldhio	r4,data_label+4(r0)
-+	ldhio	r4,big_external_data_label+4(r0)
-+	ldhio	r4,small_external_data_label+4(r0)
-+	ldhio	r4,big_external_common+4(r0)
-+	ldhio	r4,small_external_common+4(r0)
-+	ldhio	r4,big_local_common+4(r0)
-+	ldhio	r4,small_local_common+4(r0)
-+	ldhio	r4,data_label-0x8000(r0)
-+	ldhio	r4,big_external_data_label-0x8000(r0)
-+	ldhio	r4,small_external_data_label-0x8000(r0)
-+	ldhio	r4,big_external_common-0x8000(r0)
-+	ldhio	r4,small_external_common-0x8000(r0)
-+	ldhio	r4,big_local_common-0x8000(r0)
-+	ldhio	r4,small_local_common-0x8000(r0)
-+	ldhio	r4,data_label+0x10000(r0)
-+	ldhio	r4,data_label(r5)
-+	ldhio	r4,big_external_data_label(r5)
-+	ldhio	r4,small_external_data_label(r5)
-+	ldhio	r4,big_external_common(r5)
-+	ldhio	r4,small_external_common(r5)
-+	ldhio	r4,big_local_common(r5)
-+	ldhio	r4,small_local_common(r5)
-+	ldhio	r4,data_label+4(r5)
-+	ldhio	r4,big_external_data_label+4(r5)
-+	ldhio	r4,small_external_data_label+4(r5)
-+	ldhio	r4,big_external_common+4(r5)
-+	ldhio	r4,small_external_common+4(r5)
-+	ldhio	r4,big_local_common+4(r5)
-+	ldhio	r4,small_local_common+4(r5)
-+	ldhio	r4,data_label-0x8000(r5)
-+	ldhio	r4,big_external_data_label-0x8000(r5)
-+	ldhio	r4,small_external_data_label-0x8000(r5)
-+	ldhio	r4,big_external_common-0x8000(r5)
-+	ldhio	r4,small_external_common-0x8000(r5)
-+	ldhio	r4,big_local_common-0x8000(r5)
-+	ldhio	r4,small_local_common-0x8000(r5)
---- binutils-2.15/gas/testsuite/gas/nios2/ldw.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ldw.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,196 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 ldw
-+
-+# Test the ld instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> ldw	r4,0\(zero\)
-+0+0004 <[^>]*> ldw	r4,4\(zero\)
-+0+0008 <[^>]*> ldw	r4,32764\(zero\)
-+0+000c <[^>]*> ldw	r4,-32768\(zero\)
-+0+0010 <[^>]*> ldw	r4,0\(r5\)
-+0+0014 <[^>]*> ldw	r4,4\(r5\)
-+0+0018 <[^>]*> ldw	r4,32764\(r5\)
-+0+001c <[^>]*> ldw	r4,-32768\(r5\)
-+0+0020 <[^>]*> ldw	r4,0\(zero\)
-+[	]*20: R_NIOS2_S16	.data
-+0+0024 <[^>]*> ldw	r4,0\(zero\)
-+[	]*24: R_NIOS2_S16	big_external_data_label
-+0+0028 <[^>]*> ldw	r4,0\(zero\)
-+[	]*28: R_NIOS2_S16	small_external_data_label
-+0+002c <[^>]*> ldw	r4,0\(zero\)
-+[	]*2c: R_NIOS2_S16	big_external_common
-+0+0030 <[^>]*> ldw	r4,0\(zero\)
-+[	]*30: R_NIOS2_S16	small_external_common
-+0+0034 <[^>]*> ldw	r4,0\(zero\)
-+[	]*34: R_NIOS2_S16	.bss
-+0+0038 <[^>]*> ldw	r4,0\(zero\)
-+[	]*38: R_NIOS2_S16	.bss\+0x4000
-+0+003c <[^>]*> ldw	r4,0\(zero\)
-+[	]*3c: R_NIOS2_S16	.data\+0x4
-+0+0040 <[^>]*> ldw	r4,0\(zero\)
-+[	]*40: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0044 <[^>]*> ldw	r4,0\(zero\)
-+[	]*44: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0048 <[^>]*> ldw	r4,0\(zero\)
-+[	]*48: R_NIOS2_S16	big_external_common\+0x4
-+0+004c <[^>]*> ldw	r4,0\(zero\)
-+[	]*4c: R_NIOS2_S16	small_external_common\+0x4
-+0+0050 <[^>]*> ldw	r4,0\(zero\)
-+[	]*50: R_NIOS2_S16	.bss\+0x4
-+0+0054 <[^>]*> ldw	r4,0\(zero\)
-+[	]*54: R_NIOS2_S16	.bss\+0x4004
-+0+0058 <[^>]*> ldw	r4,0\(zero\)
-+[	]*58: R_NIOS2_S16	.data\+0xffff8000
-+0+005c <[^>]*> ldw	r4,0\(zero\)
-+[	]*5c: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0060 <[^>]*> ldw	r4,0\(zero\)
-+[	]*60: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0064 <[^>]*> ldw	r4,0\(zero\)
-+[	]*64: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0068 <[^>]*> ldw	r4,0\(zero\)
-+[	]*68: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+006c <[^>]*> ldw	r4,0\(zero\)
-+[	]*6c: R_NIOS2_S16	.bss\+0xffff8000
-+0+0070 <[^>]*> ldw	r4,0\(zero\)
-+[	]*70: R_NIOS2_S16	.bss\+0xffffc000
-+0+0074 <[^>]*> ldw	r4,0\(zero\)
-+[	]*74: R_NIOS2_S16	.data\+0x10000
-+0+0078 <[^>]*> ldw	r4,0\(r5\)
-+[	]*78: R_NIOS2_S16	.data
-+0+007c <[^>]*> ldw	r4,0\(r5\)
-+[	]*7c: R_NIOS2_S16	big_external_data_label
-+0+0080 <[^>]*> ldw	r4,0\(r5\)
-+[	]*80: R_NIOS2_S16	small_external_data_label
-+0+0084 <[^>]*> ldw	r4,0\(r5\)
-+[	]*84: R_NIOS2_S16	big_external_common
-+0+0088 <[^>]*> ldw	r4,0\(r5\)
-+[	]*88: R_NIOS2_S16	small_external_common
-+0+008c <[^>]*> ldw	r4,0\(r5\)
-+[	]*8c: R_NIOS2_S16	.bss
-+0+0090 <[^>]*> ldw	r4,0\(r5\)
-+[	]*90: R_NIOS2_S16	.bss\+0x4000
-+0+0094 <[^>]*> ldw	r4,0\(r5\)
-+[	]*94: R_NIOS2_S16	.data\+0x4
-+0+0098 <[^>]*> ldw	r4,0\(r5\)
-+[	]*98: R_NIOS2_S16	big_external_data_label\+0x4
-+0+009c <[^>]*> ldw	r4,0\(r5\)
-+[	]*9c: R_NIOS2_S16	small_external_data_label\+0x4
-+0+00a0 <[^>]*> ldw	r4,0\(r5\)
-+[	]*a0: R_NIOS2_S16	big_external_common\+0x4
-+0+00a4 <[^>]*> ldw	r4,0\(r5\)
-+[	]*a4: R_NIOS2_S16	small_external_common\+0x4
-+0+00a8 <[^>]*> ldw	r4,0\(r5\)
-+[	]*a8: R_NIOS2_S16	.bss\+0x4
-+0+00ac <[^>]*> ldw	r4,0\(r5\)
-+[	]*ac: R_NIOS2_S16	.bss\+0x4004
-+0+00b0 <[^>]*> ldw	r4,0\(r5\)
-+[	]*b0: R_NIOS2_S16	.data\+0xffff8000
-+0+00b4 <[^>]*> ldw	r4,0\(r5\)
-+[	]*b4: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+00b8 <[^>]*> ldw	r4,0\(r5\)
-+[	]*b8: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+00bc <[^>]*> ldw	r4,0\(r5\)
-+[	]*bc: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+00c0 <[^>]*> ldw	r4,0\(r5\)
-+[	]*c0: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+00c4 <[^>]*> ldw	r4,0\(r5\)
-+[	]*c4: R_NIOS2_S16	.bss\+0xffff8000
-+0+00c8 <[^>]*> ldw	r4,0\(r5\)
-+[	]*c8: R_NIOS2_S16	.bss\+0xffffc000
-+0+00cc <[^>]*> ldwio	r4,0\(zero\)
-+0+00d0 <[^>]*> ldwio	r4,4\(zero\)
-+0+00d4 <[^>]*> ldwio	r4,32764\(zero\)
-+0+00d8 <[^>]*> ldwio	r4,-32768\(zero\)
-+0+00dc <[^>]*> ldwio	r4,0\(r5\)
-+0+00e0 <[^>]*> ldwio	r4,4\(r5\)
-+0+00e4 <[^>]*> ldwio	r4,32764\(r5\)
-+0+00e8 <[^>]*> ldwio	r4,-32768\(r5\)
-+0+00ec <[^>]*> ldwio	r4,0\(zero\)
-+[	]*ec: R_NIOS2_S16	.data
-+0+00f0 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*f0: R_NIOS2_S16	big_external_data_label
-+0+00f4 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*f4: R_NIOS2_S16	small_external_data_label
-+0+00f8 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*f8: R_NIOS2_S16	big_external_common
-+0+00fc <[^>]*> ldwio	r4,0\(zero\)
-+[	]*fc: R_NIOS2_S16	small_external_common
-+0+0100 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*100: R_NIOS2_S16	.bss
-+0+0104 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*104: R_NIOS2_S16	.bss\+0x4000
-+0+0108 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*108: R_NIOS2_S16	.data\+0x4
-+0+010c <[^>]*> ldwio	r4,0\(zero\)
-+[	]*10c: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0110 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*110: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0114 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*114: R_NIOS2_S16	big_external_common\+0x4
-+0+0118 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*118: R_NIOS2_S16	small_external_common\+0x4
-+0+011c <[^>]*> ldwio	r4,0\(zero\)
-+[	]*11c: R_NIOS2_S16	.bss\+0x4
-+0+0120 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*120: R_NIOS2_S16	.bss\+0x4004
-+0+0124 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*124: R_NIOS2_S16	.data\+0xffff8000
-+0+0128 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*128: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+012c <[^>]*> ldwio	r4,0\(zero\)
-+[	]*12c: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0130 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*130: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0134 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*134: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0138 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*138: R_NIOS2_S16	.bss\+0xffff8000
-+0+013c <[^>]*> ldwio	r4,0\(zero\)
-+[	]*13c: R_NIOS2_S16	.bss\+0xffffc000
-+0+0140 <[^>]*> ldwio	r4,0\(zero\)
-+[	]*140: R_NIOS2_S16	.data\+0x10000
-+0+0144 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*144: R_NIOS2_S16	.data
-+0+0148 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*148: R_NIOS2_S16	big_external_data_label
-+0+014c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*14c: R_NIOS2_S16	small_external_data_label
-+0+0150 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*150: R_NIOS2_S16	big_external_common
-+0+0154 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*154: R_NIOS2_S16	small_external_common
-+0+0158 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*158: R_NIOS2_S16	.bss
-+0+015c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*15c: R_NIOS2_S16	.bss\+0x4000
-+0+0160 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*160: R_NIOS2_S16	.data\+0x4
-+0+0164 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*164: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0168 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*168: R_NIOS2_S16	small_external_data_label\+0x4
-+0+016c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*16c: R_NIOS2_S16	big_external_common\+0x4
-+0+0170 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*170: R_NIOS2_S16	small_external_common\+0x4
-+0+0174 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*174: R_NIOS2_S16	.bss\+0x4
-+0+0178 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*178: R_NIOS2_S16	.bss\+0x4004
-+0+017c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*17c: R_NIOS2_S16	.data\+0xffff8000
-+0+0180 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*180: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0184 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*184: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0188 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*188: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+018c <[^>]*> ldwio	r4,0\(r5\)
-+[	]*18c: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0190 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*190: R_NIOS2_S16	.bss\+0xffff8000
-+0+0194 <[^>]*> ldwio	r4,0\(r5\)
-+[	]*194: R_NIOS2_S16	.bss\+0xffffc000
---- binutils-2.15/gas/testsuite/gas/nios2/ldw.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ldw.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,117 @@
-+	.data
-+data_label:
-+	.extern big_external_data_label,0x4000
-+	.extern small_external_data_label,4
-+	.comm big_external_common,0x4000
-+	.comm small_external_common,4
-+	.lcomm big_local_common,0x4000
-+	.lcomm small_local_common,4
-+
-+# the small symbols should have space allocated in the sbss section
-+# but this is not yet supported in the assembler, so space is allocated
-+# in the .bss section and the relocations are not gp-relative. this will
-+# be updated when gp-relative relocations are added
-+	.text
-+	ldw	r4,0(r0)
-+	ldw	r4,4(r0)
-+	ldw	r4,0x7ffc(r0)
-+	ldw	r4,-0x8000(r0)
-+	ldw	r4,0(r5)
-+	ldw	r4,4(r5)
-+	ldw	r4,0x7ffc(r5)
-+	ldw	r4,-0x8000(r5)
-+	ldw	r4,data_label(r0)
-+	ldw	r4,big_external_data_label(r0)
-+	ldw	r4,small_external_data_label(r0)
-+	ldw	r4,big_external_common(r0)
-+	ldw	r4,small_external_common(r0)
-+	ldw	r4,big_local_common(r0)
-+	ldw	r4,small_local_common(r0)
-+	ldw	r4,data_label+4(r0)
-+	ldw	r4,big_external_data_label+4(r0)
-+	ldw	r4,small_external_data_label+4(r0)
-+	ldw	r4,big_external_common+4(r0)
-+	ldw	r4,small_external_common+4(r0)
-+	ldw	r4,big_local_common+4(r0)
-+	ldw	r4,small_local_common+4(r0)
-+	ldw	r4,data_label-0x8000(r0)
-+	ldw	r4,big_external_data_label-0x8000(r0)
-+	ldw	r4,small_external_data_label-0x8000(r0)
-+	ldw	r4,big_external_common-0x8000(r0)
-+	ldw	r4,small_external_common-0x8000(r0)
-+	ldw	r4,big_local_common-0x8000(r0)
-+	ldw	r4,small_local_common-0x8000(r0)
-+	ldw	r4,data_label+0x10000(r0)
-+	ldw	r4,data_label(r5)
-+	ldw	r4,big_external_data_label(r5)
-+	ldw	r4,small_external_data_label(r5)
-+	ldw	r4,big_external_common(r5)
-+	ldw	r4,small_external_common(r5)
-+	ldw	r4,big_local_common(r5)
-+	ldw	r4,small_local_common(r5)
-+	ldw	r4,data_label+4(r5)
-+	ldw	r4,big_external_data_label+4(r5)
-+	ldw	r4,small_external_data_label+4(r5)
-+	ldw	r4,big_external_common+4(r5)
-+	ldw	r4,small_external_common+4(r5)
-+	ldw	r4,big_local_common+4(r5)
-+	ldw	r4,small_local_common+4(r5)
-+	ldw	r4,data_label-0x8000(r5)
-+	ldw	r4,big_external_data_label-0x8000(r5)
-+	ldw	r4,small_external_data_label-0x8000(r5)
-+	ldw	r4,big_external_common-0x8000(r5)
-+	ldw	r4,small_external_common-0x8000(r5)
-+	ldw	r4,big_local_common-0x8000(r5)
-+	ldw	r4,small_local_common-0x8000(r5)
-+	
-+	ldwio	r4,0(r0)
-+	ldwio	r4,4(r0)
-+	ldwio	r4,0x7ffc(r0)
-+	ldwio	r4,-0x8000(r0)
-+	ldwio	r4,0(r5)
-+	ldwio	r4,4(r5)
-+	ldwio	r4,0x7ffc(r5)
-+	ldwio	r4,-0x8000(r5)
-+	ldwio	r4,data_label(r0)
-+	ldwio	r4,big_external_data_label(r0)
-+	ldwio	r4,small_external_data_label(r0)
-+	ldwio	r4,big_external_common(r0)
-+	ldwio	r4,small_external_common(r0)
-+	ldwio	r4,big_local_common(r0)
-+	ldwio	r4,small_local_common(r0)
-+	ldwio	r4,data_label+4(r0)
-+	ldwio	r4,big_external_data_label+4(r0)
-+	ldwio	r4,small_external_data_label+4(r0)
-+	ldwio	r4,big_external_common+4(r0)
-+	ldwio	r4,small_external_common+4(r0)
-+	ldwio	r4,big_local_common+4(r0)
-+	ldwio	r4,small_local_common+4(r0)
-+	ldwio	r4,data_label-0x8000(r0)
-+	ldwio	r4,big_external_data_label-0x8000(r0)
-+	ldwio	r4,small_external_data_label-0x8000(r0)
-+	ldwio	r4,big_external_common-0x8000(r0)
-+	ldwio	r4,small_external_common-0x8000(r0)
-+	ldwio	r4,big_local_common-0x8000(r0)
-+	ldwio	r4,small_local_common-0x8000(r0)
-+	ldwio	r4,data_label+0x10000(r0)
-+	ldwio	r4,data_label(r5)
-+	ldwio	r4,big_external_data_label(r5)
-+	ldwio	r4,small_external_data_label(r5)
-+	ldwio	r4,big_external_common(r5)
-+	ldwio	r4,small_external_common(r5)
-+	ldwio	r4,big_local_common(r5)
-+	ldwio	r4,small_local_common(r5)
-+	ldwio	r4,data_label+4(r5)
-+	ldwio	r4,big_external_data_label+4(r5)
-+	ldwio	r4,small_external_data_label+4(r5)
-+	ldwio	r4,big_external_common+4(r5)
-+	ldwio	r4,small_external_common+4(r5)
-+	ldwio	r4,big_local_common+4(r5)
-+	ldwio	r4,small_local_common+4(r5)
-+	ldwio	r4,data_label-0x8000(r5)
-+	ldwio	r4,big_external_data_label-0x8000(r5)
-+	ldwio	r4,small_external_data_label-0x8000(r5)
-+	ldwio	r4,big_external_common-0x8000(r5)
-+	ldwio	r4,small_external_common-0x8000(r5)
-+	ldwio	r4,big_local_common-0x8000(r5)
-+	ldwio	r4,small_local_common-0x8000(r5)
---- binutils-2.15/gas/testsuite/gas/nios2/lineseparator.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/lineseparator.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 lineseparator
-+
-+# Test the add instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0x0+0000 mov	r5,r4
-+0x0+0004 mov	r4,r5
---- binutils-2.15/gas/testsuite/gas/nios2/lineseparator.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/lineseparator.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,4 @@
-+mov r5, r4 ; mov r4, r5
-+
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/link1.lds	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/link1.lds	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,11 @@
-+/* Simple script for testing relaxation */
-+
-+OUTPUT_FORMAT("elf32-littlenios2", "elf32-littlenios2", "elf32-littlenios2")
-+OUTPUT_ARCH(nios2)
-+ENTRY(_start)
-+SECTIONS
-+{
-+	_start = .;
-+	text2 0 : { *(text2) }
-+	text1 0x8000 : { *(text1) }
-+}
---- binutils-2.15/gas/testsuite/gas/nios2/link2.lds	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/link2.lds	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,11 @@
-+/* Simple script for testing relaxation */
-+
-+OUTPUT_FORMAT("elf32-littlenios2", "elf32-littlenios2", "elf32-littlenios2")
-+OUTPUT_ARCH(nios2)
-+ENTRY(_start)
-+SECTIONS
-+{
-+	_start = .;
-+	text1 0 : { *(text1) }
-+	text2 0x80000000 : { *(text2) }
-+}
---- binutils-2.15/gas/testsuite/gas/nios2/link3.lds	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/link3.lds	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,11 @@
-+/* Simple script for testing relaxation */
-+
-+OUTPUT_FORMAT("elf32-littlenios2", "elf32-littlenios2", "elf32-littlenios2")
-+OUTPUT_ARCH(nios2)
-+ENTRY(_start)
-+SECTIONS
-+{
-+	_start = .;
-+	text1 0 : { *(text1) }
-+	text2 0x08000000 : { *(text2) }
-+}
---- binutils-2.15/gas/testsuite/gas/nios2/mov.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/mov.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,11 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 mov
-+
-+# Test the mov instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> movz	\$4,\$5,\$6
-+0+0004 <[^>]*> movnz	\$4,\$5,\$6
-+
---- binutils-2.15/gas/testsuite/gas/nios2/mov.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/mov.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,5 @@
-+# Source file used to test the movz and movnz instructions
-+
-+foo:
-+	movz	$4,$5,$6
-+	movnz	$4,$5,$6
---- binutils-2.15/gas/testsuite/gas/nios2/movi.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/movi.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,13 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 movi
-+
-+# Test implicit conversion of movi/movhi etc
-+.*:     file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> movi	r2,32
-+0+0004 <[^>]*> movhi	r2,8192
-+0+0008 <[^>]*> movhi	r2,65535
-+0+000c <[^>]*> orhi	r2,r5,65535
-+0+0010 <[^>]*> xorhi	r2,r10,65535
-+0+0014 <[^>]*> andhi	r2,r15,65535
---- binutils-2.15/gas/testsuite/gas/nios2/movi.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/movi.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,21 @@
-+# Source file used to test silent conversion of
-+# movi to orhi etc
-+
-+foo:
-+# this doesn't get converted
-+movi r2, 0x20	
-+
-+# this does
-+movi r2, 0x20000000
-+
-+# addi should convert only if the source register is r0
-+addi r2, r0, 0xffff0000
-+# but we can't test for non-conversion because the value would
-+# be out of range
-+
-+# logical ops should convert for any register
-+ori r2, r5, 0xffff0000
-+xori r2, r10, 0xffff0000
-+andi r2, r15, 0xffff0000
-+
-+	
---- binutils-2.15/gas/testsuite/gas/nios2/movia.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/movia.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,18 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 movia
-+
-+# Test the movia instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> movhi	r2,32897
-+0+0004 <[^>]*> addi	r2,r2,-32640
-+0+0008 <[^>]*> movhi	r3,0
-+			8: R_NIOS2_HIADJ16	sym\+0x80000000
-+0+000c <[^>]*> addi	r3,r3,0
-+			c: R_NIOS2_LO16	sym\+0x80000000
-+0+0010 <[^>]*> movhi	r4,0
-+			10: R_NIOS2_HIADJ16	sym\+0x80000001
-+0+0014 <[^>]*> addi	r4,r4,0
-+			14: R_NIOS2_LO16	sym\+0x80000001
---- binutils-2.15/gas/testsuite/gas/nios2/movia.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/movia.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,6 @@
-+# Test program for movia reg, immed32 macro
-+
-+foo:
-+	movia r2, 0x80808080
-+	movia r3, sym + 0x80000000
-+	movia r4, sym - 0x7fffffff
---- binutils-2.15/gas/testsuite/gas/nios2/mul.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/mul.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,19 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 mul
-+
-+# Test the mul macro.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> mul	r4,r5,r6
-+0+0004 <[^>]*> muli	r4,r5,0
-+0+0008 <[^>]*> muli	r4,r5,1
-+0+000c <[^>]*> muli	r4,r5,-32768
-+0+0010 <[^>]*> muli	r4,r5,32767
-+0+0014 <[^>]*> muli	r4,r5,0
-+[	]*14: R_NIOS2_S16	undefined_symbol
-+0+0018 <[^>]*> muli	r4,r5,16448
-+0+001c <[^>]*> mulxss	r4,r5,r6
-+0+0020 <[^>]*> mulxsu	r4,r5,r6
-+0+0024 <[^>]*> mulxuu	r4,r5,r6
---- binutils-2.15/gas/testsuite/gas/nios2/mul.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/mul.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,15 @@
-+# Source file used to test the mul macro.
-+	
-+foo:
-+	mul	r4,r5,r6
-+	muli	r4,r5,0
-+	muli	r4,r5,1
-+	muli	r4,r5,-0x8000
-+	muli	r4,r5,0x7fff
-+	muli	r4,r5,undefined_symbol
-+	muli	r4,r5,defined_symbol
-+	mulxss	r4,r5,r6
-+	mulxsu	r4,r5,r6
-+	mulxuu  r4,r5,r6
-+.data
-+.set defined_symbol, 0x4040
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-merged_strings.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-merged_strings.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,17 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 reloc against merged strings
-+
-+# Test the merged duplicate strings
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> addi	r2,r2,32
-+0+0004 <[^>]*> addi	r3,r3,63
-+0+0008 <[^>]*> addi	r4,r4,70
-+0+000c <[^>]*> call	00000000 <func1>
-+0+0010 <[^>]*> addi	r2,r2,101
-+0+0014 <[^>]*> addi	r3,r3,63
-+0+0018 <[^>]*> addi	r4,r4,132
-+0+001c <[^>]*> call	00000000 <func1>
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-merged_strings.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-merged_strings.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,21 @@
-+	.section	.rodata.str1.1,"aMS",@progbits,1
-+.LC0:
-+	.string	"DHRYSTONE PROGRAM, 1'ST STRING"
-+.LC1:
-+	.string	"COMMON"
-+.LC2:
-+	.string	"DHRYSTONE PROGRAM, 2'ND STRING"
-+	
-+	 .section	.text
-+	 .align	3
-+	 .global	func1
-+	 .type	func1, @function
-+func1:
-+	#movhi	$2, %hiadj(.LC0)
-+	addi	r2, r2, .LC0
-+	#movhi	$3, %hiadj(.LC1)
-+	addi	r3, r3, .LC1
-+	#movhi	$4, %hiadj(.LC2)
-+	addi	r4, r4, .LC2
-+	.size	func1, .-func1
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-bfd-reloc-xx.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-bfd-reloc-xx.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8 @@
-+#objdump: -s
-+#name: NIOS2 R_NIOS2_BFD_RELOC_XX
-+
-+# Test the branch instructions.
-+.*: +file format elf32-littlenios2
-+
-+Contents of section .text:
-+ 0000 fa00cefa efbeadde facefaef beadde00  ................
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-bfd-reloc-xx.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-bfd-reloc-xx.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,9 @@
-+# Test for New Jersey 32-bit, 16 and 8-bit relocations
-+
-+.global byte_sym
-+.global short_sym
-+.global long_sym
-+
-+.set byte_sym, 0xFA
-+.set short_sym, 0xFACE
-+.set long_sym, 0xDEADBEEF
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-cache-opx.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-cache-opx.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 R_NIOS2_CACHE_OPX
-+
-+# Test the cache opx relocation
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> cache	0x1f,0x1000\(\$1\)
-+0+0004 <[^>]*> Address 0x4 is out of bounds.
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-cache-opx.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-cache-opx.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,6 @@
-+# Test the imm5 relocation
-+
-+.text
-+	cache imm5, 0x1000($1)
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-call26.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-call26.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,76 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 nios2-reloc-r-nios2-call26
-+
-+# Test the branch instructions.
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+[	]*\.\.\.
-+[	]*0: R_NIOS2_CALL26	.text\+0x100
-+[	]*4: R_NIOS2_CALL26	globalfunc
-+0+0008 <[^>]*> nop
-+0+000c <[^>]*> nop
-+0+0010 <[^>]*> nop
-+0+0014 <[^>]*> nop
-+0+0018 <[^>]*> nop
-+0+001c <[^>]*> nop
-+0+0020 <[^>]*> nop
-+0+0024 <[^>]*> nop
-+0+0028 <[^>]*> nop
-+0+002c <[^>]*> nop
-+0+0030 <[^>]*> nop
-+0+0034 <[^>]*> nop
-+0+0038 <[^>]*> nop
-+0+003c <[^>]*> nop
-+0+0040 <[^>]*> nop
-+0+0044 <[^>]*> nop
-+0+0048 <[^>]*> nop
-+0+004c <[^>]*> nop
-+0+0050 <[^>]*> nop
-+0+0054 <[^>]*> nop
-+0+0058 <[^>]*> nop
-+0+005c <[^>]*> nop
-+0+0060 <[^>]*> nop
-+0+0064 <[^>]*> nop
-+0+0068 <[^>]*> nop
-+0+006c <[^>]*> nop
-+0+0070 <[^>]*> nop
-+0+0074 <[^>]*> nop
-+0+0078 <[^>]*> nop
-+0+007c <[^>]*> nop
-+0+0080 <[^>]*> nop
-+0+0084 <[^>]*> nop
-+0+0088 <[^>]*> nop
-+0+008c <[^>]*> nop
-+0+0090 <[^>]*> nop
-+0+0094 <[^>]*> nop
-+0+0098 <[^>]*> nop
-+0+009c <[^>]*> nop
-+0+00a0 <[^>]*> nop
-+0+00a4 <[^>]*> nop
-+0+00a8 <[^>]*> nop
-+0+00ac <[^>]*> nop
-+0+00b0 <[^>]*> nop
-+0+00b4 <[^>]*> nop
-+0+00b8 <[^>]*> nop
-+0+00bc <[^>]*> nop
-+0+00c0 <[^>]*> nop
-+0+00c4 <[^>]*> nop
-+0+00c8 <[^>]*> nop
-+0+00cc <[^>]*> nop
-+0+00d0 <[^>]*> nop
-+0+00d4 <[^>]*> nop
-+0+00d8 <[^>]*> nop
-+0+00dc <[^>]*> nop
-+0+00e0 <[^>]*> nop
-+0+00e4 <[^>]*> nop
-+0+00e8 <[^>]*> nop
-+0+00ec <[^>]*> nop
-+0+00f0 <[^>]*> nop
-+0+00f4 <[^>]*> nop
-+0+00f8 <[^>]*> nop
-+0+00fc <[^>]*> nop
-+0+0100 <[^>]*> nop
-+	...
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-call26.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-call26.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,12 @@
-+# Test for New Jersey 32-bit relocations
-+
-+.global globalfunc
-+.text
-+.set norelax
-+start:
-+	call localfunc
-+	call globalfunc
-+
-+.align 8	
-+localfunc:
-+	nop
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-gprel.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-gprel.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,15 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 gp-relative relocations
-+
-+# Test the %gprel macro.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> movui	gp,32784
-+0+0004 <[^>]*> ldw	at,-32756\(gp\)
-+0+0008 <[^>]*> ldw	r2,-32752\(gp\)
-+0+000c <[^>]*> ldb	r3,-32748\(gp\)
-+0+0010 <[^>]*> ldw	at,-32744\(gp\)
-+0+0014 <[^>]*> ldw	r2,-32740\(gp\)
-+0+0018 <[^>]*> ldb	r3,-32736\(gp\)
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-gprel.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-gprel.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,24 @@
-+.sdata
-+sym1:
-+.long 0xdead
-+sym2:
-+.long 0xbeef
-+sym3:
-+.byte 0x7f
-+
-+.section sdata1, "s"
-+sym4:
-+.long 0xdead
-+sym5:
-+.long 0xbeef
-+sym6:
-+.byte 0x7f
-+
-+.text
-+	movui gp, _gp
-+	ldw r1, %gprel(sym1)(gp)
-+	ldw r2, %gprel(sym2)(gp)
-+	ldb r3, %gprel(sym3)(gp)
-+	ldw r1, %gprel(sym4)(gp)
-+	ldw r2, %gprel(sym5)(gp)
-+	ldb r3, %gprel(sym6)(gp)
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-hilo16.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-hilo16.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 R_NIOS2_HI16,LO16,HIADJ16
-+
-+# Test the %hi, %lo and %hiadi relocations
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> addi	at,at,-8531
-+0+0004 <[^>]*> addi	at,at,-16657
-+0+0008 <[^>]*> addi	at,at,-8530
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-hilo16.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-hilo16.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,6 @@
-+# Test the %hi, lo and %hiadj relocations
-+
-+.text
-+	addi r1, r1, %hi(long_symbol)
-+	addi r1, r1, %lo(long_symbol)
-+	addi r1, r1, %hiadj(long_symbol)
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-imm5.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-imm5.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 R_NIOS2_IMM5
-+
-+# Test the branch instructions.
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> roli	at,at,31
-+0+0004 <.[^>]*> Address 0x4 is out of bounds.
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-imm5.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-imm5.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,6 @@
-+# Test the imm5 relocation
-+
-+.text
-+	roli r1, r1, imm5
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-pcrel16.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-pcrel16.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,12 @@
-+#objdump: -s
-+#name: NIOS2 R_NIOS2_PCREL16
-+
-+# Test the relative branch relocations.
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+
-+0+0000 <[^>]*> br	00000008 <ext_label>
-+0+0004 <[^>]*> br	00000018 <__bss_start\+0x8>
-+0+0008 <[^>]*> nop
-+0+000c <[^>]*> nop
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-pcrel16.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-pcrel16.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,6 @@
-+# Test for pc-relative relocations
-+.set norelax
-+.text
-+	br ext_label
-+	br ext_label + 16
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8 @@
-+
-+a.exe:     file format elf32-littlenios2
-+
-+Contents of section .text:
-+ 0000 04004408 04006008 c4ff5f08 44004808  ..D...`..._.D.H.
-+ 0010 44004008                             D.@.            
-+Contents of section .data:
-+Contents of section .sbss:
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s16.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s16.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,9 @@
-+#objdump: -s
-+#name: NIOS2 R_NIOS2_S16
-+
-+# Test the signed 16-bit relocations.
-+.*: +file format elf32-littlenios2
-+
-+Contents of section .text:
-+ 0000 04004408 04006008 c4ff5f08 44004808  ..D...`..._.D.H.
-+ 0010 44004008                             D.@.            
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s16.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-s16.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,13 @@
-+# Test for New Jersey 32-bit, 16 and 8-bit relocations
-+
-+.set some_other_sym, 0x1000
-+.text
-+# signed 16-bit relocation
-+	addi r1, r1, some_sym
-+	addi r1, r1, min
-+	addi r1, r1, max
-+	addi r1, r1, some_sym + some_other_sym + 1
-+	addi r1, r1, some_sym - some_other_sym + 1
-+
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-u16.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-u16.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,9 @@
-+#objdump: -s
-+#name: NIOS2 R_NIOS2_U16
-+
-+# Test the unsigned 16-bit relocations.
-+.*: +file format elf32-littlenios2
-+
-+Contents of section .text:
-+ 0000 0c004408 0c004008 ccff7f08 4c004808  ..D...@.....L.H.
-+ 0010 4c004008                             L.@.            
---- binutils-2.15/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-u16.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2-reloc-r-nios2-u16.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,13 @@
-+# Test for New Jersey 32-bit, 16 and 8-bit relocations
-+
-+.set some_other_sym, 0x1000
-+.text
-+# signed 16-bit relocation
-+	andi r1, r1, some_sym
-+	andi r1, r1, min
-+	andi r1, r1, max
-+	andi r1, r1, some_sym + some_other_sym + 1
-+	andi r1, r1, some_sym - some_other_sym + 1
-+
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/nios2.exp	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nios2.exp	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,200 @@
-+#
-+# Some generic New Jersey tests
-+#
-+
-+# "LOSE" marks information about tests which fail at a particular point
-+# in time, but which are not XFAILed.  Either they used to pass
-+# and indicate either regressions or the need to tweak the tests to keep
-+# up the with code, or they are new tests and it is unknown whether or not
-+# they should pass as-is for the given object formats.
-+
-+if ![info exists LD] then {
-+    set LD [findfile $base_dir/../../ld/ld-new]
-+}
-+
-+proc run_list_test { name  } {
-+    global srcdir subdir
-+    set testname "NIOS2 $name"
-+    set file $srcdir/$subdir/$name
-+    gas_run ${name}.s "" ">&dump.out"
-+    if { [regexp_diff "dump.out" "${file}.l"] } then {
-+	fail $testname
-+	verbose "output is [file_contents "dump.out"]" 2
-+	return
-+    }
-+    pass $testname
-+}
-+
-+proc ld_run { obj0 obj1 opts } {
-+    global LD
-+    global comp_output
-+    global srcdir
-+    global subdir
-+    global host_triplet
-+
-+    verbose "Executing $srcdir/lib/run $LD $obj0 $obj1 $opts"
-+    catch "exec $srcdir/lib/run $LD $obj0 $obj1 $opts" comp_output
-+    set comp_output [prune_warnings $comp_output]
-+    verbose "output was $comp_output"
-+    return [list $comp_output ""];
-+}
-+
-+proc objdump_run { prog opts redir } {
-+    global OBJDUMP
-+    global comp_output
-+    global srcdir
-+    global subdir
-+    global host_triplet
-+
-+    verbose "Executing $srcdir/lib/run $OBJDUMP -s $prog"
-+    catch "exec $srcdir/lib/run $OBJDUMP $opts $prog $redir" comp_output
-+    set comp_output [prune_warnings $comp_output]
-+    verbose "output was $comp_output"
-+    return [list $comp_output ""];
-+}
-+
-+proc run_reloc_test { name other objdump_opts} {
-+	global LD OBJDUMP AS
-+	global srcdir subdir
-+	set testname "NIOS2 $name"
-+	set file $srcdir/$subdir/$name
-+	set file1 $srcdir/$subdir/$other
-+	gas_run ${name}.s "-o ${name}.o" ""
-+	gas_run ${other}.s "-o ${other}.o" ""
-+	ld_run ${name}.o ${other}.o "-o ${name}.exe"
-+	objdump_run ${name}.exe ${objdump_opts} ">&dump.out"
-+	if { [regexp_diff "dump.out" "${file}.d"] } then {
-+		fail $testname
-+		verbose "output is [file_contents "dump.out"]" 2
-+		return
-+	    }
-+    	pass $testname
-+}
-+
-+proc run_gpreloc_test { name objdump_opts} {
-+	global LD OBJDUMP AS
-+	global srcdir subdir
-+	set testname "NIOS2 $name"
-+	set file $srcdir/$subdir/$name
-+	gas_run ${name}.s "-o ${name}.o" ""
-+	ld_run ${name}.o "" "-o ${name}.exe"
-+	objdump_run ${name}.exe ${objdump_opts} ">&dump.out"
-+	if { [regexp_diff "dump.out" "${file}.d"] } then {
-+		fail $testname
-+		verbose "output is [file_contents "dump.out"]" 2
-+		return
-+	    }
-+    	pass $testname
-+}
-+
-+proc run_relax_test { name asm_opts link_opts objdump_opts} {
-+	global LD OBJDUMP AS
-+	global srcdir subdir
-+	set testname "NIOS2 $name"
-+	set file $srcdir/$subdir/$name
-+	gas_run ${name}.s "-o ${name}.o" ${asm_opts}
-+	ld_run ${name}.o "" "-o ${name}.exe -T${srcdir}/${subdir}/${link_opts} --relax"
-+	objdump_run ${name}.exe ${objdump_opts} ">&dump.out"
-+	if { [regexp_diff "dump.out" "${file}.d"] } then {
-+			fail $testname
-+			verbose "output is [file_contents "dump.out"]" 2
-+			return
-+	   }
-+    	pass $testname
-+}
-+
-+proc run_relax_section_test { name asm_opts objdump_opts} {
-+	global LD OBJDUMP AS
-+	global srcdir subdir
-+	set testname "NIOS2 $name"
-+	set file $srcdir/$subdir/$name
-+	gas_run ${name}.s "-o ${name}.o" ${asm_opts}
-+	ld_run ${name}.o "" "-o ${name}.exe"
-+	objdump_run ${name}.exe ${objdump_opts} ">&dump.out"
-+	if { [regexp_diff "dump.out" "${file}.d"] } then {
-+			fail $testname
-+			verbose "output is [file_contents "dump.out"]" 2
-+			return
-+	   }
-+    	pass $testname
-+}
-+
-+if { [istarget nios2-*-elf] } then {
-+    set elf 1
-+    
-+    run_dump_test "add"
-+    run_dump_test "and"
-+    run_dump_test "align_fill"
-+    run_dump_test "align_text"
-+    
-+    run_dump_test "branch"
-+
-+    
-+    run_dump_test "break"
-+    run_dump_test "bret"
-+    run_dump_test "cache"
-+    
-+    run_dump_test "call"
-+
-+    
-+    run_dump_test "cmp"
-+   
-+   
-+    run_dump_test "jmp" 
-+    run_dump_test "ldw"
-+    run_dump_test "ldh"
-+    run_dump_test "ldb"
-+    
-+     
-+    run_dump_test "mul"
-+ 
-+    run_dump_test "nor"  
-+    run_dump_test "or"
-+    
-+    run_dump_test "ctl"
-+    run_dump_test "ret"
-+    run_dump_test "rotate"
-+    
-+    run_dump_test "stw"
-+    run_dump_test "sth"
-+    run_dump_test "stb"
-+    
-+    run_dump_test "sub"
-+    run_dump_test "sync"
-+    run_dump_test "trap"
-+    run_dump_test "tret"
-+    
-+    run_dump_test "custom"
-+    run_dump_test "xor"
-+    run_dump_test "movia"
-+    
-+    run_dump_test "complex"
-+    run_dump_test "comments"
-+    run_dump_test "etbt"
-+    run_dump_test "lineseparator"
-+    run_dump_test "movi"
-+    
-+    run_list_test "illegal"
-+    run_list_test "warn_nobreak"
-+    run_list_test "warn_noat"
-+
-+
-+# now lets make sure that the assembler generates all the relocations
-+# that it should correctly, and that the linker links them correctly
-+     
-+    run_reloc_test "nios2-reloc-r-nios2-bfd-reloc-xx" "reloc_symbols" "-s"
-+    run_reloc_test "nios2-reloc-r-nios2-s16" "s16_symbol" "-s"
-+    run_reloc_test "nios2-reloc-r-nios2-u16" "u16_symbol" "-s"
-+    run_reloc_test "nios2-reloc-r-nios2-pcrel16" "pcrel_label" "-dr --prefix-addresses"
-+    run_reloc_test "nios2-reloc-r-nios2-hilo16" "hilo_symbol" "-dr --prefix-addresses"
-+    run_dump_test "nios2-reloc-r-nios2-call26"
-+    run_reloc_test "nios2-reloc-r-nios2-imm5" "imm5_symbol" "-dr --prefix-addresses"
-+    run_reloc_test "nios2-reloc-merged_strings" "str2" "-dr --prefix-addresses"
-+    run_gpreloc_test "nios2-reloc-r-nios2-gprel" "-dr --prefix-addresses"
-+    
-+# relaxation tests
-+    run_relax_test "relax_ujmp" "-relax-all" "link1.lds" "-dr --prefix-addresses"
-+    run_relax_test "relax_cjmp" "-relax-all" "link1.lds" "-dr --prefix-addresses"
-+    run_relax_test "relax_callr" "-relax-all" "link3.lds" "-dr --prefix-addresses"
-+    run_relax_section_test "relax_section" "-relax-section" "-dr --prefix-addresses"
-+}
---- binutils-2.15/gas/testsuite/gas/nios2/nor.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nor.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,9 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 nor
-+
-+# Test the nor instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> nor	r6,r8,r10
---- binutils-2.15/gas/testsuite/gas/nios2/nor.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/nor.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,5 @@
-+# Source file used to test the nor instruction
-+	
-+foo:
-+	nor	r6,r8,r10
-+
---- binutils-2.15/gas/testsuite/gas/nios2/or.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/or.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,11 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 or
-+
-+# Test the nor instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> or	r6,r8,r10
-+0+0004 <[^>]*> orhi	r6,r7,65535
-+0+0008 <[^>]*> ori	r6,r7,65535
---- binutils-2.15/gas/testsuite/gas/nios2/or.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/or.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,7 @@
-+# Source file used to test the nor instruction
-+	
-+foo:
-+	or	r6,r8,r10
-+	orhi	r6,r7,0xffff
-+	ori	r6,r7,0xffff
-+
---- binutils-2.15/gas/testsuite/gas/nios2/pcrel_label.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/pcrel_label.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,5 @@
-+.text
-+ext_label:
-+	nop
-+	nop
-+.global ext_label
---- binutils-2.15/gas/testsuite/gas/nios2/relax_callr.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/relax_callr.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,22 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 relax_callr
-+# Test relaxation of callr
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section text1:
-+00000000 <[^>]*> call	08000000 <func>
-+00000004 <[^>]*> nop
-+00000008 <[^>]*> nop
-+0000000c <[^>]*> call	0800001c <func1>
-+00000010 <[^>]*> nop
-+00000014 <[^>]*> nop
-+Disassembly of section text2:
-+08000000 <[^>]*> nop
-+08000004 <[^>]*> br	0800001c <func1>
-+08000008 <[^>]*> nop
-+0800000c <[^>]*> nop
-+08000010 <[^>]*> nop
-+08000014 <[^>]*> nop
-+08000018 <[^>]*> nop
-+0800001c <[^>]*> nop
---- binutils-2.15/gas/testsuite/gas/nios2/relax_callr.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/relax_callr.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,17 @@
-+# relaxation test for callr
-+
-+.globl text1
-+.section text1, "ax", @progbits
-+
-+	call func
-+	call func1
-+	
-+.section text2, "ax", @progbits
-+func:
-+	nop
-+	br func1
-+	nop
-+	nop
-+	nop
-+func1:
-+	nop
---- binutils-2.15/gas/testsuite/gas/nios2/relax_cjmp.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/relax_cjmp.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8227 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 relax_cjmp
-+
-+# Test relaxation of conditional jumps
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section text2:
-+00000000 <[^>]*> bge	r2,r3,00008000 <[^>]*>
-+00000004 <[^>]*> nop
-+00000008 <[^>]*> nop
-+0000000c <[^>]*> nop
-+00000010 <[^>]*> blt	r3,r2,00000020 <[^>]*>
-+00000014 <[^>]*> movhi	at,1
-+00000018 <[^>]*> ori	at,at,36
-+0000001c <[^>]*> jmp	at
-+00000020 <[^>]*> bge	r3,r2,00000038 <[^>]*>
-+00000024 <[^>]*> nop
-+00000028 <[^>]*> nop
-+0000002c <[^>]*> nop
-+00000030 <[^>]*> nop
-+00000034 <[^>]*> nop
-+00000038 <[^>]*> nop
-+Disassembly of section text1:
-+00008000 <[^>]*> beq	r2,r3,00010000 <[^>]*>
-+00008004 <[^>]*> nop
-+00008008 <[^>]*> nop
-+0000800c <[^>]*> nop
-+00008010 <[^>]*> bne	r2,r3,00008020 <[^>]*>
-+00008014 <[^>]*> movhi	at,1
-+00008018 <[^>]*> ori	at,at,36
-+0000801c <[^>]*> jmp	at
-+00008020 <[^>]*> nop
-+00008024 <[^>]*> nop
-+00008028 <[^>]*> nop
-+0000802c <[^>]*> nop
-+00008030 <[^>]*> nop
-+00008034 <[^>]*> nop
-+00008038 <[^>]*> nop
-+0000803c <[^>]*> nop
-+00008040 <[^>]*> nop
-+00008044 <[^>]*> nop
-+00008048 <[^>]*> nop
-+0000804c <[^>]*> nop
-+00008050 <[^>]*> nop
-+00008054 <[^>]*> nop
-+00008058 <[^>]*> nop
-+0000805c <[^>]*> nop
-+00008060 <[^>]*> nop
-+00008064 <[^>]*> nop
-+00008068 <[^>]*> nop
-+0000806c <[^>]*> nop
-+00008070 <[^>]*> nop
-+00008074 <[^>]*> nop
-+00008078 <[^>]*> nop
-+0000807c <[^>]*> nop
-+00008080 <[^>]*> nop
-+00008084 <[^>]*> nop
-+00008088 <[^>]*> nop
-+0000808c <[^>]*> nop
-+00008090 <[^>]*> nop
-+00008094 <[^>]*> nop
-+00008098 <[^>]*> nop
-+0000809c <[^>]*> nop
-+000080a0 <[^>]*> nop
-+000080a4 <[^>]*> nop
-+000080a8 <[^>]*> nop
-+000080ac <[^>]*> nop
-+000080b0 <[^>]*> nop
-+000080b4 <[^>]*> nop
-+000080b8 <[^>]*> nop
-+000080bc <[^>]*> nop
-+000080c0 <[^>]*> nop
-+000080c4 <[^>]*> nop
-+000080c8 <[^>]*> nop
-+000080cc <[^>]*> nop
-+000080d0 <[^>]*> nop
-+000080d4 <[^>]*> nop
-+000080d8 <[^>]*> nop
-+000080dc <[^>]*> nop
-+000080e0 <[^>]*> nop
-+000080e4 <[^>]*> nop
-+000080e8 <[^>]*> nop
-+000080ec <[^>]*> nop
-+000080f0 <[^>]*> nop
-+000080f4 <[^>]*> nop
-+000080f8 <[^>]*> nop
-+000080fc <[^>]*> nop
-+00008100 <[^>]*> nop
-+00008104 <[^>]*> nop
-+00008108 <[^>]*> nop
-+0000810c <[^>]*> nop
-+00008110 <[^>]*> nop
-+00008114 <[^>]*> nop
-+00008118 <[^>]*> nop
-+0000811c <[^>]*> nop
-+00008120 <[^>]*> nop
-+00008124 <[^>]*> nop
-+00008128 <[^>]*> nop
-+0000812c <[^>]*> nop
-+00008130 <[^>]*> nop
-+00008134 <[^>]*> nop
-+00008138 <[^>]*> nop
-+0000813c <[^>]*> nop
-+00008140 <[^>]*> nop
-+00008144 <[^>]*> nop
-+00008148 <[^>]*> nop
-+0000814c <[^>]*> nop
-+00008150 <[^>]*> nop
-+00008154 <[^>]*> nop
-+00008158 <[^>]*> nop
-+0000815c <[^>]*> nop
-+00008160 <[^>]*> nop
-+00008164 <[^>]*> nop
-+00008168 <[^>]*> nop
-+0000816c <[^>]*> nop
-+00008170 <[^>]*> nop
-+00008174 <[^>]*> nop
-+00008178 <[^>]*> nop
-+0000817c <[^>]*> nop
-+00008180 <[^>]*> nop
-+00008184 <[^>]*> nop
-+00008188 <[^>]*> nop
-+0000818c <[^>]*> nop
-+00008190 <[^>]*> nop
-+00008194 <[^>]*> nop
-+00008198 <[^>]*> nop
-+0000819c <[^>]*> nop
-+000081a0 <[^>]*> nop
-+000081a4 <[^>]*> nop
-+000081a8 <[^>]*> nop
-+000081ac <[^>]*> nop
-+000081b0 <[^>]*> nop
-+000081b4 <[^>]*> nop
-+000081b8 <[^>]*> nop
-+000081bc <[^>]*> nop
-+000081c0 <[^>]*> nop
-+000081c4 <[^>]*> nop
-+000081c8 <[^>]*> nop
-+000081cc <[^>]*> nop
-+000081d0 <[^>]*> nop
-+000081d4 <[^>]*> nop
-+000081d8 <[^>]*> nop
-+000081dc <[^>]*> nop
-+000081e0 <[^>]*> nop
-+000081e4 <[^>]*> nop
-+000081e8 <[^>]*> nop
-+000081ec <[^>]*> nop
-+000081f0 <[^>]*> nop
-+000081f4 <[^>]*> nop
-+000081f8 <[^>]*> nop
-+000081fc <[^>]*> nop
-+00008200 <[^>]*> nop
-+00008204 <[^>]*> nop
-+00008208 <[^>]*> nop
-+0000820c <[^>]*> nop
-+00008210 <[^>]*> nop
-+00008214 <[^>]*> nop
-+00008218 <[^>]*> nop
-+0000821c <[^>]*> nop
-+00008220 <[^>]*> nop
-+00008224 <[^>]*> nop
-+00008228 <[^>]*> nop
-+0000822c <[^>]*> nop
-+00008230 <[^>]*> nop
-+00008234 <[^>]*> nop
-+00008238 <[^>]*> nop
-+0000823c <[^>]*> nop
-+00008240 <[^>]*> nop
-+00008244 <[^>]*> nop
-+00008248 <[^>]*> nop
-+0000824c <[^>]*> nop
-+00008250 <[^>]*> nop
-+00008254 <[^>]*> nop
-+00008258 <[^>]*> nop
-+0000825c <[^>]*> nop
-+00008260 <[^>]*> nop
-+00008264 <[^>]*> nop
-+00008268 <[^>]*> nop
-+0000826c <[^>]*> nop
-+00008270 <[^>]*> nop
-+00008274 <[^>]*> nop
-+00008278 <[^>]*> nop
-+0000827c <[^>]*> nop
-+00008280 <[^>]*> nop
-+00008284 <[^>]*> nop
-+00008288 <[^>]*> nop
-+0000828c <[^>]*> nop
-+00008290 <[^>]*> nop
-+00008294 <[^>]*> nop
-+00008298 <[^>]*> nop
-+0000829c <[^>]*> nop
-+000082a0 <[^>]*> nop
-+000082a4 <[^>]*> nop
-+000082a8 <[^>]*> nop
-+000082ac <[^>]*> nop
-+000082b0 <[^>]*> nop
-+000082b4 <[^>]*> nop
-+000082b8 <[^>]*> nop
-+000082bc <[^>]*> nop
-+000082c0 <[^>]*> nop
-+000082c4 <[^>]*> nop
-+000082c8 <[^>]*> nop
-+000082cc <[^>]*> nop
-+000082d0 <[^>]*> nop
-+000082d4 <[^>]*> nop
-+000082d8 <[^>]*> nop
-+000082dc <[^>]*> nop
-+000082e0 <[^>]*> nop
-+000082e4 <[^>]*> nop
-+000082e8 <[^>]*> nop
-+000082ec <[^>]*> nop
-+000082f0 <[^>]*> nop
-+000082f4 <[^>]*> nop
-+000082f8 <[^>]*> nop
-+000082fc <[^>]*> nop
-+00008300 <[^>]*> nop
-+00008304 <[^>]*> nop
-+00008308 <[^>]*> nop
-+0000830c <[^>]*> nop
-+00008310 <[^>]*> nop
-+00008314 <[^>]*> nop
-+00008318 <[^>]*> nop
-+0000831c <[^>]*> nop
-+00008320 <[^>]*> nop
-+00008324 <[^>]*> nop
-+00008328 <[^>]*> nop
-+0000832c <[^>]*> nop
-+00008330 <[^>]*> nop
-+00008334 <[^>]*> nop
-+00008338 <[^>]*> nop
-+0000833c <[^>]*> nop
-+00008340 <[^>]*> nop
-+00008344 <[^>]*> nop
-+00008348 <[^>]*> nop
-+0000834c <[^>]*> nop
-+00008350 <[^>]*> nop
-+00008354 <[^>]*> nop
-+00008358 <[^>]*> nop
-+0000835c <[^>]*> nop
-+00008360 <[^>]*> nop
-+00008364 <[^>]*> nop
-+00008368 <[^>]*> nop
-+0000836c <[^>]*> nop
-+00008370 <[^>]*> nop
-+00008374 <[^>]*> nop
-+00008378 <[^>]*> nop
-+0000837c <[^>]*> nop
-+00008380 <[^>]*> nop
-+00008384 <[^>]*> nop
-+00008388 <[^>]*> nop
-+0000838c <[^>]*> nop
-+00008390 <[^>]*> nop
-+00008394 <[^>]*> nop
-+00008398 <[^>]*> nop
-+0000839c <[^>]*> nop
-+000083a0 <[^>]*> nop
-+000083a4 <[^>]*> nop
-+000083a8 <[^>]*> nop
-+000083ac <[^>]*> nop
-+000083b0 <[^>]*> nop
-+000083b4 <[^>]*> nop
-+000083b8 <[^>]*> nop
-+000083bc <[^>]*> nop
-+000083c0 <[^>]*> nop
-+000083c4 <[^>]*> nop
-+000083c8 <[^>]*> nop
-+000083cc <[^>]*> nop
-+000083d0 <[^>]*> nop
-+000083d4 <[^>]*> nop
-+000083d8 <[^>]*> nop
-+000083dc <[^>]*> nop
-+000083e0 <[^>]*> nop
-+000083e4 <[^>]*> nop
-+000083e8 <[^>]*> nop
-+000083ec <[^>]*> nop
-+000083f0 <[^>]*> nop
-+000083f4 <[^>]*> nop
-+000083f8 <[^>]*> nop
-+000083fc <[^>]*> nop
-+00008400 <[^>]*> nop
-+00008404 <[^>]*> nop
-+00008408 <[^>]*> nop
-+0000840c <[^>]*> nop
-+00008410 <[^>]*> nop
-+00008414 <[^>]*> nop
-+00008418 <[^>]*> nop
-+0000841c <[^>]*> nop
-+00008420 <[^>]*> nop
-+00008424 <[^>]*> nop
-+00008428 <[^>]*> nop
-+0000842c <[^>]*> nop
-+00008430 <[^>]*> nop
-+00008434 <[^>]*> nop
-+00008438 <[^>]*> nop
-+0000843c <[^>]*> nop
-+00008440 <[^>]*> nop
-+00008444 <[^>]*> nop
-+00008448 <[^>]*> nop
-+0000844c <[^>]*> nop
-+00008450 <[^>]*> nop
-+00008454 <[^>]*> nop
-+00008458 <[^>]*> nop
-+0000845c <[^>]*> nop
-+00008460 <[^>]*> nop
-+00008464 <[^>]*> nop
-+00008468 <[^>]*> nop
-+0000846c <[^>]*> nop
-+00008470 <[^>]*> nop
-+00008474 <[^>]*> nop
-+00008478 <[^>]*> nop
-+0000847c <[^>]*> nop
-+00008480 <[^>]*> nop
-+00008484 <[^>]*> nop
-+00008488 <[^>]*> nop
-+0000848c <[^>]*> nop
-+00008490 <[^>]*> nop
-+00008494 <[^>]*> nop
-+00008498 <[^>]*> nop
-+0000849c <[^>]*> nop
-+000084a0 <[^>]*> nop
-+000084a4 <[^>]*> nop
-+000084a8 <[^>]*> nop
-+000084ac <[^>]*> nop
-+000084b0 <[^>]*> nop
-+000084b4 <[^>]*> nop
-+000084b8 <[^>]*> nop
-+000084bc <[^>]*> nop
-+000084c0 <[^>]*> nop
-+000084c4 <[^>]*> nop
-+000084c8 <[^>]*> nop
-+000084cc <[^>]*> nop
-+000084d0 <[^>]*> nop
-+000084d4 <[^>]*> nop
-+000084d8 <[^>]*> nop
-+000084dc <[^>]*> nop
-+000084e0 <[^>]*> nop
-+000084e4 <[^>]*> nop
-+000084e8 <[^>]*> nop
-+000084ec <[^>]*> nop
-+000084f0 <[^>]*> nop
-+000084f4 <[^>]*> nop
-+000084f8 <[^>]*> nop
-+000084fc <[^>]*> nop
-+00008500 <[^>]*> nop
-+00008504 <[^>]*> nop
-+00008508 <[^>]*> nop
-+0000850c <[^>]*> nop
-+00008510 <[^>]*> nop
-+00008514 <[^>]*> nop
-+00008518 <[^>]*> nop
-+0000851c <[^>]*> nop
-+00008520 <[^>]*> nop
-+00008524 <[^>]*> nop
-+00008528 <[^>]*> nop
-+0000852c <[^>]*> nop
-+00008530 <[^>]*> nop
-+00008534 <[^>]*> nop
-+00008538 <[^>]*> nop
-+0000853c <[^>]*> nop
-+00008540 <[^>]*> nop
-+00008544 <[^>]*> nop
-+00008548 <[^>]*> nop
-+0000854c <[^>]*> nop
-+00008550 <[^>]*> nop
-+00008554 <[^>]*> nop
-+00008558 <[^>]*> nop
-+0000855c <[^>]*> nop
-+00008560 <[^>]*> nop
-+00008564 <[^>]*> nop
-+00008568 <[^>]*> nop
-+0000856c <[^>]*> nop
-+00008570 <[^>]*> nop
-+00008574 <[^>]*> nop
-+00008578 <[^>]*> nop
-+0000857c <[^>]*> nop
-+00008580 <[^>]*> nop
-+00008584 <[^>]*> nop
-+00008588 <[^>]*> nop
-+0000858c <[^>]*> nop
-+00008590 <[^>]*> nop
-+00008594 <[^>]*> nop
-+00008598 <[^>]*> nop
-+0000859c <[^>]*> nop
-+000085a0 <[^>]*> nop
-+000085a4 <[^>]*> nop
-+000085a8 <[^>]*> nop
-+000085ac <[^>]*> nop
-+000085b0 <[^>]*> nop
-+000085b4 <[^>]*> nop
-+000085b8 <[^>]*> nop
-+000085bc <[^>]*> nop
-+000085c0 <[^>]*> nop
-+000085c4 <[^>]*> nop
-+000085c8 <[^>]*> nop
-+000085cc <[^>]*> nop
-+000085d0 <[^>]*> nop
-+000085d4 <[^>]*> nop
-+000085d8 <[^>]*> nop
-+000085dc <[^>]*> nop
-+000085e0 <[^>]*> nop
-+000085e4 <[^>]*> nop
-+000085e8 <[^>]*> nop
-+000085ec <[^>]*> nop
-+000085f0 <[^>]*> nop
-+000085f4 <[^>]*> nop
-+000085f8 <[^>]*> nop
-+000085fc <[^>]*> nop
-+00008600 <[^>]*> nop
-+00008604 <[^>]*> nop
-+00008608 <[^>]*> nop
-+0000860c <[^>]*> nop
-+00008610 <[^>]*> nop
-+00008614 <[^>]*> nop
-+00008618 <[^>]*> nop
-+0000861c <[^>]*> nop
-+00008620 <[^>]*> nop
-+00008624 <[^>]*> nop
-+00008628 <[^>]*> nop
-+0000862c <[^>]*> nop
-+00008630 <[^>]*> nop
-+00008634 <[^>]*> nop
-+00008638 <[^>]*> nop
-+0000863c <[^>]*> nop
-+00008640 <[^>]*> nop
-+00008644 <[^>]*> nop
-+00008648 <[^>]*> nop
-+0000864c <[^>]*> nop
-+00008650 <[^>]*> nop
-+00008654 <[^>]*> nop
-+00008658 <[^>]*> nop
-+0000865c <[^>]*> nop
-+00008660 <[^>]*> nop
-+00008664 <[^>]*> nop
-+00008668 <[^>]*> nop
-+0000866c <[^>]*> nop
-+00008670 <[^>]*> nop
-+00008674 <[^>]*> nop
-+00008678 <[^>]*> nop
-+0000867c <[^>]*> nop
-+00008680 <[^>]*> nop
-+00008684 <[^>]*> nop
-+00008688 <[^>]*> nop
-+0000868c <[^>]*> nop
-+00008690 <[^>]*> nop
-+00008694 <[^>]*> nop
-+00008698 <[^>]*> nop
-+0000869c <[^>]*> nop
-+000086a0 <[^>]*> nop
-+000086a4 <[^>]*> nop
-+000086a8 <[^>]*> nop
-+000086ac <[^>]*> nop
-+000086b0 <[^>]*> nop
-+000086b4 <[^>]*> nop
-+000086b8 <[^>]*> nop
-+000086bc <[^>]*> nop
-+000086c0 <[^>]*> nop
-+000086c4 <[^>]*> nop
-+000086c8 <[^>]*> nop
-+000086cc <[^>]*> nop
-+000086d0 <[^>]*> nop
-+000086d4 <[^>]*> nop
-+000086d8 <[^>]*> nop
-+000086dc <[^>]*> nop
-+000086e0 <[^>]*> nop
-+000086e4 <[^>]*> nop
-+000086e8 <[^>]*> nop
-+000086ec <[^>]*> nop
-+000086f0 <[^>]*> nop
-+000086f4 <[^>]*> nop
-+000086f8 <[^>]*> nop
-+000086fc <[^>]*> nop
-+00008700 <[^>]*> nop
-+00008704 <[^>]*> nop
-+00008708 <[^>]*> nop
-+0000870c <[^>]*> nop
-+00008710 <[^>]*> nop
-+00008714 <[^>]*> nop
-+00008718 <[^>]*> nop
-+0000871c <[^>]*> nop
-+00008720 <[^>]*> nop
-+00008724 <[^>]*> nop
-+00008728 <[^>]*> nop
-+0000872c <[^>]*> nop
-+00008730 <[^>]*> nop
-+00008734 <[^>]*> nop
-+00008738 <[^>]*> nop
-+0000873c <[^>]*> nop
-+00008740 <[^>]*> nop
-+00008744 <[^>]*> nop
-+00008748 <[^>]*> nop
-+0000874c <[^>]*> nop
-+00008750 <[^>]*> nop
-+00008754 <[^>]*> nop
-+00008758 <[^>]*> nop
-+0000875c <[^>]*> nop
-+00008760 <[^>]*> nop
-+00008764 <[^>]*> nop
-+00008768 <[^>]*> nop
-+0000876c <[^>]*> nop
-+00008770 <[^>]*> nop
-+00008774 <[^>]*> nop
-+00008778 <[^>]*> nop
-+0000877c <[^>]*> nop
-+00008780 <[^>]*> nop
-+00008784 <[^>]*> nop
-+00008788 <[^>]*> nop
-+0000878c <[^>]*> nop
-+00008790 <[^>]*> nop
-+00008794 <[^>]*> nop
-+00008798 <[^>]*> nop
-+0000879c <[^>]*> nop
-+000087a0 <[^>]*> nop
-+000087a4 <[^>]*> nop
-+000087a8 <[^>]*> nop
-+000087ac <[^>]*> nop
-+000087b0 <[^>]*> nop
-+000087b4 <[^>]*> nop
-+000087b8 <[^>]*> nop
-+000087bc <[^>]*> nop
-+000087c0 <[^>]*> nop
-+000087c4 <[^>]*> nop
-+000087c8 <[^>]*> nop
-+000087cc <[^>]*> nop
-+000087d0 <[^>]*> nop
-+000087d4 <[^>]*> nop
-+000087d8 <[^>]*> nop
-+000087dc <[^>]*> nop
-+000087e0 <[^>]*> nop
-+000087e4 <[^>]*> nop
-+000087e8 <[^>]*> nop
-+000087ec <[^>]*> nop
-+000087f0 <[^>]*> nop
-+000087f4 <[^>]*> nop
-+000087f8 <[^>]*> nop
-+000087fc <[^>]*> nop
-+00008800 <[^>]*> nop
-+00008804 <[^>]*> nop
-+00008808 <[^>]*> nop
-+0000880c <[^>]*> nop
-+00008810 <[^>]*> nop
-+00008814 <[^>]*> nop
-+00008818 <[^>]*> nop
-+0000881c <[^>]*> nop
-+00008820 <[^>]*> nop
-+00008824 <[^>]*> nop
-+00008828 <[^>]*> nop
-+0000882c <[^>]*> nop
-+00008830 <[^>]*> nop
-+00008834 <[^>]*> nop
-+00008838 <[^>]*> nop
-+0000883c <[^>]*> nop
-+00008840 <[^>]*> nop
-+00008844 <[^>]*> nop
-+00008848 <[^>]*> nop
-+0000884c <[^>]*> nop
-+00008850 <[^>]*> nop
-+00008854 <[^>]*> nop
-+00008858 <[^>]*> nop
-+0000885c <[^>]*> nop
-+00008860 <[^>]*> nop
-+00008864 <[^>]*> nop
-+00008868 <[^>]*> nop
-+0000886c <[^>]*> nop
-+00008870 <[^>]*> nop
-+00008874 <[^>]*> nop
-+00008878 <[^>]*> nop
-+0000887c <[^>]*> nop
-+00008880 <[^>]*> nop
-+00008884 <[^>]*> nop
-+00008888 <[^>]*> nop
-+0000888c <[^>]*> nop
-+00008890 <[^>]*> nop
-+00008894 <[^>]*> nop
-+00008898 <[^>]*> nop
-+0000889c <[^>]*> nop
-+000088a0 <[^>]*> nop
-+000088a4 <[^>]*> nop
-+000088a8 <[^>]*> nop
-+000088ac <[^>]*> nop
-+000088b0 <[^>]*> nop
-+000088b4 <[^>]*> nop
-+000088b8 <[^>]*> nop
-+000088bc <[^>]*> nop
-+000088c0 <[^>]*> nop
-+000088c4 <[^>]*> nop
-+000088c8 <[^>]*> nop
-+000088cc <[^>]*> nop
-+000088d0 <[^>]*> nop
-+000088d4 <[^>]*> nop
-+000088d8 <[^>]*> nop
-+000088dc <[^>]*> nop
-+000088e0 <[^>]*> nop
-+000088e4 <[^>]*> nop
-+000088e8 <[^>]*> nop
-+000088ec <[^>]*> nop
-+000088f0 <[^>]*> nop
-+000088f4 <[^>]*> nop
-+000088f8 <[^>]*> nop
-+000088fc <[^>]*> nop
-+00008900 <[^>]*> nop
-+00008904 <[^>]*> nop
-+00008908 <[^>]*> nop
-+0000890c <[^>]*> nop
-+00008910 <[^>]*> nop
-+00008914 <[^>]*> nop
-+00008918 <[^>]*> nop
-+0000891c <[^>]*> nop
-+00008920 <[^>]*> nop
-+00008924 <[^>]*> nop
-+00008928 <[^>]*> nop
-+0000892c <[^>]*> nop
-+00008930 <[^>]*> nop
-+00008934 <[^>]*> nop
-+00008938 <[^>]*> nop
-+0000893c <[^>]*> nop
-+00008940 <[^>]*> nop
-+00008944 <[^>]*> nop
-+00008948 <[^>]*> nop
-+0000894c <[^>]*> nop
-+00008950 <[^>]*> nop
-+00008954 <[^>]*> nop
-+00008958 <[^>]*> nop
-+0000895c <[^>]*> nop
-+00008960 <[^>]*> nop
-+00008964 <[^>]*> nop
-+00008968 <[^>]*> nop
-+0000896c <[^>]*> nop
-+00008970 <[^>]*> nop
-+00008974 <[^>]*> nop
-+00008978 <[^>]*> nop
-+0000897c <[^>]*> nop
-+00008980 <[^>]*> nop
-+00008984 <[^>]*> nop
-+00008988 <[^>]*> nop
-+0000898c <[^>]*> nop
-+00008990 <[^>]*> nop
-+00008994 <[^>]*> nop
-+00008998 <[^>]*> nop
-+0000899c <[^>]*> nop
-+000089a0 <[^>]*> nop
-+000089a4 <[^>]*> nop
-+000089a8 <[^>]*> nop
-+000089ac <[^>]*> nop
-+000089b0 <[^>]*> nop
-+000089b4 <[^>]*> nop
-+000089b8 <[^>]*> nop
-+000089bc <[^>]*> nop
-+000089c0 <[^>]*> nop
-+000089c4 <[^>]*> nop
-+000089c8 <[^>]*> nop
-+000089cc <[^>]*> nop
-+000089d0 <[^>]*> nop
-+000089d4 <[^>]*> nop
-+000089d8 <[^>]*> nop
-+000089dc <[^>]*> nop
-+000089e0 <[^>]*> nop
-+000089e4 <[^>]*> nop
-+000089e8 <[^>]*> nop
-+000089ec <[^>]*> nop
-+000089f0 <[^>]*> nop
-+000089f4 <[^>]*> nop
-+000089f8 <[^>]*> nop
-+000089fc <[^>]*> nop
-+00008a00 <[^>]*> nop
-+00008a04 <[^>]*> nop
-+00008a08 <[^>]*> nop
-+00008a0c <[^>]*> nop
-+00008a10 <[^>]*> nop
-+00008a14 <[^>]*> nop
-+00008a18 <[^>]*> nop
-+00008a1c <[^>]*> nop
-+00008a20 <[^>]*> nop
-+00008a24 <[^>]*> nop
-+00008a28 <[^>]*> nop
-+00008a2c <[^>]*> nop
-+00008a30 <[^>]*> nop
-+00008a34 <[^>]*> nop
-+00008a38 <[^>]*> nop
-+00008a3c <[^>]*> nop
-+00008a40 <[^>]*> nop
-+00008a44 <[^>]*> nop
-+00008a48 <[^>]*> nop
-+00008a4c <[^>]*> nop
-+00008a50 <[^>]*> nop
-+00008a54 <[^>]*> nop
-+00008a58 <[^>]*> nop
-+00008a5c <[^>]*> nop
-+00008a60 <[^>]*> nop
-+00008a64 <[^>]*> nop
-+00008a68 <[^>]*> nop
-+00008a6c <[^>]*> nop
-+00008a70 <[^>]*> nop
-+00008a74 <[^>]*> nop
-+00008a78 <[^>]*> nop
-+00008a7c <[^>]*> nop
-+00008a80 <[^>]*> nop
-+00008a84 <[^>]*> nop
-+00008a88 <[^>]*> nop
-+00008a8c <[^>]*> nop
-+00008a90 <[^>]*> nop
-+00008a94 <[^>]*> nop
-+00008a98 <[^>]*> nop
-+00008a9c <[^>]*> nop
-+00008aa0 <[^>]*> nop
-+00008aa4 <[^>]*> nop
-+00008aa8 <[^>]*> nop
-+00008aac <[^>]*> nop
-+00008ab0 <[^>]*> nop
-+00008ab4 <[^>]*> nop
-+00008ab8 <[^>]*> nop
-+00008abc <[^>]*> nop
-+00008ac0 <[^>]*> nop
-+00008ac4 <[^>]*> nop
-+00008ac8 <[^>]*> nop
-+00008acc <[^>]*> nop
-+00008ad0 <[^>]*> nop
-+00008ad4 <[^>]*> nop
-+00008ad8 <[^>]*> nop
-+00008adc <[^>]*> nop
-+00008ae0 <[^>]*> nop
-+00008ae4 <[^>]*> nop
-+00008ae8 <[^>]*> nop
-+00008aec <[^>]*> nop
-+00008af0 <[^>]*> nop
-+00008af4 <[^>]*> nop
-+00008af8 <[^>]*> nop
-+00008afc <[^>]*> nop
-+00008b00 <[^>]*> nop
-+00008b04 <[^>]*> nop
-+00008b08 <[^>]*> nop
-+00008b0c <[^>]*> nop
-+00008b10 <[^>]*> nop
-+00008b14 <[^>]*> nop
-+00008b18 <[^>]*> nop
-+00008b1c <[^>]*> nop
-+00008b20 <[^>]*> nop
-+00008b24 <[^>]*> nop
-+00008b28 <[^>]*> nop
-+00008b2c <[^>]*> nop
-+00008b30 <[^>]*> nop
-+00008b34 <[^>]*> nop
-+00008b38 <[^>]*> nop
-+00008b3c <[^>]*> nop
-+00008b40 <[^>]*> nop
-+00008b44 <[^>]*> nop
-+00008b48 <[^>]*> nop
-+00008b4c <[^>]*> nop
-+00008b50 <[^>]*> nop
-+00008b54 <[^>]*> nop
-+00008b58 <[^>]*> nop
-+00008b5c <[^>]*> nop
-+00008b60 <[^>]*> nop
-+00008b64 <[^>]*> nop
-+00008b68 <[^>]*> nop
-+00008b6c <[^>]*> nop
-+00008b70 <[^>]*> nop
-+00008b74 <[^>]*> nop
-+00008b78 <[^>]*> nop
-+00008b7c <[^>]*> nop
-+00008b80 <[^>]*> nop
-+00008b84 <[^>]*> nop
-+00008b88 <[^>]*> nop
-+00008b8c <[^>]*> nop
-+00008b90 <[^>]*> nop
-+00008b94 <[^>]*> nop
-+00008b98 <[^>]*> nop
-+00008b9c <[^>]*> nop
-+00008ba0 <[^>]*> nop
-+00008ba4 <[^>]*> nop
-+00008ba8 <[^>]*> nop
-+00008bac <[^>]*> nop
-+00008bb0 <[^>]*> nop
-+00008bb4 <[^>]*> nop
-+00008bb8 <[^>]*> nop
-+00008bbc <[^>]*> nop
-+00008bc0 <[^>]*> nop
-+00008bc4 <[^>]*> nop
-+00008bc8 <[^>]*> nop
-+00008bcc <[^>]*> nop
-+00008bd0 <[^>]*> nop
-+00008bd4 <[^>]*> nop
-+00008bd8 <[^>]*> nop
-+00008bdc <[^>]*> nop
-+00008be0 <[^>]*> nop
-+00008be4 <[^>]*> nop
-+00008be8 <[^>]*> nop
-+00008bec <[^>]*> nop
-+00008bf0 <[^>]*> nop
-+00008bf4 <[^>]*> nop
-+00008bf8 <[^>]*> nop
-+00008bfc <[^>]*> nop
-+00008c00 <[^>]*> nop
-+00008c04 <[^>]*> nop
-+00008c08 <[^>]*> nop
-+00008c0c <[^>]*> nop
-+00008c10 <[^>]*> nop
-+00008c14 <[^>]*> nop
-+00008c18 <[^>]*> nop
-+00008c1c <[^>]*> nop
-+00008c20 <[^>]*> nop
-+00008c24 <[^>]*> nop
-+00008c28 <[^>]*> nop
-+00008c2c <[^>]*> nop
-+00008c30 <[^>]*> nop
-+00008c34 <[^>]*> nop
-+00008c38 <[^>]*> nop
-+00008c3c <[^>]*> nop
-+00008c40 <[^>]*> nop
-+00008c44 <[^>]*> nop
-+00008c48 <[^>]*> nop
-+00008c4c <[^>]*> nop
-+00008c50 <[^>]*> nop
-+00008c54 <[^>]*> nop
-+00008c58 <[^>]*> nop
-+00008c5c <[^>]*> nop
-+00008c60 <[^>]*> nop
-+00008c64 <[^>]*> nop
-+00008c68 <[^>]*> nop
-+00008c6c <[^>]*> nop
-+00008c70 <[^>]*> nop
-+00008c74 <[^>]*> nop
-+00008c78 <[^>]*> nop
-+00008c7c <[^>]*> nop
-+00008c80 <[^>]*> nop
-+00008c84 <[^>]*> nop
-+00008c88 <[^>]*> nop
-+00008c8c <[^>]*> nop
-+00008c90 <[^>]*> nop
-+00008c94 <[^>]*> nop
-+00008c98 <[^>]*> nop
-+00008c9c <[^>]*> nop
-+00008ca0 <[^>]*> nop
-+00008ca4 <[^>]*> nop
-+00008ca8 <[^>]*> nop
-+00008cac <[^>]*> nop
-+00008cb0 <[^>]*> nop
-+00008cb4 <[^>]*> nop
-+00008cb8 <[^>]*> nop
-+00008cbc <[^>]*> nop
-+00008cc0 <[^>]*> nop
-+00008cc4 <[^>]*> nop
-+00008cc8 <[^>]*> nop
-+00008ccc <[^>]*> nop
-+00008cd0 <[^>]*> nop
-+00008cd4 <[^>]*> nop
-+00008cd8 <[^>]*> nop
-+00008cdc <[^>]*> nop
-+00008ce0 <[^>]*> nop
-+00008ce4 <[^>]*> nop
-+00008ce8 <[^>]*> nop
-+00008cec <[^>]*> nop
-+00008cf0 <[^>]*> nop
-+00008cf4 <[^>]*> nop
-+00008cf8 <[^>]*> nop
-+00008cfc <[^>]*> nop
-+00008d00 <[^>]*> nop
-+00008d04 <[^>]*> nop
-+00008d08 <[^>]*> nop
-+00008d0c <[^>]*> nop
-+00008d10 <[^>]*> nop
-+00008d14 <[^>]*> nop
-+00008d18 <[^>]*> nop
-+00008d1c <[^>]*> nop
-+00008d20 <[^>]*> nop
-+00008d24 <[^>]*> nop
-+00008d28 <[^>]*> nop
-+00008d2c <[^>]*> nop
-+00008d30 <[^>]*> nop
-+00008d34 <[^>]*> nop
-+00008d38 <[^>]*> nop
-+00008d3c <[^>]*> nop
-+00008d40 <[^>]*> nop
-+00008d44 <[^>]*> nop
-+00008d48 <[^>]*> nop
-+00008d4c <[^>]*> nop
-+00008d50 <[^>]*> nop
-+00008d54 <[^>]*> nop
-+00008d58 <[^>]*> nop
-+00008d5c <[^>]*> nop
-+00008d60 <[^>]*> nop
-+00008d64 <[^>]*> nop
-+00008d68 <[^>]*> nop
-+00008d6c <[^>]*> nop
-+00008d70 <[^>]*> nop
-+00008d74 <[^>]*> nop
-+00008d78 <[^>]*> nop
-+00008d7c <[^>]*> nop
-+00008d80 <[^>]*> nop
-+00008d84 <[^>]*> nop
-+00008d88 <[^>]*> nop
-+00008d8c <[^>]*> nop
-+00008d90 <[^>]*> nop
-+00008d94 <[^>]*> nop
-+00008d98 <[^>]*> nop
-+00008d9c <[^>]*> nop
-+00008da0 <[^>]*> nop
-+00008da4 <[^>]*> nop
-+00008da8 <[^>]*> nop
-+00008dac <[^>]*> nop
-+00008db0 <[^>]*> nop
-+00008db4 <[^>]*> nop
-+00008db8 <[^>]*> nop
-+00008dbc <[^>]*> nop
-+00008dc0 <[^>]*> nop
-+00008dc4 <[^>]*> nop
-+00008dc8 <[^>]*> nop
-+00008dcc <[^>]*> nop
-+00008dd0 <[^>]*> nop
-+00008dd4 <[^>]*> nop
-+00008dd8 <[^>]*> nop
-+00008ddc <[^>]*> nop
-+00008de0 <[^>]*> nop
-+00008de4 <[^>]*> nop
-+00008de8 <[^>]*> nop
-+00008dec <[^>]*> nop
-+00008df0 <[^>]*> nop
-+00008df4 <[^>]*> nop
-+00008df8 <[^>]*> nop
-+00008dfc <[^>]*> nop
-+00008e00 <[^>]*> nop
-+00008e04 <[^>]*> nop
-+00008e08 <[^>]*> nop
-+00008e0c <[^>]*> nop
-+00008e10 <[^>]*> nop
-+00008e14 <[^>]*> nop
-+00008e18 <[^>]*> nop
-+00008e1c <[^>]*> nop
-+00008e20 <[^>]*> nop
-+00008e24 <[^>]*> nop
-+00008e28 <[^>]*> nop
-+00008e2c <[^>]*> nop
-+00008e30 <[^>]*> nop
-+00008e34 <[^>]*> nop
-+00008e38 <[^>]*> nop
-+00008e3c <[^>]*> nop
-+00008e40 <[^>]*> nop
-+00008e44 <[^>]*> nop
-+00008e48 <[^>]*> nop
-+00008e4c <[^>]*> nop
-+00008e50 <[^>]*> nop
-+00008e54 <[^>]*> nop
-+00008e58 <[^>]*> nop
-+00008e5c <[^>]*> nop
-+00008e60 <[^>]*> nop
-+00008e64 <[^>]*> nop
-+00008e68 <[^>]*> nop
-+00008e6c <[^>]*> nop
-+00008e70 <[^>]*> nop
-+00008e74 <[^>]*> nop
-+00008e78 <[^>]*> nop
-+00008e7c <[^>]*> nop
-+00008e80 <[^>]*> nop
-+00008e84 <[^>]*> nop
-+00008e88 <[^>]*> nop
-+00008e8c <[^>]*> nop
-+00008e90 <[^>]*> nop
-+00008e94 <[^>]*> nop
-+00008e98 <[^>]*> nop
-+00008e9c <[^>]*> nop
-+00008ea0 <[^>]*> nop
-+00008ea4 <[^>]*> nop
-+00008ea8 <[^>]*> nop
-+00008eac <[^>]*> nop
-+00008eb0 <[^>]*> nop
-+00008eb4 <[^>]*> nop
-+00008eb8 <[^>]*> nop
-+00008ebc <[^>]*> nop
-+00008ec0 <[^>]*> nop
-+00008ec4 <[^>]*> nop
-+00008ec8 <[^>]*> nop
-+00008ecc <[^>]*> nop
-+00008ed0 <[^>]*> nop
-+00008ed4 <[^>]*> nop
-+00008ed8 <[^>]*> nop
-+00008edc <[^>]*> nop
-+00008ee0 <[^>]*> nop
-+00008ee4 <[^>]*> nop
-+00008ee8 <[^>]*> nop
-+00008eec <[^>]*> nop
-+00008ef0 <[^>]*> nop
-+00008ef4 <[^>]*> nop
-+00008ef8 <[^>]*> nop
-+00008efc <[^>]*> nop
-+00008f00 <[^>]*> nop
-+00008f04 <[^>]*> nop
-+00008f08 <[^>]*> nop
-+00008f0c <[^>]*> nop
-+00008f10 <[^>]*> nop
-+00008f14 <[^>]*> nop
-+00008f18 <[^>]*> nop
-+00008f1c <[^>]*> nop
-+00008f20 <[^>]*> nop
-+00008f24 <[^>]*> nop
-+00008f28 <[^>]*> nop
-+00008f2c <[^>]*> nop
-+00008f30 <[^>]*> nop
-+00008f34 <[^>]*> nop
-+00008f38 <[^>]*> nop
-+00008f3c <[^>]*> nop
-+00008f40 <[^>]*> nop
-+00008f44 <[^>]*> nop
-+00008f48 <[^>]*> nop
-+00008f4c <[^>]*> nop
-+00008f50 <[^>]*> nop
-+00008f54 <[^>]*> nop
-+00008f58 <[^>]*> nop
-+00008f5c <[^>]*> nop
-+00008f60 <[^>]*> nop
-+00008f64 <[^>]*> nop
-+00008f68 <[^>]*> nop
-+00008f6c <[^>]*> nop
-+00008f70 <[^>]*> nop
-+00008f74 <[^>]*> nop
-+00008f78 <[^>]*> nop
-+00008f7c <[^>]*> nop
-+00008f80 <[^>]*> nop
-+00008f84 <[^>]*> nop
-+00008f88 <[^>]*> nop
-+00008f8c <[^>]*> nop
-+00008f90 <[^>]*> nop
-+00008f94 <[^>]*> nop
-+00008f98 <[^>]*> nop
-+00008f9c <[^>]*> nop
-+00008fa0 <[^>]*> nop
-+00008fa4 <[^>]*> nop
-+00008fa8 <[^>]*> nop
-+00008fac <[^>]*> nop
-+00008fb0 <[^>]*> nop
-+00008fb4 <[^>]*> nop
-+00008fb8 <[^>]*> nop
-+00008fbc <[^>]*> nop
-+00008fc0 <[^>]*> nop
-+00008fc4 <[^>]*> nop
-+00008fc8 <[^>]*> nop
-+00008fcc <[^>]*> nop
-+00008fd0 <[^>]*> nop
-+00008fd4 <[^>]*> nop
-+00008fd8 <[^>]*> nop
-+00008fdc <[^>]*> nop
-+00008fe0 <[^>]*> nop
-+00008fe4 <[^>]*> nop
-+00008fe8 <[^>]*> nop
-+00008fec <[^>]*> nop
-+00008ff0 <[^>]*> nop
-+00008ff4 <[^>]*> nop
-+00008ff8 <[^>]*> nop
-+00008ffc <[^>]*> nop
-+00009000 <[^>]*> nop
-+00009004 <[^>]*> nop
-+00009008 <[^>]*> nop
-+0000900c <[^>]*> nop
-+00009010 <[^>]*> nop
-+00009014 <[^>]*> nop
-+00009018 <[^>]*> nop
-+0000901c <[^>]*> nop
-+00009020 <[^>]*> nop
-+00009024 <[^>]*> nop
-+00009028 <[^>]*> nop
-+0000902c <[^>]*> nop
-+00009030 <[^>]*> nop
-+00009034 <[^>]*> nop
-+00009038 <[^>]*> nop
-+0000903c <[^>]*> nop
-+00009040 <[^>]*> nop
-+00009044 <[^>]*> nop
-+00009048 <[^>]*> nop
-+0000904c <[^>]*> nop
-+00009050 <[^>]*> nop
-+00009054 <[^>]*> nop
-+00009058 <[^>]*> nop
-+0000905c <[^>]*> nop
-+00009060 <[^>]*> nop
-+00009064 <[^>]*> nop
-+00009068 <[^>]*> nop
-+0000906c <[^>]*> nop
-+00009070 <[^>]*> nop
-+00009074 <[^>]*> nop
-+00009078 <[^>]*> nop
-+0000907c <[^>]*> nop
-+00009080 <[^>]*> nop
-+00009084 <[^>]*> nop
-+00009088 <[^>]*> nop
-+0000908c <[^>]*> nop
-+00009090 <[^>]*> nop
-+00009094 <[^>]*> nop
-+00009098 <[^>]*> nop
-+0000909c <[^>]*> nop
-+000090a0 <[^>]*> nop
-+000090a4 <[^>]*> nop
-+000090a8 <[^>]*> nop
-+000090ac <[^>]*> nop
-+000090b0 <[^>]*> nop
-+000090b4 <[^>]*> nop
-+000090b8 <[^>]*> nop
-+000090bc <[^>]*> nop
-+000090c0 <[^>]*> nop
-+000090c4 <[^>]*> nop
-+000090c8 <[^>]*> nop
-+000090cc <[^>]*> nop
-+000090d0 <[^>]*> nop
-+000090d4 <[^>]*> nop
-+000090d8 <[^>]*> nop
-+000090dc <[^>]*> nop
-+000090e0 <[^>]*> nop
-+000090e4 <[^>]*> nop
-+000090e8 <[^>]*> nop
-+000090ec <[^>]*> nop
-+000090f0 <[^>]*> nop
-+000090f4 <[^>]*> nop
-+000090f8 <[^>]*> nop
-+000090fc <[^>]*> nop
-+00009100 <[^>]*> nop
-+00009104 <[^>]*> nop
-+00009108 <[^>]*> nop
-+0000910c <[^>]*> nop
-+00009110 <[^>]*> nop
-+00009114 <[^>]*> nop
-+00009118 <[^>]*> nop
-+0000911c <[^>]*> nop
-+00009120 <[^>]*> nop
-+00009124 <[^>]*> nop
-+00009128 <[^>]*> nop
-+0000912c <[^>]*> nop
-+00009130 <[^>]*> nop
-+00009134 <[^>]*> nop
-+00009138 <[^>]*> nop
-+0000913c <[^>]*> nop
-+00009140 <[^>]*> nop
-+00009144 <[^>]*> nop
-+00009148 <[^>]*> nop
-+0000914c <[^>]*> nop
-+00009150 <[^>]*> nop
-+00009154 <[^>]*> nop
-+00009158 <[^>]*> nop
-+0000915c <[^>]*> nop
-+00009160 <[^>]*> nop
-+00009164 <[^>]*> nop
-+00009168 <[^>]*> nop
-+0000916c <[^>]*> nop
-+00009170 <[^>]*> nop
-+00009174 <[^>]*> nop
-+00009178 <[^>]*> nop
-+0000917c <[^>]*> nop
-+00009180 <[^>]*> nop
-+00009184 <[^>]*> nop
-+00009188 <[^>]*> nop
-+0000918c <[^>]*> nop
-+00009190 <[^>]*> nop
-+00009194 <[^>]*> nop
-+00009198 <[^>]*> nop
-+0000919c <[^>]*> nop
-+000091a0 <[^>]*> nop
-+000091a4 <[^>]*> nop
-+000091a8 <[^>]*> nop
-+000091ac <[^>]*> nop
-+000091b0 <[^>]*> nop
-+000091b4 <[^>]*> nop
-+000091b8 <[^>]*> nop
-+000091bc <[^>]*> nop
-+000091c0 <[^>]*> nop
-+000091c4 <[^>]*> nop
-+000091c8 <[^>]*> nop
-+000091cc <[^>]*> nop
-+000091d0 <[^>]*> nop
-+000091d4 <[^>]*> nop
-+000091d8 <[^>]*> nop
-+000091dc <[^>]*> nop
-+000091e0 <[^>]*> nop
-+000091e4 <[^>]*> nop
-+000091e8 <[^>]*> nop
-+000091ec <[^>]*> nop
-+000091f0 <[^>]*> nop
-+000091f4 <[^>]*> nop
-+000091f8 <[^>]*> nop
-+000091fc <[^>]*> nop
-+00009200 <[^>]*> nop
-+00009204 <[^>]*> nop
-+00009208 <[^>]*> nop
-+0000920c <[^>]*> nop
-+00009210 <[^>]*> nop
-+00009214 <[^>]*> nop
-+00009218 <[^>]*> nop
-+0000921c <[^>]*> nop
-+00009220 <[^>]*> nop
-+00009224 <[^>]*> nop
-+00009228 <[^>]*> nop
-+0000922c <[^>]*> nop
-+00009230 <[^>]*> nop
-+00009234 <[^>]*> nop
-+00009238 <[^>]*> nop
-+0000923c <[^>]*> nop
-+00009240 <[^>]*> nop
-+00009244 <[^>]*> nop
-+00009248 <[^>]*> nop
-+0000924c <[^>]*> nop
-+00009250 <[^>]*> nop
-+00009254 <[^>]*> nop
-+00009258 <[^>]*> nop
-+0000925c <[^>]*> nop
-+00009260 <[^>]*> nop
-+00009264 <[^>]*> nop
-+00009268 <[^>]*> nop
-+0000926c <[^>]*> nop
-+00009270 <[^>]*> nop
-+00009274 <[^>]*> nop
-+00009278 <[^>]*> nop
-+0000927c <[^>]*> nop
-+00009280 <[^>]*> nop
-+00009284 <[^>]*> nop
-+00009288 <[^>]*> nop
-+0000928c <[^>]*> nop
-+00009290 <[^>]*> nop
-+00009294 <[^>]*> nop
-+00009298 <[^>]*> nop
-+0000929c <[^>]*> nop
-+000092a0 <[^>]*> nop
-+000092a4 <[^>]*> nop
-+000092a8 <[^>]*> nop
-+000092ac <[^>]*> nop
-+000092b0 <[^>]*> nop
-+000092b4 <[^>]*> nop
-+000092b8 <[^>]*> nop
-+000092bc <[^>]*> nop
-+000092c0 <[^>]*> nop
-+000092c4 <[^>]*> nop
-+000092c8 <[^>]*> nop
-+000092cc <[^>]*> nop
-+000092d0 <[^>]*> nop
-+000092d4 <[^>]*> nop
-+000092d8 <[^>]*> nop
-+000092dc <[^>]*> nop
-+000092e0 <[^>]*> nop
-+000092e4 <[^>]*> nop
-+000092e8 <[^>]*> nop
-+000092ec <[^>]*> nop
-+000092f0 <[^>]*> nop
-+000092f4 <[^>]*> nop
-+000092f8 <[^>]*> nop
-+000092fc <[^>]*> nop
-+00009300 <[^>]*> nop
-+00009304 <[^>]*> nop
-+00009308 <[^>]*> nop
-+0000930c <[^>]*> nop
-+00009310 <[^>]*> nop
-+00009314 <[^>]*> nop
-+00009318 <[^>]*> nop
-+0000931c <[^>]*> nop
-+00009320 <[^>]*> nop
-+00009324 <[^>]*> nop
-+00009328 <[^>]*> nop
-+0000932c <[^>]*> nop
-+00009330 <[^>]*> nop
-+00009334 <[^>]*> nop
-+00009338 <[^>]*> nop
-+0000933c <[^>]*> nop
-+00009340 <[^>]*> nop
-+00009344 <[^>]*> nop
-+00009348 <[^>]*> nop
-+0000934c <[^>]*> nop
-+00009350 <[^>]*> nop
-+00009354 <[^>]*> nop
-+00009358 <[^>]*> nop
-+0000935c <[^>]*> nop
-+00009360 <[^>]*> nop
-+00009364 <[^>]*> nop
-+00009368 <[^>]*> nop
-+0000936c <[^>]*> nop
-+00009370 <[^>]*> nop
-+00009374 <[^>]*> nop
-+00009378 <[^>]*> nop
-+0000937c <[^>]*> nop
-+00009380 <[^>]*> nop
-+00009384 <[^>]*> nop
-+00009388 <[^>]*> nop
-+0000938c <[^>]*> nop
-+00009390 <[^>]*> nop
-+00009394 <[^>]*> nop
-+00009398 <[^>]*> nop
-+0000939c <[^>]*> nop
-+000093a0 <[^>]*> nop
-+000093a4 <[^>]*> nop
-+000093a8 <[^>]*> nop
-+000093ac <[^>]*> nop
-+000093b0 <[^>]*> nop
-+000093b4 <[^>]*> nop
-+000093b8 <[^>]*> nop
-+000093bc <[^>]*> nop
-+000093c0 <[^>]*> nop
-+000093c4 <[^>]*> nop
-+000093c8 <[^>]*> nop
-+000093cc <[^>]*> nop
-+000093d0 <[^>]*> nop
-+000093d4 <[^>]*> nop
-+000093d8 <[^>]*> nop
-+000093dc <[^>]*> nop
-+000093e0 <[^>]*> nop
-+000093e4 <[^>]*> nop
-+000093e8 <[^>]*> nop
-+000093ec <[^>]*> nop
-+000093f0 <[^>]*> nop
-+000093f4 <[^>]*> nop
-+000093f8 <[^>]*> nop
-+000093fc <[^>]*> nop
-+00009400 <[^>]*> nop
-+00009404 <[^>]*> nop
-+00009408 <[^>]*> nop
-+0000940c <[^>]*> nop
-+00009410 <[^>]*> nop
-+00009414 <[^>]*> nop
-+00009418 <[^>]*> nop
-+0000941c <[^>]*> nop
-+00009420 <[^>]*> nop
-+00009424 <[^>]*> nop
-+00009428 <[^>]*> nop
-+0000942c <[^>]*> nop
-+00009430 <[^>]*> nop
-+00009434 <[^>]*> nop
-+00009438 <[^>]*> nop
-+0000943c <[^>]*> nop
-+00009440 <[^>]*> nop
-+00009444 <[^>]*> nop
-+00009448 <[^>]*> nop
-+0000944c <[^>]*> nop
-+00009450 <[^>]*> nop
-+00009454 <[^>]*> nop
-+00009458 <[^>]*> nop
-+0000945c <[^>]*> nop
-+00009460 <[^>]*> nop
-+00009464 <[^>]*> nop
-+00009468 <[^>]*> nop
-+0000946c <[^>]*> nop
-+00009470 <[^>]*> nop
-+00009474 <[^>]*> nop
-+00009478 <[^>]*> nop
-+0000947c <[^>]*> nop
-+00009480 <[^>]*> nop
-+00009484 <[^>]*> nop
-+00009488 <[^>]*> nop
-+0000948c <[^>]*> nop
-+00009490 <[^>]*> nop
-+00009494 <[^>]*> nop
-+00009498 <[^>]*> nop
-+0000949c <[^>]*> nop
-+000094a0 <[^>]*> nop
-+000094a4 <[^>]*> nop
-+000094a8 <[^>]*> nop
-+000094ac <[^>]*> nop
-+000094b0 <[^>]*> nop
-+000094b4 <[^>]*> nop
-+000094b8 <[^>]*> nop
-+000094bc <[^>]*> nop
-+000094c0 <[^>]*> nop
-+000094c4 <[^>]*> nop
-+000094c8 <[^>]*> nop
-+000094cc <[^>]*> nop
-+000094d0 <[^>]*> nop
-+000094d4 <[^>]*> nop
-+000094d8 <[^>]*> nop
-+000094dc <[^>]*> nop
-+000094e0 <[^>]*> nop
-+000094e4 <[^>]*> nop
-+000094e8 <[^>]*> nop
-+000094ec <[^>]*> nop
-+000094f0 <[^>]*> nop
-+000094f4 <[^>]*> nop
-+000094f8 <[^>]*> nop
-+000094fc <[^>]*> nop
-+00009500 <[^>]*> nop
-+00009504 <[^>]*> nop
-+00009508 <[^>]*> nop
-+0000950c <[^>]*> nop
-+00009510 <[^>]*> nop
-+00009514 <[^>]*> nop
-+00009518 <[^>]*> nop
-+0000951c <[^>]*> nop
-+00009520 <[^>]*> nop
-+00009524 <[^>]*> nop
-+00009528 <[^>]*> nop
-+0000952c <[^>]*> nop
-+00009530 <[^>]*> nop
-+00009534 <[^>]*> nop
-+00009538 <[^>]*> nop
-+0000953c <[^>]*> nop
-+00009540 <[^>]*> nop
-+00009544 <[^>]*> nop
-+00009548 <[^>]*> nop
-+0000954c <[^>]*> nop
-+00009550 <[^>]*> nop
-+00009554 <[^>]*> nop
-+00009558 <[^>]*> nop
-+0000955c <[^>]*> nop
-+00009560 <[^>]*> nop
-+00009564 <[^>]*> nop
-+00009568 <[^>]*> nop
-+0000956c <[^>]*> nop
-+00009570 <[^>]*> nop
-+00009574 <[^>]*> nop
-+00009578 <[^>]*> nop
-+0000957c <[^>]*> nop
-+00009580 <[^>]*> nop
-+00009584 <[^>]*> nop
-+00009588 <[^>]*> nop
-+0000958c <[^>]*> nop
-+00009590 <[^>]*> nop
-+00009594 <[^>]*> nop
-+00009598 <[^>]*> nop
-+0000959c <[^>]*> nop
-+000095a0 <[^>]*> nop
-+000095a4 <[^>]*> nop
-+000095a8 <[^>]*> nop
-+000095ac <[^>]*> nop
-+000095b0 <[^>]*> nop
-+000095b4 <[^>]*> nop
-+000095b8 <[^>]*> nop
-+000095bc <[^>]*> nop
-+000095c0 <[^>]*> nop
-+000095c4 <[^>]*> nop
-+000095c8 <[^>]*> nop
-+000095cc <[^>]*> nop
-+000095d0 <[^>]*> nop
-+000095d4 <[^>]*> nop
-+000095d8 <[^>]*> nop
-+000095dc <[^>]*> nop
-+000095e0 <[^>]*> nop
-+000095e4 <[^>]*> nop
-+000095e8 <[^>]*> nop
-+000095ec <[^>]*> nop
-+000095f0 <[^>]*> nop
-+000095f4 <[^>]*> nop
-+000095f8 <[^>]*> nop
-+000095fc <[^>]*> nop
-+00009600 <[^>]*> nop
-+00009604 <[^>]*> nop
-+00009608 <[^>]*> nop
-+0000960c <[^>]*> nop
-+00009610 <[^>]*> nop
-+00009614 <[^>]*> nop
-+00009618 <[^>]*> nop
-+0000961c <[^>]*> nop
-+00009620 <[^>]*> nop
-+00009624 <[^>]*> nop
-+00009628 <[^>]*> nop
-+0000962c <[^>]*> nop
-+00009630 <[^>]*> nop
-+00009634 <[^>]*> nop
-+00009638 <[^>]*> nop
-+0000963c <[^>]*> nop
-+00009640 <[^>]*> nop
-+00009644 <[^>]*> nop
-+00009648 <[^>]*> nop
-+0000964c <[^>]*> nop
-+00009650 <[^>]*> nop
-+00009654 <[^>]*> nop
-+00009658 <[^>]*> nop
-+0000965c <[^>]*> nop
-+00009660 <[^>]*> nop
-+00009664 <[^>]*> nop
-+00009668 <[^>]*> nop
-+0000966c <[^>]*> nop
-+00009670 <[^>]*> nop
-+00009674 <[^>]*> nop
-+00009678 <[^>]*> nop
-+0000967c <[^>]*> nop
-+00009680 <[^>]*> nop
-+00009684 <[^>]*> nop
-+00009688 <[^>]*> nop
-+0000968c <[^>]*> nop
-+00009690 <[^>]*> nop
-+00009694 <[^>]*> nop
-+00009698 <[^>]*> nop
-+0000969c <[^>]*> nop
-+000096a0 <[^>]*> nop
-+000096a4 <[^>]*> nop
-+000096a8 <[^>]*> nop
-+000096ac <[^>]*> nop
-+000096b0 <[^>]*> nop
-+000096b4 <[^>]*> nop
-+000096b8 <[^>]*> nop
-+000096bc <[^>]*> nop
-+000096c0 <[^>]*> nop
-+000096c4 <[^>]*> nop
-+000096c8 <[^>]*> nop
-+000096cc <[^>]*> nop
-+000096d0 <[^>]*> nop
-+000096d4 <[^>]*> nop
-+000096d8 <[^>]*> nop
-+000096dc <[^>]*> nop
-+000096e0 <[^>]*> nop
-+000096e4 <[^>]*> nop
-+000096e8 <[^>]*> nop
-+000096ec <[^>]*> nop
-+000096f0 <[^>]*> nop
-+000096f4 <[^>]*> nop
-+000096f8 <[^>]*> nop
-+000096fc <[^>]*> nop
-+00009700 <[^>]*> nop
-+00009704 <[^>]*> nop
-+00009708 <[^>]*> nop
-+0000970c <[^>]*> nop
-+00009710 <[^>]*> nop
-+00009714 <[^>]*> nop
-+00009718 <[^>]*> nop
-+0000971c <[^>]*> nop
-+00009720 <[^>]*> nop
-+00009724 <[^>]*> nop
-+00009728 <[^>]*> nop
-+0000972c <[^>]*> nop
-+00009730 <[^>]*> nop
-+00009734 <[^>]*> nop
-+00009738 <[^>]*> nop
-+0000973c <[^>]*> nop
-+00009740 <[^>]*> nop
-+00009744 <[^>]*> nop
-+00009748 <[^>]*> nop
-+0000974c <[^>]*> nop
-+00009750 <[^>]*> nop
-+00009754 <[^>]*> nop
-+00009758 <[^>]*> nop
-+0000975c <[^>]*> nop
-+00009760 <[^>]*> nop
-+00009764 <[^>]*> nop
-+00009768 <[^>]*> nop
-+0000976c <[^>]*> nop
-+00009770 <[^>]*> nop
-+00009774 <[^>]*> nop
-+00009778 <[^>]*> nop
-+0000977c <[^>]*> nop
-+00009780 <[^>]*> nop
-+00009784 <[^>]*> nop
-+00009788 <[^>]*> nop
-+0000978c <[^>]*> nop
-+00009790 <[^>]*> nop
-+00009794 <[^>]*> nop
-+00009798 <[^>]*> nop
-+0000979c <[^>]*> nop
-+000097a0 <[^>]*> nop
-+000097a4 <[^>]*> nop
-+000097a8 <[^>]*> nop
-+000097ac <[^>]*> nop
-+000097b0 <[^>]*> nop
-+000097b4 <[^>]*> nop
-+000097b8 <[^>]*> nop
-+000097bc <[^>]*> nop
-+000097c0 <[^>]*> nop
-+000097c4 <[^>]*> nop
-+000097c8 <[^>]*> nop
-+000097cc <[^>]*> nop
-+000097d0 <[^>]*> nop
-+000097d4 <[^>]*> nop
-+000097d8 <[^>]*> nop
-+000097dc <[^>]*> nop
-+000097e0 <[^>]*> nop
-+000097e4 <[^>]*> nop
-+000097e8 <[^>]*> nop
-+000097ec <[^>]*> nop
-+000097f0 <[^>]*> nop
-+000097f4 <[^>]*> nop
-+000097f8 <[^>]*> nop
-+000097fc <[^>]*> nop
-+00009800 <[^>]*> nop
-+00009804 <[^>]*> nop
-+00009808 <[^>]*> nop
-+0000980c <[^>]*> nop
-+00009810 <[^>]*> nop
-+00009814 <[^>]*> nop
-+00009818 <[^>]*> nop
-+0000981c <[^>]*> nop
-+00009820 <[^>]*> nop
-+00009824 <[^>]*> nop
-+00009828 <[^>]*> nop
-+0000982c <[^>]*> nop
-+00009830 <[^>]*> nop
-+00009834 <[^>]*> nop
-+00009838 <[^>]*> nop
-+0000983c <[^>]*> nop
-+00009840 <[^>]*> nop
-+00009844 <[^>]*> nop
-+00009848 <[^>]*> nop
-+0000984c <[^>]*> nop
-+00009850 <[^>]*> nop
-+00009854 <[^>]*> nop
-+00009858 <[^>]*> nop
-+0000985c <[^>]*> nop
-+00009860 <[^>]*> nop
-+00009864 <[^>]*> nop
-+00009868 <[^>]*> nop
-+0000986c <[^>]*> nop
-+00009870 <[^>]*> nop
-+00009874 <[^>]*> nop
-+00009878 <[^>]*> nop
-+0000987c <[^>]*> nop
-+00009880 <[^>]*> nop
-+00009884 <[^>]*> nop
-+00009888 <[^>]*> nop
-+0000988c <[^>]*> nop
-+00009890 <[^>]*> nop
-+00009894 <[^>]*> nop
-+00009898 <[^>]*> nop
-+0000989c <[^>]*> nop
-+000098a0 <[^>]*> nop
-+000098a4 <[^>]*> nop
-+000098a8 <[^>]*> nop
-+000098ac <[^>]*> nop
-+000098b0 <[^>]*> nop
-+000098b4 <[^>]*> nop
-+000098b8 <[^>]*> nop
-+000098bc <[^>]*> nop
-+000098c0 <[^>]*> nop
-+000098c4 <[^>]*> nop
-+000098c8 <[^>]*> nop
-+000098cc <[^>]*> nop
-+000098d0 <[^>]*> nop
-+000098d4 <[^>]*> nop
-+000098d8 <[^>]*> nop
-+000098dc <[^>]*> nop
-+000098e0 <[^>]*> nop
-+000098e4 <[^>]*> nop
-+000098e8 <[^>]*> nop
-+000098ec <[^>]*> nop
-+000098f0 <[^>]*> nop
-+000098f4 <[^>]*> nop
-+000098f8 <[^>]*> nop
-+000098fc <[^>]*> nop
-+00009900 <[^>]*> nop
-+00009904 <[^>]*> nop
-+00009908 <[^>]*> nop
-+0000990c <[^>]*> nop
-+00009910 <[^>]*> nop
-+00009914 <[^>]*> nop
-+00009918 <[^>]*> nop
-+0000991c <[^>]*> nop
-+00009920 <[^>]*> nop
-+00009924 <[^>]*> nop
-+00009928 <[^>]*> nop
-+0000992c <[^>]*> nop
-+00009930 <[^>]*> nop
-+00009934 <[^>]*> nop
-+00009938 <[^>]*> nop
-+0000993c <[^>]*> nop
-+00009940 <[^>]*> nop
-+00009944 <[^>]*> nop
-+00009948 <[^>]*> nop
-+0000994c <[^>]*> nop
-+00009950 <[^>]*> nop
-+00009954 <[^>]*> nop
-+00009958 <[^>]*> nop
-+0000995c <[^>]*> nop
-+00009960 <[^>]*> nop
-+00009964 <[^>]*> nop
-+00009968 <[^>]*> nop
-+0000996c <[^>]*> nop
-+00009970 <[^>]*> nop
-+00009974 <[^>]*> nop
-+00009978 <[^>]*> nop
-+0000997c <[^>]*> nop
-+00009980 <[^>]*> nop
-+00009984 <[^>]*> nop
-+00009988 <[^>]*> nop
-+0000998c <[^>]*> nop
-+00009990 <[^>]*> nop
-+00009994 <[^>]*> nop
-+00009998 <[^>]*> nop
-+0000999c <[^>]*> nop
-+000099a0 <[^>]*> nop
-+000099a4 <[^>]*> nop
-+000099a8 <[^>]*> nop
-+000099ac <[^>]*> nop
-+000099b0 <[^>]*> nop
-+000099b4 <[^>]*> nop
-+000099b8 <[^>]*> nop
-+000099bc <[^>]*> nop
-+000099c0 <[^>]*> nop
-+000099c4 <[^>]*> nop
-+000099c8 <[^>]*> nop
-+000099cc <[^>]*> nop
-+000099d0 <[^>]*> nop
-+000099d4 <[^>]*> nop
-+000099d8 <[^>]*> nop
-+000099dc <[^>]*> nop
-+000099e0 <[^>]*> nop
-+000099e4 <[^>]*> nop
-+000099e8 <[^>]*> nop
-+000099ec <[^>]*> nop
-+000099f0 <[^>]*> nop
-+000099f4 <[^>]*> nop
-+000099f8 <[^>]*> nop
-+000099fc <[^>]*> nop
-+00009a00 <[^>]*> nop
-+00009a04 <[^>]*> nop
-+00009a08 <[^>]*> nop
-+00009a0c <[^>]*> nop
-+00009a10 <[^>]*> nop
-+00009a14 <[^>]*> nop
-+00009a18 <[^>]*> nop
-+00009a1c <[^>]*> nop
-+00009a20 <[^>]*> nop
-+00009a24 <[^>]*> nop
-+00009a28 <[^>]*> nop
-+00009a2c <[^>]*> nop
-+00009a30 <[^>]*> nop
-+00009a34 <[^>]*> nop
-+00009a38 <[^>]*> nop
-+00009a3c <[^>]*> nop
-+00009a40 <[^>]*> nop
-+00009a44 <[^>]*> nop
-+00009a48 <[^>]*> nop
-+00009a4c <[^>]*> nop
-+00009a50 <[^>]*> nop
-+00009a54 <[^>]*> nop
-+00009a58 <[^>]*> nop
-+00009a5c <[^>]*> nop
-+00009a60 <[^>]*> nop
-+00009a64 <[^>]*> nop
-+00009a68 <[^>]*> nop
-+00009a6c <[^>]*> nop
-+00009a70 <[^>]*> nop
-+00009a74 <[^>]*> nop
-+00009a78 <[^>]*> nop
-+00009a7c <[^>]*> nop
-+00009a80 <[^>]*> nop
-+00009a84 <[^>]*> nop
-+00009a88 <[^>]*> nop
-+00009a8c <[^>]*> nop
-+00009a90 <[^>]*> nop
-+00009a94 <[^>]*> nop
-+00009a98 <[^>]*> nop
-+00009a9c <[^>]*> nop
-+00009aa0 <[^>]*> nop
-+00009aa4 <[^>]*> nop
-+00009aa8 <[^>]*> nop
-+00009aac <[^>]*> nop
-+00009ab0 <[^>]*> nop
-+00009ab4 <[^>]*> nop
-+00009ab8 <[^>]*> nop
-+00009abc <[^>]*> nop
-+00009ac0 <[^>]*> nop
-+00009ac4 <[^>]*> nop
-+00009ac8 <[^>]*> nop
-+00009acc <[^>]*> nop
-+00009ad0 <[^>]*> nop
-+00009ad4 <[^>]*> nop
-+00009ad8 <[^>]*> nop
-+00009adc <[^>]*> nop
-+00009ae0 <[^>]*> nop
-+00009ae4 <[^>]*> nop
-+00009ae8 <[^>]*> nop
-+00009aec <[^>]*> nop
-+00009af0 <[^>]*> nop
-+00009af4 <[^>]*> nop
-+00009af8 <[^>]*> nop
-+00009afc <[^>]*> nop
-+00009b00 <[^>]*> nop
-+00009b04 <[^>]*> nop
-+00009b08 <[^>]*> nop
-+00009b0c <[^>]*> nop
-+00009b10 <[^>]*> nop
-+00009b14 <[^>]*> nop
-+00009b18 <[^>]*> nop
-+00009b1c <[^>]*> nop
-+00009b20 <[^>]*> nop
-+00009b24 <[^>]*> nop
-+00009b28 <[^>]*> nop
-+00009b2c <[^>]*> nop
-+00009b30 <[^>]*> nop
-+00009b34 <[^>]*> nop
-+00009b38 <[^>]*> nop
-+00009b3c <[^>]*> nop
-+00009b40 <[^>]*> nop
-+00009b44 <[^>]*> nop
-+00009b48 <[^>]*> nop
-+00009b4c <[^>]*> nop
-+00009b50 <[^>]*> nop
-+00009b54 <[^>]*> nop
-+00009b58 <[^>]*> nop
-+00009b5c <[^>]*> nop
-+00009b60 <[^>]*> nop
-+00009b64 <[^>]*> nop
-+00009b68 <[^>]*> nop
-+00009b6c <[^>]*> nop
-+00009b70 <[^>]*> nop
-+00009b74 <[^>]*> nop
-+00009b78 <[^>]*> nop
-+00009b7c <[^>]*> nop
-+00009b80 <[^>]*> nop
-+00009b84 <[^>]*> nop
-+00009b88 <[^>]*> nop
-+00009b8c <[^>]*> nop
-+00009b90 <[^>]*> nop
-+00009b94 <[^>]*> nop
-+00009b98 <[^>]*> nop
-+00009b9c <[^>]*> nop
-+00009ba0 <[^>]*> nop
-+00009ba4 <[^>]*> nop
-+00009ba8 <[^>]*> nop
-+00009bac <[^>]*> nop
-+00009bb0 <[^>]*> nop
-+00009bb4 <[^>]*> nop
-+00009bb8 <[^>]*> nop
-+00009bbc <[^>]*> nop
-+00009bc0 <[^>]*> nop
-+00009bc4 <[^>]*> nop
-+00009bc8 <[^>]*> nop
-+00009bcc <[^>]*> nop
-+00009bd0 <[^>]*> nop
-+00009bd4 <[^>]*> nop
-+00009bd8 <[^>]*> nop
-+00009bdc <[^>]*> nop
-+00009be0 <[^>]*> nop
-+00009be4 <[^>]*> nop
-+00009be8 <[^>]*> nop
-+00009bec <[^>]*> nop
-+00009bf0 <[^>]*> nop
-+00009bf4 <[^>]*> nop
-+00009bf8 <[^>]*> nop
-+00009bfc <[^>]*> nop
-+00009c00 <[^>]*> nop
-+00009c04 <[^>]*> nop
-+00009c08 <[^>]*> nop
-+00009c0c <[^>]*> nop
-+00009c10 <[^>]*> nop
-+00009c14 <[^>]*> nop
-+00009c18 <[^>]*> nop
-+00009c1c <[^>]*> nop
-+00009c20 <[^>]*> nop
-+00009c24 <[^>]*> nop
-+00009c28 <[^>]*> nop
-+00009c2c <[^>]*> nop
-+00009c30 <[^>]*> nop
-+00009c34 <[^>]*> nop
-+00009c38 <[^>]*> nop
-+00009c3c <[^>]*> nop
-+00009c40 <[^>]*> nop
-+00009c44 <[^>]*> nop
-+00009c48 <[^>]*> nop
-+00009c4c <[^>]*> nop
-+00009c50 <[^>]*> nop
-+00009c54 <[^>]*> nop
-+00009c58 <[^>]*> nop
-+00009c5c <[^>]*> nop
-+00009c60 <[^>]*> nop
-+00009c64 <[^>]*> nop
-+00009c68 <[^>]*> nop
-+00009c6c <[^>]*> nop
-+00009c70 <[^>]*> nop
-+00009c74 <[^>]*> nop
-+00009c78 <[^>]*> nop
-+00009c7c <[^>]*> nop
-+00009c80 <[^>]*> nop
-+00009c84 <[^>]*> nop
-+00009c88 <[^>]*> nop
-+00009c8c <[^>]*> nop
-+00009c90 <[^>]*> nop
-+00009c94 <[^>]*> nop
-+00009c98 <[^>]*> nop
-+00009c9c <[^>]*> nop
-+00009ca0 <[^>]*> nop
-+00009ca4 <[^>]*> nop
-+00009ca8 <[^>]*> nop
-+00009cac <[^>]*> nop
-+00009cb0 <[^>]*> nop
-+00009cb4 <[^>]*> nop
-+00009cb8 <[^>]*> nop
-+00009cbc <[^>]*> nop
-+00009cc0 <[^>]*> nop
-+00009cc4 <[^>]*> nop
-+00009cc8 <[^>]*> nop
-+00009ccc <[^>]*> nop
-+00009cd0 <[^>]*> nop
-+00009cd4 <[^>]*> nop
-+00009cd8 <[^>]*> nop
-+00009cdc <[^>]*> nop
-+00009ce0 <[^>]*> nop
-+00009ce4 <[^>]*> nop
-+00009ce8 <[^>]*> nop
-+00009cec <[^>]*> nop
-+00009cf0 <[^>]*> nop
-+00009cf4 <[^>]*> nop
-+00009cf8 <[^>]*> nop
-+00009cfc <[^>]*> nop
-+00009d00 <[^>]*> nop
-+00009d04 <[^>]*> nop
-+00009d08 <[^>]*> nop
-+00009d0c <[^>]*> nop
-+00009d10 <[^>]*> nop
-+00009d14 <[^>]*> nop
-+00009d18 <[^>]*> nop
-+00009d1c <[^>]*> nop
-+00009d20 <[^>]*> nop
-+00009d24 <[^>]*> nop
-+00009d28 <[^>]*> nop
-+00009d2c <[^>]*> nop
-+00009d30 <[^>]*> nop
-+00009d34 <[^>]*> nop
-+00009d38 <[^>]*> nop
-+00009d3c <[^>]*> nop
-+00009d40 <[^>]*> nop
-+00009d44 <[^>]*> nop
-+00009d48 <[^>]*> nop
-+00009d4c <[^>]*> nop
-+00009d50 <[^>]*> nop
-+00009d54 <[^>]*> nop
-+00009d58 <[^>]*> nop
-+00009d5c <[^>]*> nop
-+00009d60 <[^>]*> nop
-+00009d64 <[^>]*> nop
-+00009d68 <[^>]*> nop
-+00009d6c <[^>]*> nop
-+00009d70 <[^>]*> nop
-+00009d74 <[^>]*> nop
-+00009d78 <[^>]*> nop
-+00009d7c <[^>]*> nop
-+00009d80 <[^>]*> nop
-+00009d84 <[^>]*> nop
-+00009d88 <[^>]*> nop
-+00009d8c <[^>]*> nop
-+00009d90 <[^>]*> nop
-+00009d94 <[^>]*> nop
-+00009d98 <[^>]*> nop
-+00009d9c <[^>]*> nop
-+00009da0 <[^>]*> nop
-+00009da4 <[^>]*> nop
-+00009da8 <[^>]*> nop
-+00009dac <[^>]*> nop
-+00009db0 <[^>]*> nop
-+00009db4 <[^>]*> nop
-+00009db8 <[^>]*> nop
-+00009dbc <[^>]*> nop
-+00009dc0 <[^>]*> nop
-+00009dc4 <[^>]*> nop
-+00009dc8 <[^>]*> nop
-+00009dcc <[^>]*> nop
-+00009dd0 <[^>]*> nop
-+00009dd4 <[^>]*> nop
-+00009dd8 <[^>]*> nop
-+00009ddc <[^>]*> nop
-+00009de0 <[^>]*> nop
-+00009de4 <[^>]*> nop
-+00009de8 <[^>]*> nop
-+00009dec <[^>]*> nop
-+00009df0 <[^>]*> nop
-+00009df4 <[^>]*> nop
-+00009df8 <[^>]*> nop
-+00009dfc <[^>]*> nop
-+00009e00 <[^>]*> nop
-+00009e04 <[^>]*> nop
-+00009e08 <[^>]*> nop
-+00009e0c <[^>]*> nop
-+00009e10 <[^>]*> nop
-+00009e14 <[^>]*> nop
-+00009e18 <[^>]*> nop
-+00009e1c <[^>]*> nop
-+00009e20 <[^>]*> nop
-+00009e24 <[^>]*> nop
-+00009e28 <[^>]*> nop
-+00009e2c <[^>]*> nop
-+00009e30 <[^>]*> nop
-+00009e34 <[^>]*> nop
-+00009e38 <[^>]*> nop
-+00009e3c <[^>]*> nop
-+00009e40 <[^>]*> nop
-+00009e44 <[^>]*> nop
-+00009e48 <[^>]*> nop
-+00009e4c <[^>]*> nop
-+00009e50 <[^>]*> nop
-+00009e54 <[^>]*> nop
-+00009e58 <[^>]*> nop
-+00009e5c <[^>]*> nop
-+00009e60 <[^>]*> nop
-+00009e64 <[^>]*> nop
-+00009e68 <[^>]*> nop
-+00009e6c <[^>]*> nop
-+00009e70 <[^>]*> nop
-+00009e74 <[^>]*> nop
-+00009e78 <[^>]*> nop
-+00009e7c <[^>]*> nop
-+00009e80 <[^>]*> nop
-+00009e84 <[^>]*> nop
-+00009e88 <[^>]*> nop
-+00009e8c <[^>]*> nop
-+00009e90 <[^>]*> nop
-+00009e94 <[^>]*> nop
-+00009e98 <[^>]*> nop
-+00009e9c <[^>]*> nop
-+00009ea0 <[^>]*> nop
-+00009ea4 <[^>]*> nop
-+00009ea8 <[^>]*> nop
-+00009eac <[^>]*> nop
-+00009eb0 <[^>]*> nop
-+00009eb4 <[^>]*> nop
-+00009eb8 <[^>]*> nop
-+00009ebc <[^>]*> nop
-+00009ec0 <[^>]*> nop
-+00009ec4 <[^>]*> nop
-+00009ec8 <[^>]*> nop
-+00009ecc <[^>]*> nop
-+00009ed0 <[^>]*> nop
-+00009ed4 <[^>]*> nop
-+00009ed8 <[^>]*> nop
-+00009edc <[^>]*> nop
-+00009ee0 <[^>]*> nop
-+00009ee4 <[^>]*> nop
-+00009ee8 <[^>]*> nop
-+00009eec <[^>]*> nop
-+00009ef0 <[^>]*> nop
-+00009ef4 <[^>]*> nop
-+00009ef8 <[^>]*> nop
-+00009efc <[^>]*> nop
-+00009f00 <[^>]*> nop
-+00009f04 <[^>]*> nop
-+00009f08 <[^>]*> nop
-+00009f0c <[^>]*> nop
-+00009f10 <[^>]*> nop
-+00009f14 <[^>]*> nop
-+00009f18 <[^>]*> nop
-+00009f1c <[^>]*> nop
-+00009f20 <[^>]*> nop
-+00009f24 <[^>]*> nop
-+00009f28 <[^>]*> nop
-+00009f2c <[^>]*> nop
-+00009f30 <[^>]*> nop
-+00009f34 <[^>]*> nop
-+00009f38 <[^>]*> nop
-+00009f3c <[^>]*> nop
-+00009f40 <[^>]*> nop
-+00009f44 <[^>]*> nop
-+00009f48 <[^>]*> nop
-+00009f4c <[^>]*> nop
-+00009f50 <[^>]*> nop
-+00009f54 <[^>]*> nop
-+00009f58 <[^>]*> nop
-+00009f5c <[^>]*> nop
-+00009f60 <[^>]*> nop
-+00009f64 <[^>]*> nop
-+00009f68 <[^>]*> nop
-+00009f6c <[^>]*> nop
-+00009f70 <[^>]*> nop
-+00009f74 <[^>]*> nop
-+00009f78 <[^>]*> nop
-+00009f7c <[^>]*> nop
-+00009f80 <[^>]*> nop
-+00009f84 <[^>]*> nop
-+00009f88 <[^>]*> nop
-+00009f8c <[^>]*> nop
-+00009f90 <[^>]*> nop
-+00009f94 <[^>]*> nop
-+00009f98 <[^>]*> nop
-+00009f9c <[^>]*> nop
-+00009fa0 <[^>]*> nop
-+00009fa4 <[^>]*> nop
-+00009fa8 <[^>]*> nop
-+00009fac <[^>]*> nop
-+00009fb0 <[^>]*> nop
-+00009fb4 <[^>]*> nop
-+00009fb8 <[^>]*> nop
-+00009fbc <[^>]*> nop
-+00009fc0 <[^>]*> nop
-+00009fc4 <[^>]*> nop
-+00009fc8 <[^>]*> nop
-+00009fcc <[^>]*> nop
-+00009fd0 <[^>]*> nop
-+00009fd4 <[^>]*> nop
-+00009fd8 <[^>]*> nop
-+00009fdc <[^>]*> nop
-+00009fe0 <[^>]*> nop
-+00009fe4 <[^>]*> nop
-+00009fe8 <[^>]*> nop
-+00009fec <[^>]*> nop
-+00009ff0 <[^>]*> nop
-+00009ff4 <[^>]*> nop
-+00009ff8 <[^>]*> nop
-+00009ffc <[^>]*> nop
-+0000a000 <[^>]*> nop
-+0000a004 <[^>]*> nop
-+0000a008 <[^>]*> nop
-+0000a00c <[^>]*> nop
-+0000a010 <[^>]*> nop
-+0000a014 <[^>]*> nop
-+0000a018 <[^>]*> nop
-+0000a01c <[^>]*> nop
-+0000a020 <[^>]*> nop
-+0000a024 <[^>]*> nop
-+0000a028 <[^>]*> nop
-+0000a02c <[^>]*> nop
-+0000a030 <[^>]*> nop
-+0000a034 <[^>]*> nop
-+0000a038 <[^>]*> nop
-+0000a03c <[^>]*> nop
-+0000a040 <[^>]*> nop
-+0000a044 <[^>]*> nop
-+0000a048 <[^>]*> nop
-+0000a04c <[^>]*> nop
-+0000a050 <[^>]*> nop
-+0000a054 <[^>]*> nop
-+0000a058 <[^>]*> nop
-+0000a05c <[^>]*> nop
-+0000a060 <[^>]*> nop
-+0000a064 <[^>]*> nop
-+0000a068 <[^>]*> nop
-+0000a06c <[^>]*> nop
-+0000a070 <[^>]*> nop
-+0000a074 <[^>]*> nop
-+0000a078 <[^>]*> nop
-+0000a07c <[^>]*> nop
-+0000a080 <[^>]*> nop
-+0000a084 <[^>]*> nop
-+0000a088 <[^>]*> nop
-+0000a08c <[^>]*> nop
-+0000a090 <[^>]*> nop
-+0000a094 <[^>]*> nop
-+0000a098 <[^>]*> nop
-+0000a09c <[^>]*> nop
-+0000a0a0 <[^>]*> nop
-+0000a0a4 <[^>]*> nop
-+0000a0a8 <[^>]*> nop
-+0000a0ac <[^>]*> nop
-+0000a0b0 <[^>]*> nop
-+0000a0b4 <[^>]*> nop
-+0000a0b8 <[^>]*> nop
-+0000a0bc <[^>]*> nop
-+0000a0c0 <[^>]*> nop
-+0000a0c4 <[^>]*> nop
-+0000a0c8 <[^>]*> nop
-+0000a0cc <[^>]*> nop
-+0000a0d0 <[^>]*> nop
-+0000a0d4 <[^>]*> nop
-+0000a0d8 <[^>]*> nop
-+0000a0dc <[^>]*> nop
-+0000a0e0 <[^>]*> nop
-+0000a0e4 <[^>]*> nop
-+0000a0e8 <[^>]*> nop
-+0000a0ec <[^>]*> nop
-+0000a0f0 <[^>]*> nop
-+0000a0f4 <[^>]*> nop
-+0000a0f8 <[^>]*> nop
-+0000a0fc <[^>]*> nop
-+0000a100 <[^>]*> nop
-+0000a104 <[^>]*> nop
-+0000a108 <[^>]*> nop
-+0000a10c <[^>]*> nop
-+0000a110 <[^>]*> nop
-+0000a114 <[^>]*> nop
-+0000a118 <[^>]*> nop
-+0000a11c <[^>]*> nop
-+0000a120 <[^>]*> nop
-+0000a124 <[^>]*> nop
-+0000a128 <[^>]*> nop
-+0000a12c <[^>]*> nop
-+0000a130 <[^>]*> nop
-+0000a134 <[^>]*> nop
-+0000a138 <[^>]*> nop
-+0000a13c <[^>]*> nop
-+0000a140 <[^>]*> nop
-+0000a144 <[^>]*> nop
-+0000a148 <[^>]*> nop
-+0000a14c <[^>]*> nop
-+0000a150 <[^>]*> nop
-+0000a154 <[^>]*> nop
-+0000a158 <[^>]*> nop
-+0000a15c <[^>]*> nop
-+0000a160 <[^>]*> nop
-+0000a164 <[^>]*> nop
-+0000a168 <[^>]*> nop
-+0000a16c <[^>]*> nop
-+0000a170 <[^>]*> nop
-+0000a174 <[^>]*> nop
-+0000a178 <[^>]*> nop
-+0000a17c <[^>]*> nop
-+0000a180 <[^>]*> nop
-+0000a184 <[^>]*> nop
-+0000a188 <[^>]*> nop
-+0000a18c <[^>]*> nop
-+0000a190 <[^>]*> nop
-+0000a194 <[^>]*> nop
-+0000a198 <[^>]*> nop
-+0000a19c <[^>]*> nop
-+0000a1a0 <[^>]*> nop
-+0000a1a4 <[^>]*> nop
-+0000a1a8 <[^>]*> nop
-+0000a1ac <[^>]*> nop
-+0000a1b0 <[^>]*> nop
-+0000a1b4 <[^>]*> nop
-+0000a1b8 <[^>]*> nop
-+0000a1bc <[^>]*> nop
-+0000a1c0 <[^>]*> nop
-+0000a1c4 <[^>]*> nop
-+0000a1c8 <[^>]*> nop
-+0000a1cc <[^>]*> nop
-+0000a1d0 <[^>]*> nop
-+0000a1d4 <[^>]*> nop
-+0000a1d8 <[^>]*> nop
-+0000a1dc <[^>]*> nop
-+0000a1e0 <[^>]*> nop
-+0000a1e4 <[^>]*> nop
-+0000a1e8 <[^>]*> nop
-+0000a1ec <[^>]*> nop
-+0000a1f0 <[^>]*> nop
-+0000a1f4 <[^>]*> nop
-+0000a1f8 <[^>]*> nop
-+0000a1fc <[^>]*> nop
-+0000a200 <[^>]*> nop
-+0000a204 <[^>]*> nop
-+0000a208 <[^>]*> nop
-+0000a20c <[^>]*> nop
-+0000a210 <[^>]*> nop
-+0000a214 <[^>]*> nop
-+0000a218 <[^>]*> nop
-+0000a21c <[^>]*> nop
-+0000a220 <[^>]*> nop
-+0000a224 <[^>]*> nop
-+0000a228 <[^>]*> nop
-+0000a22c <[^>]*> nop
-+0000a230 <[^>]*> nop
-+0000a234 <[^>]*> nop
-+0000a238 <[^>]*> nop
-+0000a23c <[^>]*> nop
-+0000a240 <[^>]*> nop
-+0000a244 <[^>]*> nop
-+0000a248 <[^>]*> nop
-+0000a24c <[^>]*> nop
-+0000a250 <[^>]*> nop
-+0000a254 <[^>]*> nop
-+0000a258 <[^>]*> nop
-+0000a25c <[^>]*> nop
-+0000a260 <[^>]*> nop
-+0000a264 <[^>]*> nop
-+0000a268 <[^>]*> nop
-+0000a26c <[^>]*> nop
-+0000a270 <[^>]*> nop
-+0000a274 <[^>]*> nop
-+0000a278 <[^>]*> nop
-+0000a27c <[^>]*> nop
-+0000a280 <[^>]*> nop
-+0000a284 <[^>]*> nop
-+0000a288 <[^>]*> nop
-+0000a28c <[^>]*> nop
-+0000a290 <[^>]*> nop
-+0000a294 <[^>]*> nop
-+0000a298 <[^>]*> nop
-+0000a29c <[^>]*> nop
-+0000a2a0 <[^>]*> nop
-+0000a2a4 <[^>]*> nop
-+0000a2a8 <[^>]*> nop
-+0000a2ac <[^>]*> nop
-+0000a2b0 <[^>]*> nop
-+0000a2b4 <[^>]*> nop
-+0000a2b8 <[^>]*> nop
-+0000a2bc <[^>]*> nop
-+0000a2c0 <[^>]*> nop
-+0000a2c4 <[^>]*> nop
-+0000a2c8 <[^>]*> nop
-+0000a2cc <[^>]*> nop
-+0000a2d0 <[^>]*> nop
-+0000a2d4 <[^>]*> nop
-+0000a2d8 <[^>]*> nop
-+0000a2dc <[^>]*> nop
-+0000a2e0 <[^>]*> nop
-+0000a2e4 <[^>]*> nop
-+0000a2e8 <[^>]*> nop
-+0000a2ec <[^>]*> nop
-+0000a2f0 <[^>]*> nop
-+0000a2f4 <[^>]*> nop
-+0000a2f8 <[^>]*> nop
-+0000a2fc <[^>]*> nop
-+0000a300 <[^>]*> nop
-+0000a304 <[^>]*> nop
-+0000a308 <[^>]*> nop
-+0000a30c <[^>]*> nop
-+0000a310 <[^>]*> nop
-+0000a314 <[^>]*> nop
-+0000a318 <[^>]*> nop
-+0000a31c <[^>]*> nop
-+0000a320 <[^>]*> nop
-+0000a324 <[^>]*> nop
-+0000a328 <[^>]*> nop
-+0000a32c <[^>]*> nop
-+0000a330 <[^>]*> nop
-+0000a334 <[^>]*> nop
-+0000a338 <[^>]*> nop
-+0000a33c <[^>]*> nop
-+0000a340 <[^>]*> nop
-+0000a344 <[^>]*> nop
-+0000a348 <[^>]*> nop
-+0000a34c <[^>]*> nop
-+0000a350 <[^>]*> nop
-+0000a354 <[^>]*> nop
-+0000a358 <[^>]*> nop
-+0000a35c <[^>]*> nop
-+0000a360 <[^>]*> nop
-+0000a364 <[^>]*> nop
-+0000a368 <[^>]*> nop
-+0000a36c <[^>]*> nop
-+0000a370 <[^>]*> nop
-+0000a374 <[^>]*> nop
-+0000a378 <[^>]*> nop
-+0000a37c <[^>]*> nop
-+0000a380 <[^>]*> nop
-+0000a384 <[^>]*> nop
-+0000a388 <[^>]*> nop
-+0000a38c <[^>]*> nop
-+0000a390 <[^>]*> nop
-+0000a394 <[^>]*> nop
-+0000a398 <[^>]*> nop
-+0000a39c <[^>]*> nop
-+0000a3a0 <[^>]*> nop
-+0000a3a4 <[^>]*> nop
-+0000a3a8 <[^>]*> nop
-+0000a3ac <[^>]*> nop
-+0000a3b0 <[^>]*> nop
-+0000a3b4 <[^>]*> nop
-+0000a3b8 <[^>]*> nop
-+0000a3bc <[^>]*> nop
-+0000a3c0 <[^>]*> nop
-+0000a3c4 <[^>]*> nop
-+0000a3c8 <[^>]*> nop
-+0000a3cc <[^>]*> nop
-+0000a3d0 <[^>]*> nop
-+0000a3d4 <[^>]*> nop
-+0000a3d8 <[^>]*> nop
-+0000a3dc <[^>]*> nop
-+0000a3e0 <[^>]*> nop
-+0000a3e4 <[^>]*> nop
-+0000a3e8 <[^>]*> nop
-+0000a3ec <[^>]*> nop
-+0000a3f0 <[^>]*> nop
-+0000a3f4 <[^>]*> nop
-+0000a3f8 <[^>]*> nop
-+0000a3fc <[^>]*> nop
-+0000a400 <[^>]*> nop
-+0000a404 <[^>]*> nop
-+0000a408 <[^>]*> nop
-+0000a40c <[^>]*> nop
-+0000a410 <[^>]*> nop
-+0000a414 <[^>]*> nop
-+0000a418 <[^>]*> nop
-+0000a41c <[^>]*> nop
-+0000a420 <[^>]*> nop
-+0000a424 <[^>]*> nop
-+0000a428 <[^>]*> nop
-+0000a42c <[^>]*> nop
-+0000a430 <[^>]*> nop
-+0000a434 <[^>]*> nop
-+0000a438 <[^>]*> nop
-+0000a43c <[^>]*> nop
-+0000a440 <[^>]*> nop
-+0000a444 <[^>]*> nop
-+0000a448 <[^>]*> nop
-+0000a44c <[^>]*> nop
-+0000a450 <[^>]*> nop
-+0000a454 <[^>]*> nop
-+0000a458 <[^>]*> nop
-+0000a45c <[^>]*> nop
-+0000a460 <[^>]*> nop
-+0000a464 <[^>]*> nop
-+0000a468 <[^>]*> nop
-+0000a46c <[^>]*> nop
-+0000a470 <[^>]*> nop
-+0000a474 <[^>]*> nop
-+0000a478 <[^>]*> nop
-+0000a47c <[^>]*> nop
-+0000a480 <[^>]*> nop
-+0000a484 <[^>]*> nop
-+0000a488 <[^>]*> nop
-+0000a48c <[^>]*> nop
-+0000a490 <[^>]*> nop
-+0000a494 <[^>]*> nop
-+0000a498 <[^>]*> nop
-+0000a49c <[^>]*> nop
-+0000a4a0 <[^>]*> nop
-+0000a4a4 <[^>]*> nop
-+0000a4a8 <[^>]*> nop
-+0000a4ac <[^>]*> nop
-+0000a4b0 <[^>]*> nop
-+0000a4b4 <[^>]*> nop
-+0000a4b8 <[^>]*> nop
-+0000a4bc <[^>]*> nop
-+0000a4c0 <[^>]*> nop
-+0000a4c4 <[^>]*> nop
-+0000a4c8 <[^>]*> nop
-+0000a4cc <[^>]*> nop
-+0000a4d0 <[^>]*> nop
-+0000a4d4 <[^>]*> nop
-+0000a4d8 <[^>]*> nop
-+0000a4dc <[^>]*> nop
-+0000a4e0 <[^>]*> nop
-+0000a4e4 <[^>]*> nop
-+0000a4e8 <[^>]*> nop
-+0000a4ec <[^>]*> nop
-+0000a4f0 <[^>]*> nop
-+0000a4f4 <[^>]*> nop
-+0000a4f8 <[^>]*> nop
-+0000a4fc <[^>]*> nop
-+0000a500 <[^>]*> nop
-+0000a504 <[^>]*> nop
-+0000a508 <[^>]*> nop
-+0000a50c <[^>]*> nop
-+0000a510 <[^>]*> nop
-+0000a514 <[^>]*> nop
-+0000a518 <[^>]*> nop
-+0000a51c <[^>]*> nop
-+0000a520 <[^>]*> nop
-+0000a524 <[^>]*> nop
-+0000a528 <[^>]*> nop
-+0000a52c <[^>]*> nop
-+0000a530 <[^>]*> nop
-+0000a534 <[^>]*> nop
-+0000a538 <[^>]*> nop
-+0000a53c <[^>]*> nop
-+0000a540 <[^>]*> nop
-+0000a544 <[^>]*> nop
-+0000a548 <[^>]*> nop
-+0000a54c <[^>]*> nop
-+0000a550 <[^>]*> nop
-+0000a554 <[^>]*> nop
-+0000a558 <[^>]*> nop
-+0000a55c <[^>]*> nop
-+0000a560 <[^>]*> nop
-+0000a564 <[^>]*> nop
-+0000a568 <[^>]*> nop
-+0000a56c <[^>]*> nop
-+0000a570 <[^>]*> nop
-+0000a574 <[^>]*> nop
-+0000a578 <[^>]*> nop
-+0000a57c <[^>]*> nop
-+0000a580 <[^>]*> nop
-+0000a584 <[^>]*> nop
-+0000a588 <[^>]*> nop
-+0000a58c <[^>]*> nop
-+0000a590 <[^>]*> nop
-+0000a594 <[^>]*> nop
-+0000a598 <[^>]*> nop
-+0000a59c <[^>]*> nop
-+0000a5a0 <[^>]*> nop
-+0000a5a4 <[^>]*> nop
-+0000a5a8 <[^>]*> nop
-+0000a5ac <[^>]*> nop
-+0000a5b0 <[^>]*> nop
-+0000a5b4 <[^>]*> nop
-+0000a5b8 <[^>]*> nop
-+0000a5bc <[^>]*> nop
-+0000a5c0 <[^>]*> nop
-+0000a5c4 <[^>]*> nop
-+0000a5c8 <[^>]*> nop
-+0000a5cc <[^>]*> nop
-+0000a5d0 <[^>]*> nop
-+0000a5d4 <[^>]*> nop
-+0000a5d8 <[^>]*> nop
-+0000a5dc <[^>]*> nop
-+0000a5e0 <[^>]*> nop
-+0000a5e4 <[^>]*> nop
-+0000a5e8 <[^>]*> nop
-+0000a5ec <[^>]*> nop
-+0000a5f0 <[^>]*> nop
-+0000a5f4 <[^>]*> nop
-+0000a5f8 <[^>]*> nop
-+0000a5fc <[^>]*> nop
-+0000a600 <[^>]*> nop
-+0000a604 <[^>]*> nop
-+0000a608 <[^>]*> nop
-+0000a60c <[^>]*> nop
-+0000a610 <[^>]*> nop
-+0000a614 <[^>]*> nop
-+0000a618 <[^>]*> nop
-+0000a61c <[^>]*> nop
-+0000a620 <[^>]*> nop
-+0000a624 <[^>]*> nop
-+0000a628 <[^>]*> nop
-+0000a62c <[^>]*> nop
-+0000a630 <[^>]*> nop
-+0000a634 <[^>]*> nop
-+0000a638 <[^>]*> nop
-+0000a63c <[^>]*> nop
-+0000a640 <[^>]*> nop
-+0000a644 <[^>]*> nop
-+0000a648 <[^>]*> nop
-+0000a64c <[^>]*> nop
-+0000a650 <[^>]*> nop
-+0000a654 <[^>]*> nop
-+0000a658 <[^>]*> nop
-+0000a65c <[^>]*> nop
-+0000a660 <[^>]*> nop
-+0000a664 <[^>]*> nop
-+0000a668 <[^>]*> nop
-+0000a66c <[^>]*> nop
-+0000a670 <[^>]*> nop
-+0000a674 <[^>]*> nop
-+0000a678 <[^>]*> nop
-+0000a67c <[^>]*> nop
-+0000a680 <[^>]*> nop
-+0000a684 <[^>]*> nop
-+0000a688 <[^>]*> nop
-+0000a68c <[^>]*> nop
-+0000a690 <[^>]*> nop
-+0000a694 <[^>]*> nop
-+0000a698 <[^>]*> nop
-+0000a69c <[^>]*> nop
-+0000a6a0 <[^>]*> nop
-+0000a6a4 <[^>]*> nop
-+0000a6a8 <[^>]*> nop
-+0000a6ac <[^>]*> nop
-+0000a6b0 <[^>]*> nop
-+0000a6b4 <[^>]*> nop
-+0000a6b8 <[^>]*> nop
-+0000a6bc <[^>]*> nop
-+0000a6c0 <[^>]*> nop
-+0000a6c4 <[^>]*> nop
-+0000a6c8 <[^>]*> nop
-+0000a6cc <[^>]*> nop
-+0000a6d0 <[^>]*> nop
-+0000a6d4 <[^>]*> nop
-+0000a6d8 <[^>]*> nop
-+0000a6dc <[^>]*> nop
-+0000a6e0 <[^>]*> nop
-+0000a6e4 <[^>]*> nop
-+0000a6e8 <[^>]*> nop
-+0000a6ec <[^>]*> nop
-+0000a6f0 <[^>]*> nop
-+0000a6f4 <[^>]*> nop
-+0000a6f8 <[^>]*> nop
-+0000a6fc <[^>]*> nop
-+0000a700 <[^>]*> nop
-+0000a704 <[^>]*> nop
-+0000a708 <[^>]*> nop
-+0000a70c <[^>]*> nop
-+0000a710 <[^>]*> nop
-+0000a714 <[^>]*> nop
-+0000a718 <[^>]*> nop
-+0000a71c <[^>]*> nop
-+0000a720 <[^>]*> nop
-+0000a724 <[^>]*> nop
-+0000a728 <[^>]*> nop
-+0000a72c <[^>]*> nop
-+0000a730 <[^>]*> nop
-+0000a734 <[^>]*> nop
-+0000a738 <[^>]*> nop
-+0000a73c <[^>]*> nop
-+0000a740 <[^>]*> nop
-+0000a744 <[^>]*> nop
-+0000a748 <[^>]*> nop
-+0000a74c <[^>]*> nop
-+0000a750 <[^>]*> nop
-+0000a754 <[^>]*> nop
-+0000a758 <[^>]*> nop
-+0000a75c <[^>]*> nop
-+0000a760 <[^>]*> nop
-+0000a764 <[^>]*> nop
-+0000a768 <[^>]*> nop
-+0000a76c <[^>]*> nop
-+0000a770 <[^>]*> nop
-+0000a774 <[^>]*> nop
-+0000a778 <[^>]*> nop
-+0000a77c <[^>]*> nop
-+0000a780 <[^>]*> nop
-+0000a784 <[^>]*> nop
-+0000a788 <[^>]*> nop
-+0000a78c <[^>]*> nop
-+0000a790 <[^>]*> nop
-+0000a794 <[^>]*> nop
-+0000a798 <[^>]*> nop
-+0000a79c <[^>]*> nop
-+0000a7a0 <[^>]*> nop
-+0000a7a4 <[^>]*> nop
-+0000a7a8 <[^>]*> nop
-+0000a7ac <[^>]*> nop
-+0000a7b0 <[^>]*> nop
-+0000a7b4 <[^>]*> nop
-+0000a7b8 <[^>]*> nop
-+0000a7bc <[^>]*> nop
-+0000a7c0 <[^>]*> nop
-+0000a7c4 <[^>]*> nop
-+0000a7c8 <[^>]*> nop
-+0000a7cc <[^>]*> nop
-+0000a7d0 <[^>]*> nop
-+0000a7d4 <[^>]*> nop
-+0000a7d8 <[^>]*> nop
-+0000a7dc <[^>]*> nop
-+0000a7e0 <[^>]*> nop
-+0000a7e4 <[^>]*> nop
-+0000a7e8 <[^>]*> nop
-+0000a7ec <[^>]*> nop
-+0000a7f0 <[^>]*> nop
-+0000a7f4 <[^>]*> nop
-+0000a7f8 <[^>]*> nop
-+0000a7fc <[^>]*> nop
-+0000a800 <[^>]*> nop
-+0000a804 <[^>]*> nop
-+0000a808 <[^>]*> nop
-+0000a80c <[^>]*> nop
-+0000a810 <[^>]*> nop
-+0000a814 <[^>]*> nop
-+0000a818 <[^>]*> nop
-+0000a81c <[^>]*> nop
-+0000a820 <[^>]*> nop
-+0000a824 <[^>]*> nop
-+0000a828 <[^>]*> nop
-+0000a82c <[^>]*> nop
-+0000a830 <[^>]*> nop
-+0000a834 <[^>]*> nop
-+0000a838 <[^>]*> nop
-+0000a83c <[^>]*> nop
-+0000a840 <[^>]*> nop
-+0000a844 <[^>]*> nop
-+0000a848 <[^>]*> nop
-+0000a84c <[^>]*> nop
-+0000a850 <[^>]*> nop
-+0000a854 <[^>]*> nop
-+0000a858 <[^>]*> nop
-+0000a85c <[^>]*> nop
-+0000a860 <[^>]*> nop
-+0000a864 <[^>]*> nop
-+0000a868 <[^>]*> nop
-+0000a86c <[^>]*> nop
-+0000a870 <[^>]*> nop
-+0000a874 <[^>]*> nop
-+0000a878 <[^>]*> nop
-+0000a87c <[^>]*> nop
-+0000a880 <[^>]*> nop
-+0000a884 <[^>]*> nop
-+0000a888 <[^>]*> nop
-+0000a88c <[^>]*> nop
-+0000a890 <[^>]*> nop
-+0000a894 <[^>]*> nop
-+0000a898 <[^>]*> nop
-+0000a89c <[^>]*> nop
-+0000a8a0 <[^>]*> nop
-+0000a8a4 <[^>]*> nop
-+0000a8a8 <[^>]*> nop
-+0000a8ac <[^>]*> nop
-+0000a8b0 <[^>]*> nop
-+0000a8b4 <[^>]*> nop
-+0000a8b8 <[^>]*> nop
-+0000a8bc <[^>]*> nop
-+0000a8c0 <[^>]*> nop
-+0000a8c4 <[^>]*> nop
-+0000a8c8 <[^>]*> nop
-+0000a8cc <[^>]*> nop
-+0000a8d0 <[^>]*> nop
-+0000a8d4 <[^>]*> nop
-+0000a8d8 <[^>]*> nop
-+0000a8dc <[^>]*> nop
-+0000a8e0 <[^>]*> nop
-+0000a8e4 <[^>]*> nop
-+0000a8e8 <[^>]*> nop
-+0000a8ec <[^>]*> nop
-+0000a8f0 <[^>]*> nop
-+0000a8f4 <[^>]*> nop
-+0000a8f8 <[^>]*> nop
-+0000a8fc <[^>]*> nop
-+0000a900 <[^>]*> nop
-+0000a904 <[^>]*> nop
-+0000a908 <[^>]*> nop
-+0000a90c <[^>]*> nop
-+0000a910 <[^>]*> nop
-+0000a914 <[^>]*> nop
-+0000a918 <[^>]*> nop
-+0000a91c <[^>]*> nop
-+0000a920 <[^>]*> nop
-+0000a924 <[^>]*> nop
-+0000a928 <[^>]*> nop
-+0000a92c <[^>]*> nop
-+0000a930 <[^>]*> nop
-+0000a934 <[^>]*> nop
-+0000a938 <[^>]*> nop
-+0000a93c <[^>]*> nop
-+0000a940 <[^>]*> nop
-+0000a944 <[^>]*> nop
-+0000a948 <[^>]*> nop
-+0000a94c <[^>]*> nop
-+0000a950 <[^>]*> nop
-+0000a954 <[^>]*> nop
-+0000a958 <[^>]*> nop
-+0000a95c <[^>]*> nop
-+0000a960 <[^>]*> nop
-+0000a964 <[^>]*> nop
-+0000a968 <[^>]*> nop
-+0000a96c <[^>]*> nop
-+0000a970 <[^>]*> nop
-+0000a974 <[^>]*> nop
-+0000a978 <[^>]*> nop
-+0000a97c <[^>]*> nop
-+0000a980 <[^>]*> nop
-+0000a984 <[^>]*> nop
-+0000a988 <[^>]*> nop
-+0000a98c <[^>]*> nop
-+0000a990 <[^>]*> nop
-+0000a994 <[^>]*> nop
-+0000a998 <[^>]*> nop
-+0000a99c <[^>]*> nop
-+0000a9a0 <[^>]*> nop
-+0000a9a4 <[^>]*> nop
-+0000a9a8 <[^>]*> nop
-+0000a9ac <[^>]*> nop
-+0000a9b0 <[^>]*> nop
-+0000a9b4 <[^>]*> nop
-+0000a9b8 <[^>]*> nop
-+0000a9bc <[^>]*> nop
-+0000a9c0 <[^>]*> nop
-+0000a9c4 <[^>]*> nop
-+0000a9c8 <[^>]*> nop
-+0000a9cc <[^>]*> nop
-+0000a9d0 <[^>]*> nop
-+0000a9d4 <[^>]*> nop
-+0000a9d8 <[^>]*> nop
-+0000a9dc <[^>]*> nop
-+0000a9e0 <[^>]*> nop
-+0000a9e4 <[^>]*> nop
-+0000a9e8 <[^>]*> nop
-+0000a9ec <[^>]*> nop
-+0000a9f0 <[^>]*> nop
-+0000a9f4 <[^>]*> nop
-+0000a9f8 <[^>]*> nop
-+0000a9fc <[^>]*> nop
-+0000aa00 <[^>]*> nop
-+0000aa04 <[^>]*> nop
-+0000aa08 <[^>]*> nop
-+0000aa0c <[^>]*> nop
-+0000aa10 <[^>]*> nop
-+0000aa14 <[^>]*> nop
-+0000aa18 <[^>]*> nop
-+0000aa1c <[^>]*> nop
-+0000aa20 <[^>]*> nop
-+0000aa24 <[^>]*> nop
-+0000aa28 <[^>]*> nop
-+0000aa2c <[^>]*> nop
-+0000aa30 <[^>]*> nop
-+0000aa34 <[^>]*> nop
-+0000aa38 <[^>]*> nop
-+0000aa3c <[^>]*> nop
-+0000aa40 <[^>]*> nop
-+0000aa44 <[^>]*> nop
-+0000aa48 <[^>]*> nop
-+0000aa4c <[^>]*> nop
-+0000aa50 <[^>]*> nop
-+0000aa54 <[^>]*> nop
-+0000aa58 <[^>]*> nop
-+0000aa5c <[^>]*> nop
-+0000aa60 <[^>]*> nop
-+0000aa64 <[^>]*> nop
-+0000aa68 <[^>]*> nop
-+0000aa6c <[^>]*> nop
-+0000aa70 <[^>]*> nop
-+0000aa74 <[^>]*> nop
-+0000aa78 <[^>]*> nop
-+0000aa7c <[^>]*> nop
-+0000aa80 <[^>]*> nop
-+0000aa84 <[^>]*> nop
-+0000aa88 <[^>]*> nop
-+0000aa8c <[^>]*> nop
-+0000aa90 <[^>]*> nop
-+0000aa94 <[^>]*> nop
-+0000aa98 <[^>]*> nop
-+0000aa9c <[^>]*> nop
-+0000aaa0 <[^>]*> nop
-+0000aaa4 <[^>]*> nop
-+0000aaa8 <[^>]*> nop
-+0000aaac <[^>]*> nop
-+0000aab0 <[^>]*> nop
-+0000aab4 <[^>]*> nop
-+0000aab8 <[^>]*> nop
-+0000aabc <[^>]*> nop
-+0000aac0 <[^>]*> nop
-+0000aac4 <[^>]*> nop
-+0000aac8 <[^>]*> nop
-+0000aacc <[^>]*> nop
-+0000aad0 <[^>]*> nop
-+0000aad4 <[^>]*> nop
-+0000aad8 <[^>]*> nop
-+0000aadc <[^>]*> nop
-+0000aae0 <[^>]*> nop
-+0000aae4 <[^>]*> nop
-+0000aae8 <[^>]*> nop
-+0000aaec <[^>]*> nop
-+0000aaf0 <[^>]*> nop
-+0000aaf4 <[^>]*> nop
-+0000aaf8 <[^>]*> nop
-+0000aafc <[^>]*> nop
-+0000ab00 <[^>]*> nop
-+0000ab04 <[^>]*> nop
-+0000ab08 <[^>]*> nop
-+0000ab0c <[^>]*> nop
-+0000ab10 <[^>]*> nop
-+0000ab14 <[^>]*> nop
-+0000ab18 <[^>]*> nop
-+0000ab1c <[^>]*> nop
-+0000ab20 <[^>]*> nop
-+0000ab24 <[^>]*> nop
-+0000ab28 <[^>]*> nop
-+0000ab2c <[^>]*> nop
-+0000ab30 <[^>]*> nop
-+0000ab34 <[^>]*> nop
-+0000ab38 <[^>]*> nop
-+0000ab3c <[^>]*> nop
-+0000ab40 <[^>]*> nop
-+0000ab44 <[^>]*> nop
-+0000ab48 <[^>]*> nop
-+0000ab4c <[^>]*> nop
-+0000ab50 <[^>]*> nop
-+0000ab54 <[^>]*> nop
-+0000ab58 <[^>]*> nop
-+0000ab5c <[^>]*> nop
-+0000ab60 <[^>]*> nop
-+0000ab64 <[^>]*> nop
-+0000ab68 <[^>]*> nop
-+0000ab6c <[^>]*> nop
-+0000ab70 <[^>]*> nop
-+0000ab74 <[^>]*> nop
-+0000ab78 <[^>]*> nop
-+0000ab7c <[^>]*> nop
-+0000ab80 <[^>]*> nop
-+0000ab84 <[^>]*> nop
-+0000ab88 <[^>]*> nop
-+0000ab8c <[^>]*> nop
-+0000ab90 <[^>]*> nop
-+0000ab94 <[^>]*> nop
-+0000ab98 <[^>]*> nop
-+0000ab9c <[^>]*> nop
-+0000aba0 <[^>]*> nop
-+0000aba4 <[^>]*> nop
-+0000aba8 <[^>]*> nop
-+0000abac <[^>]*> nop
-+0000abb0 <[^>]*> nop
-+0000abb4 <[^>]*> nop
-+0000abb8 <[^>]*> nop
-+0000abbc <[^>]*> nop
-+0000abc0 <[^>]*> nop
-+0000abc4 <[^>]*> nop
-+0000abc8 <[^>]*> nop
-+0000abcc <[^>]*> nop
-+0000abd0 <[^>]*> nop
-+0000abd4 <[^>]*> nop
-+0000abd8 <[^>]*> nop
-+0000abdc <[^>]*> nop
-+0000abe0 <[^>]*> nop
-+0000abe4 <[^>]*> nop
-+0000abe8 <[^>]*> nop
-+0000abec <[^>]*> nop
-+0000abf0 <[^>]*> nop
-+0000abf4 <[^>]*> nop
-+0000abf8 <[^>]*> nop
-+0000abfc <[^>]*> nop
-+0000ac00 <[^>]*> nop
-+0000ac04 <[^>]*> nop
-+0000ac08 <[^>]*> nop
-+0000ac0c <[^>]*> nop
-+0000ac10 <[^>]*> nop
-+0000ac14 <[^>]*> nop
-+0000ac18 <[^>]*> nop
-+0000ac1c <[^>]*> nop
-+0000ac20 <[^>]*> nop
-+0000ac24 <[^>]*> nop
-+0000ac28 <[^>]*> nop
-+0000ac2c <[^>]*> nop
-+0000ac30 <[^>]*> nop
-+0000ac34 <[^>]*> nop
-+0000ac38 <[^>]*> nop
-+0000ac3c <[^>]*> nop
-+0000ac40 <[^>]*> nop
-+0000ac44 <[^>]*> nop
-+0000ac48 <[^>]*> nop
-+0000ac4c <[^>]*> nop
-+0000ac50 <[^>]*> nop
-+0000ac54 <[^>]*> nop
-+0000ac58 <[^>]*> nop
-+0000ac5c <[^>]*> nop
-+0000ac60 <[^>]*> nop
-+0000ac64 <[^>]*> nop
-+0000ac68 <[^>]*> nop
-+0000ac6c <[^>]*> nop
-+0000ac70 <[^>]*> nop
-+0000ac74 <[^>]*> nop
-+0000ac78 <[^>]*> nop
-+0000ac7c <[^>]*> nop
-+0000ac80 <[^>]*> nop
-+0000ac84 <[^>]*> nop
-+0000ac88 <[^>]*> nop
-+0000ac8c <[^>]*> nop
-+0000ac90 <[^>]*> nop
-+0000ac94 <[^>]*> nop
-+0000ac98 <[^>]*> nop
-+0000ac9c <[^>]*> nop
-+0000aca0 <[^>]*> nop
-+0000aca4 <[^>]*> nop
-+0000aca8 <[^>]*> nop
-+0000acac <[^>]*> nop
-+0000acb0 <[^>]*> nop
-+0000acb4 <[^>]*> nop
-+0000acb8 <[^>]*> nop
-+0000acbc <[^>]*> nop
-+0000acc0 <[^>]*> nop
-+0000acc4 <[^>]*> nop
-+0000acc8 <[^>]*> nop
-+0000accc <[^>]*> nop
-+0000acd0 <[^>]*> nop
-+0000acd4 <[^>]*> nop
-+0000acd8 <[^>]*> nop
-+0000acdc <[^>]*> nop
-+0000ace0 <[^>]*> nop
-+0000ace4 <[^>]*> nop
-+0000ace8 <[^>]*> nop
-+0000acec <[^>]*> nop
-+0000acf0 <[^>]*> nop
-+0000acf4 <[^>]*> nop
-+0000acf8 <[^>]*> nop
-+0000acfc <[^>]*> nop
-+0000ad00 <[^>]*> nop
-+0000ad04 <[^>]*> nop
-+0000ad08 <[^>]*> nop
-+0000ad0c <[^>]*> nop
-+0000ad10 <[^>]*> nop
-+0000ad14 <[^>]*> nop
-+0000ad18 <[^>]*> nop
-+0000ad1c <[^>]*> nop
-+0000ad20 <[^>]*> nop
-+0000ad24 <[^>]*> nop
-+0000ad28 <[^>]*> nop
-+0000ad2c <[^>]*> nop
-+0000ad30 <[^>]*> nop
-+0000ad34 <[^>]*> nop
-+0000ad38 <[^>]*> nop
-+0000ad3c <[^>]*> nop
-+0000ad40 <[^>]*> nop
-+0000ad44 <[^>]*> nop
-+0000ad48 <[^>]*> nop
-+0000ad4c <[^>]*> nop
-+0000ad50 <[^>]*> nop
-+0000ad54 <[^>]*> nop
-+0000ad58 <[^>]*> nop
-+0000ad5c <[^>]*> nop
-+0000ad60 <[^>]*> nop
-+0000ad64 <[^>]*> nop
-+0000ad68 <[^>]*> nop
-+0000ad6c <[^>]*> nop
-+0000ad70 <[^>]*> nop
-+0000ad74 <[^>]*> nop
-+0000ad78 <[^>]*> nop
-+0000ad7c <[^>]*> nop
-+0000ad80 <[^>]*> nop
-+0000ad84 <[^>]*> nop
-+0000ad88 <[^>]*> nop
-+0000ad8c <[^>]*> nop
-+0000ad90 <[^>]*> nop
-+0000ad94 <[^>]*> nop
-+0000ad98 <[^>]*> nop
-+0000ad9c <[^>]*> nop
-+0000ada0 <[^>]*> nop
-+0000ada4 <[^>]*> nop
-+0000ada8 <[^>]*> nop
-+0000adac <[^>]*> nop
-+0000adb0 <[^>]*> nop
-+0000adb4 <[^>]*> nop
-+0000adb8 <[^>]*> nop
-+0000adbc <[^>]*> nop
-+0000adc0 <[^>]*> nop
-+0000adc4 <[^>]*> nop
-+0000adc8 <[^>]*> nop
-+0000adcc <[^>]*> nop
-+0000add0 <[^>]*> nop
-+0000add4 <[^>]*> nop
-+0000add8 <[^>]*> nop
-+0000addc <[^>]*> nop
-+0000ade0 <[^>]*> nop
-+0000ade4 <[^>]*> nop
-+0000ade8 <[^>]*> nop
-+0000adec <[^>]*> nop
-+0000adf0 <[^>]*> nop
-+0000adf4 <[^>]*> nop
-+0000adf8 <[^>]*> nop
-+0000adfc <[^>]*> nop
-+0000ae00 <[^>]*> nop
-+0000ae04 <[^>]*> nop
-+0000ae08 <[^>]*> nop
-+0000ae0c <[^>]*> nop
-+0000ae10 <[^>]*> nop
-+0000ae14 <[^>]*> nop
-+0000ae18 <[^>]*> nop
-+0000ae1c <[^>]*> nop
-+0000ae20 <[^>]*> nop
-+0000ae24 <[^>]*> nop
-+0000ae28 <[^>]*> nop
-+0000ae2c <[^>]*> nop
-+0000ae30 <[^>]*> nop
-+0000ae34 <[^>]*> nop
-+0000ae38 <[^>]*> nop
-+0000ae3c <[^>]*> nop
-+0000ae40 <[^>]*> nop
-+0000ae44 <[^>]*> nop
-+0000ae48 <[^>]*> nop
-+0000ae4c <[^>]*> nop
-+0000ae50 <[^>]*> nop
-+0000ae54 <[^>]*> nop
-+0000ae58 <[^>]*> nop
-+0000ae5c <[^>]*> nop
-+0000ae60 <[^>]*> nop
-+0000ae64 <[^>]*> nop
-+0000ae68 <[^>]*> nop
-+0000ae6c <[^>]*> nop
-+0000ae70 <[^>]*> nop
-+0000ae74 <[^>]*> nop
-+0000ae78 <[^>]*> nop
-+0000ae7c <[^>]*> nop
-+0000ae80 <[^>]*> nop
-+0000ae84 <[^>]*> nop
-+0000ae88 <[^>]*> nop
-+0000ae8c <[^>]*> nop
-+0000ae90 <[^>]*> nop
-+0000ae94 <[^>]*> nop
-+0000ae98 <[^>]*> nop
-+0000ae9c <[^>]*> nop
-+0000aea0 <[^>]*> nop
-+0000aea4 <[^>]*> nop
-+0000aea8 <[^>]*> nop
-+0000aeac <[^>]*> nop
-+0000aeb0 <[^>]*> nop
-+0000aeb4 <[^>]*> nop
-+0000aeb8 <[^>]*> nop
-+0000aebc <[^>]*> nop
-+0000aec0 <[^>]*> nop
-+0000aec4 <[^>]*> nop
-+0000aec8 <[^>]*> nop
-+0000aecc <[^>]*> nop
-+0000aed0 <[^>]*> nop
-+0000aed4 <[^>]*> nop
-+0000aed8 <[^>]*> nop
-+0000aedc <[^>]*> nop
-+0000aee0 <[^>]*> nop
-+0000aee4 <[^>]*> nop
-+0000aee8 <[^>]*> nop
-+0000aeec <[^>]*> nop
-+0000aef0 <[^>]*> nop
-+0000aef4 <[^>]*> nop
-+0000aef8 <[^>]*> nop
-+0000aefc <[^>]*> nop
-+0000af00 <[^>]*> nop
-+0000af04 <[^>]*> nop
-+0000af08 <[^>]*> nop
-+0000af0c <[^>]*> nop
-+0000af10 <[^>]*> nop
-+0000af14 <[^>]*> nop
-+0000af18 <[^>]*> nop
-+0000af1c <[^>]*> nop
-+0000af20 <[^>]*> nop
-+0000af24 <[^>]*> nop
-+0000af28 <[^>]*> nop
-+0000af2c <[^>]*> nop
-+0000af30 <[^>]*> nop
-+0000af34 <[^>]*> nop
-+0000af38 <[^>]*> nop
-+0000af3c <[^>]*> nop
-+0000af40 <[^>]*> nop
-+0000af44 <[^>]*> nop
-+0000af48 <[^>]*> nop
-+0000af4c <[^>]*> nop
-+0000af50 <[^>]*> nop
-+0000af54 <[^>]*> nop
-+0000af58 <[^>]*> nop
-+0000af5c <[^>]*> nop
-+0000af60 <[^>]*> nop
-+0000af64 <[^>]*> nop
-+0000af68 <[^>]*> nop
-+0000af6c <[^>]*> nop
-+0000af70 <[^>]*> nop
-+0000af74 <[^>]*> nop
-+0000af78 <[^>]*> nop
-+0000af7c <[^>]*> nop
-+0000af80 <[^>]*> nop
-+0000af84 <[^>]*> nop
-+0000af88 <[^>]*> nop
-+0000af8c <[^>]*> nop
-+0000af90 <[^>]*> nop
-+0000af94 <[^>]*> nop
-+0000af98 <[^>]*> nop
-+0000af9c <[^>]*> nop
-+0000afa0 <[^>]*> nop
-+0000afa4 <[^>]*> nop
-+0000afa8 <[^>]*> nop
-+0000afac <[^>]*> nop
-+0000afb0 <[^>]*> nop
-+0000afb4 <[^>]*> nop
-+0000afb8 <[^>]*> nop
-+0000afbc <[^>]*> nop
-+0000afc0 <[^>]*> nop
-+0000afc4 <[^>]*> nop
-+0000afc8 <[^>]*> nop
-+0000afcc <[^>]*> nop
-+0000afd0 <[^>]*> nop
-+0000afd4 <[^>]*> nop
-+0000afd8 <[^>]*> nop
-+0000afdc <[^>]*> nop
-+0000afe0 <[^>]*> nop
-+0000afe4 <[^>]*> nop
-+0000afe8 <[^>]*> nop
-+0000afec <[^>]*> nop
-+0000aff0 <[^>]*> nop
-+0000aff4 <[^>]*> nop
-+0000aff8 <[^>]*> nop
-+0000affc <[^>]*> nop
-+0000b000 <[^>]*> nop
-+0000b004 <[^>]*> nop
-+0000b008 <[^>]*> nop
-+0000b00c <[^>]*> nop
-+0000b010 <[^>]*> nop
-+0000b014 <[^>]*> nop
-+0000b018 <[^>]*> nop
-+0000b01c <[^>]*> nop
-+0000b020 <[^>]*> nop
-+0000b024 <[^>]*> nop
-+0000b028 <[^>]*> nop
-+0000b02c <[^>]*> nop
-+0000b030 <[^>]*> nop
-+0000b034 <[^>]*> nop
-+0000b038 <[^>]*> nop
-+0000b03c <[^>]*> nop
-+0000b040 <[^>]*> nop
-+0000b044 <[^>]*> nop
-+0000b048 <[^>]*> nop
-+0000b04c <[^>]*> nop
-+0000b050 <[^>]*> nop
-+0000b054 <[^>]*> nop
-+0000b058 <[^>]*> nop
-+0000b05c <[^>]*> nop
-+0000b060 <[^>]*> nop
-+0000b064 <[^>]*> nop
-+0000b068 <[^>]*> nop
-+0000b06c <[^>]*> nop
-+0000b070 <[^>]*> nop
-+0000b074 <[^>]*> nop
-+0000b078 <[^>]*> nop
-+0000b07c <[^>]*> nop
-+0000b080 <[^>]*> nop
-+0000b084 <[^>]*> nop
-+0000b088 <[^>]*> nop
-+0000b08c <[^>]*> nop
-+0000b090 <[^>]*> nop
-+0000b094 <[^>]*> nop
-+0000b098 <[^>]*> nop
-+0000b09c <[^>]*> nop
-+0000b0a0 <[^>]*> nop
-+0000b0a4 <[^>]*> nop
-+0000b0a8 <[^>]*> nop
-+0000b0ac <[^>]*> nop
-+0000b0b0 <[^>]*> nop
-+0000b0b4 <[^>]*> nop
-+0000b0b8 <[^>]*> nop
-+0000b0bc <[^>]*> nop
-+0000b0c0 <[^>]*> nop
-+0000b0c4 <[^>]*> nop
-+0000b0c8 <[^>]*> nop
-+0000b0cc <[^>]*> nop
-+0000b0d0 <[^>]*> nop
-+0000b0d4 <[^>]*> nop
-+0000b0d8 <[^>]*> nop
-+0000b0dc <[^>]*> nop
-+0000b0e0 <[^>]*> nop
-+0000b0e4 <[^>]*> nop
-+0000b0e8 <[^>]*> nop
-+0000b0ec <[^>]*> nop
-+0000b0f0 <[^>]*> nop
-+0000b0f4 <[^>]*> nop
-+0000b0f8 <[^>]*> nop
-+0000b0fc <[^>]*> nop
-+0000b100 <[^>]*> nop
-+0000b104 <[^>]*> nop
-+0000b108 <[^>]*> nop
-+0000b10c <[^>]*> nop
-+0000b110 <[^>]*> nop
-+0000b114 <[^>]*> nop
-+0000b118 <[^>]*> nop
-+0000b11c <[^>]*> nop
-+0000b120 <[^>]*> nop
-+0000b124 <[^>]*> nop
-+0000b128 <[^>]*> nop
-+0000b12c <[^>]*> nop
-+0000b130 <[^>]*> nop
-+0000b134 <[^>]*> nop
-+0000b138 <[^>]*> nop
-+0000b13c <[^>]*> nop
-+0000b140 <[^>]*> nop
-+0000b144 <[^>]*> nop
-+0000b148 <[^>]*> nop
-+0000b14c <[^>]*> nop
-+0000b150 <[^>]*> nop
-+0000b154 <[^>]*> nop
-+0000b158 <[^>]*> nop
-+0000b15c <[^>]*> nop
-+0000b160 <[^>]*> nop
-+0000b164 <[^>]*> nop
-+0000b168 <[^>]*> nop
-+0000b16c <[^>]*> nop
-+0000b170 <[^>]*> nop
-+0000b174 <[^>]*> nop
-+0000b178 <[^>]*> nop
-+0000b17c <[^>]*> nop
-+0000b180 <[^>]*> nop
-+0000b184 <[^>]*> nop
-+0000b188 <[^>]*> nop
-+0000b18c <[^>]*> nop
-+0000b190 <[^>]*> nop
-+0000b194 <[^>]*> nop
-+0000b198 <[^>]*> nop
-+0000b19c <[^>]*> nop
-+0000b1a0 <[^>]*> nop
-+0000b1a4 <[^>]*> nop
-+0000b1a8 <[^>]*> nop
-+0000b1ac <[^>]*> nop
-+0000b1b0 <[^>]*> nop
-+0000b1b4 <[^>]*> nop
-+0000b1b8 <[^>]*> nop
-+0000b1bc <[^>]*> nop
-+0000b1c0 <[^>]*> nop
-+0000b1c4 <[^>]*> nop
-+0000b1c8 <[^>]*> nop
-+0000b1cc <[^>]*> nop
-+0000b1d0 <[^>]*> nop
-+0000b1d4 <[^>]*> nop
-+0000b1d8 <[^>]*> nop
-+0000b1dc <[^>]*> nop
-+0000b1e0 <[^>]*> nop
-+0000b1e4 <[^>]*> nop
-+0000b1e8 <[^>]*> nop
-+0000b1ec <[^>]*> nop
-+0000b1f0 <[^>]*> nop
-+0000b1f4 <[^>]*> nop
-+0000b1f8 <[^>]*> nop
-+0000b1fc <[^>]*> nop
-+0000b200 <[^>]*> nop
-+0000b204 <[^>]*> nop
-+0000b208 <[^>]*> nop
-+0000b20c <[^>]*> nop
-+0000b210 <[^>]*> nop
-+0000b214 <[^>]*> nop
-+0000b218 <[^>]*> nop
-+0000b21c <[^>]*> nop
-+0000b220 <[^>]*> nop
-+0000b224 <[^>]*> nop
-+0000b228 <[^>]*> nop
-+0000b22c <[^>]*> nop
-+0000b230 <[^>]*> nop
-+0000b234 <[^>]*> nop
-+0000b238 <[^>]*> nop
-+0000b23c <[^>]*> nop
-+0000b240 <[^>]*> nop
-+0000b244 <[^>]*> nop
-+0000b248 <[^>]*> nop
-+0000b24c <[^>]*> nop
-+0000b250 <[^>]*> nop
-+0000b254 <[^>]*> nop
-+0000b258 <[^>]*> nop
-+0000b25c <[^>]*> nop
-+0000b260 <[^>]*> nop
-+0000b264 <[^>]*> nop
-+0000b268 <[^>]*> nop
-+0000b26c <[^>]*> nop
-+0000b270 <[^>]*> nop
-+0000b274 <[^>]*> nop
-+0000b278 <[^>]*> nop
-+0000b27c <[^>]*> nop
-+0000b280 <[^>]*> nop
-+0000b284 <[^>]*> nop
-+0000b288 <[^>]*> nop
-+0000b28c <[^>]*> nop
-+0000b290 <[^>]*> nop
-+0000b294 <[^>]*> nop
-+0000b298 <[^>]*> nop
-+0000b29c <[^>]*> nop
-+0000b2a0 <[^>]*> nop
-+0000b2a4 <[^>]*> nop
-+0000b2a8 <[^>]*> nop
-+0000b2ac <[^>]*> nop
-+0000b2b0 <[^>]*> nop
-+0000b2b4 <[^>]*> nop
-+0000b2b8 <[^>]*> nop
-+0000b2bc <[^>]*> nop
-+0000b2c0 <[^>]*> nop
-+0000b2c4 <[^>]*> nop
-+0000b2c8 <[^>]*> nop
-+0000b2cc <[^>]*> nop
-+0000b2d0 <[^>]*> nop
-+0000b2d4 <[^>]*> nop
-+0000b2d8 <[^>]*> nop
-+0000b2dc <[^>]*> nop
-+0000b2e0 <[^>]*> nop
-+0000b2e4 <[^>]*> nop
-+0000b2e8 <[^>]*> nop
-+0000b2ec <[^>]*> nop
-+0000b2f0 <[^>]*> nop
-+0000b2f4 <[^>]*> nop
-+0000b2f8 <[^>]*> nop
-+0000b2fc <[^>]*> nop
-+0000b300 <[^>]*> nop
-+0000b304 <[^>]*> nop
-+0000b308 <[^>]*> nop
-+0000b30c <[^>]*> nop
-+0000b310 <[^>]*> nop
-+0000b314 <[^>]*> nop
-+0000b318 <[^>]*> nop
-+0000b31c <[^>]*> nop
-+0000b320 <[^>]*> nop
-+0000b324 <[^>]*> nop
-+0000b328 <[^>]*> nop
-+0000b32c <[^>]*> nop
-+0000b330 <[^>]*> nop
-+0000b334 <[^>]*> nop
-+0000b338 <[^>]*> nop
-+0000b33c <[^>]*> nop
-+0000b340 <[^>]*> nop
-+0000b344 <[^>]*> nop
-+0000b348 <[^>]*> nop
-+0000b34c <[^>]*> nop
-+0000b350 <[^>]*> nop
-+0000b354 <[^>]*> nop
-+0000b358 <[^>]*> nop
-+0000b35c <[^>]*> nop
-+0000b360 <[^>]*> nop
-+0000b364 <[^>]*> nop
-+0000b368 <[^>]*> nop
-+0000b36c <[^>]*> nop
-+0000b370 <[^>]*> nop
-+0000b374 <[^>]*> nop
-+0000b378 <[^>]*> nop
-+0000b37c <[^>]*> nop
-+0000b380 <[^>]*> nop
-+0000b384 <[^>]*> nop
-+0000b388 <[^>]*> nop
-+0000b38c <[^>]*> nop
-+0000b390 <[^>]*> nop
-+0000b394 <[^>]*> nop
-+0000b398 <[^>]*> nop
-+0000b39c <[^>]*> nop
-+0000b3a0 <[^>]*> nop
-+0000b3a4 <[^>]*> nop
-+0000b3a8 <[^>]*> nop
-+0000b3ac <[^>]*> nop
-+0000b3b0 <[^>]*> nop
-+0000b3b4 <[^>]*> nop
-+0000b3b8 <[^>]*> nop
-+0000b3bc <[^>]*> nop
-+0000b3c0 <[^>]*> nop
-+0000b3c4 <[^>]*> nop
-+0000b3c8 <[^>]*> nop
-+0000b3cc <[^>]*> nop
-+0000b3d0 <[^>]*> nop
-+0000b3d4 <[^>]*> nop
-+0000b3d8 <[^>]*> nop
-+0000b3dc <[^>]*> nop
-+0000b3e0 <[^>]*> nop
-+0000b3e4 <[^>]*> nop
-+0000b3e8 <[^>]*> nop
-+0000b3ec <[^>]*> nop
-+0000b3f0 <[^>]*> nop
-+0000b3f4 <[^>]*> nop
-+0000b3f8 <[^>]*> nop
-+0000b3fc <[^>]*> nop
-+0000b400 <[^>]*> nop
-+0000b404 <[^>]*> nop
-+0000b408 <[^>]*> nop
-+0000b40c <[^>]*> nop
-+0000b410 <[^>]*> nop
-+0000b414 <[^>]*> nop
-+0000b418 <[^>]*> nop
-+0000b41c <[^>]*> nop
-+0000b420 <[^>]*> nop
-+0000b424 <[^>]*> nop
-+0000b428 <[^>]*> nop
-+0000b42c <[^>]*> nop
-+0000b430 <[^>]*> nop
-+0000b434 <[^>]*> nop
-+0000b438 <[^>]*> nop
-+0000b43c <[^>]*> nop
-+0000b440 <[^>]*> nop
-+0000b444 <[^>]*> nop
-+0000b448 <[^>]*> nop
-+0000b44c <[^>]*> nop
-+0000b450 <[^>]*> nop
-+0000b454 <[^>]*> nop
-+0000b458 <[^>]*> nop
-+0000b45c <[^>]*> nop
-+0000b460 <[^>]*> nop
-+0000b464 <[^>]*> nop
-+0000b468 <[^>]*> nop
-+0000b46c <[^>]*> nop
-+0000b470 <[^>]*> nop
-+0000b474 <[^>]*> nop
-+0000b478 <[^>]*> nop
-+0000b47c <[^>]*> nop
-+0000b480 <[^>]*> nop
-+0000b484 <[^>]*> nop
-+0000b488 <[^>]*> nop
-+0000b48c <[^>]*> nop
-+0000b490 <[^>]*> nop
-+0000b494 <[^>]*> nop
-+0000b498 <[^>]*> nop
-+0000b49c <[^>]*> nop
-+0000b4a0 <[^>]*> nop
-+0000b4a4 <[^>]*> nop
-+0000b4a8 <[^>]*> nop
-+0000b4ac <[^>]*> nop
-+0000b4b0 <[^>]*> nop
-+0000b4b4 <[^>]*> nop
-+0000b4b8 <[^>]*> nop
-+0000b4bc <[^>]*> nop
-+0000b4c0 <[^>]*> nop
-+0000b4c4 <[^>]*> nop
-+0000b4c8 <[^>]*> nop
-+0000b4cc <[^>]*> nop
-+0000b4d0 <[^>]*> nop
-+0000b4d4 <[^>]*> nop
-+0000b4d8 <[^>]*> nop
-+0000b4dc <[^>]*> nop
-+0000b4e0 <[^>]*> nop
-+0000b4e4 <[^>]*> nop
-+0000b4e8 <[^>]*> nop
-+0000b4ec <[^>]*> nop
-+0000b4f0 <[^>]*> nop
-+0000b4f4 <[^>]*> nop
-+0000b4f8 <[^>]*> nop
-+0000b4fc <[^>]*> nop
-+0000b500 <[^>]*> nop
-+0000b504 <[^>]*> nop
-+0000b508 <[^>]*> nop
-+0000b50c <[^>]*> nop
-+0000b510 <[^>]*> nop
-+0000b514 <[^>]*> nop
-+0000b518 <[^>]*> nop
-+0000b51c <[^>]*> nop
-+0000b520 <[^>]*> nop
-+0000b524 <[^>]*> nop
-+0000b528 <[^>]*> nop
-+0000b52c <[^>]*> nop
-+0000b530 <[^>]*> nop
-+0000b534 <[^>]*> nop
-+0000b538 <[^>]*> nop
-+0000b53c <[^>]*> nop
-+0000b540 <[^>]*> nop
-+0000b544 <[^>]*> nop
-+0000b548 <[^>]*> nop
-+0000b54c <[^>]*> nop
-+0000b550 <[^>]*> nop
-+0000b554 <[^>]*> nop
-+0000b558 <[^>]*> nop
-+0000b55c <[^>]*> nop
-+0000b560 <[^>]*> nop
-+0000b564 <[^>]*> nop
-+0000b568 <[^>]*> nop
-+0000b56c <[^>]*> nop
-+0000b570 <[^>]*> nop
-+0000b574 <[^>]*> nop
-+0000b578 <[^>]*> nop
-+0000b57c <[^>]*> nop
-+0000b580 <[^>]*> nop
-+0000b584 <[^>]*> nop
-+0000b588 <[^>]*> nop
-+0000b58c <[^>]*> nop
-+0000b590 <[^>]*> nop
-+0000b594 <[^>]*> nop
-+0000b598 <[^>]*> nop
-+0000b59c <[^>]*> nop
-+0000b5a0 <[^>]*> nop
-+0000b5a4 <[^>]*> nop
-+0000b5a8 <[^>]*> nop
-+0000b5ac <[^>]*> nop
-+0000b5b0 <[^>]*> nop
-+0000b5b4 <[^>]*> nop
-+0000b5b8 <[^>]*> nop
-+0000b5bc <[^>]*> nop
-+0000b5c0 <[^>]*> nop
-+0000b5c4 <[^>]*> nop
-+0000b5c8 <[^>]*> nop
-+0000b5cc <[^>]*> nop
-+0000b5d0 <[^>]*> nop
-+0000b5d4 <[^>]*> nop
-+0000b5d8 <[^>]*> nop
-+0000b5dc <[^>]*> nop
-+0000b5e0 <[^>]*> nop
-+0000b5e4 <[^>]*> nop
-+0000b5e8 <[^>]*> nop
-+0000b5ec <[^>]*> nop
-+0000b5f0 <[^>]*> nop
-+0000b5f4 <[^>]*> nop
-+0000b5f8 <[^>]*> nop
-+0000b5fc <[^>]*> nop
-+0000b600 <[^>]*> nop
-+0000b604 <[^>]*> nop
-+0000b608 <[^>]*> nop
-+0000b60c <[^>]*> nop
-+0000b610 <[^>]*> nop
-+0000b614 <[^>]*> nop
-+0000b618 <[^>]*> nop
-+0000b61c <[^>]*> nop
-+0000b620 <[^>]*> nop
-+0000b624 <[^>]*> nop
-+0000b628 <[^>]*> nop
-+0000b62c <[^>]*> nop
-+0000b630 <[^>]*> nop
-+0000b634 <[^>]*> nop
-+0000b638 <[^>]*> nop
-+0000b63c <[^>]*> nop
-+0000b640 <[^>]*> nop
-+0000b644 <[^>]*> nop
-+0000b648 <[^>]*> nop
-+0000b64c <[^>]*> nop
-+0000b650 <[^>]*> nop
-+0000b654 <[^>]*> nop
-+0000b658 <[^>]*> nop
-+0000b65c <[^>]*> nop
-+0000b660 <[^>]*> nop
-+0000b664 <[^>]*> nop
-+0000b668 <[^>]*> nop
-+0000b66c <[^>]*> nop
-+0000b670 <[^>]*> nop
-+0000b674 <[^>]*> nop
-+0000b678 <[^>]*> nop
-+0000b67c <[^>]*> nop
-+0000b680 <[^>]*> nop
-+0000b684 <[^>]*> nop
-+0000b688 <[^>]*> nop
-+0000b68c <[^>]*> nop
-+0000b690 <[^>]*> nop
-+0000b694 <[^>]*> nop
-+0000b698 <[^>]*> nop
-+0000b69c <[^>]*> nop
-+0000b6a0 <[^>]*> nop
-+0000b6a4 <[^>]*> nop
-+0000b6a8 <[^>]*> nop
-+0000b6ac <[^>]*> nop
-+0000b6b0 <[^>]*> nop
-+0000b6b4 <[^>]*> nop
-+0000b6b8 <[^>]*> nop
-+0000b6bc <[^>]*> nop
-+0000b6c0 <[^>]*> nop
-+0000b6c4 <[^>]*> nop
-+0000b6c8 <[^>]*> nop
-+0000b6cc <[^>]*> nop
-+0000b6d0 <[^>]*> nop
-+0000b6d4 <[^>]*> nop
-+0000b6d8 <[^>]*> nop
-+0000b6dc <[^>]*> nop
-+0000b6e0 <[^>]*> nop
-+0000b6e4 <[^>]*> nop
-+0000b6e8 <[^>]*> nop
-+0000b6ec <[^>]*> nop
-+0000b6f0 <[^>]*> nop
-+0000b6f4 <[^>]*> nop
-+0000b6f8 <[^>]*> nop
-+0000b6fc <[^>]*> nop
-+0000b700 <[^>]*> nop
-+0000b704 <[^>]*> nop
-+0000b708 <[^>]*> nop
-+0000b70c <[^>]*> nop
-+0000b710 <[^>]*> nop
-+0000b714 <[^>]*> nop
-+0000b718 <[^>]*> nop
-+0000b71c <[^>]*> nop
-+0000b720 <[^>]*> nop
-+0000b724 <[^>]*> nop
-+0000b728 <[^>]*> nop
-+0000b72c <[^>]*> nop
-+0000b730 <[^>]*> nop
-+0000b734 <[^>]*> nop
-+0000b738 <[^>]*> nop
-+0000b73c <[^>]*> nop
-+0000b740 <[^>]*> nop
-+0000b744 <[^>]*> nop
-+0000b748 <[^>]*> nop
-+0000b74c <[^>]*> nop
-+0000b750 <[^>]*> nop
-+0000b754 <[^>]*> nop
-+0000b758 <[^>]*> nop
-+0000b75c <[^>]*> nop
-+0000b760 <[^>]*> nop
-+0000b764 <[^>]*> nop
-+0000b768 <[^>]*> nop
-+0000b76c <[^>]*> nop
-+0000b770 <[^>]*> nop
-+0000b774 <[^>]*> nop
-+0000b778 <[^>]*> nop
-+0000b77c <[^>]*> nop
-+0000b780 <[^>]*> nop
-+0000b784 <[^>]*> nop
-+0000b788 <[^>]*> nop
-+0000b78c <[^>]*> nop
-+0000b790 <[^>]*> nop
-+0000b794 <[^>]*> nop
-+0000b798 <[^>]*> nop
-+0000b79c <[^>]*> nop
-+0000b7a0 <[^>]*> nop
-+0000b7a4 <[^>]*> nop
-+0000b7a8 <[^>]*> nop
-+0000b7ac <[^>]*> nop
-+0000b7b0 <[^>]*> nop
-+0000b7b4 <[^>]*> nop
-+0000b7b8 <[^>]*> nop
-+0000b7bc <[^>]*> nop
-+0000b7c0 <[^>]*> nop
-+0000b7c4 <[^>]*> nop
-+0000b7c8 <[^>]*> nop
-+0000b7cc <[^>]*> nop
-+0000b7d0 <[^>]*> nop
-+0000b7d4 <[^>]*> nop
-+0000b7d8 <[^>]*> nop
-+0000b7dc <[^>]*> nop
-+0000b7e0 <[^>]*> nop
-+0000b7e4 <[^>]*> nop
-+0000b7e8 <[^>]*> nop
-+0000b7ec <[^>]*> nop
-+0000b7f0 <[^>]*> nop
-+0000b7f4 <[^>]*> nop
-+0000b7f8 <[^>]*> nop
-+0000b7fc <[^>]*> nop
-+0000b800 <[^>]*> nop
-+0000b804 <[^>]*> nop
-+0000b808 <[^>]*> nop
-+0000b80c <[^>]*> nop
-+0000b810 <[^>]*> nop
-+0000b814 <[^>]*> nop
-+0000b818 <[^>]*> nop
-+0000b81c <[^>]*> nop
-+0000b820 <[^>]*> nop
-+0000b824 <[^>]*> nop
-+0000b828 <[^>]*> nop
-+0000b82c <[^>]*> nop
-+0000b830 <[^>]*> nop
-+0000b834 <[^>]*> nop
-+0000b838 <[^>]*> nop
-+0000b83c <[^>]*> nop
-+0000b840 <[^>]*> nop
-+0000b844 <[^>]*> nop
-+0000b848 <[^>]*> nop
-+0000b84c <[^>]*> nop
-+0000b850 <[^>]*> nop
-+0000b854 <[^>]*> nop
-+0000b858 <[^>]*> nop
-+0000b85c <[^>]*> nop
-+0000b860 <[^>]*> nop
-+0000b864 <[^>]*> nop
-+0000b868 <[^>]*> nop
-+0000b86c <[^>]*> nop
-+0000b870 <[^>]*> nop
-+0000b874 <[^>]*> nop
-+0000b878 <[^>]*> nop
-+0000b87c <[^>]*> nop
-+0000b880 <[^>]*> nop
-+0000b884 <[^>]*> nop
-+0000b888 <[^>]*> nop
-+0000b88c <[^>]*> nop
-+0000b890 <[^>]*> nop
-+0000b894 <[^>]*> nop
-+0000b898 <[^>]*> nop
-+0000b89c <[^>]*> nop
-+0000b8a0 <[^>]*> nop
-+0000b8a4 <[^>]*> nop
-+0000b8a8 <[^>]*> nop
-+0000b8ac <[^>]*> nop
-+0000b8b0 <[^>]*> nop
-+0000b8b4 <[^>]*> nop
-+0000b8b8 <[^>]*> nop
-+0000b8bc <[^>]*> nop
-+0000b8c0 <[^>]*> nop
-+0000b8c4 <[^>]*> nop
-+0000b8c8 <[^>]*> nop
-+0000b8cc <[^>]*> nop
-+0000b8d0 <[^>]*> nop
-+0000b8d4 <[^>]*> nop
-+0000b8d8 <[^>]*> nop
-+0000b8dc <[^>]*> nop
-+0000b8e0 <[^>]*> nop
-+0000b8e4 <[^>]*> nop
-+0000b8e8 <[^>]*> nop
-+0000b8ec <[^>]*> nop
-+0000b8f0 <[^>]*> nop
-+0000b8f4 <[^>]*> nop
-+0000b8f8 <[^>]*> nop
-+0000b8fc <[^>]*> nop
-+0000b900 <[^>]*> nop
-+0000b904 <[^>]*> nop
-+0000b908 <[^>]*> nop
-+0000b90c <[^>]*> nop
-+0000b910 <[^>]*> nop
-+0000b914 <[^>]*> nop
-+0000b918 <[^>]*> nop
-+0000b91c <[^>]*> nop
-+0000b920 <[^>]*> nop
-+0000b924 <[^>]*> nop
-+0000b928 <[^>]*> nop
-+0000b92c <[^>]*> nop
-+0000b930 <[^>]*> nop
-+0000b934 <[^>]*> nop
-+0000b938 <[^>]*> nop
-+0000b93c <[^>]*> nop
-+0000b940 <[^>]*> nop
-+0000b944 <[^>]*> nop
-+0000b948 <[^>]*> nop
-+0000b94c <[^>]*> nop
-+0000b950 <[^>]*> nop
-+0000b954 <[^>]*> nop
-+0000b958 <[^>]*> nop
-+0000b95c <[^>]*> nop
-+0000b960 <[^>]*> nop
-+0000b964 <[^>]*> nop
-+0000b968 <[^>]*> nop
-+0000b96c <[^>]*> nop
-+0000b970 <[^>]*> nop
-+0000b974 <[^>]*> nop
-+0000b978 <[^>]*> nop
-+0000b97c <[^>]*> nop
-+0000b980 <[^>]*> nop
-+0000b984 <[^>]*> nop
-+0000b988 <[^>]*> nop
-+0000b98c <[^>]*> nop
-+0000b990 <[^>]*> nop
-+0000b994 <[^>]*> nop
-+0000b998 <[^>]*> nop
-+0000b99c <[^>]*> nop
-+0000b9a0 <[^>]*> nop
-+0000b9a4 <[^>]*> nop
-+0000b9a8 <[^>]*> nop
-+0000b9ac <[^>]*> nop
-+0000b9b0 <[^>]*> nop
-+0000b9b4 <[^>]*> nop
-+0000b9b8 <[^>]*> nop
-+0000b9bc <[^>]*> nop
-+0000b9c0 <[^>]*> nop
-+0000b9c4 <[^>]*> nop
-+0000b9c8 <[^>]*> nop
-+0000b9cc <[^>]*> nop
-+0000b9d0 <[^>]*> nop
-+0000b9d4 <[^>]*> nop
-+0000b9d8 <[^>]*> nop
-+0000b9dc <[^>]*> nop
-+0000b9e0 <[^>]*> nop
-+0000b9e4 <[^>]*> nop
-+0000b9e8 <[^>]*> nop
-+0000b9ec <[^>]*> nop
-+0000b9f0 <[^>]*> nop
-+0000b9f4 <[^>]*> nop
-+0000b9f8 <[^>]*> nop
-+0000b9fc <[^>]*> nop
-+0000ba00 <[^>]*> nop
-+0000ba04 <[^>]*> nop
-+0000ba08 <[^>]*> nop
-+0000ba0c <[^>]*> nop
-+0000ba10 <[^>]*> nop
-+0000ba14 <[^>]*> nop
-+0000ba18 <[^>]*> nop
-+0000ba1c <[^>]*> nop
-+0000ba20 <[^>]*> nop
-+0000ba24 <[^>]*> nop
-+0000ba28 <[^>]*> nop
-+0000ba2c <[^>]*> nop
-+0000ba30 <[^>]*> nop
-+0000ba34 <[^>]*> nop
-+0000ba38 <[^>]*> nop
-+0000ba3c <[^>]*> nop
-+0000ba40 <[^>]*> nop
-+0000ba44 <[^>]*> nop
-+0000ba48 <[^>]*> nop
-+0000ba4c <[^>]*> nop
-+0000ba50 <[^>]*> nop
-+0000ba54 <[^>]*> nop
-+0000ba58 <[^>]*> nop
-+0000ba5c <[^>]*> nop
-+0000ba60 <[^>]*> nop
-+0000ba64 <[^>]*> nop
-+0000ba68 <[^>]*> nop
-+0000ba6c <[^>]*> nop
-+0000ba70 <[^>]*> nop
-+0000ba74 <[^>]*> nop
-+0000ba78 <[^>]*> nop
-+0000ba7c <[^>]*> nop
-+0000ba80 <[^>]*> nop
-+0000ba84 <[^>]*> nop
-+0000ba88 <[^>]*> nop
-+0000ba8c <[^>]*> nop
-+0000ba90 <[^>]*> nop
-+0000ba94 <[^>]*> nop
-+0000ba98 <[^>]*> nop
-+0000ba9c <[^>]*> nop
-+0000baa0 <[^>]*> nop
-+0000baa4 <[^>]*> nop
-+0000baa8 <[^>]*> nop
-+0000baac <[^>]*> nop
-+0000bab0 <[^>]*> nop
-+0000bab4 <[^>]*> nop
-+0000bab8 <[^>]*> nop
-+0000babc <[^>]*> nop
-+0000bac0 <[^>]*> nop
-+0000bac4 <[^>]*> nop
-+0000bac8 <[^>]*> nop
-+0000bacc <[^>]*> nop
-+0000bad0 <[^>]*> nop
-+0000bad4 <[^>]*> nop
-+0000bad8 <[^>]*> nop
-+0000badc <[^>]*> nop
-+0000bae0 <[^>]*> nop
-+0000bae4 <[^>]*> nop
-+0000bae8 <[^>]*> nop
-+0000baec <[^>]*> nop
-+0000baf0 <[^>]*> nop
-+0000baf4 <[^>]*> nop
-+0000baf8 <[^>]*> nop
-+0000bafc <[^>]*> nop
-+0000bb00 <[^>]*> nop
-+0000bb04 <[^>]*> nop
-+0000bb08 <[^>]*> nop
-+0000bb0c <[^>]*> nop
-+0000bb10 <[^>]*> nop
-+0000bb14 <[^>]*> nop
-+0000bb18 <[^>]*> nop
-+0000bb1c <[^>]*> nop
-+0000bb20 <[^>]*> nop
-+0000bb24 <[^>]*> nop
-+0000bb28 <[^>]*> nop
-+0000bb2c <[^>]*> nop
-+0000bb30 <[^>]*> nop
-+0000bb34 <[^>]*> nop
-+0000bb38 <[^>]*> nop
-+0000bb3c <[^>]*> nop
-+0000bb40 <[^>]*> nop
-+0000bb44 <[^>]*> nop
-+0000bb48 <[^>]*> nop
-+0000bb4c <[^>]*> nop
-+0000bb50 <[^>]*> nop
-+0000bb54 <[^>]*> nop
-+0000bb58 <[^>]*> nop
-+0000bb5c <[^>]*> nop
-+0000bb60 <[^>]*> nop
-+0000bb64 <[^>]*> nop
-+0000bb68 <[^>]*> nop
-+0000bb6c <[^>]*> nop
-+0000bb70 <[^>]*> nop
-+0000bb74 <[^>]*> nop
-+0000bb78 <[^>]*> nop
-+0000bb7c <[^>]*> nop
-+0000bb80 <[^>]*> nop
-+0000bb84 <[^>]*> nop
-+0000bb88 <[^>]*> nop
-+0000bb8c <[^>]*> nop
-+0000bb90 <[^>]*> nop
-+0000bb94 <[^>]*> nop
-+0000bb98 <[^>]*> nop
-+0000bb9c <[^>]*> nop
-+0000bba0 <[^>]*> nop
-+0000bba4 <[^>]*> nop
-+0000bba8 <[^>]*> nop
-+0000bbac <[^>]*> nop
-+0000bbb0 <[^>]*> nop
-+0000bbb4 <[^>]*> nop
-+0000bbb8 <[^>]*> nop
-+0000bbbc <[^>]*> nop
-+0000bbc0 <[^>]*> nop
-+0000bbc4 <[^>]*> nop
-+0000bbc8 <[^>]*> nop
-+0000bbcc <[^>]*> nop
-+0000bbd0 <[^>]*> nop
-+0000bbd4 <[^>]*> nop
-+0000bbd8 <[^>]*> nop
-+0000bbdc <[^>]*> nop
-+0000bbe0 <[^>]*> nop
-+0000bbe4 <[^>]*> nop
-+0000bbe8 <[^>]*> nop
-+0000bbec <[^>]*> nop
-+0000bbf0 <[^>]*> nop
-+0000bbf4 <[^>]*> nop
-+0000bbf8 <[^>]*> nop
-+0000bbfc <[^>]*> nop
-+0000bc00 <[^>]*> nop
-+0000bc04 <[^>]*> nop
-+0000bc08 <[^>]*> nop
-+0000bc0c <[^>]*> nop
-+0000bc10 <[^>]*> nop
-+0000bc14 <[^>]*> nop
-+0000bc18 <[^>]*> nop
-+0000bc1c <[^>]*> nop
-+0000bc20 <[^>]*> nop
-+0000bc24 <[^>]*> nop
-+0000bc28 <[^>]*> nop
-+0000bc2c <[^>]*> nop
-+0000bc30 <[^>]*> nop
-+0000bc34 <[^>]*> nop
-+0000bc38 <[^>]*> nop
-+0000bc3c <[^>]*> nop
-+0000bc40 <[^>]*> nop
-+0000bc44 <[^>]*> nop
-+0000bc48 <[^>]*> nop
-+0000bc4c <[^>]*> nop
-+0000bc50 <[^>]*> nop
-+0000bc54 <[^>]*> nop
-+0000bc58 <[^>]*> nop
-+0000bc5c <[^>]*> nop
-+0000bc60 <[^>]*> nop
-+0000bc64 <[^>]*> nop
-+0000bc68 <[^>]*> nop
-+0000bc6c <[^>]*> nop
-+0000bc70 <[^>]*> nop
-+0000bc74 <[^>]*> nop
-+0000bc78 <[^>]*> nop
-+0000bc7c <[^>]*> nop
-+0000bc80 <[^>]*> nop
-+0000bc84 <[^>]*> nop
-+0000bc88 <[^>]*> nop
-+0000bc8c <[^>]*> nop
-+0000bc90 <[^>]*> nop
-+0000bc94 <[^>]*> nop
-+0000bc98 <[^>]*> nop
-+0000bc9c <[^>]*> nop
-+0000bca0 <[^>]*> nop
-+0000bca4 <[^>]*> nop
-+0000bca8 <[^>]*> nop
-+0000bcac <[^>]*> nop
-+0000bcb0 <[^>]*> nop
-+0000bcb4 <[^>]*> nop
-+0000bcb8 <[^>]*> nop
-+0000bcbc <[^>]*> nop
-+0000bcc0 <[^>]*> nop
-+0000bcc4 <[^>]*> nop
-+0000bcc8 <[^>]*> nop
-+0000bccc <[^>]*> nop
-+0000bcd0 <[^>]*> nop
-+0000bcd4 <[^>]*> nop
-+0000bcd8 <[^>]*> nop
-+0000bcdc <[^>]*> nop
-+0000bce0 <[^>]*> nop
-+0000bce4 <[^>]*> nop
-+0000bce8 <[^>]*> nop
-+0000bcec <[^>]*> nop
-+0000bcf0 <[^>]*> nop
-+0000bcf4 <[^>]*> nop
-+0000bcf8 <[^>]*> nop
-+0000bcfc <[^>]*> nop
-+0000bd00 <[^>]*> nop
-+0000bd04 <[^>]*> nop
-+0000bd08 <[^>]*> nop
-+0000bd0c <[^>]*> nop
-+0000bd10 <[^>]*> nop
-+0000bd14 <[^>]*> nop
-+0000bd18 <[^>]*> nop
-+0000bd1c <[^>]*> nop
-+0000bd20 <[^>]*> nop
-+0000bd24 <[^>]*> nop
-+0000bd28 <[^>]*> nop
-+0000bd2c <[^>]*> nop
-+0000bd30 <[^>]*> nop
-+0000bd34 <[^>]*> nop
-+0000bd38 <[^>]*> nop
-+0000bd3c <[^>]*> nop
-+0000bd40 <[^>]*> nop
-+0000bd44 <[^>]*> nop
-+0000bd48 <[^>]*> nop
-+0000bd4c <[^>]*> nop
-+0000bd50 <[^>]*> nop
-+0000bd54 <[^>]*> nop
-+0000bd58 <[^>]*> nop
-+0000bd5c <[^>]*> nop
-+0000bd60 <[^>]*> nop
-+0000bd64 <[^>]*> nop
-+0000bd68 <[^>]*> nop
-+0000bd6c <[^>]*> nop
-+0000bd70 <[^>]*> nop
-+0000bd74 <[^>]*> nop
-+0000bd78 <[^>]*> nop
-+0000bd7c <[^>]*> nop
-+0000bd80 <[^>]*> nop
-+0000bd84 <[^>]*> nop
-+0000bd88 <[^>]*> nop
-+0000bd8c <[^>]*> nop
-+0000bd90 <[^>]*> nop
-+0000bd94 <[^>]*> nop
-+0000bd98 <[^>]*> nop
-+0000bd9c <[^>]*> nop
-+0000bda0 <[^>]*> nop
-+0000bda4 <[^>]*> nop
-+0000bda8 <[^>]*> nop
-+0000bdac <[^>]*> nop
-+0000bdb0 <[^>]*> nop
-+0000bdb4 <[^>]*> nop
-+0000bdb8 <[^>]*> nop
-+0000bdbc <[^>]*> nop
-+0000bdc0 <[^>]*> nop
-+0000bdc4 <[^>]*> nop
-+0000bdc8 <[^>]*> nop
-+0000bdcc <[^>]*> nop
-+0000bdd0 <[^>]*> nop
-+0000bdd4 <[^>]*> nop
-+0000bdd8 <[^>]*> nop
-+0000bddc <[^>]*> nop
-+0000bde0 <[^>]*> nop
-+0000bde4 <[^>]*> nop
-+0000bde8 <[^>]*> nop
-+0000bdec <[^>]*> nop
-+0000bdf0 <[^>]*> nop
-+0000bdf4 <[^>]*> nop
-+0000bdf8 <[^>]*> nop
-+0000bdfc <[^>]*> nop
-+0000be00 <[^>]*> nop
-+0000be04 <[^>]*> nop
-+0000be08 <[^>]*> nop
-+0000be0c <[^>]*> nop
-+0000be10 <[^>]*> nop
-+0000be14 <[^>]*> nop
-+0000be18 <[^>]*> nop
-+0000be1c <[^>]*> nop
-+0000be20 <[^>]*> nop
-+0000be24 <[^>]*> nop
-+0000be28 <[^>]*> nop
-+0000be2c <[^>]*> nop
-+0000be30 <[^>]*> nop
-+0000be34 <[^>]*> nop
-+0000be38 <[^>]*> nop
-+0000be3c <[^>]*> nop
-+0000be40 <[^>]*> nop
-+0000be44 <[^>]*> nop
-+0000be48 <[^>]*> nop
-+0000be4c <[^>]*> nop
-+0000be50 <[^>]*> nop
-+0000be54 <[^>]*> nop
-+0000be58 <[^>]*> nop
-+0000be5c <[^>]*> nop
-+0000be60 <[^>]*> nop
-+0000be64 <[^>]*> nop
-+0000be68 <[^>]*> nop
-+0000be6c <[^>]*> nop
-+0000be70 <[^>]*> nop
-+0000be74 <[^>]*> nop
-+0000be78 <[^>]*> nop
-+0000be7c <[^>]*> nop
-+0000be80 <[^>]*> nop
-+0000be84 <[^>]*> nop
-+0000be88 <[^>]*> nop
-+0000be8c <[^>]*> nop
-+0000be90 <[^>]*> nop
-+0000be94 <[^>]*> nop
-+0000be98 <[^>]*> nop
-+0000be9c <[^>]*> nop
-+0000bea0 <[^>]*> nop
-+0000bea4 <[^>]*> nop
-+0000bea8 <[^>]*> nop
-+0000beac <[^>]*> nop
-+0000beb0 <[^>]*> nop
-+0000beb4 <[^>]*> nop
-+0000beb8 <[^>]*> nop
-+0000bebc <[^>]*> nop
-+0000bec0 <[^>]*> nop
-+0000bec4 <[^>]*> nop
-+0000bec8 <[^>]*> nop
-+0000becc <[^>]*> nop
-+0000bed0 <[^>]*> nop
-+0000bed4 <[^>]*> nop
-+0000bed8 <[^>]*> nop
-+0000bedc <[^>]*> nop
-+0000bee0 <[^>]*> nop
-+0000bee4 <[^>]*> nop
-+0000bee8 <[^>]*> nop
-+0000beec <[^>]*> nop
-+0000bef0 <[^>]*> nop
-+0000bef4 <[^>]*> nop
-+0000bef8 <[^>]*> nop
-+0000befc <[^>]*> nop
-+0000bf00 <[^>]*> nop
-+0000bf04 <[^>]*> nop
-+0000bf08 <[^>]*> nop
-+0000bf0c <[^>]*> nop
-+0000bf10 <[^>]*> nop
-+0000bf14 <[^>]*> nop
-+0000bf18 <[^>]*> nop
-+0000bf1c <[^>]*> nop
-+0000bf20 <[^>]*> nop
-+0000bf24 <[^>]*> nop
-+0000bf28 <[^>]*> nop
-+0000bf2c <[^>]*> nop
-+0000bf30 <[^>]*> nop
-+0000bf34 <[^>]*> nop
-+0000bf38 <[^>]*> nop
-+0000bf3c <[^>]*> nop
-+0000bf40 <[^>]*> nop
-+0000bf44 <[^>]*> nop
-+0000bf48 <[^>]*> nop
-+0000bf4c <[^>]*> nop
-+0000bf50 <[^>]*> nop
-+0000bf54 <[^>]*> nop
-+0000bf58 <[^>]*> nop
-+0000bf5c <[^>]*> nop
-+0000bf60 <[^>]*> nop
-+0000bf64 <[^>]*> nop
-+0000bf68 <[^>]*> nop
-+0000bf6c <[^>]*> nop
-+0000bf70 <[^>]*> nop
-+0000bf74 <[^>]*> nop
-+0000bf78 <[^>]*> nop
-+0000bf7c <[^>]*> nop
-+0000bf80 <[^>]*> nop
-+0000bf84 <[^>]*> nop
-+0000bf88 <[^>]*> nop
-+0000bf8c <[^>]*> nop
-+0000bf90 <[^>]*> nop
-+0000bf94 <[^>]*> nop
-+0000bf98 <[^>]*> nop
-+0000bf9c <[^>]*> nop
-+0000bfa0 <[^>]*> nop
-+0000bfa4 <[^>]*> nop
-+0000bfa8 <[^>]*> nop
-+0000bfac <[^>]*> nop
-+0000bfb0 <[^>]*> nop
-+0000bfb4 <[^>]*> nop
-+0000bfb8 <[^>]*> nop
-+0000bfbc <[^>]*> nop
-+0000bfc0 <[^>]*> nop
-+0000bfc4 <[^>]*> nop
-+0000bfc8 <[^>]*> nop
-+0000bfcc <[^>]*> nop
-+0000bfd0 <[^>]*> nop
-+0000bfd4 <[^>]*> nop
-+0000bfd8 <[^>]*> nop
-+0000bfdc <[^>]*> nop
-+0000bfe0 <[^>]*> nop
-+0000bfe4 <[^>]*> nop
-+0000bfe8 <[^>]*> nop
-+0000bfec <[^>]*> nop
-+0000bff0 <[^>]*> nop
-+0000bff4 <[^>]*> nop
-+0000bff8 <[^>]*> nop
-+0000bffc <[^>]*> nop
-+0000c000 <[^>]*> nop
-+0000c004 <[^>]*> nop
-+0000c008 <[^>]*> nop
-+0000c00c <[^>]*> nop
-+0000c010 <[^>]*> nop
-+0000c014 <[^>]*> nop
-+0000c018 <[^>]*> nop
-+0000c01c <[^>]*> nop
-+0000c020 <[^>]*> nop
-+0000c024 <[^>]*> nop
-+0000c028 <[^>]*> nop
-+0000c02c <[^>]*> nop
-+0000c030 <[^>]*> nop
-+0000c034 <[^>]*> nop
-+0000c038 <[^>]*> nop
-+0000c03c <[^>]*> nop
-+0000c040 <[^>]*> nop
-+0000c044 <[^>]*> nop
-+0000c048 <[^>]*> nop
-+0000c04c <[^>]*> nop
-+0000c050 <[^>]*> nop
-+0000c054 <[^>]*> nop
-+0000c058 <[^>]*> nop
-+0000c05c <[^>]*> nop
-+0000c060 <[^>]*> nop
-+0000c064 <[^>]*> nop
-+0000c068 <[^>]*> nop
-+0000c06c <[^>]*> nop
-+0000c070 <[^>]*> nop
-+0000c074 <[^>]*> nop
-+0000c078 <[^>]*> nop
-+0000c07c <[^>]*> nop
-+0000c080 <[^>]*> nop
-+0000c084 <[^>]*> nop
-+0000c088 <[^>]*> nop
-+0000c08c <[^>]*> nop
-+0000c090 <[^>]*> nop
-+0000c094 <[^>]*> nop
-+0000c098 <[^>]*> nop
-+0000c09c <[^>]*> nop
-+0000c0a0 <[^>]*> nop
-+0000c0a4 <[^>]*> nop
-+0000c0a8 <[^>]*> nop
-+0000c0ac <[^>]*> nop
-+0000c0b0 <[^>]*> nop
-+0000c0b4 <[^>]*> nop
-+0000c0b8 <[^>]*> nop
-+0000c0bc <[^>]*> nop
-+0000c0c0 <[^>]*> nop
-+0000c0c4 <[^>]*> nop
-+0000c0c8 <[^>]*> nop
-+0000c0cc <[^>]*> nop
-+0000c0d0 <[^>]*> nop
-+0000c0d4 <[^>]*> nop
-+0000c0d8 <[^>]*> nop
-+0000c0dc <[^>]*> nop
-+0000c0e0 <[^>]*> nop
-+0000c0e4 <[^>]*> nop
-+0000c0e8 <[^>]*> nop
-+0000c0ec <[^>]*> nop
-+0000c0f0 <[^>]*> nop
-+0000c0f4 <[^>]*> nop
-+0000c0f8 <[^>]*> nop
-+0000c0fc <[^>]*> nop
-+0000c100 <[^>]*> nop
-+0000c104 <[^>]*> nop
-+0000c108 <[^>]*> nop
-+0000c10c <[^>]*> nop
-+0000c110 <[^>]*> nop
-+0000c114 <[^>]*> nop
-+0000c118 <[^>]*> nop
-+0000c11c <[^>]*> nop
-+0000c120 <[^>]*> nop
-+0000c124 <[^>]*> nop
-+0000c128 <[^>]*> nop
-+0000c12c <[^>]*> nop
-+0000c130 <[^>]*> nop
-+0000c134 <[^>]*> nop
-+0000c138 <[^>]*> nop
-+0000c13c <[^>]*> nop
-+0000c140 <[^>]*> nop
-+0000c144 <[^>]*> nop
-+0000c148 <[^>]*> nop
-+0000c14c <[^>]*> nop
-+0000c150 <[^>]*> nop
-+0000c154 <[^>]*> nop
-+0000c158 <[^>]*> nop
-+0000c15c <[^>]*> nop
-+0000c160 <[^>]*> nop
-+0000c164 <[^>]*> nop
-+0000c168 <[^>]*> nop
-+0000c16c <[^>]*> nop
-+0000c170 <[^>]*> nop
-+0000c174 <[^>]*> nop
-+0000c178 <[^>]*> nop
-+0000c17c <[^>]*> nop
-+0000c180 <[^>]*> nop
-+0000c184 <[^>]*> nop
-+0000c188 <[^>]*> nop
-+0000c18c <[^>]*> nop
-+0000c190 <[^>]*> nop
-+0000c194 <[^>]*> nop
-+0000c198 <[^>]*> nop
-+0000c19c <[^>]*> nop
-+0000c1a0 <[^>]*> nop
-+0000c1a4 <[^>]*> nop
-+0000c1a8 <[^>]*> nop
-+0000c1ac <[^>]*> nop
-+0000c1b0 <[^>]*> nop
-+0000c1b4 <[^>]*> nop
-+0000c1b8 <[^>]*> nop
-+0000c1bc <[^>]*> nop
-+0000c1c0 <[^>]*> nop
-+0000c1c4 <[^>]*> nop
-+0000c1c8 <[^>]*> nop
-+0000c1cc <[^>]*> nop
-+0000c1d0 <[^>]*> nop
-+0000c1d4 <[^>]*> nop
-+0000c1d8 <[^>]*> nop
-+0000c1dc <[^>]*> nop
-+0000c1e0 <[^>]*> nop
-+0000c1e4 <[^>]*> nop
-+0000c1e8 <[^>]*> nop
-+0000c1ec <[^>]*> nop
-+0000c1f0 <[^>]*> nop
-+0000c1f4 <[^>]*> nop
-+0000c1f8 <[^>]*> nop
-+0000c1fc <[^>]*> nop
-+0000c200 <[^>]*> nop
-+0000c204 <[^>]*> nop
-+0000c208 <[^>]*> nop
-+0000c20c <[^>]*> nop
-+0000c210 <[^>]*> nop
-+0000c214 <[^>]*> nop
-+0000c218 <[^>]*> nop
-+0000c21c <[^>]*> nop
-+0000c220 <[^>]*> nop
-+0000c224 <[^>]*> nop
-+0000c228 <[^>]*> nop
-+0000c22c <[^>]*> nop
-+0000c230 <[^>]*> nop
-+0000c234 <[^>]*> nop
-+0000c238 <[^>]*> nop
-+0000c23c <[^>]*> nop
-+0000c240 <[^>]*> nop
-+0000c244 <[^>]*> nop
-+0000c248 <[^>]*> nop
-+0000c24c <[^>]*> nop
-+0000c250 <[^>]*> nop
-+0000c254 <[^>]*> nop
-+0000c258 <[^>]*> nop
-+0000c25c <[^>]*> nop
-+0000c260 <[^>]*> nop
-+0000c264 <[^>]*> nop
-+0000c268 <[^>]*> nop
-+0000c26c <[^>]*> nop
-+0000c270 <[^>]*> nop
-+0000c274 <[^>]*> nop
-+0000c278 <[^>]*> nop
-+0000c27c <[^>]*> nop
-+0000c280 <[^>]*> nop
-+0000c284 <[^>]*> nop
-+0000c288 <[^>]*> nop
-+0000c28c <[^>]*> nop
-+0000c290 <[^>]*> nop
-+0000c294 <[^>]*> nop
-+0000c298 <[^>]*> nop
-+0000c29c <[^>]*> nop
-+0000c2a0 <[^>]*> nop
-+0000c2a4 <[^>]*> nop
-+0000c2a8 <[^>]*> nop
-+0000c2ac <[^>]*> nop
-+0000c2b0 <[^>]*> nop
-+0000c2b4 <[^>]*> nop
-+0000c2b8 <[^>]*> nop
-+0000c2bc <[^>]*> nop
-+0000c2c0 <[^>]*> nop
-+0000c2c4 <[^>]*> nop
-+0000c2c8 <[^>]*> nop
-+0000c2cc <[^>]*> nop
-+0000c2d0 <[^>]*> nop
-+0000c2d4 <[^>]*> nop
-+0000c2d8 <[^>]*> nop
-+0000c2dc <[^>]*> nop
-+0000c2e0 <[^>]*> nop
-+0000c2e4 <[^>]*> nop
-+0000c2e8 <[^>]*> nop
-+0000c2ec <[^>]*> nop
-+0000c2f0 <[^>]*> nop
-+0000c2f4 <[^>]*> nop
-+0000c2f8 <[^>]*> nop
-+0000c2fc <[^>]*> nop
-+0000c300 <[^>]*> nop
-+0000c304 <[^>]*> nop
-+0000c308 <[^>]*> nop
-+0000c30c <[^>]*> nop
-+0000c310 <[^>]*> nop
-+0000c314 <[^>]*> nop
-+0000c318 <[^>]*> nop
-+0000c31c <[^>]*> nop
-+0000c320 <[^>]*> nop
-+0000c324 <[^>]*> nop
-+0000c328 <[^>]*> nop
-+0000c32c <[^>]*> nop
-+0000c330 <[^>]*> nop
-+0000c334 <[^>]*> nop
-+0000c338 <[^>]*> nop
-+0000c33c <[^>]*> nop
-+0000c340 <[^>]*> nop
-+0000c344 <[^>]*> nop
-+0000c348 <[^>]*> nop
-+0000c34c <[^>]*> nop
-+0000c350 <[^>]*> nop
-+0000c354 <[^>]*> nop
-+0000c358 <[^>]*> nop
-+0000c35c <[^>]*> nop
-+0000c360 <[^>]*> nop
-+0000c364 <[^>]*> nop
-+0000c368 <[^>]*> nop
-+0000c36c <[^>]*> nop
-+0000c370 <[^>]*> nop
-+0000c374 <[^>]*> nop
-+0000c378 <[^>]*> nop
-+0000c37c <[^>]*> nop
-+0000c380 <[^>]*> nop
-+0000c384 <[^>]*> nop
-+0000c388 <[^>]*> nop
-+0000c38c <[^>]*> nop
-+0000c390 <[^>]*> nop
-+0000c394 <[^>]*> nop
-+0000c398 <[^>]*> nop
-+0000c39c <[^>]*> nop
-+0000c3a0 <[^>]*> nop
-+0000c3a4 <[^>]*> nop
-+0000c3a8 <[^>]*> nop
-+0000c3ac <[^>]*> nop
-+0000c3b0 <[^>]*> nop
-+0000c3b4 <[^>]*> nop
-+0000c3b8 <[^>]*> nop
-+0000c3bc <[^>]*> nop
-+0000c3c0 <[^>]*> nop
-+0000c3c4 <[^>]*> nop
-+0000c3c8 <[^>]*> nop
-+0000c3cc <[^>]*> nop
-+0000c3d0 <[^>]*> nop
-+0000c3d4 <[^>]*> nop
-+0000c3d8 <[^>]*> nop
-+0000c3dc <[^>]*> nop
-+0000c3e0 <[^>]*> nop
-+0000c3e4 <[^>]*> nop
-+0000c3e8 <[^>]*> nop
-+0000c3ec <[^>]*> nop
-+0000c3f0 <[^>]*> nop
-+0000c3f4 <[^>]*> nop
-+0000c3f8 <[^>]*> nop
-+0000c3fc <[^>]*> nop
-+0000c400 <[^>]*> nop
-+0000c404 <[^>]*> nop
-+0000c408 <[^>]*> nop
-+0000c40c <[^>]*> nop
-+0000c410 <[^>]*> nop
-+0000c414 <[^>]*> nop
-+0000c418 <[^>]*> nop
-+0000c41c <[^>]*> nop
-+0000c420 <[^>]*> nop
-+0000c424 <[^>]*> nop
-+0000c428 <[^>]*> nop
-+0000c42c <[^>]*> nop
-+0000c430 <[^>]*> nop
-+0000c434 <[^>]*> nop
-+0000c438 <[^>]*> nop
-+0000c43c <[^>]*> nop
-+0000c440 <[^>]*> nop
-+0000c444 <[^>]*> nop
-+0000c448 <[^>]*> nop
-+0000c44c <[^>]*> nop
-+0000c450 <[^>]*> nop
-+0000c454 <[^>]*> nop
-+0000c458 <[^>]*> nop
-+0000c45c <[^>]*> nop
-+0000c460 <[^>]*> nop
-+0000c464 <[^>]*> nop
-+0000c468 <[^>]*> nop
-+0000c46c <[^>]*> nop
-+0000c470 <[^>]*> nop
-+0000c474 <[^>]*> nop
-+0000c478 <[^>]*> nop
-+0000c47c <[^>]*> nop
-+0000c480 <[^>]*> nop
-+0000c484 <[^>]*> nop
-+0000c488 <[^>]*> nop
-+0000c48c <[^>]*> nop
-+0000c490 <[^>]*> nop
-+0000c494 <[^>]*> nop
-+0000c498 <[^>]*> nop
-+0000c49c <[^>]*> nop
-+0000c4a0 <[^>]*> nop
-+0000c4a4 <[^>]*> nop
-+0000c4a8 <[^>]*> nop
-+0000c4ac <[^>]*> nop
-+0000c4b0 <[^>]*> nop
-+0000c4b4 <[^>]*> nop
-+0000c4b8 <[^>]*> nop
-+0000c4bc <[^>]*> nop
-+0000c4c0 <[^>]*> nop
-+0000c4c4 <[^>]*> nop
-+0000c4c8 <[^>]*> nop
-+0000c4cc <[^>]*> nop
-+0000c4d0 <[^>]*> nop
-+0000c4d4 <[^>]*> nop
-+0000c4d8 <[^>]*> nop
-+0000c4dc <[^>]*> nop
-+0000c4e0 <[^>]*> nop
-+0000c4e4 <[^>]*> nop
-+0000c4e8 <[^>]*> nop
-+0000c4ec <[^>]*> nop
-+0000c4f0 <[^>]*> nop
-+0000c4f4 <[^>]*> nop
-+0000c4f8 <[^>]*> nop
-+0000c4fc <[^>]*> nop
-+0000c500 <[^>]*> nop
-+0000c504 <[^>]*> nop
-+0000c508 <[^>]*> nop
-+0000c50c <[^>]*> nop
-+0000c510 <[^>]*> nop
-+0000c514 <[^>]*> nop
-+0000c518 <[^>]*> nop
-+0000c51c <[^>]*> nop
-+0000c520 <[^>]*> nop
-+0000c524 <[^>]*> nop
-+0000c528 <[^>]*> nop
-+0000c52c <[^>]*> nop
-+0000c530 <[^>]*> nop
-+0000c534 <[^>]*> nop
-+0000c538 <[^>]*> nop
-+0000c53c <[^>]*> nop
-+0000c540 <[^>]*> nop
-+0000c544 <[^>]*> nop
-+0000c548 <[^>]*> nop
-+0000c54c <[^>]*> nop
-+0000c550 <[^>]*> nop
-+0000c554 <[^>]*> nop
-+0000c558 <[^>]*> nop
-+0000c55c <[^>]*> nop
-+0000c560 <[^>]*> nop
-+0000c564 <[^>]*> nop
-+0000c568 <[^>]*> nop
-+0000c56c <[^>]*> nop
-+0000c570 <[^>]*> nop
-+0000c574 <[^>]*> nop
-+0000c578 <[^>]*> nop
-+0000c57c <[^>]*> nop
-+0000c580 <[^>]*> nop
-+0000c584 <[^>]*> nop
-+0000c588 <[^>]*> nop
-+0000c58c <[^>]*> nop
-+0000c590 <[^>]*> nop
-+0000c594 <[^>]*> nop
-+0000c598 <[^>]*> nop
-+0000c59c <[^>]*> nop
-+0000c5a0 <[^>]*> nop
-+0000c5a4 <[^>]*> nop
-+0000c5a8 <[^>]*> nop
-+0000c5ac <[^>]*> nop
-+0000c5b0 <[^>]*> nop
-+0000c5b4 <[^>]*> nop
-+0000c5b8 <[^>]*> nop
-+0000c5bc <[^>]*> nop
-+0000c5c0 <[^>]*> nop
-+0000c5c4 <[^>]*> nop
-+0000c5c8 <[^>]*> nop
-+0000c5cc <[^>]*> nop
-+0000c5d0 <[^>]*> nop
-+0000c5d4 <[^>]*> nop
-+0000c5d8 <[^>]*> nop
-+0000c5dc <[^>]*> nop
-+0000c5e0 <[^>]*> nop
-+0000c5e4 <[^>]*> nop
-+0000c5e8 <[^>]*> nop
-+0000c5ec <[^>]*> nop
-+0000c5f0 <[^>]*> nop
-+0000c5f4 <[^>]*> nop
-+0000c5f8 <[^>]*> nop
-+0000c5fc <[^>]*> nop
-+0000c600 <[^>]*> nop
-+0000c604 <[^>]*> nop
-+0000c608 <[^>]*> nop
-+0000c60c <[^>]*> nop
-+0000c610 <[^>]*> nop
-+0000c614 <[^>]*> nop
-+0000c618 <[^>]*> nop
-+0000c61c <[^>]*> nop
-+0000c620 <[^>]*> nop
-+0000c624 <[^>]*> nop
-+0000c628 <[^>]*> nop
-+0000c62c <[^>]*> nop
-+0000c630 <[^>]*> nop
-+0000c634 <[^>]*> nop
-+0000c638 <[^>]*> nop
-+0000c63c <[^>]*> nop
-+0000c640 <[^>]*> nop
-+0000c644 <[^>]*> nop
-+0000c648 <[^>]*> nop
-+0000c64c <[^>]*> nop
-+0000c650 <[^>]*> nop
-+0000c654 <[^>]*> nop
-+0000c658 <[^>]*> nop
-+0000c65c <[^>]*> nop
-+0000c660 <[^>]*> nop
-+0000c664 <[^>]*> nop
-+0000c668 <[^>]*> nop
-+0000c66c <[^>]*> nop
-+0000c670 <[^>]*> nop
-+0000c674 <[^>]*> nop
-+0000c678 <[^>]*> nop
-+0000c67c <[^>]*> nop
-+0000c680 <[^>]*> nop
-+0000c684 <[^>]*> nop
-+0000c688 <[^>]*> nop
-+0000c68c <[^>]*> nop
-+0000c690 <[^>]*> nop
-+0000c694 <[^>]*> nop
-+0000c698 <[^>]*> nop
-+0000c69c <[^>]*> nop
-+0000c6a0 <[^>]*> nop
-+0000c6a4 <[^>]*> nop
-+0000c6a8 <[^>]*> nop
-+0000c6ac <[^>]*> nop
-+0000c6b0 <[^>]*> nop
-+0000c6b4 <[^>]*> nop
-+0000c6b8 <[^>]*> nop
-+0000c6bc <[^>]*> nop
-+0000c6c0 <[^>]*> nop
-+0000c6c4 <[^>]*> nop
-+0000c6c8 <[^>]*> nop
-+0000c6cc <[^>]*> nop
-+0000c6d0 <[^>]*> nop
-+0000c6d4 <[^>]*> nop
-+0000c6d8 <[^>]*> nop
-+0000c6dc <[^>]*> nop
-+0000c6e0 <[^>]*> nop
-+0000c6e4 <[^>]*> nop
-+0000c6e8 <[^>]*> nop
-+0000c6ec <[^>]*> nop
-+0000c6f0 <[^>]*> nop
-+0000c6f4 <[^>]*> nop
-+0000c6f8 <[^>]*> nop
-+0000c6fc <[^>]*> nop
-+0000c700 <[^>]*> nop
-+0000c704 <[^>]*> nop
-+0000c708 <[^>]*> nop
-+0000c70c <[^>]*> nop
-+0000c710 <[^>]*> nop
-+0000c714 <[^>]*> nop
-+0000c718 <[^>]*> nop
-+0000c71c <[^>]*> nop
-+0000c720 <[^>]*> nop
-+0000c724 <[^>]*> nop
-+0000c728 <[^>]*> nop
-+0000c72c <[^>]*> nop
-+0000c730 <[^>]*> nop
-+0000c734 <[^>]*> nop
-+0000c738 <[^>]*> nop
-+0000c73c <[^>]*> nop
-+0000c740 <[^>]*> nop
-+0000c744 <[^>]*> nop
-+0000c748 <[^>]*> nop
-+0000c74c <[^>]*> nop
-+0000c750 <[^>]*> nop
-+0000c754 <[^>]*> nop
-+0000c758 <[^>]*> nop
-+0000c75c <[^>]*> nop
-+0000c760 <[^>]*> nop
-+0000c764 <[^>]*> nop
-+0000c768 <[^>]*> nop
-+0000c76c <[^>]*> nop
-+0000c770 <[^>]*> nop
-+0000c774 <[^>]*> nop
-+0000c778 <[^>]*> nop
-+0000c77c <[^>]*> nop
-+0000c780 <[^>]*> nop
-+0000c784 <[^>]*> nop
-+0000c788 <[^>]*> nop
-+0000c78c <[^>]*> nop
-+0000c790 <[^>]*> nop
-+0000c794 <[^>]*> nop
-+0000c798 <[^>]*> nop
-+0000c79c <[^>]*> nop
-+0000c7a0 <[^>]*> nop
-+0000c7a4 <[^>]*> nop
-+0000c7a8 <[^>]*> nop
-+0000c7ac <[^>]*> nop
-+0000c7b0 <[^>]*> nop
-+0000c7b4 <[^>]*> nop
-+0000c7b8 <[^>]*> nop
-+0000c7bc <[^>]*> nop
-+0000c7c0 <[^>]*> nop
-+0000c7c4 <[^>]*> nop
-+0000c7c8 <[^>]*> nop
-+0000c7cc <[^>]*> nop
-+0000c7d0 <[^>]*> nop
-+0000c7d4 <[^>]*> nop
-+0000c7d8 <[^>]*> nop
-+0000c7dc <[^>]*> nop
-+0000c7e0 <[^>]*> nop
-+0000c7e4 <[^>]*> nop
-+0000c7e8 <[^>]*> nop
-+0000c7ec <[^>]*> nop
-+0000c7f0 <[^>]*> nop
-+0000c7f4 <[^>]*> nop
-+0000c7f8 <[^>]*> nop
-+0000c7fc <[^>]*> nop
-+0000c800 <[^>]*> nop
-+0000c804 <[^>]*> nop
-+0000c808 <[^>]*> nop
-+0000c80c <[^>]*> nop
-+0000c810 <[^>]*> nop
-+0000c814 <[^>]*> nop
-+0000c818 <[^>]*> nop
-+0000c81c <[^>]*> nop
-+0000c820 <[^>]*> nop
-+0000c824 <[^>]*> nop
-+0000c828 <[^>]*> nop
-+0000c82c <[^>]*> nop
-+0000c830 <[^>]*> nop
-+0000c834 <[^>]*> nop
-+0000c838 <[^>]*> nop
-+0000c83c <[^>]*> nop
-+0000c840 <[^>]*> nop
-+0000c844 <[^>]*> nop
-+0000c848 <[^>]*> nop
-+0000c84c <[^>]*> nop
-+0000c850 <[^>]*> nop
-+0000c854 <[^>]*> nop
-+0000c858 <[^>]*> nop
-+0000c85c <[^>]*> nop
-+0000c860 <[^>]*> nop
-+0000c864 <[^>]*> nop
-+0000c868 <[^>]*> nop
-+0000c86c <[^>]*> nop
-+0000c870 <[^>]*> nop
-+0000c874 <[^>]*> nop
-+0000c878 <[^>]*> nop
-+0000c87c <[^>]*> nop
-+0000c880 <[^>]*> nop
-+0000c884 <[^>]*> nop
-+0000c888 <[^>]*> nop
-+0000c88c <[^>]*> nop
-+0000c890 <[^>]*> nop
-+0000c894 <[^>]*> nop
-+0000c898 <[^>]*> nop
-+0000c89c <[^>]*> nop
-+0000c8a0 <[^>]*> nop
-+0000c8a4 <[^>]*> nop
-+0000c8a8 <[^>]*> nop
-+0000c8ac <[^>]*> nop
-+0000c8b0 <[^>]*> nop
-+0000c8b4 <[^>]*> nop
-+0000c8b8 <[^>]*> nop
-+0000c8bc <[^>]*> nop
-+0000c8c0 <[^>]*> nop
-+0000c8c4 <[^>]*> nop
-+0000c8c8 <[^>]*> nop
-+0000c8cc <[^>]*> nop
-+0000c8d0 <[^>]*> nop
-+0000c8d4 <[^>]*> nop
-+0000c8d8 <[^>]*> nop
-+0000c8dc <[^>]*> nop
-+0000c8e0 <[^>]*> nop
-+0000c8e4 <[^>]*> nop
-+0000c8e8 <[^>]*> nop
-+0000c8ec <[^>]*> nop
-+0000c8f0 <[^>]*> nop
-+0000c8f4 <[^>]*> nop
-+0000c8f8 <[^>]*> nop
-+0000c8fc <[^>]*> nop
-+0000c900 <[^>]*> nop
-+0000c904 <[^>]*> nop
-+0000c908 <[^>]*> nop
-+0000c90c <[^>]*> nop
-+0000c910 <[^>]*> nop
-+0000c914 <[^>]*> nop
-+0000c918 <[^>]*> nop
-+0000c91c <[^>]*> nop
-+0000c920 <[^>]*> nop
-+0000c924 <[^>]*> nop
-+0000c928 <[^>]*> nop
-+0000c92c <[^>]*> nop
-+0000c930 <[^>]*> nop
-+0000c934 <[^>]*> nop
-+0000c938 <[^>]*> nop
-+0000c93c <[^>]*> nop
-+0000c940 <[^>]*> nop
-+0000c944 <[^>]*> nop
-+0000c948 <[^>]*> nop
-+0000c94c <[^>]*> nop
-+0000c950 <[^>]*> nop
-+0000c954 <[^>]*> nop
-+0000c958 <[^>]*> nop
-+0000c95c <[^>]*> nop
-+0000c960 <[^>]*> nop
-+0000c964 <[^>]*> nop
-+0000c968 <[^>]*> nop
-+0000c96c <[^>]*> nop
-+0000c970 <[^>]*> nop
-+0000c974 <[^>]*> nop
-+0000c978 <[^>]*> nop
-+0000c97c <[^>]*> nop
-+0000c980 <[^>]*> nop
-+0000c984 <[^>]*> nop
-+0000c988 <[^>]*> nop
-+0000c98c <[^>]*> nop
-+0000c990 <[^>]*> nop
-+0000c994 <[^>]*> nop
-+0000c998 <[^>]*> nop
-+0000c99c <[^>]*> nop
-+0000c9a0 <[^>]*> nop
-+0000c9a4 <[^>]*> nop
-+0000c9a8 <[^>]*> nop
-+0000c9ac <[^>]*> nop
-+0000c9b0 <[^>]*> nop
-+0000c9b4 <[^>]*> nop
-+0000c9b8 <[^>]*> nop
-+0000c9bc <[^>]*> nop
-+0000c9c0 <[^>]*> nop
-+0000c9c4 <[^>]*> nop
-+0000c9c8 <[^>]*> nop
-+0000c9cc <[^>]*> nop
-+0000c9d0 <[^>]*> nop
-+0000c9d4 <[^>]*> nop
-+0000c9d8 <[^>]*> nop
-+0000c9dc <[^>]*> nop
-+0000c9e0 <[^>]*> nop
-+0000c9e4 <[^>]*> nop
-+0000c9e8 <[^>]*> nop
-+0000c9ec <[^>]*> nop
-+0000c9f0 <[^>]*> nop
-+0000c9f4 <[^>]*> nop
-+0000c9f8 <[^>]*> nop
-+0000c9fc <[^>]*> nop
-+0000ca00 <[^>]*> nop
-+0000ca04 <[^>]*> nop
-+0000ca08 <[^>]*> nop
-+0000ca0c <[^>]*> nop
-+0000ca10 <[^>]*> nop
-+0000ca14 <[^>]*> nop
-+0000ca18 <[^>]*> nop
-+0000ca1c <[^>]*> nop
-+0000ca20 <[^>]*> nop
-+0000ca24 <[^>]*> nop
-+0000ca28 <[^>]*> nop
-+0000ca2c <[^>]*> nop
-+0000ca30 <[^>]*> nop
-+0000ca34 <[^>]*> nop
-+0000ca38 <[^>]*> nop
-+0000ca3c <[^>]*> nop
-+0000ca40 <[^>]*> nop
-+0000ca44 <[^>]*> nop
-+0000ca48 <[^>]*> nop
-+0000ca4c <[^>]*> nop
-+0000ca50 <[^>]*> nop
-+0000ca54 <[^>]*> nop
-+0000ca58 <[^>]*> nop
-+0000ca5c <[^>]*> nop
-+0000ca60 <[^>]*> nop
-+0000ca64 <[^>]*> nop
-+0000ca68 <[^>]*> nop
-+0000ca6c <[^>]*> nop
-+0000ca70 <[^>]*> nop
-+0000ca74 <[^>]*> nop
-+0000ca78 <[^>]*> nop
-+0000ca7c <[^>]*> nop
-+0000ca80 <[^>]*> nop
-+0000ca84 <[^>]*> nop
-+0000ca88 <[^>]*> nop
-+0000ca8c <[^>]*> nop
-+0000ca90 <[^>]*> nop
-+0000ca94 <[^>]*> nop
-+0000ca98 <[^>]*> nop
-+0000ca9c <[^>]*> nop
-+0000caa0 <[^>]*> nop
-+0000caa4 <[^>]*> nop
-+0000caa8 <[^>]*> nop
-+0000caac <[^>]*> nop
-+0000cab0 <[^>]*> nop
-+0000cab4 <[^>]*> nop
-+0000cab8 <[^>]*> nop
-+0000cabc <[^>]*> nop
-+0000cac0 <[^>]*> nop
-+0000cac4 <[^>]*> nop
-+0000cac8 <[^>]*> nop
-+0000cacc <[^>]*> nop
-+0000cad0 <[^>]*> nop
-+0000cad4 <[^>]*> nop
-+0000cad8 <[^>]*> nop
-+0000cadc <[^>]*> nop
-+0000cae0 <[^>]*> nop
-+0000cae4 <[^>]*> nop
-+0000cae8 <[^>]*> nop
-+0000caec <[^>]*> nop
-+0000caf0 <[^>]*> nop
-+0000caf4 <[^>]*> nop
-+0000caf8 <[^>]*> nop
-+0000cafc <[^>]*> nop
-+0000cb00 <[^>]*> nop
-+0000cb04 <[^>]*> nop
-+0000cb08 <[^>]*> nop
-+0000cb0c <[^>]*> nop
-+0000cb10 <[^>]*> nop
-+0000cb14 <[^>]*> nop
-+0000cb18 <[^>]*> nop
-+0000cb1c <[^>]*> nop
-+0000cb20 <[^>]*> nop
-+0000cb24 <[^>]*> nop
-+0000cb28 <[^>]*> nop
-+0000cb2c <[^>]*> nop
-+0000cb30 <[^>]*> nop
-+0000cb34 <[^>]*> nop
-+0000cb38 <[^>]*> nop
-+0000cb3c <[^>]*> nop
-+0000cb40 <[^>]*> nop
-+0000cb44 <[^>]*> nop
-+0000cb48 <[^>]*> nop
-+0000cb4c <[^>]*> nop
-+0000cb50 <[^>]*> nop
-+0000cb54 <[^>]*> nop
-+0000cb58 <[^>]*> nop
-+0000cb5c <[^>]*> nop
-+0000cb60 <[^>]*> nop
-+0000cb64 <[^>]*> nop
-+0000cb68 <[^>]*> nop
-+0000cb6c <[^>]*> nop
-+0000cb70 <[^>]*> nop
-+0000cb74 <[^>]*> nop
-+0000cb78 <[^>]*> nop
-+0000cb7c <[^>]*> nop
-+0000cb80 <[^>]*> nop
-+0000cb84 <[^>]*> nop
-+0000cb88 <[^>]*> nop
-+0000cb8c <[^>]*> nop
-+0000cb90 <[^>]*> nop
-+0000cb94 <[^>]*> nop
-+0000cb98 <[^>]*> nop
-+0000cb9c <[^>]*> nop
-+0000cba0 <[^>]*> nop
-+0000cba4 <[^>]*> nop
-+0000cba8 <[^>]*> nop
-+0000cbac <[^>]*> nop
-+0000cbb0 <[^>]*> nop
-+0000cbb4 <[^>]*> nop
-+0000cbb8 <[^>]*> nop
-+0000cbbc <[^>]*> nop
-+0000cbc0 <[^>]*> nop
-+0000cbc4 <[^>]*> nop
-+0000cbc8 <[^>]*> nop
-+0000cbcc <[^>]*> nop
-+0000cbd0 <[^>]*> nop
-+0000cbd4 <[^>]*> nop
-+0000cbd8 <[^>]*> nop
-+0000cbdc <[^>]*> nop
-+0000cbe0 <[^>]*> nop
-+0000cbe4 <[^>]*> nop
-+0000cbe8 <[^>]*> nop
-+0000cbec <[^>]*> nop
-+0000cbf0 <[^>]*> nop
-+0000cbf4 <[^>]*> nop
-+0000cbf8 <[^>]*> nop
-+0000cbfc <[^>]*> nop
-+0000cc00 <[^>]*> nop
-+0000cc04 <[^>]*> nop
-+0000cc08 <[^>]*> nop
-+0000cc0c <[^>]*> nop
-+0000cc10 <[^>]*> nop
-+0000cc14 <[^>]*> nop
-+0000cc18 <[^>]*> nop
-+0000cc1c <[^>]*> nop
-+0000cc20 <[^>]*> nop
-+0000cc24 <[^>]*> nop
-+0000cc28 <[^>]*> nop
-+0000cc2c <[^>]*> nop
-+0000cc30 <[^>]*> nop
-+0000cc34 <[^>]*> nop
-+0000cc38 <[^>]*> nop
-+0000cc3c <[^>]*> nop
-+0000cc40 <[^>]*> nop
-+0000cc44 <[^>]*> nop
-+0000cc48 <[^>]*> nop
-+0000cc4c <[^>]*> nop
-+0000cc50 <[^>]*> nop
-+0000cc54 <[^>]*> nop
-+0000cc58 <[^>]*> nop
-+0000cc5c <[^>]*> nop
-+0000cc60 <[^>]*> nop
-+0000cc64 <[^>]*> nop
-+0000cc68 <[^>]*> nop
-+0000cc6c <[^>]*> nop
-+0000cc70 <[^>]*> nop
-+0000cc74 <[^>]*> nop
-+0000cc78 <[^>]*> nop
-+0000cc7c <[^>]*> nop
-+0000cc80 <[^>]*> nop
-+0000cc84 <[^>]*> nop
-+0000cc88 <[^>]*> nop
-+0000cc8c <[^>]*> nop
-+0000cc90 <[^>]*> nop
-+0000cc94 <[^>]*> nop
-+0000cc98 <[^>]*> nop
-+0000cc9c <[^>]*> nop
-+0000cca0 <[^>]*> nop
-+0000cca4 <[^>]*> nop
-+0000cca8 <[^>]*> nop
-+0000ccac <[^>]*> nop
-+0000ccb0 <[^>]*> nop
-+0000ccb4 <[^>]*> nop
-+0000ccb8 <[^>]*> nop
-+0000ccbc <[^>]*> nop
-+0000ccc0 <[^>]*> nop
-+0000ccc4 <[^>]*> nop
-+0000ccc8 <[^>]*> nop
-+0000cccc <[^>]*> nop
-+0000ccd0 <[^>]*> nop
-+0000ccd4 <[^>]*> nop
-+0000ccd8 <[^>]*> nop
-+0000ccdc <[^>]*> nop
-+0000cce0 <[^>]*> nop
-+0000cce4 <[^>]*> nop
-+0000cce8 <[^>]*> nop
-+0000ccec <[^>]*> nop
-+0000ccf0 <[^>]*> nop
-+0000ccf4 <[^>]*> nop
-+0000ccf8 <[^>]*> nop
-+0000ccfc <[^>]*> nop
-+0000cd00 <[^>]*> nop
-+0000cd04 <[^>]*> nop
-+0000cd08 <[^>]*> nop
-+0000cd0c <[^>]*> nop
-+0000cd10 <[^>]*> nop
-+0000cd14 <[^>]*> nop
-+0000cd18 <[^>]*> nop
-+0000cd1c <[^>]*> nop
-+0000cd20 <[^>]*> nop
-+0000cd24 <[^>]*> nop
-+0000cd28 <[^>]*> nop
-+0000cd2c <[^>]*> nop
-+0000cd30 <[^>]*> nop
-+0000cd34 <[^>]*> nop
-+0000cd38 <[^>]*> nop
-+0000cd3c <[^>]*> nop
-+0000cd40 <[^>]*> nop
-+0000cd44 <[^>]*> nop
-+0000cd48 <[^>]*> nop
-+0000cd4c <[^>]*> nop
-+0000cd50 <[^>]*> nop
-+0000cd54 <[^>]*> nop
-+0000cd58 <[^>]*> nop
-+0000cd5c <[^>]*> nop
-+0000cd60 <[^>]*> nop
-+0000cd64 <[^>]*> nop
-+0000cd68 <[^>]*> nop
-+0000cd6c <[^>]*> nop
-+0000cd70 <[^>]*> nop
-+0000cd74 <[^>]*> nop
-+0000cd78 <[^>]*> nop
-+0000cd7c <[^>]*> nop
-+0000cd80 <[^>]*> nop
-+0000cd84 <[^>]*> nop
-+0000cd88 <[^>]*> nop
-+0000cd8c <[^>]*> nop
-+0000cd90 <[^>]*> nop
-+0000cd94 <[^>]*> nop
-+0000cd98 <[^>]*> nop
-+0000cd9c <[^>]*> nop
-+0000cda0 <[^>]*> nop
-+0000cda4 <[^>]*> nop
-+0000cda8 <[^>]*> nop
-+0000cdac <[^>]*> nop
-+0000cdb0 <[^>]*> nop
-+0000cdb4 <[^>]*> nop
-+0000cdb8 <[^>]*> nop
-+0000cdbc <[^>]*> nop
-+0000cdc0 <[^>]*> nop
-+0000cdc4 <[^>]*> nop
-+0000cdc8 <[^>]*> nop
-+0000cdcc <[^>]*> nop
-+0000cdd0 <[^>]*> nop
-+0000cdd4 <[^>]*> nop
-+0000cdd8 <[^>]*> nop
-+0000cddc <[^>]*> nop
-+0000cde0 <[^>]*> nop
-+0000cde4 <[^>]*> nop
-+0000cde8 <[^>]*> nop
-+0000cdec <[^>]*> nop
-+0000cdf0 <[^>]*> nop
-+0000cdf4 <[^>]*> nop
-+0000cdf8 <[^>]*> nop
-+0000cdfc <[^>]*> nop
-+0000ce00 <[^>]*> nop
-+0000ce04 <[^>]*> nop
-+0000ce08 <[^>]*> nop
-+0000ce0c <[^>]*> nop
-+0000ce10 <[^>]*> nop
-+0000ce14 <[^>]*> nop
-+0000ce18 <[^>]*> nop
-+0000ce1c <[^>]*> nop
-+0000ce20 <[^>]*> nop
-+0000ce24 <[^>]*> nop
-+0000ce28 <[^>]*> nop
-+0000ce2c <[^>]*> nop
-+0000ce30 <[^>]*> nop
-+0000ce34 <[^>]*> nop
-+0000ce38 <[^>]*> nop
-+0000ce3c <[^>]*> nop
-+0000ce40 <[^>]*> nop
-+0000ce44 <[^>]*> nop
-+0000ce48 <[^>]*> nop
-+0000ce4c <[^>]*> nop
-+0000ce50 <[^>]*> nop
-+0000ce54 <[^>]*> nop
-+0000ce58 <[^>]*> nop
-+0000ce5c <[^>]*> nop
-+0000ce60 <[^>]*> nop
-+0000ce64 <[^>]*> nop
-+0000ce68 <[^>]*> nop
-+0000ce6c <[^>]*> nop
-+0000ce70 <[^>]*> nop
-+0000ce74 <[^>]*> nop
-+0000ce78 <[^>]*> nop
-+0000ce7c <[^>]*> nop
-+0000ce80 <[^>]*> nop
-+0000ce84 <[^>]*> nop
-+0000ce88 <[^>]*> nop
-+0000ce8c <[^>]*> nop
-+0000ce90 <[^>]*> nop
-+0000ce94 <[^>]*> nop
-+0000ce98 <[^>]*> nop
-+0000ce9c <[^>]*> nop
-+0000cea0 <[^>]*> nop
-+0000cea4 <[^>]*> nop
-+0000cea8 <[^>]*> nop
-+0000ceac <[^>]*> nop
-+0000ceb0 <[^>]*> nop
-+0000ceb4 <[^>]*> nop
-+0000ceb8 <[^>]*> nop
-+0000cebc <[^>]*> nop
-+0000cec0 <[^>]*> nop
-+0000cec4 <[^>]*> nop
-+0000cec8 <[^>]*> nop
-+0000cecc <[^>]*> nop
-+0000ced0 <[^>]*> nop
-+0000ced4 <[^>]*> nop
-+0000ced8 <[^>]*> nop
-+0000cedc <[^>]*> nop
-+0000cee0 <[^>]*> nop
-+0000cee4 <[^>]*> nop
-+0000cee8 <[^>]*> nop
-+0000ceec <[^>]*> nop
-+0000cef0 <[^>]*> nop
-+0000cef4 <[^>]*> nop
-+0000cef8 <[^>]*> nop
-+0000cefc <[^>]*> nop
-+0000cf00 <[^>]*> nop
-+0000cf04 <[^>]*> nop
-+0000cf08 <[^>]*> nop
-+0000cf0c <[^>]*> nop
-+0000cf10 <[^>]*> nop
-+0000cf14 <[^>]*> nop
-+0000cf18 <[^>]*> nop
-+0000cf1c <[^>]*> nop
-+0000cf20 <[^>]*> nop
-+0000cf24 <[^>]*> nop
-+0000cf28 <[^>]*> nop
-+0000cf2c <[^>]*> nop
-+0000cf30 <[^>]*> nop
-+0000cf34 <[^>]*> nop
-+0000cf38 <[^>]*> nop
-+0000cf3c <[^>]*> nop
-+0000cf40 <[^>]*> nop
-+0000cf44 <[^>]*> nop
-+0000cf48 <[^>]*> nop
-+0000cf4c <[^>]*> nop
-+0000cf50 <[^>]*> nop
-+0000cf54 <[^>]*> nop
-+0000cf58 <[^>]*> nop
-+0000cf5c <[^>]*> nop
-+0000cf60 <[^>]*> nop
-+0000cf64 <[^>]*> nop
-+0000cf68 <[^>]*> nop
-+0000cf6c <[^>]*> nop
-+0000cf70 <[^>]*> nop
-+0000cf74 <[^>]*> nop
-+0000cf78 <[^>]*> nop
-+0000cf7c <[^>]*> nop
-+0000cf80 <[^>]*> nop
-+0000cf84 <[^>]*> nop
-+0000cf88 <[^>]*> nop
-+0000cf8c <[^>]*> nop
-+0000cf90 <[^>]*> nop
-+0000cf94 <[^>]*> nop
-+0000cf98 <[^>]*> nop
-+0000cf9c <[^>]*> nop
-+0000cfa0 <[^>]*> nop
-+0000cfa4 <[^>]*> nop
-+0000cfa8 <[^>]*> nop
-+0000cfac <[^>]*> nop
-+0000cfb0 <[^>]*> nop
-+0000cfb4 <[^>]*> nop
-+0000cfb8 <[^>]*> nop
-+0000cfbc <[^>]*> nop
-+0000cfc0 <[^>]*> nop
-+0000cfc4 <[^>]*> nop
-+0000cfc8 <[^>]*> nop
-+0000cfcc <[^>]*> nop
-+0000cfd0 <[^>]*> nop
-+0000cfd4 <[^>]*> nop
-+0000cfd8 <[^>]*> nop
-+0000cfdc <[^>]*> nop
-+0000cfe0 <[^>]*> nop
-+0000cfe4 <[^>]*> nop
-+0000cfe8 <[^>]*> nop
-+0000cfec <[^>]*> nop
-+0000cff0 <[^>]*> nop
-+0000cff4 <[^>]*> nop
-+0000cff8 <[^>]*> nop
-+0000cffc <[^>]*> nop
-+0000d000 <[^>]*> nop
-+0000d004 <[^>]*> nop
-+0000d008 <[^>]*> nop
-+0000d00c <[^>]*> nop
-+0000d010 <[^>]*> nop
-+0000d014 <[^>]*> nop
-+0000d018 <[^>]*> nop
-+0000d01c <[^>]*> nop
-+0000d020 <[^>]*> nop
-+0000d024 <[^>]*> nop
-+0000d028 <[^>]*> nop
-+0000d02c <[^>]*> nop
-+0000d030 <[^>]*> nop
-+0000d034 <[^>]*> nop
-+0000d038 <[^>]*> nop
-+0000d03c <[^>]*> nop
-+0000d040 <[^>]*> nop
-+0000d044 <[^>]*> nop
-+0000d048 <[^>]*> nop
-+0000d04c <[^>]*> nop
-+0000d050 <[^>]*> nop
-+0000d054 <[^>]*> nop
-+0000d058 <[^>]*> nop
-+0000d05c <[^>]*> nop
-+0000d060 <[^>]*> nop
-+0000d064 <[^>]*> nop
-+0000d068 <[^>]*> nop
-+0000d06c <[^>]*> nop
-+0000d070 <[^>]*> nop
-+0000d074 <[^>]*> nop
-+0000d078 <[^>]*> nop
-+0000d07c <[^>]*> nop
-+0000d080 <[^>]*> nop
-+0000d084 <[^>]*> nop
-+0000d088 <[^>]*> nop
-+0000d08c <[^>]*> nop
-+0000d090 <[^>]*> nop
-+0000d094 <[^>]*> nop
-+0000d098 <[^>]*> nop
-+0000d09c <[^>]*> nop
-+0000d0a0 <[^>]*> nop
-+0000d0a4 <[^>]*> nop
-+0000d0a8 <[^>]*> nop
-+0000d0ac <[^>]*> nop
-+0000d0b0 <[^>]*> nop
-+0000d0b4 <[^>]*> nop
-+0000d0b8 <[^>]*> nop
-+0000d0bc <[^>]*> nop
-+0000d0c0 <[^>]*> nop
-+0000d0c4 <[^>]*> nop
-+0000d0c8 <[^>]*> nop
-+0000d0cc <[^>]*> nop
-+0000d0d0 <[^>]*> nop
-+0000d0d4 <[^>]*> nop
-+0000d0d8 <[^>]*> nop
-+0000d0dc <[^>]*> nop
-+0000d0e0 <[^>]*> nop
-+0000d0e4 <[^>]*> nop
-+0000d0e8 <[^>]*> nop
-+0000d0ec <[^>]*> nop
-+0000d0f0 <[^>]*> nop
-+0000d0f4 <[^>]*> nop
-+0000d0f8 <[^>]*> nop
-+0000d0fc <[^>]*> nop
-+0000d100 <[^>]*> nop
-+0000d104 <[^>]*> nop
-+0000d108 <[^>]*> nop
-+0000d10c <[^>]*> nop
-+0000d110 <[^>]*> nop
-+0000d114 <[^>]*> nop
-+0000d118 <[^>]*> nop
-+0000d11c <[^>]*> nop
-+0000d120 <[^>]*> nop
-+0000d124 <[^>]*> nop
-+0000d128 <[^>]*> nop
-+0000d12c <[^>]*> nop
-+0000d130 <[^>]*> nop
-+0000d134 <[^>]*> nop
-+0000d138 <[^>]*> nop
-+0000d13c <[^>]*> nop
-+0000d140 <[^>]*> nop
-+0000d144 <[^>]*> nop
-+0000d148 <[^>]*> nop
-+0000d14c <[^>]*> nop
-+0000d150 <[^>]*> nop
-+0000d154 <[^>]*> nop
-+0000d158 <[^>]*> nop
-+0000d15c <[^>]*> nop
-+0000d160 <[^>]*> nop
-+0000d164 <[^>]*> nop
-+0000d168 <[^>]*> nop
-+0000d16c <[^>]*> nop
-+0000d170 <[^>]*> nop
-+0000d174 <[^>]*> nop
-+0000d178 <[^>]*> nop
-+0000d17c <[^>]*> nop
-+0000d180 <[^>]*> nop
-+0000d184 <[^>]*> nop
-+0000d188 <[^>]*> nop
-+0000d18c <[^>]*> nop
-+0000d190 <[^>]*> nop
-+0000d194 <[^>]*> nop
-+0000d198 <[^>]*> nop
-+0000d19c <[^>]*> nop
-+0000d1a0 <[^>]*> nop
-+0000d1a4 <[^>]*> nop
-+0000d1a8 <[^>]*> nop
-+0000d1ac <[^>]*> nop
-+0000d1b0 <[^>]*> nop
-+0000d1b4 <[^>]*> nop
-+0000d1b8 <[^>]*> nop
-+0000d1bc <[^>]*> nop
-+0000d1c0 <[^>]*> nop
-+0000d1c4 <[^>]*> nop
-+0000d1c8 <[^>]*> nop
-+0000d1cc <[^>]*> nop
-+0000d1d0 <[^>]*> nop
-+0000d1d4 <[^>]*> nop
-+0000d1d8 <[^>]*> nop
-+0000d1dc <[^>]*> nop
-+0000d1e0 <[^>]*> nop
-+0000d1e4 <[^>]*> nop
-+0000d1e8 <[^>]*> nop
-+0000d1ec <[^>]*> nop
-+0000d1f0 <[^>]*> nop
-+0000d1f4 <[^>]*> nop
-+0000d1f8 <[^>]*> nop
-+0000d1fc <[^>]*> nop
-+0000d200 <[^>]*> nop
-+0000d204 <[^>]*> nop
-+0000d208 <[^>]*> nop
-+0000d20c <[^>]*> nop
-+0000d210 <[^>]*> nop
-+0000d214 <[^>]*> nop
-+0000d218 <[^>]*> nop
-+0000d21c <[^>]*> nop
-+0000d220 <[^>]*> nop
-+0000d224 <[^>]*> nop
-+0000d228 <[^>]*> nop
-+0000d22c <[^>]*> nop
-+0000d230 <[^>]*> nop
-+0000d234 <[^>]*> nop
-+0000d238 <[^>]*> nop
-+0000d23c <[^>]*> nop
-+0000d240 <[^>]*> nop
-+0000d244 <[^>]*> nop
-+0000d248 <[^>]*> nop
-+0000d24c <[^>]*> nop
-+0000d250 <[^>]*> nop
-+0000d254 <[^>]*> nop
-+0000d258 <[^>]*> nop
-+0000d25c <[^>]*> nop
-+0000d260 <[^>]*> nop
-+0000d264 <[^>]*> nop
-+0000d268 <[^>]*> nop
-+0000d26c <[^>]*> nop
-+0000d270 <[^>]*> nop
-+0000d274 <[^>]*> nop
-+0000d278 <[^>]*> nop
-+0000d27c <[^>]*> nop
-+0000d280 <[^>]*> nop
-+0000d284 <[^>]*> nop
-+0000d288 <[^>]*> nop
-+0000d28c <[^>]*> nop
-+0000d290 <[^>]*> nop
-+0000d294 <[^>]*> nop
-+0000d298 <[^>]*> nop
-+0000d29c <[^>]*> nop
-+0000d2a0 <[^>]*> nop
-+0000d2a4 <[^>]*> nop
-+0000d2a8 <[^>]*> nop
-+0000d2ac <[^>]*> nop
-+0000d2b0 <[^>]*> nop
-+0000d2b4 <[^>]*> nop
-+0000d2b8 <[^>]*> nop
-+0000d2bc <[^>]*> nop
-+0000d2c0 <[^>]*> nop
-+0000d2c4 <[^>]*> nop
-+0000d2c8 <[^>]*> nop
-+0000d2cc <[^>]*> nop
-+0000d2d0 <[^>]*> nop
-+0000d2d4 <[^>]*> nop
-+0000d2d8 <[^>]*> nop
-+0000d2dc <[^>]*> nop
-+0000d2e0 <[^>]*> nop
-+0000d2e4 <[^>]*> nop
-+0000d2e8 <[^>]*> nop
-+0000d2ec <[^>]*> nop
-+0000d2f0 <[^>]*> nop
-+0000d2f4 <[^>]*> nop
-+0000d2f8 <[^>]*> nop
-+0000d2fc <[^>]*> nop
-+0000d300 <[^>]*> nop
-+0000d304 <[^>]*> nop
-+0000d308 <[^>]*> nop
-+0000d30c <[^>]*> nop
-+0000d310 <[^>]*> nop
-+0000d314 <[^>]*> nop
-+0000d318 <[^>]*> nop
-+0000d31c <[^>]*> nop
-+0000d320 <[^>]*> nop
-+0000d324 <[^>]*> nop
-+0000d328 <[^>]*> nop
-+0000d32c <[^>]*> nop
-+0000d330 <[^>]*> nop
-+0000d334 <[^>]*> nop
-+0000d338 <[^>]*> nop
-+0000d33c <[^>]*> nop
-+0000d340 <[^>]*> nop
-+0000d344 <[^>]*> nop
-+0000d348 <[^>]*> nop
-+0000d34c <[^>]*> nop
-+0000d350 <[^>]*> nop
-+0000d354 <[^>]*> nop
-+0000d358 <[^>]*> nop
-+0000d35c <[^>]*> nop
-+0000d360 <[^>]*> nop
-+0000d364 <[^>]*> nop
-+0000d368 <[^>]*> nop
-+0000d36c <[^>]*> nop
-+0000d370 <[^>]*> nop
-+0000d374 <[^>]*> nop
-+0000d378 <[^>]*> nop
-+0000d37c <[^>]*> nop
-+0000d380 <[^>]*> nop
-+0000d384 <[^>]*> nop
-+0000d388 <[^>]*> nop
-+0000d38c <[^>]*> nop
-+0000d390 <[^>]*> nop
-+0000d394 <[^>]*> nop
-+0000d398 <[^>]*> nop
-+0000d39c <[^>]*> nop
-+0000d3a0 <[^>]*> nop
-+0000d3a4 <[^>]*> nop
-+0000d3a8 <[^>]*> nop
-+0000d3ac <[^>]*> nop
-+0000d3b0 <[^>]*> nop
-+0000d3b4 <[^>]*> nop
-+0000d3b8 <[^>]*> nop
-+0000d3bc <[^>]*> nop
-+0000d3c0 <[^>]*> nop
-+0000d3c4 <[^>]*> nop
-+0000d3c8 <[^>]*> nop
-+0000d3cc <[^>]*> nop
-+0000d3d0 <[^>]*> nop
-+0000d3d4 <[^>]*> nop
-+0000d3d8 <[^>]*> nop
-+0000d3dc <[^>]*> nop
-+0000d3e0 <[^>]*> nop
-+0000d3e4 <[^>]*> nop
-+0000d3e8 <[^>]*> nop
-+0000d3ec <[^>]*> nop
-+0000d3f0 <[^>]*> nop
-+0000d3f4 <[^>]*> nop
-+0000d3f8 <[^>]*> nop
-+0000d3fc <[^>]*> nop
-+0000d400 <[^>]*> nop
-+0000d404 <[^>]*> nop
-+0000d408 <[^>]*> nop
-+0000d40c <[^>]*> nop
-+0000d410 <[^>]*> nop
-+0000d414 <[^>]*> nop
-+0000d418 <[^>]*> nop
-+0000d41c <[^>]*> nop
-+0000d420 <[^>]*> nop
-+0000d424 <[^>]*> nop
-+0000d428 <[^>]*> nop
-+0000d42c <[^>]*> nop
-+0000d430 <[^>]*> nop
-+0000d434 <[^>]*> nop
-+0000d438 <[^>]*> nop
-+0000d43c <[^>]*> nop
-+0000d440 <[^>]*> nop
-+0000d444 <[^>]*> nop
-+0000d448 <[^>]*> nop
-+0000d44c <[^>]*> nop
-+0000d450 <[^>]*> nop
-+0000d454 <[^>]*> nop
-+0000d458 <[^>]*> nop
-+0000d45c <[^>]*> nop
-+0000d460 <[^>]*> nop
-+0000d464 <[^>]*> nop
-+0000d468 <[^>]*> nop
-+0000d46c <[^>]*> nop
-+0000d470 <[^>]*> nop
-+0000d474 <[^>]*> nop
-+0000d478 <[^>]*> nop
-+0000d47c <[^>]*> nop
-+0000d480 <[^>]*> nop
-+0000d484 <[^>]*> nop
-+0000d488 <[^>]*> nop
-+0000d48c <[^>]*> nop
-+0000d490 <[^>]*> nop
-+0000d494 <[^>]*> nop
-+0000d498 <[^>]*> nop
-+0000d49c <[^>]*> nop
-+0000d4a0 <[^>]*> nop
-+0000d4a4 <[^>]*> nop
-+0000d4a8 <[^>]*> nop
-+0000d4ac <[^>]*> nop
-+0000d4b0 <[^>]*> nop
-+0000d4b4 <[^>]*> nop
-+0000d4b8 <[^>]*> nop
-+0000d4bc <[^>]*> nop
-+0000d4c0 <[^>]*> nop
-+0000d4c4 <[^>]*> nop
-+0000d4c8 <[^>]*> nop
-+0000d4cc <[^>]*> nop
-+0000d4d0 <[^>]*> nop
-+0000d4d4 <[^>]*> nop
-+0000d4d8 <[^>]*> nop
-+0000d4dc <[^>]*> nop
-+0000d4e0 <[^>]*> nop
-+0000d4e4 <[^>]*> nop
-+0000d4e8 <[^>]*> nop
-+0000d4ec <[^>]*> nop
-+0000d4f0 <[^>]*> nop
-+0000d4f4 <[^>]*> nop
-+0000d4f8 <[^>]*> nop
-+0000d4fc <[^>]*> nop
-+0000d500 <[^>]*> nop
-+0000d504 <[^>]*> nop
-+0000d508 <[^>]*> nop
-+0000d50c <[^>]*> nop
-+0000d510 <[^>]*> nop
-+0000d514 <[^>]*> nop
-+0000d518 <[^>]*> nop
-+0000d51c <[^>]*> nop
-+0000d520 <[^>]*> nop
-+0000d524 <[^>]*> nop
-+0000d528 <[^>]*> nop
-+0000d52c <[^>]*> nop
-+0000d530 <[^>]*> nop
-+0000d534 <[^>]*> nop
-+0000d538 <[^>]*> nop
-+0000d53c <[^>]*> nop
-+0000d540 <[^>]*> nop
-+0000d544 <[^>]*> nop
-+0000d548 <[^>]*> nop
-+0000d54c <[^>]*> nop
-+0000d550 <[^>]*> nop
-+0000d554 <[^>]*> nop
-+0000d558 <[^>]*> nop
-+0000d55c <[^>]*> nop
-+0000d560 <[^>]*> nop
-+0000d564 <[^>]*> nop
-+0000d568 <[^>]*> nop
-+0000d56c <[^>]*> nop
-+0000d570 <[^>]*> nop
-+0000d574 <[^>]*> nop
-+0000d578 <[^>]*> nop
-+0000d57c <[^>]*> nop
-+0000d580 <[^>]*> nop
-+0000d584 <[^>]*> nop
-+0000d588 <[^>]*> nop
-+0000d58c <[^>]*> nop
-+0000d590 <[^>]*> nop
-+0000d594 <[^>]*> nop
-+0000d598 <[^>]*> nop
-+0000d59c <[^>]*> nop
-+0000d5a0 <[^>]*> nop
-+0000d5a4 <[^>]*> nop
-+0000d5a8 <[^>]*> nop
-+0000d5ac <[^>]*> nop
-+0000d5b0 <[^>]*> nop
-+0000d5b4 <[^>]*> nop
-+0000d5b8 <[^>]*> nop
-+0000d5bc <[^>]*> nop
-+0000d5c0 <[^>]*> nop
-+0000d5c4 <[^>]*> nop
-+0000d5c8 <[^>]*> nop
-+0000d5cc <[^>]*> nop
-+0000d5d0 <[^>]*> nop
-+0000d5d4 <[^>]*> nop
-+0000d5d8 <[^>]*> nop
-+0000d5dc <[^>]*> nop
-+0000d5e0 <[^>]*> nop
-+0000d5e4 <[^>]*> nop
-+0000d5e8 <[^>]*> nop
-+0000d5ec <[^>]*> nop
-+0000d5f0 <[^>]*> nop
-+0000d5f4 <[^>]*> nop
-+0000d5f8 <[^>]*> nop
-+0000d5fc <[^>]*> nop
-+0000d600 <[^>]*> nop
-+0000d604 <[^>]*> nop
-+0000d608 <[^>]*> nop
-+0000d60c <[^>]*> nop
-+0000d610 <[^>]*> nop
-+0000d614 <[^>]*> nop
-+0000d618 <[^>]*> nop
-+0000d61c <[^>]*> nop
-+0000d620 <[^>]*> nop
-+0000d624 <[^>]*> nop
-+0000d628 <[^>]*> nop
-+0000d62c <[^>]*> nop
-+0000d630 <[^>]*> nop
-+0000d634 <[^>]*> nop
-+0000d638 <[^>]*> nop
-+0000d63c <[^>]*> nop
-+0000d640 <[^>]*> nop
-+0000d644 <[^>]*> nop
-+0000d648 <[^>]*> nop
-+0000d64c <[^>]*> nop
-+0000d650 <[^>]*> nop
-+0000d654 <[^>]*> nop
-+0000d658 <[^>]*> nop
-+0000d65c <[^>]*> nop
-+0000d660 <[^>]*> nop
-+0000d664 <[^>]*> nop
-+0000d668 <[^>]*> nop
-+0000d66c <[^>]*> nop
-+0000d670 <[^>]*> nop
-+0000d674 <[^>]*> nop
-+0000d678 <[^>]*> nop
-+0000d67c <[^>]*> nop
-+0000d680 <[^>]*> nop
-+0000d684 <[^>]*> nop
-+0000d688 <[^>]*> nop
-+0000d68c <[^>]*> nop
-+0000d690 <[^>]*> nop
-+0000d694 <[^>]*> nop
-+0000d698 <[^>]*> nop
-+0000d69c <[^>]*> nop
-+0000d6a0 <[^>]*> nop
-+0000d6a4 <[^>]*> nop
-+0000d6a8 <[^>]*> nop
-+0000d6ac <[^>]*> nop
-+0000d6b0 <[^>]*> nop
-+0000d6b4 <[^>]*> nop
-+0000d6b8 <[^>]*> nop
-+0000d6bc <[^>]*> nop
-+0000d6c0 <[^>]*> nop
-+0000d6c4 <[^>]*> nop
-+0000d6c8 <[^>]*> nop
-+0000d6cc <[^>]*> nop
-+0000d6d0 <[^>]*> nop
-+0000d6d4 <[^>]*> nop
-+0000d6d8 <[^>]*> nop
-+0000d6dc <[^>]*> nop
-+0000d6e0 <[^>]*> nop
-+0000d6e4 <[^>]*> nop
-+0000d6e8 <[^>]*> nop
-+0000d6ec <[^>]*> nop
-+0000d6f0 <[^>]*> nop
-+0000d6f4 <[^>]*> nop
-+0000d6f8 <[^>]*> nop
-+0000d6fc <[^>]*> nop
-+0000d700 <[^>]*> nop
-+0000d704 <[^>]*> nop
-+0000d708 <[^>]*> nop
-+0000d70c <[^>]*> nop
-+0000d710 <[^>]*> nop
-+0000d714 <[^>]*> nop
-+0000d718 <[^>]*> nop
-+0000d71c <[^>]*> nop
-+0000d720 <[^>]*> nop
-+0000d724 <[^>]*> nop
-+0000d728 <[^>]*> nop
-+0000d72c <[^>]*> nop
-+0000d730 <[^>]*> nop
-+0000d734 <[^>]*> nop
-+0000d738 <[^>]*> nop
-+0000d73c <[^>]*> nop
-+0000d740 <[^>]*> nop
-+0000d744 <[^>]*> nop
-+0000d748 <[^>]*> nop
-+0000d74c <[^>]*> nop
-+0000d750 <[^>]*> nop
-+0000d754 <[^>]*> nop
-+0000d758 <[^>]*> nop
-+0000d75c <[^>]*> nop
-+0000d760 <[^>]*> nop
-+0000d764 <[^>]*> nop
-+0000d768 <[^>]*> nop
-+0000d76c <[^>]*> nop
-+0000d770 <[^>]*> nop
-+0000d774 <[^>]*> nop
-+0000d778 <[^>]*> nop
-+0000d77c <[^>]*> nop
-+0000d780 <[^>]*> nop
-+0000d784 <[^>]*> nop
-+0000d788 <[^>]*> nop
-+0000d78c <[^>]*> nop
-+0000d790 <[^>]*> nop
-+0000d794 <[^>]*> nop
-+0000d798 <[^>]*> nop
-+0000d79c <[^>]*> nop
-+0000d7a0 <[^>]*> nop
-+0000d7a4 <[^>]*> nop
-+0000d7a8 <[^>]*> nop
-+0000d7ac <[^>]*> nop
-+0000d7b0 <[^>]*> nop
-+0000d7b4 <[^>]*> nop
-+0000d7b8 <[^>]*> nop
-+0000d7bc <[^>]*> nop
-+0000d7c0 <[^>]*> nop
-+0000d7c4 <[^>]*> nop
-+0000d7c8 <[^>]*> nop
-+0000d7cc <[^>]*> nop
-+0000d7d0 <[^>]*> nop
-+0000d7d4 <[^>]*> nop
-+0000d7d8 <[^>]*> nop
-+0000d7dc <[^>]*> nop
-+0000d7e0 <[^>]*> nop
-+0000d7e4 <[^>]*> nop
-+0000d7e8 <[^>]*> nop
-+0000d7ec <[^>]*> nop
-+0000d7f0 <[^>]*> nop
-+0000d7f4 <[^>]*> nop
-+0000d7f8 <[^>]*> nop
-+0000d7fc <[^>]*> nop
-+0000d800 <[^>]*> nop
-+0000d804 <[^>]*> nop
-+0000d808 <[^>]*> nop
-+0000d80c <[^>]*> nop
-+0000d810 <[^>]*> nop
-+0000d814 <[^>]*> nop
-+0000d818 <[^>]*> nop
-+0000d81c <[^>]*> nop
-+0000d820 <[^>]*> nop
-+0000d824 <[^>]*> nop
-+0000d828 <[^>]*> nop
-+0000d82c <[^>]*> nop
-+0000d830 <[^>]*> nop
-+0000d834 <[^>]*> nop
-+0000d838 <[^>]*> nop
-+0000d83c <[^>]*> nop
-+0000d840 <[^>]*> nop
-+0000d844 <[^>]*> nop
-+0000d848 <[^>]*> nop
-+0000d84c <[^>]*> nop
-+0000d850 <[^>]*> nop
-+0000d854 <[^>]*> nop
-+0000d858 <[^>]*> nop
-+0000d85c <[^>]*> nop
-+0000d860 <[^>]*> nop
-+0000d864 <[^>]*> nop
-+0000d868 <[^>]*> nop
-+0000d86c <[^>]*> nop
-+0000d870 <[^>]*> nop
-+0000d874 <[^>]*> nop
-+0000d878 <[^>]*> nop
-+0000d87c <[^>]*> nop
-+0000d880 <[^>]*> nop
-+0000d884 <[^>]*> nop
-+0000d888 <[^>]*> nop
-+0000d88c <[^>]*> nop
-+0000d890 <[^>]*> nop
-+0000d894 <[^>]*> nop
-+0000d898 <[^>]*> nop
-+0000d89c <[^>]*> nop
-+0000d8a0 <[^>]*> nop
-+0000d8a4 <[^>]*> nop
-+0000d8a8 <[^>]*> nop
-+0000d8ac <[^>]*> nop
-+0000d8b0 <[^>]*> nop
-+0000d8b4 <[^>]*> nop
-+0000d8b8 <[^>]*> nop
-+0000d8bc <[^>]*> nop
-+0000d8c0 <[^>]*> nop
-+0000d8c4 <[^>]*> nop
-+0000d8c8 <[^>]*> nop
-+0000d8cc <[^>]*> nop
-+0000d8d0 <[^>]*> nop
-+0000d8d4 <[^>]*> nop
-+0000d8d8 <[^>]*> nop
-+0000d8dc <[^>]*> nop
-+0000d8e0 <[^>]*> nop
-+0000d8e4 <[^>]*> nop
-+0000d8e8 <[^>]*> nop
-+0000d8ec <[^>]*> nop
-+0000d8f0 <[^>]*> nop
-+0000d8f4 <[^>]*> nop
-+0000d8f8 <[^>]*> nop
-+0000d8fc <[^>]*> nop
-+0000d900 <[^>]*> nop
-+0000d904 <[^>]*> nop
-+0000d908 <[^>]*> nop
-+0000d90c <[^>]*> nop
-+0000d910 <[^>]*> nop
-+0000d914 <[^>]*> nop
-+0000d918 <[^>]*> nop
-+0000d91c <[^>]*> nop
-+0000d920 <[^>]*> nop
-+0000d924 <[^>]*> nop
-+0000d928 <[^>]*> nop
-+0000d92c <[^>]*> nop
-+0000d930 <[^>]*> nop
-+0000d934 <[^>]*> nop
-+0000d938 <[^>]*> nop
-+0000d93c <[^>]*> nop
-+0000d940 <[^>]*> nop
-+0000d944 <[^>]*> nop
-+0000d948 <[^>]*> nop
-+0000d94c <[^>]*> nop
-+0000d950 <[^>]*> nop
-+0000d954 <[^>]*> nop
-+0000d958 <[^>]*> nop
-+0000d95c <[^>]*> nop
-+0000d960 <[^>]*> nop
-+0000d964 <[^>]*> nop
-+0000d968 <[^>]*> nop
-+0000d96c <[^>]*> nop
-+0000d970 <[^>]*> nop
-+0000d974 <[^>]*> nop
-+0000d978 <[^>]*> nop
-+0000d97c <[^>]*> nop
-+0000d980 <[^>]*> nop
-+0000d984 <[^>]*> nop
-+0000d988 <[^>]*> nop
-+0000d98c <[^>]*> nop
-+0000d990 <[^>]*> nop
-+0000d994 <[^>]*> nop
-+0000d998 <[^>]*> nop
-+0000d99c <[^>]*> nop
-+0000d9a0 <[^>]*> nop
-+0000d9a4 <[^>]*> nop
-+0000d9a8 <[^>]*> nop
-+0000d9ac <[^>]*> nop
-+0000d9b0 <[^>]*> nop
-+0000d9b4 <[^>]*> nop
-+0000d9b8 <[^>]*> nop
-+0000d9bc <[^>]*> nop
-+0000d9c0 <[^>]*> nop
-+0000d9c4 <[^>]*> nop
-+0000d9c8 <[^>]*> nop
-+0000d9cc <[^>]*> nop
-+0000d9d0 <[^>]*> nop
-+0000d9d4 <[^>]*> nop
-+0000d9d8 <[^>]*> nop
-+0000d9dc <[^>]*> nop
-+0000d9e0 <[^>]*> nop
-+0000d9e4 <[^>]*> nop
-+0000d9e8 <[^>]*> nop
-+0000d9ec <[^>]*> nop
-+0000d9f0 <[^>]*> nop
-+0000d9f4 <[^>]*> nop
-+0000d9f8 <[^>]*> nop
-+0000d9fc <[^>]*> nop
-+0000da00 <[^>]*> nop
-+0000da04 <[^>]*> nop
-+0000da08 <[^>]*> nop
-+0000da0c <[^>]*> nop
-+0000da10 <[^>]*> nop
-+0000da14 <[^>]*> nop
-+0000da18 <[^>]*> nop
-+0000da1c <[^>]*> nop
-+0000da20 <[^>]*> nop
-+0000da24 <[^>]*> nop
-+0000da28 <[^>]*> nop
-+0000da2c <[^>]*> nop
-+0000da30 <[^>]*> nop
-+0000da34 <[^>]*> nop
-+0000da38 <[^>]*> nop
-+0000da3c <[^>]*> nop
-+0000da40 <[^>]*> nop
-+0000da44 <[^>]*> nop
-+0000da48 <[^>]*> nop
-+0000da4c <[^>]*> nop
-+0000da50 <[^>]*> nop
-+0000da54 <[^>]*> nop
-+0000da58 <[^>]*> nop
-+0000da5c <[^>]*> nop
-+0000da60 <[^>]*> nop
-+0000da64 <[^>]*> nop
-+0000da68 <[^>]*> nop
-+0000da6c <[^>]*> nop
-+0000da70 <[^>]*> nop
-+0000da74 <[^>]*> nop
-+0000da78 <[^>]*> nop
-+0000da7c <[^>]*> nop
-+0000da80 <[^>]*> nop
-+0000da84 <[^>]*> nop
-+0000da88 <[^>]*> nop
-+0000da8c <[^>]*> nop
-+0000da90 <[^>]*> nop
-+0000da94 <[^>]*> nop
-+0000da98 <[^>]*> nop
-+0000da9c <[^>]*> nop
-+0000daa0 <[^>]*> nop
-+0000daa4 <[^>]*> nop
-+0000daa8 <[^>]*> nop
-+0000daac <[^>]*> nop
-+0000dab0 <[^>]*> nop
-+0000dab4 <[^>]*> nop
-+0000dab8 <[^>]*> nop
-+0000dabc <[^>]*> nop
-+0000dac0 <[^>]*> nop
-+0000dac4 <[^>]*> nop
-+0000dac8 <[^>]*> nop
-+0000dacc <[^>]*> nop
-+0000dad0 <[^>]*> nop
-+0000dad4 <[^>]*> nop
-+0000dad8 <[^>]*> nop
-+0000dadc <[^>]*> nop
-+0000dae0 <[^>]*> nop
-+0000dae4 <[^>]*> nop
-+0000dae8 <[^>]*> nop
-+0000daec <[^>]*> nop
-+0000daf0 <[^>]*> nop
-+0000daf4 <[^>]*> nop
-+0000daf8 <[^>]*> nop
-+0000dafc <[^>]*> nop
-+0000db00 <[^>]*> nop
-+0000db04 <[^>]*> nop
-+0000db08 <[^>]*> nop
-+0000db0c <[^>]*> nop
-+0000db10 <[^>]*> nop
-+0000db14 <[^>]*> nop
-+0000db18 <[^>]*> nop
-+0000db1c <[^>]*> nop
-+0000db20 <[^>]*> nop
-+0000db24 <[^>]*> nop
-+0000db28 <[^>]*> nop
-+0000db2c <[^>]*> nop
-+0000db30 <[^>]*> nop
-+0000db34 <[^>]*> nop
-+0000db38 <[^>]*> nop
-+0000db3c <[^>]*> nop
-+0000db40 <[^>]*> nop
-+0000db44 <[^>]*> nop
-+0000db48 <[^>]*> nop
-+0000db4c <[^>]*> nop
-+0000db50 <[^>]*> nop
-+0000db54 <[^>]*> nop
-+0000db58 <[^>]*> nop
-+0000db5c <[^>]*> nop
-+0000db60 <[^>]*> nop
-+0000db64 <[^>]*> nop
-+0000db68 <[^>]*> nop
-+0000db6c <[^>]*> nop
-+0000db70 <[^>]*> nop
-+0000db74 <[^>]*> nop
-+0000db78 <[^>]*> nop
-+0000db7c <[^>]*> nop
-+0000db80 <[^>]*> nop
-+0000db84 <[^>]*> nop
-+0000db88 <[^>]*> nop
-+0000db8c <[^>]*> nop
-+0000db90 <[^>]*> nop
-+0000db94 <[^>]*> nop
-+0000db98 <[^>]*> nop
-+0000db9c <[^>]*> nop
-+0000dba0 <[^>]*> nop
-+0000dba4 <[^>]*> nop
-+0000dba8 <[^>]*> nop
-+0000dbac <[^>]*> nop
-+0000dbb0 <[^>]*> nop
-+0000dbb4 <[^>]*> nop
-+0000dbb8 <[^>]*> nop
-+0000dbbc <[^>]*> nop
-+0000dbc0 <[^>]*> nop
-+0000dbc4 <[^>]*> nop
-+0000dbc8 <[^>]*> nop
-+0000dbcc <[^>]*> nop
-+0000dbd0 <[^>]*> nop
-+0000dbd4 <[^>]*> nop
-+0000dbd8 <[^>]*> nop
-+0000dbdc <[^>]*> nop
-+0000dbe0 <[^>]*> nop
-+0000dbe4 <[^>]*> nop
-+0000dbe8 <[^>]*> nop
-+0000dbec <[^>]*> nop
-+0000dbf0 <[^>]*> nop
-+0000dbf4 <[^>]*> nop
-+0000dbf8 <[^>]*> nop
-+0000dbfc <[^>]*> nop
-+0000dc00 <[^>]*> nop
-+0000dc04 <[^>]*> nop
-+0000dc08 <[^>]*> nop
-+0000dc0c <[^>]*> nop
-+0000dc10 <[^>]*> nop
-+0000dc14 <[^>]*> nop
-+0000dc18 <[^>]*> nop
-+0000dc1c <[^>]*> nop
-+0000dc20 <[^>]*> nop
-+0000dc24 <[^>]*> nop
-+0000dc28 <[^>]*> nop
-+0000dc2c <[^>]*> nop
-+0000dc30 <[^>]*> nop
-+0000dc34 <[^>]*> nop
-+0000dc38 <[^>]*> nop
-+0000dc3c <[^>]*> nop
-+0000dc40 <[^>]*> nop
-+0000dc44 <[^>]*> nop
-+0000dc48 <[^>]*> nop
-+0000dc4c <[^>]*> nop
-+0000dc50 <[^>]*> nop
-+0000dc54 <[^>]*> nop
-+0000dc58 <[^>]*> nop
-+0000dc5c <[^>]*> nop
-+0000dc60 <[^>]*> nop
-+0000dc64 <[^>]*> nop
-+0000dc68 <[^>]*> nop
-+0000dc6c <[^>]*> nop
-+0000dc70 <[^>]*> nop
-+0000dc74 <[^>]*> nop
-+0000dc78 <[^>]*> nop
-+0000dc7c <[^>]*> nop
-+0000dc80 <[^>]*> nop
-+0000dc84 <[^>]*> nop
-+0000dc88 <[^>]*> nop
-+0000dc8c <[^>]*> nop
-+0000dc90 <[^>]*> nop
-+0000dc94 <[^>]*> nop
-+0000dc98 <[^>]*> nop
-+0000dc9c <[^>]*> nop
-+0000dca0 <[^>]*> nop
-+0000dca4 <[^>]*> nop
-+0000dca8 <[^>]*> nop
-+0000dcac <[^>]*> nop
-+0000dcb0 <[^>]*> nop
-+0000dcb4 <[^>]*> nop
-+0000dcb8 <[^>]*> nop
-+0000dcbc <[^>]*> nop
-+0000dcc0 <[^>]*> nop
-+0000dcc4 <[^>]*> nop
-+0000dcc8 <[^>]*> nop
-+0000dccc <[^>]*> nop
-+0000dcd0 <[^>]*> nop
-+0000dcd4 <[^>]*> nop
-+0000dcd8 <[^>]*> nop
-+0000dcdc <[^>]*> nop
-+0000dce0 <[^>]*> nop
-+0000dce4 <[^>]*> nop
-+0000dce8 <[^>]*> nop
-+0000dcec <[^>]*> nop
-+0000dcf0 <[^>]*> nop
-+0000dcf4 <[^>]*> nop
-+0000dcf8 <[^>]*> nop
-+0000dcfc <[^>]*> nop
-+0000dd00 <[^>]*> nop
-+0000dd04 <[^>]*> nop
-+0000dd08 <[^>]*> nop
-+0000dd0c <[^>]*> nop
-+0000dd10 <[^>]*> nop
-+0000dd14 <[^>]*> nop
-+0000dd18 <[^>]*> nop
-+0000dd1c <[^>]*> nop
-+0000dd20 <[^>]*> nop
-+0000dd24 <[^>]*> nop
-+0000dd28 <[^>]*> nop
-+0000dd2c <[^>]*> nop
-+0000dd30 <[^>]*> nop
-+0000dd34 <[^>]*> nop
-+0000dd38 <[^>]*> nop
-+0000dd3c <[^>]*> nop
-+0000dd40 <[^>]*> nop
-+0000dd44 <[^>]*> nop
-+0000dd48 <[^>]*> nop
-+0000dd4c <[^>]*> nop
-+0000dd50 <[^>]*> nop
-+0000dd54 <[^>]*> nop
-+0000dd58 <[^>]*> nop
-+0000dd5c <[^>]*> nop
-+0000dd60 <[^>]*> nop
-+0000dd64 <[^>]*> nop
-+0000dd68 <[^>]*> nop
-+0000dd6c <[^>]*> nop
-+0000dd70 <[^>]*> nop
-+0000dd74 <[^>]*> nop
-+0000dd78 <[^>]*> nop
-+0000dd7c <[^>]*> nop
-+0000dd80 <[^>]*> nop
-+0000dd84 <[^>]*> nop
-+0000dd88 <[^>]*> nop
-+0000dd8c <[^>]*> nop
-+0000dd90 <[^>]*> nop
-+0000dd94 <[^>]*> nop
-+0000dd98 <[^>]*> nop
-+0000dd9c <[^>]*> nop
-+0000dda0 <[^>]*> nop
-+0000dda4 <[^>]*> nop
-+0000dda8 <[^>]*> nop
-+0000ddac <[^>]*> nop
-+0000ddb0 <[^>]*> nop
-+0000ddb4 <[^>]*> nop
-+0000ddb8 <[^>]*> nop
-+0000ddbc <[^>]*> nop
-+0000ddc0 <[^>]*> nop
-+0000ddc4 <[^>]*> nop
-+0000ddc8 <[^>]*> nop
-+0000ddcc <[^>]*> nop
-+0000ddd0 <[^>]*> nop
-+0000ddd4 <[^>]*> nop
-+0000ddd8 <[^>]*> nop
-+0000dddc <[^>]*> nop
-+0000dde0 <[^>]*> nop
-+0000dde4 <[^>]*> nop
-+0000dde8 <[^>]*> nop
-+0000ddec <[^>]*> nop
-+0000ddf0 <[^>]*> nop
-+0000ddf4 <[^>]*> nop
-+0000ddf8 <[^>]*> nop
-+0000ddfc <[^>]*> nop
-+0000de00 <[^>]*> nop
-+0000de04 <[^>]*> nop
-+0000de08 <[^>]*> nop
-+0000de0c <[^>]*> nop
-+0000de10 <[^>]*> nop
-+0000de14 <[^>]*> nop
-+0000de18 <[^>]*> nop
-+0000de1c <[^>]*> nop
-+0000de20 <[^>]*> nop
-+0000de24 <[^>]*> nop
-+0000de28 <[^>]*> nop
-+0000de2c <[^>]*> nop
-+0000de30 <[^>]*> nop
-+0000de34 <[^>]*> nop
-+0000de38 <[^>]*> nop
-+0000de3c <[^>]*> nop
-+0000de40 <[^>]*> nop
-+0000de44 <[^>]*> nop
-+0000de48 <[^>]*> nop
-+0000de4c <[^>]*> nop
-+0000de50 <[^>]*> nop
-+0000de54 <[^>]*> nop
-+0000de58 <[^>]*> nop
-+0000de5c <[^>]*> nop
-+0000de60 <[^>]*> nop
-+0000de64 <[^>]*> nop
-+0000de68 <[^>]*> nop
-+0000de6c <[^>]*> nop
-+0000de70 <[^>]*> nop
-+0000de74 <[^>]*> nop
-+0000de78 <[^>]*> nop
-+0000de7c <[^>]*> nop
-+0000de80 <[^>]*> nop
-+0000de84 <[^>]*> nop
-+0000de88 <[^>]*> nop
-+0000de8c <[^>]*> nop
-+0000de90 <[^>]*> nop
-+0000de94 <[^>]*> nop
-+0000de98 <[^>]*> nop
-+0000de9c <[^>]*> nop
-+0000dea0 <[^>]*> nop
-+0000dea4 <[^>]*> nop
-+0000dea8 <[^>]*> nop
-+0000deac <[^>]*> nop
-+0000deb0 <[^>]*> nop
-+0000deb4 <[^>]*> nop
-+0000deb8 <[^>]*> nop
-+0000debc <[^>]*> nop
-+0000dec0 <[^>]*> nop
-+0000dec4 <[^>]*> nop
-+0000dec8 <[^>]*> nop
-+0000decc <[^>]*> nop
-+0000ded0 <[^>]*> nop
-+0000ded4 <[^>]*> nop
-+0000ded8 <[^>]*> nop
-+0000dedc <[^>]*> nop
-+0000dee0 <[^>]*> nop
-+0000dee4 <[^>]*> nop
-+0000dee8 <[^>]*> nop
-+0000deec <[^>]*> nop
-+0000def0 <[^>]*> nop
-+0000def4 <[^>]*> nop
-+0000def8 <[^>]*> nop
-+0000defc <[^>]*> nop
-+0000df00 <[^>]*> nop
-+0000df04 <[^>]*> nop
-+0000df08 <[^>]*> nop
-+0000df0c <[^>]*> nop
-+0000df10 <[^>]*> nop
-+0000df14 <[^>]*> nop
-+0000df18 <[^>]*> nop
-+0000df1c <[^>]*> nop
-+0000df20 <[^>]*> nop
-+0000df24 <[^>]*> nop
-+0000df28 <[^>]*> nop
-+0000df2c <[^>]*> nop
-+0000df30 <[^>]*> nop
-+0000df34 <[^>]*> nop
-+0000df38 <[^>]*> nop
-+0000df3c <[^>]*> nop
-+0000df40 <[^>]*> nop
-+0000df44 <[^>]*> nop
-+0000df48 <[^>]*> nop
-+0000df4c <[^>]*> nop
-+0000df50 <[^>]*> nop
-+0000df54 <[^>]*> nop
-+0000df58 <[^>]*> nop
-+0000df5c <[^>]*> nop
-+0000df60 <[^>]*> nop
-+0000df64 <[^>]*> nop
-+0000df68 <[^>]*> nop
-+0000df6c <[^>]*> nop
-+0000df70 <[^>]*> nop
-+0000df74 <[^>]*> nop
-+0000df78 <[^>]*> nop
-+0000df7c <[^>]*> nop
-+0000df80 <[^>]*> nop
-+0000df84 <[^>]*> nop
-+0000df88 <[^>]*> nop
-+0000df8c <[^>]*> nop
-+0000df90 <[^>]*> nop
-+0000df94 <[^>]*> nop
-+0000df98 <[^>]*> nop
-+0000df9c <[^>]*> nop
-+0000dfa0 <[^>]*> nop
-+0000dfa4 <[^>]*> nop
-+0000dfa8 <[^>]*> nop
-+0000dfac <[^>]*> nop
-+0000dfb0 <[^>]*> nop
-+0000dfb4 <[^>]*> nop
-+0000dfb8 <[^>]*> nop
-+0000dfbc <[^>]*> nop
-+0000dfc0 <[^>]*> nop
-+0000dfc4 <[^>]*> nop
-+0000dfc8 <[^>]*> nop
-+0000dfcc <[^>]*> nop
-+0000dfd0 <[^>]*> nop
-+0000dfd4 <[^>]*> nop
-+0000dfd8 <[^>]*> nop
-+0000dfdc <[^>]*> nop
-+0000dfe0 <[^>]*> nop
-+0000dfe4 <[^>]*> nop
-+0000dfe8 <[^>]*> nop
-+0000dfec <[^>]*> nop
-+0000dff0 <[^>]*> nop
-+0000dff4 <[^>]*> nop
-+0000dff8 <[^>]*> nop
-+0000dffc <[^>]*> nop
-+0000e000 <[^>]*> nop
-+0000e004 <[^>]*> nop
-+0000e008 <[^>]*> nop
-+0000e00c <[^>]*> nop
-+0000e010 <[^>]*> nop
-+0000e014 <[^>]*> nop
-+0000e018 <[^>]*> nop
-+0000e01c <[^>]*> nop
-+0000e020 <[^>]*> nop
-+0000e024 <[^>]*> nop
-+0000e028 <[^>]*> nop
-+0000e02c <[^>]*> nop
-+0000e030 <[^>]*> nop
-+0000e034 <[^>]*> nop
-+0000e038 <[^>]*> nop
-+0000e03c <[^>]*> nop
-+0000e040 <[^>]*> nop
-+0000e044 <[^>]*> nop
-+0000e048 <[^>]*> nop
-+0000e04c <[^>]*> nop
-+0000e050 <[^>]*> nop
-+0000e054 <[^>]*> nop
-+0000e058 <[^>]*> nop
-+0000e05c <[^>]*> nop
-+0000e060 <[^>]*> nop
-+0000e064 <[^>]*> nop
-+0000e068 <[^>]*> nop
-+0000e06c <[^>]*> nop
-+0000e070 <[^>]*> nop
-+0000e074 <[^>]*> nop
-+0000e078 <[^>]*> nop
-+0000e07c <[^>]*> nop
-+0000e080 <[^>]*> nop
-+0000e084 <[^>]*> nop
-+0000e088 <[^>]*> nop
-+0000e08c <[^>]*> nop
-+0000e090 <[^>]*> nop
-+0000e094 <[^>]*> nop
-+0000e098 <[^>]*> nop
-+0000e09c <[^>]*> nop
-+0000e0a0 <[^>]*> nop
-+0000e0a4 <[^>]*> nop
-+0000e0a8 <[^>]*> nop
-+0000e0ac <[^>]*> nop
-+0000e0b0 <[^>]*> nop
-+0000e0b4 <[^>]*> nop
-+0000e0b8 <[^>]*> nop
-+0000e0bc <[^>]*> nop
-+0000e0c0 <[^>]*> nop
-+0000e0c4 <[^>]*> nop
-+0000e0c8 <[^>]*> nop
-+0000e0cc <[^>]*> nop
-+0000e0d0 <[^>]*> nop
-+0000e0d4 <[^>]*> nop
-+0000e0d8 <[^>]*> nop
-+0000e0dc <[^>]*> nop
-+0000e0e0 <[^>]*> nop
-+0000e0e4 <[^>]*> nop
-+0000e0e8 <[^>]*> nop
-+0000e0ec <[^>]*> nop
-+0000e0f0 <[^>]*> nop
-+0000e0f4 <[^>]*> nop
-+0000e0f8 <[^>]*> nop
-+0000e0fc <[^>]*> nop
-+0000e100 <[^>]*> nop
-+0000e104 <[^>]*> nop
-+0000e108 <[^>]*> nop
-+0000e10c <[^>]*> nop
-+0000e110 <[^>]*> nop
-+0000e114 <[^>]*> nop
-+0000e118 <[^>]*> nop
-+0000e11c <[^>]*> nop
-+0000e120 <[^>]*> nop
-+0000e124 <[^>]*> nop
-+0000e128 <[^>]*> nop
-+0000e12c <[^>]*> nop
-+0000e130 <[^>]*> nop
-+0000e134 <[^>]*> nop
-+0000e138 <[^>]*> nop
-+0000e13c <[^>]*> nop
-+0000e140 <[^>]*> nop
-+0000e144 <[^>]*> nop
-+0000e148 <[^>]*> nop
-+0000e14c <[^>]*> nop
-+0000e150 <[^>]*> nop
-+0000e154 <[^>]*> nop
-+0000e158 <[^>]*> nop
-+0000e15c <[^>]*> nop
-+0000e160 <[^>]*> nop
-+0000e164 <[^>]*> nop
-+0000e168 <[^>]*> nop
-+0000e16c <[^>]*> nop
-+0000e170 <[^>]*> nop
-+0000e174 <[^>]*> nop
-+0000e178 <[^>]*> nop
-+0000e17c <[^>]*> nop
-+0000e180 <[^>]*> nop
-+0000e184 <[^>]*> nop
-+0000e188 <[^>]*> nop
-+0000e18c <[^>]*> nop
-+0000e190 <[^>]*> nop
-+0000e194 <[^>]*> nop
-+0000e198 <[^>]*> nop
-+0000e19c <[^>]*> nop
-+0000e1a0 <[^>]*> nop
-+0000e1a4 <[^>]*> nop
-+0000e1a8 <[^>]*> nop
-+0000e1ac <[^>]*> nop
-+0000e1b0 <[^>]*> nop
-+0000e1b4 <[^>]*> nop
-+0000e1b8 <[^>]*> nop
-+0000e1bc <[^>]*> nop
-+0000e1c0 <[^>]*> nop
-+0000e1c4 <[^>]*> nop
-+0000e1c8 <[^>]*> nop
-+0000e1cc <[^>]*> nop
-+0000e1d0 <[^>]*> nop
-+0000e1d4 <[^>]*> nop
-+0000e1d8 <[^>]*> nop
-+0000e1dc <[^>]*> nop
-+0000e1e0 <[^>]*> nop
-+0000e1e4 <[^>]*> nop
-+0000e1e8 <[^>]*> nop
-+0000e1ec <[^>]*> nop
-+0000e1f0 <[^>]*> nop
-+0000e1f4 <[^>]*> nop
-+0000e1f8 <[^>]*> nop
-+0000e1fc <[^>]*> nop
-+0000e200 <[^>]*> nop
-+0000e204 <[^>]*> nop
-+0000e208 <[^>]*> nop
-+0000e20c <[^>]*> nop
-+0000e210 <[^>]*> nop
-+0000e214 <[^>]*> nop
-+0000e218 <[^>]*> nop
-+0000e21c <[^>]*> nop
-+0000e220 <[^>]*> nop
-+0000e224 <[^>]*> nop
-+0000e228 <[^>]*> nop
-+0000e22c <[^>]*> nop
-+0000e230 <[^>]*> nop
-+0000e234 <[^>]*> nop
-+0000e238 <[^>]*> nop
-+0000e23c <[^>]*> nop
-+0000e240 <[^>]*> nop
-+0000e244 <[^>]*> nop
-+0000e248 <[^>]*> nop
-+0000e24c <[^>]*> nop
-+0000e250 <[^>]*> nop
-+0000e254 <[^>]*> nop
-+0000e258 <[^>]*> nop
-+0000e25c <[^>]*> nop
-+0000e260 <[^>]*> nop
-+0000e264 <[^>]*> nop
-+0000e268 <[^>]*> nop
-+0000e26c <[^>]*> nop
-+0000e270 <[^>]*> nop
-+0000e274 <[^>]*> nop
-+0000e278 <[^>]*> nop
-+0000e27c <[^>]*> nop
-+0000e280 <[^>]*> nop
-+0000e284 <[^>]*> nop
-+0000e288 <[^>]*> nop
-+0000e28c <[^>]*> nop
-+0000e290 <[^>]*> nop
-+0000e294 <[^>]*> nop
-+0000e298 <[^>]*> nop
-+0000e29c <[^>]*> nop
-+0000e2a0 <[^>]*> nop
-+0000e2a4 <[^>]*> nop
-+0000e2a8 <[^>]*> nop
-+0000e2ac <[^>]*> nop
-+0000e2b0 <[^>]*> nop
-+0000e2b4 <[^>]*> nop
-+0000e2b8 <[^>]*> nop
-+0000e2bc <[^>]*> nop
-+0000e2c0 <[^>]*> nop
-+0000e2c4 <[^>]*> nop
-+0000e2c8 <[^>]*> nop
-+0000e2cc <[^>]*> nop
-+0000e2d0 <[^>]*> nop
-+0000e2d4 <[^>]*> nop
-+0000e2d8 <[^>]*> nop
-+0000e2dc <[^>]*> nop
-+0000e2e0 <[^>]*> nop
-+0000e2e4 <[^>]*> nop
-+0000e2e8 <[^>]*> nop
-+0000e2ec <[^>]*> nop
-+0000e2f0 <[^>]*> nop
-+0000e2f4 <[^>]*> nop
-+0000e2f8 <[^>]*> nop
-+0000e2fc <[^>]*> nop
-+0000e300 <[^>]*> nop
-+0000e304 <[^>]*> nop
-+0000e308 <[^>]*> nop
-+0000e30c <[^>]*> nop
-+0000e310 <[^>]*> nop
-+0000e314 <[^>]*> nop
-+0000e318 <[^>]*> nop
-+0000e31c <[^>]*> nop
-+0000e320 <[^>]*> nop
-+0000e324 <[^>]*> nop
-+0000e328 <[^>]*> nop
-+0000e32c <[^>]*> nop
-+0000e330 <[^>]*> nop
-+0000e334 <[^>]*> nop
-+0000e338 <[^>]*> nop
-+0000e33c <[^>]*> nop
-+0000e340 <[^>]*> nop
-+0000e344 <[^>]*> nop
-+0000e348 <[^>]*> nop
-+0000e34c <[^>]*> nop
-+0000e350 <[^>]*> nop
-+0000e354 <[^>]*> nop
-+0000e358 <[^>]*> nop
-+0000e35c <[^>]*> nop
-+0000e360 <[^>]*> nop
-+0000e364 <[^>]*> nop
-+0000e368 <[^>]*> nop
-+0000e36c <[^>]*> nop
-+0000e370 <[^>]*> nop
-+0000e374 <[^>]*> nop
-+0000e378 <[^>]*> nop
-+0000e37c <[^>]*> nop
-+0000e380 <[^>]*> nop
-+0000e384 <[^>]*> nop
-+0000e388 <[^>]*> nop
-+0000e38c <[^>]*> nop
-+0000e390 <[^>]*> nop
-+0000e394 <[^>]*> nop
-+0000e398 <[^>]*> nop
-+0000e39c <[^>]*> nop
-+0000e3a0 <[^>]*> nop
-+0000e3a4 <[^>]*> nop
-+0000e3a8 <[^>]*> nop
-+0000e3ac <[^>]*> nop
-+0000e3b0 <[^>]*> nop
-+0000e3b4 <[^>]*> nop
-+0000e3b8 <[^>]*> nop
-+0000e3bc <[^>]*> nop
-+0000e3c0 <[^>]*> nop
-+0000e3c4 <[^>]*> nop
-+0000e3c8 <[^>]*> nop
-+0000e3cc <[^>]*> nop
-+0000e3d0 <[^>]*> nop
-+0000e3d4 <[^>]*> nop
-+0000e3d8 <[^>]*> nop
-+0000e3dc <[^>]*> nop
-+0000e3e0 <[^>]*> nop
-+0000e3e4 <[^>]*> nop
-+0000e3e8 <[^>]*> nop
-+0000e3ec <[^>]*> nop
-+0000e3f0 <[^>]*> nop
-+0000e3f4 <[^>]*> nop
-+0000e3f8 <[^>]*> nop
-+0000e3fc <[^>]*> nop
-+0000e400 <[^>]*> nop
-+0000e404 <[^>]*> nop
-+0000e408 <[^>]*> nop
-+0000e40c <[^>]*> nop
-+0000e410 <[^>]*> nop
-+0000e414 <[^>]*> nop
-+0000e418 <[^>]*> nop
-+0000e41c <[^>]*> nop
-+0000e420 <[^>]*> nop
-+0000e424 <[^>]*> nop
-+0000e428 <[^>]*> nop
-+0000e42c <[^>]*> nop
-+0000e430 <[^>]*> nop
-+0000e434 <[^>]*> nop
-+0000e438 <[^>]*> nop
-+0000e43c <[^>]*> nop
-+0000e440 <[^>]*> nop
-+0000e444 <[^>]*> nop
-+0000e448 <[^>]*> nop
-+0000e44c <[^>]*> nop
-+0000e450 <[^>]*> nop
-+0000e454 <[^>]*> nop
-+0000e458 <[^>]*> nop
-+0000e45c <[^>]*> nop
-+0000e460 <[^>]*> nop
-+0000e464 <[^>]*> nop
-+0000e468 <[^>]*> nop
-+0000e46c <[^>]*> nop
-+0000e470 <[^>]*> nop
-+0000e474 <[^>]*> nop
-+0000e478 <[^>]*> nop
-+0000e47c <[^>]*> nop
-+0000e480 <[^>]*> nop
-+0000e484 <[^>]*> nop
-+0000e488 <[^>]*> nop
-+0000e48c <[^>]*> nop
-+0000e490 <[^>]*> nop
-+0000e494 <[^>]*> nop
-+0000e498 <[^>]*> nop
-+0000e49c <[^>]*> nop
-+0000e4a0 <[^>]*> nop
-+0000e4a4 <[^>]*> nop
-+0000e4a8 <[^>]*> nop
-+0000e4ac <[^>]*> nop
-+0000e4b0 <[^>]*> nop
-+0000e4b4 <[^>]*> nop
-+0000e4b8 <[^>]*> nop
-+0000e4bc <[^>]*> nop
-+0000e4c0 <[^>]*> nop
-+0000e4c4 <[^>]*> nop
-+0000e4c8 <[^>]*> nop
-+0000e4cc <[^>]*> nop
-+0000e4d0 <[^>]*> nop
-+0000e4d4 <[^>]*> nop
-+0000e4d8 <[^>]*> nop
-+0000e4dc <[^>]*> nop
-+0000e4e0 <[^>]*> nop
-+0000e4e4 <[^>]*> nop
-+0000e4e8 <[^>]*> nop
-+0000e4ec <[^>]*> nop
-+0000e4f0 <[^>]*> nop
-+0000e4f4 <[^>]*> nop
-+0000e4f8 <[^>]*> nop
-+0000e4fc <[^>]*> nop
-+0000e500 <[^>]*> nop
-+0000e504 <[^>]*> nop
-+0000e508 <[^>]*> nop
-+0000e50c <[^>]*> nop
-+0000e510 <[^>]*> nop
-+0000e514 <[^>]*> nop
-+0000e518 <[^>]*> nop
-+0000e51c <[^>]*> nop
-+0000e520 <[^>]*> nop
-+0000e524 <[^>]*> nop
-+0000e528 <[^>]*> nop
-+0000e52c <[^>]*> nop
-+0000e530 <[^>]*> nop
-+0000e534 <[^>]*> nop
-+0000e538 <[^>]*> nop
-+0000e53c <[^>]*> nop
-+0000e540 <[^>]*> nop
-+0000e544 <[^>]*> nop
-+0000e548 <[^>]*> nop
-+0000e54c <[^>]*> nop
-+0000e550 <[^>]*> nop
-+0000e554 <[^>]*> nop
-+0000e558 <[^>]*> nop
-+0000e55c <[^>]*> nop
-+0000e560 <[^>]*> nop
-+0000e564 <[^>]*> nop
-+0000e568 <[^>]*> nop
-+0000e56c <[^>]*> nop
-+0000e570 <[^>]*> nop
-+0000e574 <[^>]*> nop
-+0000e578 <[^>]*> nop
-+0000e57c <[^>]*> nop
-+0000e580 <[^>]*> nop
-+0000e584 <[^>]*> nop
-+0000e588 <[^>]*> nop
-+0000e58c <[^>]*> nop
-+0000e590 <[^>]*> nop
-+0000e594 <[^>]*> nop
-+0000e598 <[^>]*> nop
-+0000e59c <[^>]*> nop
-+0000e5a0 <[^>]*> nop
-+0000e5a4 <[^>]*> nop
-+0000e5a8 <[^>]*> nop
-+0000e5ac <[^>]*> nop
-+0000e5b0 <[^>]*> nop
-+0000e5b4 <[^>]*> nop
-+0000e5b8 <[^>]*> nop
-+0000e5bc <[^>]*> nop
-+0000e5c0 <[^>]*> nop
-+0000e5c4 <[^>]*> nop
-+0000e5c8 <[^>]*> nop
-+0000e5cc <[^>]*> nop
-+0000e5d0 <[^>]*> nop
-+0000e5d4 <[^>]*> nop
-+0000e5d8 <[^>]*> nop
-+0000e5dc <[^>]*> nop
-+0000e5e0 <[^>]*> nop
-+0000e5e4 <[^>]*> nop
-+0000e5e8 <[^>]*> nop
-+0000e5ec <[^>]*> nop
-+0000e5f0 <[^>]*> nop
-+0000e5f4 <[^>]*> nop
-+0000e5f8 <[^>]*> nop
-+0000e5fc <[^>]*> nop
-+0000e600 <[^>]*> nop
-+0000e604 <[^>]*> nop
-+0000e608 <[^>]*> nop
-+0000e60c <[^>]*> nop
-+0000e610 <[^>]*> nop
-+0000e614 <[^>]*> nop
-+0000e618 <[^>]*> nop
-+0000e61c <[^>]*> nop
-+0000e620 <[^>]*> nop
-+0000e624 <[^>]*> nop
-+0000e628 <[^>]*> nop
-+0000e62c <[^>]*> nop
-+0000e630 <[^>]*> nop
-+0000e634 <[^>]*> nop
-+0000e638 <[^>]*> nop
-+0000e63c <[^>]*> nop
-+0000e640 <[^>]*> nop
-+0000e644 <[^>]*> nop
-+0000e648 <[^>]*> nop
-+0000e64c <[^>]*> nop
-+0000e650 <[^>]*> nop
-+0000e654 <[^>]*> nop
-+0000e658 <[^>]*> nop
-+0000e65c <[^>]*> nop
-+0000e660 <[^>]*> nop
-+0000e664 <[^>]*> nop
-+0000e668 <[^>]*> nop
-+0000e66c <[^>]*> nop
-+0000e670 <[^>]*> nop
-+0000e674 <[^>]*> nop
-+0000e678 <[^>]*> nop
-+0000e67c <[^>]*> nop
-+0000e680 <[^>]*> nop
-+0000e684 <[^>]*> nop
-+0000e688 <[^>]*> nop
-+0000e68c <[^>]*> nop
-+0000e690 <[^>]*> nop
-+0000e694 <[^>]*> nop
-+0000e698 <[^>]*> nop
-+0000e69c <[^>]*> nop
-+0000e6a0 <[^>]*> nop
-+0000e6a4 <[^>]*> nop
-+0000e6a8 <[^>]*> nop
-+0000e6ac <[^>]*> nop
-+0000e6b0 <[^>]*> nop
-+0000e6b4 <[^>]*> nop
-+0000e6b8 <[^>]*> nop
-+0000e6bc <[^>]*> nop
-+0000e6c0 <[^>]*> nop
-+0000e6c4 <[^>]*> nop
-+0000e6c8 <[^>]*> nop
-+0000e6cc <[^>]*> nop
-+0000e6d0 <[^>]*> nop
-+0000e6d4 <[^>]*> nop
-+0000e6d8 <[^>]*> nop
-+0000e6dc <[^>]*> nop
-+0000e6e0 <[^>]*> nop
-+0000e6e4 <[^>]*> nop
-+0000e6e8 <[^>]*> nop
-+0000e6ec <[^>]*> nop
-+0000e6f0 <[^>]*> nop
-+0000e6f4 <[^>]*> nop
-+0000e6f8 <[^>]*> nop
-+0000e6fc <[^>]*> nop
-+0000e700 <[^>]*> nop
-+0000e704 <[^>]*> nop
-+0000e708 <[^>]*> nop
-+0000e70c <[^>]*> nop
-+0000e710 <[^>]*> nop
-+0000e714 <[^>]*> nop
-+0000e718 <[^>]*> nop
-+0000e71c <[^>]*> nop
-+0000e720 <[^>]*> nop
-+0000e724 <[^>]*> nop
-+0000e728 <[^>]*> nop
-+0000e72c <[^>]*> nop
-+0000e730 <[^>]*> nop
-+0000e734 <[^>]*> nop
-+0000e738 <[^>]*> nop
-+0000e73c <[^>]*> nop
-+0000e740 <[^>]*> nop
-+0000e744 <[^>]*> nop
-+0000e748 <[^>]*> nop
-+0000e74c <[^>]*> nop
-+0000e750 <[^>]*> nop
-+0000e754 <[^>]*> nop
-+0000e758 <[^>]*> nop
-+0000e75c <[^>]*> nop
-+0000e760 <[^>]*> nop
-+0000e764 <[^>]*> nop
-+0000e768 <[^>]*> nop
-+0000e76c <[^>]*> nop
-+0000e770 <[^>]*> nop
-+0000e774 <[^>]*> nop
-+0000e778 <[^>]*> nop
-+0000e77c <[^>]*> nop
-+0000e780 <[^>]*> nop
-+0000e784 <[^>]*> nop
-+0000e788 <[^>]*> nop
-+0000e78c <[^>]*> nop
-+0000e790 <[^>]*> nop
-+0000e794 <[^>]*> nop
-+0000e798 <[^>]*> nop
-+0000e79c <[^>]*> nop
-+0000e7a0 <[^>]*> nop
-+0000e7a4 <[^>]*> nop
-+0000e7a8 <[^>]*> nop
-+0000e7ac <[^>]*> nop
-+0000e7b0 <[^>]*> nop
-+0000e7b4 <[^>]*> nop
-+0000e7b8 <[^>]*> nop
-+0000e7bc <[^>]*> nop
-+0000e7c0 <[^>]*> nop
-+0000e7c4 <[^>]*> nop
-+0000e7c8 <[^>]*> nop
-+0000e7cc <[^>]*> nop
-+0000e7d0 <[^>]*> nop
-+0000e7d4 <[^>]*> nop
-+0000e7d8 <[^>]*> nop
-+0000e7dc <[^>]*> nop
-+0000e7e0 <[^>]*> nop
-+0000e7e4 <[^>]*> nop
-+0000e7e8 <[^>]*> nop
-+0000e7ec <[^>]*> nop
-+0000e7f0 <[^>]*> nop
-+0000e7f4 <[^>]*> nop
-+0000e7f8 <[^>]*> nop
-+0000e7fc <[^>]*> nop
-+0000e800 <[^>]*> nop
-+0000e804 <[^>]*> nop
-+0000e808 <[^>]*> nop
-+0000e80c <[^>]*> nop
-+0000e810 <[^>]*> nop
-+0000e814 <[^>]*> nop
-+0000e818 <[^>]*> nop
-+0000e81c <[^>]*> nop
-+0000e820 <[^>]*> nop
-+0000e824 <[^>]*> nop
-+0000e828 <[^>]*> nop
-+0000e82c <[^>]*> nop
-+0000e830 <[^>]*> nop
-+0000e834 <[^>]*> nop
-+0000e838 <[^>]*> nop
-+0000e83c <[^>]*> nop
-+0000e840 <[^>]*> nop
-+0000e844 <[^>]*> nop
-+0000e848 <[^>]*> nop
-+0000e84c <[^>]*> nop
-+0000e850 <[^>]*> nop
-+0000e854 <[^>]*> nop
-+0000e858 <[^>]*> nop
-+0000e85c <[^>]*> nop
-+0000e860 <[^>]*> nop
-+0000e864 <[^>]*> nop
-+0000e868 <[^>]*> nop
-+0000e86c <[^>]*> nop
-+0000e870 <[^>]*> nop
-+0000e874 <[^>]*> nop
-+0000e878 <[^>]*> nop
-+0000e87c <[^>]*> nop
-+0000e880 <[^>]*> nop
-+0000e884 <[^>]*> nop
-+0000e888 <[^>]*> nop
-+0000e88c <[^>]*> nop
-+0000e890 <[^>]*> nop
-+0000e894 <[^>]*> nop
-+0000e898 <[^>]*> nop
-+0000e89c <[^>]*> nop
-+0000e8a0 <[^>]*> nop
-+0000e8a4 <[^>]*> nop
-+0000e8a8 <[^>]*> nop
-+0000e8ac <[^>]*> nop
-+0000e8b0 <[^>]*> nop
-+0000e8b4 <[^>]*> nop
-+0000e8b8 <[^>]*> nop
-+0000e8bc <[^>]*> nop
-+0000e8c0 <[^>]*> nop
-+0000e8c4 <[^>]*> nop
-+0000e8c8 <[^>]*> nop
-+0000e8cc <[^>]*> nop
-+0000e8d0 <[^>]*> nop
-+0000e8d4 <[^>]*> nop
-+0000e8d8 <[^>]*> nop
-+0000e8dc <[^>]*> nop
-+0000e8e0 <[^>]*> nop
-+0000e8e4 <[^>]*> nop
-+0000e8e8 <[^>]*> nop
-+0000e8ec <[^>]*> nop
-+0000e8f0 <[^>]*> nop
-+0000e8f4 <[^>]*> nop
-+0000e8f8 <[^>]*> nop
-+0000e8fc <[^>]*> nop
-+0000e900 <[^>]*> nop
-+0000e904 <[^>]*> nop
-+0000e908 <[^>]*> nop
-+0000e90c <[^>]*> nop
-+0000e910 <[^>]*> nop
-+0000e914 <[^>]*> nop
-+0000e918 <[^>]*> nop
-+0000e91c <[^>]*> nop
-+0000e920 <[^>]*> nop
-+0000e924 <[^>]*> nop
-+0000e928 <[^>]*> nop
-+0000e92c <[^>]*> nop
-+0000e930 <[^>]*> nop
-+0000e934 <[^>]*> nop
-+0000e938 <[^>]*> nop
-+0000e93c <[^>]*> nop
-+0000e940 <[^>]*> nop
-+0000e944 <[^>]*> nop
-+0000e948 <[^>]*> nop
-+0000e94c <[^>]*> nop
-+0000e950 <[^>]*> nop
-+0000e954 <[^>]*> nop
-+0000e958 <[^>]*> nop
-+0000e95c <[^>]*> nop
-+0000e960 <[^>]*> nop
-+0000e964 <[^>]*> nop
-+0000e968 <[^>]*> nop
-+0000e96c <[^>]*> nop
-+0000e970 <[^>]*> nop
-+0000e974 <[^>]*> nop
-+0000e978 <[^>]*> nop
-+0000e97c <[^>]*> nop
-+0000e980 <[^>]*> nop
-+0000e984 <[^>]*> nop
-+0000e988 <[^>]*> nop
-+0000e98c <[^>]*> nop
-+0000e990 <[^>]*> nop
-+0000e994 <[^>]*> nop
-+0000e998 <[^>]*> nop
-+0000e99c <[^>]*> nop
-+0000e9a0 <[^>]*> nop
-+0000e9a4 <[^>]*> nop
-+0000e9a8 <[^>]*> nop
-+0000e9ac <[^>]*> nop
-+0000e9b0 <[^>]*> nop
-+0000e9b4 <[^>]*> nop
-+0000e9b8 <[^>]*> nop
-+0000e9bc <[^>]*> nop
-+0000e9c0 <[^>]*> nop
-+0000e9c4 <[^>]*> nop
-+0000e9c8 <[^>]*> nop
-+0000e9cc <[^>]*> nop
-+0000e9d0 <[^>]*> nop
-+0000e9d4 <[^>]*> nop
-+0000e9d8 <[^>]*> nop
-+0000e9dc <[^>]*> nop
-+0000e9e0 <[^>]*> nop
-+0000e9e4 <[^>]*> nop
-+0000e9e8 <[^>]*> nop
-+0000e9ec <[^>]*> nop
-+0000e9f0 <[^>]*> nop
-+0000e9f4 <[^>]*> nop
-+0000e9f8 <[^>]*> nop
-+0000e9fc <[^>]*> nop
-+0000ea00 <[^>]*> nop
-+0000ea04 <[^>]*> nop
-+0000ea08 <[^>]*> nop
-+0000ea0c <[^>]*> nop
-+0000ea10 <[^>]*> nop
-+0000ea14 <[^>]*> nop
-+0000ea18 <[^>]*> nop
-+0000ea1c <[^>]*> nop
-+0000ea20 <[^>]*> nop
-+0000ea24 <[^>]*> nop
-+0000ea28 <[^>]*> nop
-+0000ea2c <[^>]*> nop
-+0000ea30 <[^>]*> nop
-+0000ea34 <[^>]*> nop
-+0000ea38 <[^>]*> nop
-+0000ea3c <[^>]*> nop
-+0000ea40 <[^>]*> nop
-+0000ea44 <[^>]*> nop
-+0000ea48 <[^>]*> nop
-+0000ea4c <[^>]*> nop
-+0000ea50 <[^>]*> nop
-+0000ea54 <[^>]*> nop
-+0000ea58 <[^>]*> nop
-+0000ea5c <[^>]*> nop
-+0000ea60 <[^>]*> nop
-+0000ea64 <[^>]*> nop
-+0000ea68 <[^>]*> nop
-+0000ea6c <[^>]*> nop
-+0000ea70 <[^>]*> nop
-+0000ea74 <[^>]*> nop
-+0000ea78 <[^>]*> nop
-+0000ea7c <[^>]*> nop
-+0000ea80 <[^>]*> nop
-+0000ea84 <[^>]*> nop
-+0000ea88 <[^>]*> nop
-+0000ea8c <[^>]*> nop
-+0000ea90 <[^>]*> nop
-+0000ea94 <[^>]*> nop
-+0000ea98 <[^>]*> nop
-+0000ea9c <[^>]*> nop
-+0000eaa0 <[^>]*> nop
-+0000eaa4 <[^>]*> nop
-+0000eaa8 <[^>]*> nop
-+0000eaac <[^>]*> nop
-+0000eab0 <[^>]*> nop
-+0000eab4 <[^>]*> nop
-+0000eab8 <[^>]*> nop
-+0000eabc <[^>]*> nop
-+0000eac0 <[^>]*> nop
-+0000eac4 <[^>]*> nop
-+0000eac8 <[^>]*> nop
-+0000eacc <[^>]*> nop
-+0000ead0 <[^>]*> nop
-+0000ead4 <[^>]*> nop
-+0000ead8 <[^>]*> nop
-+0000eadc <[^>]*> nop
-+0000eae0 <[^>]*> nop
-+0000eae4 <[^>]*> nop
-+0000eae8 <[^>]*> nop
-+0000eaec <[^>]*> nop
-+0000eaf0 <[^>]*> nop
-+0000eaf4 <[^>]*> nop
-+0000eaf8 <[^>]*> nop
-+0000eafc <[^>]*> nop
-+0000eb00 <[^>]*> nop
-+0000eb04 <[^>]*> nop
-+0000eb08 <[^>]*> nop
-+0000eb0c <[^>]*> nop
-+0000eb10 <[^>]*> nop
-+0000eb14 <[^>]*> nop
-+0000eb18 <[^>]*> nop
-+0000eb1c <[^>]*> nop
-+0000eb20 <[^>]*> nop
-+0000eb24 <[^>]*> nop
-+0000eb28 <[^>]*> nop
-+0000eb2c <[^>]*> nop
-+0000eb30 <[^>]*> nop
-+0000eb34 <[^>]*> nop
-+0000eb38 <[^>]*> nop
-+0000eb3c <[^>]*> nop
-+0000eb40 <[^>]*> nop
-+0000eb44 <[^>]*> nop
-+0000eb48 <[^>]*> nop
-+0000eb4c <[^>]*> nop
-+0000eb50 <[^>]*> nop
-+0000eb54 <[^>]*> nop
-+0000eb58 <[^>]*> nop
-+0000eb5c <[^>]*> nop
-+0000eb60 <[^>]*> nop
-+0000eb64 <[^>]*> nop
-+0000eb68 <[^>]*> nop
-+0000eb6c <[^>]*> nop
-+0000eb70 <[^>]*> nop
-+0000eb74 <[^>]*> nop
-+0000eb78 <[^>]*> nop
-+0000eb7c <[^>]*> nop
-+0000eb80 <[^>]*> nop
-+0000eb84 <[^>]*> nop
-+0000eb88 <[^>]*> nop
-+0000eb8c <[^>]*> nop
-+0000eb90 <[^>]*> nop
-+0000eb94 <[^>]*> nop
-+0000eb98 <[^>]*> nop
-+0000eb9c <[^>]*> nop
-+0000eba0 <[^>]*> nop
-+0000eba4 <[^>]*> nop
-+0000eba8 <[^>]*> nop
-+0000ebac <[^>]*> nop
-+0000ebb0 <[^>]*> nop
-+0000ebb4 <[^>]*> nop
-+0000ebb8 <[^>]*> nop
-+0000ebbc <[^>]*> nop
-+0000ebc0 <[^>]*> nop
-+0000ebc4 <[^>]*> nop
-+0000ebc8 <[^>]*> nop
-+0000ebcc <[^>]*> nop
-+0000ebd0 <[^>]*> nop
-+0000ebd4 <[^>]*> nop
-+0000ebd8 <[^>]*> nop
-+0000ebdc <[^>]*> nop
-+0000ebe0 <[^>]*> nop
-+0000ebe4 <[^>]*> nop
-+0000ebe8 <[^>]*> nop
-+0000ebec <[^>]*> nop
-+0000ebf0 <[^>]*> nop
-+0000ebf4 <[^>]*> nop
-+0000ebf8 <[^>]*> nop
-+0000ebfc <[^>]*> nop
-+0000ec00 <[^>]*> nop
-+0000ec04 <[^>]*> nop
-+0000ec08 <[^>]*> nop
-+0000ec0c <[^>]*> nop
-+0000ec10 <[^>]*> nop
-+0000ec14 <[^>]*> nop
-+0000ec18 <[^>]*> nop
-+0000ec1c <[^>]*> nop
-+0000ec20 <[^>]*> nop
-+0000ec24 <[^>]*> nop
-+0000ec28 <[^>]*> nop
-+0000ec2c <[^>]*> nop
-+0000ec30 <[^>]*> nop
-+0000ec34 <[^>]*> nop
-+0000ec38 <[^>]*> nop
-+0000ec3c <[^>]*> nop
-+0000ec40 <[^>]*> nop
-+0000ec44 <[^>]*> nop
-+0000ec48 <[^>]*> nop
-+0000ec4c <[^>]*> nop
-+0000ec50 <[^>]*> nop
-+0000ec54 <[^>]*> nop
-+0000ec58 <[^>]*> nop
-+0000ec5c <[^>]*> nop
-+0000ec60 <[^>]*> nop
-+0000ec64 <[^>]*> nop
-+0000ec68 <[^>]*> nop
-+0000ec6c <[^>]*> nop
-+0000ec70 <[^>]*> nop
-+0000ec74 <[^>]*> nop
-+0000ec78 <[^>]*> nop
-+0000ec7c <[^>]*> nop
-+0000ec80 <[^>]*> nop
-+0000ec84 <[^>]*> nop
-+0000ec88 <[^>]*> nop
-+0000ec8c <[^>]*> nop
-+0000ec90 <[^>]*> nop
-+0000ec94 <[^>]*> nop
-+0000ec98 <[^>]*> nop
-+0000ec9c <[^>]*> nop
-+0000eca0 <[^>]*> nop
-+0000eca4 <[^>]*> nop
-+0000eca8 <[^>]*> nop
-+0000ecac <[^>]*> nop
-+0000ecb0 <[^>]*> nop
-+0000ecb4 <[^>]*> nop
-+0000ecb8 <[^>]*> nop
-+0000ecbc <[^>]*> nop
-+0000ecc0 <[^>]*> nop
-+0000ecc4 <[^>]*> nop
-+0000ecc8 <[^>]*> nop
-+0000eccc <[^>]*> nop
-+0000ecd0 <[^>]*> nop
-+0000ecd4 <[^>]*> nop
-+0000ecd8 <[^>]*> nop
-+0000ecdc <[^>]*> nop
-+0000ece0 <[^>]*> nop
-+0000ece4 <[^>]*> nop
-+0000ece8 <[^>]*> nop
-+0000ecec <[^>]*> nop
-+0000ecf0 <[^>]*> nop
-+0000ecf4 <[^>]*> nop
-+0000ecf8 <[^>]*> nop
-+0000ecfc <[^>]*> nop
-+0000ed00 <[^>]*> nop
-+0000ed04 <[^>]*> nop
-+0000ed08 <[^>]*> nop
-+0000ed0c <[^>]*> nop
-+0000ed10 <[^>]*> nop
-+0000ed14 <[^>]*> nop
-+0000ed18 <[^>]*> nop
-+0000ed1c <[^>]*> nop
-+0000ed20 <[^>]*> nop
-+0000ed24 <[^>]*> nop
-+0000ed28 <[^>]*> nop
-+0000ed2c <[^>]*> nop
-+0000ed30 <[^>]*> nop
-+0000ed34 <[^>]*> nop
-+0000ed38 <[^>]*> nop
-+0000ed3c <[^>]*> nop
-+0000ed40 <[^>]*> nop
-+0000ed44 <[^>]*> nop
-+0000ed48 <[^>]*> nop
-+0000ed4c <[^>]*> nop
-+0000ed50 <[^>]*> nop
-+0000ed54 <[^>]*> nop
-+0000ed58 <[^>]*> nop
-+0000ed5c <[^>]*> nop
-+0000ed60 <[^>]*> nop
-+0000ed64 <[^>]*> nop
-+0000ed68 <[^>]*> nop
-+0000ed6c <[^>]*> nop
-+0000ed70 <[^>]*> nop
-+0000ed74 <[^>]*> nop
-+0000ed78 <[^>]*> nop
-+0000ed7c <[^>]*> nop
-+0000ed80 <[^>]*> nop
-+0000ed84 <[^>]*> nop
-+0000ed88 <[^>]*> nop
-+0000ed8c <[^>]*> nop
-+0000ed90 <[^>]*> nop
-+0000ed94 <[^>]*> nop
-+0000ed98 <[^>]*> nop
-+0000ed9c <[^>]*> nop
-+0000eda0 <[^>]*> nop
-+0000eda4 <[^>]*> nop
-+0000eda8 <[^>]*> nop
-+0000edac <[^>]*> nop
-+0000edb0 <[^>]*> nop
-+0000edb4 <[^>]*> nop
-+0000edb8 <[^>]*> nop
-+0000edbc <[^>]*> nop
-+0000edc0 <[^>]*> nop
-+0000edc4 <[^>]*> nop
-+0000edc8 <[^>]*> nop
-+0000edcc <[^>]*> nop
-+0000edd0 <[^>]*> nop
-+0000edd4 <[^>]*> nop
-+0000edd8 <[^>]*> nop
-+0000eddc <[^>]*> nop
-+0000ede0 <[^>]*> nop
-+0000ede4 <[^>]*> nop
-+0000ede8 <[^>]*> nop
-+0000edec <[^>]*> nop
-+0000edf0 <[^>]*> nop
-+0000edf4 <[^>]*> nop
-+0000edf8 <[^>]*> nop
-+0000edfc <[^>]*> nop
-+0000ee00 <[^>]*> nop
-+0000ee04 <[^>]*> nop
-+0000ee08 <[^>]*> nop
-+0000ee0c <[^>]*> nop
-+0000ee10 <[^>]*> nop
-+0000ee14 <[^>]*> nop
-+0000ee18 <[^>]*> nop
-+0000ee1c <[^>]*> nop
-+0000ee20 <[^>]*> nop
-+0000ee24 <[^>]*> nop
-+0000ee28 <[^>]*> nop
-+0000ee2c <[^>]*> nop
-+0000ee30 <[^>]*> nop
-+0000ee34 <[^>]*> nop
-+0000ee38 <[^>]*> nop
-+0000ee3c <[^>]*> nop
-+0000ee40 <[^>]*> nop
-+0000ee44 <[^>]*> nop
-+0000ee48 <[^>]*> nop
-+0000ee4c <[^>]*> nop
-+0000ee50 <[^>]*> nop
-+0000ee54 <[^>]*> nop
-+0000ee58 <[^>]*> nop
-+0000ee5c <[^>]*> nop
-+0000ee60 <[^>]*> nop
-+0000ee64 <[^>]*> nop
-+0000ee68 <[^>]*> nop
-+0000ee6c <[^>]*> nop
-+0000ee70 <[^>]*> nop
-+0000ee74 <[^>]*> nop
-+0000ee78 <[^>]*> nop
-+0000ee7c <[^>]*> nop
-+0000ee80 <[^>]*> nop
-+0000ee84 <[^>]*> nop
-+0000ee88 <[^>]*> nop
-+0000ee8c <[^>]*> nop
-+0000ee90 <[^>]*> nop
-+0000ee94 <[^>]*> nop
-+0000ee98 <[^>]*> nop
-+0000ee9c <[^>]*> nop
-+0000eea0 <[^>]*> nop
-+0000eea4 <[^>]*> nop
-+0000eea8 <[^>]*> nop
-+0000eeac <[^>]*> nop
-+0000eeb0 <[^>]*> nop
-+0000eeb4 <[^>]*> nop
-+0000eeb8 <[^>]*> nop
-+0000eebc <[^>]*> nop
-+0000eec0 <[^>]*> nop
-+0000eec4 <[^>]*> nop
-+0000eec8 <[^>]*> nop
-+0000eecc <[^>]*> nop
-+0000eed0 <[^>]*> nop
-+0000eed4 <[^>]*> nop
-+0000eed8 <[^>]*> nop
-+0000eedc <[^>]*> nop
-+0000eee0 <[^>]*> nop
-+0000eee4 <[^>]*> nop
-+0000eee8 <[^>]*> nop
-+0000eeec <[^>]*> nop
-+0000eef0 <[^>]*> nop
-+0000eef4 <[^>]*> nop
-+0000eef8 <[^>]*> nop
-+0000eefc <[^>]*> nop
-+0000ef00 <[^>]*> nop
-+0000ef04 <[^>]*> nop
-+0000ef08 <[^>]*> nop
-+0000ef0c <[^>]*> nop
-+0000ef10 <[^>]*> nop
-+0000ef14 <[^>]*> nop
-+0000ef18 <[^>]*> nop
-+0000ef1c <[^>]*> nop
-+0000ef20 <[^>]*> nop
-+0000ef24 <[^>]*> nop
-+0000ef28 <[^>]*> nop
-+0000ef2c <[^>]*> nop
-+0000ef30 <[^>]*> nop
-+0000ef34 <[^>]*> nop
-+0000ef38 <[^>]*> nop
-+0000ef3c <[^>]*> nop
-+0000ef40 <[^>]*> nop
-+0000ef44 <[^>]*> nop
-+0000ef48 <[^>]*> nop
-+0000ef4c <[^>]*> nop
-+0000ef50 <[^>]*> nop
-+0000ef54 <[^>]*> nop
-+0000ef58 <[^>]*> nop
-+0000ef5c <[^>]*> nop
-+0000ef60 <[^>]*> nop
-+0000ef64 <[^>]*> nop
-+0000ef68 <[^>]*> nop
-+0000ef6c <[^>]*> nop
-+0000ef70 <[^>]*> nop
-+0000ef74 <[^>]*> nop
-+0000ef78 <[^>]*> nop
-+0000ef7c <[^>]*> nop
-+0000ef80 <[^>]*> nop
-+0000ef84 <[^>]*> nop
-+0000ef88 <[^>]*> nop
-+0000ef8c <[^>]*> nop
-+0000ef90 <[^>]*> nop
-+0000ef94 <[^>]*> nop
-+0000ef98 <[^>]*> nop
-+0000ef9c <[^>]*> nop
-+0000efa0 <[^>]*> nop
-+0000efa4 <[^>]*> nop
-+0000efa8 <[^>]*> nop
-+0000efac <[^>]*> nop
-+0000efb0 <[^>]*> nop
-+0000efb4 <[^>]*> nop
-+0000efb8 <[^>]*> nop
-+0000efbc <[^>]*> nop
-+0000efc0 <[^>]*> nop
-+0000efc4 <[^>]*> nop
-+0000efc8 <[^>]*> nop
-+0000efcc <[^>]*> nop
-+0000efd0 <[^>]*> nop
-+0000efd4 <[^>]*> nop
-+0000efd8 <[^>]*> nop
-+0000efdc <[^>]*> nop
-+0000efe0 <[^>]*> nop
-+0000efe4 <[^>]*> nop
-+0000efe8 <[^>]*> nop
-+0000efec <[^>]*> nop
-+0000eff0 <[^>]*> nop
-+0000eff4 <[^>]*> nop
-+0000eff8 <[^>]*> nop
-+0000effc <[^>]*> nop
-+0000f000 <[^>]*> nop
-+0000f004 <[^>]*> nop
-+0000f008 <[^>]*> nop
-+0000f00c <[^>]*> nop
-+0000f010 <[^>]*> nop
-+0000f014 <[^>]*> nop
-+0000f018 <[^>]*> nop
-+0000f01c <[^>]*> nop
-+0000f020 <[^>]*> nop
-+0000f024 <[^>]*> nop
-+0000f028 <[^>]*> nop
-+0000f02c <[^>]*> nop
-+0000f030 <[^>]*> nop
-+0000f034 <[^>]*> nop
-+0000f038 <[^>]*> nop
-+0000f03c <[^>]*> nop
-+0000f040 <[^>]*> nop
-+0000f044 <[^>]*> nop
-+0000f048 <[^>]*> nop
-+0000f04c <[^>]*> nop
-+0000f050 <[^>]*> nop
-+0000f054 <[^>]*> nop
-+0000f058 <[^>]*> nop
-+0000f05c <[^>]*> nop
-+0000f060 <[^>]*> nop
-+0000f064 <[^>]*> nop
-+0000f068 <[^>]*> nop
-+0000f06c <[^>]*> nop
-+0000f070 <[^>]*> nop
-+0000f074 <[^>]*> nop
-+0000f078 <[^>]*> nop
-+0000f07c <[^>]*> nop
-+0000f080 <[^>]*> nop
-+0000f084 <[^>]*> nop
-+0000f088 <[^>]*> nop
-+0000f08c <[^>]*> nop
-+0000f090 <[^>]*> nop
-+0000f094 <[^>]*> nop
-+0000f098 <[^>]*> nop
-+0000f09c <[^>]*> nop
-+0000f0a0 <[^>]*> nop
-+0000f0a4 <[^>]*> nop
-+0000f0a8 <[^>]*> nop
-+0000f0ac <[^>]*> nop
-+0000f0b0 <[^>]*> nop
-+0000f0b4 <[^>]*> nop
-+0000f0b8 <[^>]*> nop
-+0000f0bc <[^>]*> nop
-+0000f0c0 <[^>]*> nop
-+0000f0c4 <[^>]*> nop
-+0000f0c8 <[^>]*> nop
-+0000f0cc <[^>]*> nop
-+0000f0d0 <[^>]*> nop
-+0000f0d4 <[^>]*> nop
-+0000f0d8 <[^>]*> nop
-+0000f0dc <[^>]*> nop
-+0000f0e0 <[^>]*> nop
-+0000f0e4 <[^>]*> nop
-+0000f0e8 <[^>]*> nop
-+0000f0ec <[^>]*> nop
-+0000f0f0 <[^>]*> nop
-+0000f0f4 <[^>]*> nop
-+0000f0f8 <[^>]*> nop
-+0000f0fc <[^>]*> nop
-+0000f100 <[^>]*> nop
-+0000f104 <[^>]*> nop
-+0000f108 <[^>]*> nop
-+0000f10c <[^>]*> nop
-+0000f110 <[^>]*> nop
-+0000f114 <[^>]*> nop
-+0000f118 <[^>]*> nop
-+0000f11c <[^>]*> nop
-+0000f120 <[^>]*> nop
-+0000f124 <[^>]*> nop
-+0000f128 <[^>]*> nop
-+0000f12c <[^>]*> nop
-+0000f130 <[^>]*> nop
-+0000f134 <[^>]*> nop
-+0000f138 <[^>]*> nop
-+0000f13c <[^>]*> nop
-+0000f140 <[^>]*> nop
-+0000f144 <[^>]*> nop
-+0000f148 <[^>]*> nop
-+0000f14c <[^>]*> nop
-+0000f150 <[^>]*> nop
-+0000f154 <[^>]*> nop
-+0000f158 <[^>]*> nop
-+0000f15c <[^>]*> nop
-+0000f160 <[^>]*> nop
-+0000f164 <[^>]*> nop
-+0000f168 <[^>]*> nop
-+0000f16c <[^>]*> nop
-+0000f170 <[^>]*> nop
-+0000f174 <[^>]*> nop
-+0000f178 <[^>]*> nop
-+0000f17c <[^>]*> nop
-+0000f180 <[^>]*> nop
-+0000f184 <[^>]*> nop
-+0000f188 <[^>]*> nop
-+0000f18c <[^>]*> nop
-+0000f190 <[^>]*> nop
-+0000f194 <[^>]*> nop
-+0000f198 <[^>]*> nop
-+0000f19c <[^>]*> nop
-+0000f1a0 <[^>]*> nop
-+0000f1a4 <[^>]*> nop
-+0000f1a8 <[^>]*> nop
-+0000f1ac <[^>]*> nop
-+0000f1b0 <[^>]*> nop
-+0000f1b4 <[^>]*> nop
-+0000f1b8 <[^>]*> nop
-+0000f1bc <[^>]*> nop
-+0000f1c0 <[^>]*> nop
-+0000f1c4 <[^>]*> nop
-+0000f1c8 <[^>]*> nop
-+0000f1cc <[^>]*> nop
-+0000f1d0 <[^>]*> nop
-+0000f1d4 <[^>]*> nop
-+0000f1d8 <[^>]*> nop
-+0000f1dc <[^>]*> nop
-+0000f1e0 <[^>]*> nop
-+0000f1e4 <[^>]*> nop
-+0000f1e8 <[^>]*> nop
-+0000f1ec <[^>]*> nop
-+0000f1f0 <[^>]*> nop
-+0000f1f4 <[^>]*> nop
-+0000f1f8 <[^>]*> nop
-+0000f1fc <[^>]*> nop
-+0000f200 <[^>]*> nop
-+0000f204 <[^>]*> nop
-+0000f208 <[^>]*> nop
-+0000f20c <[^>]*> nop
-+0000f210 <[^>]*> nop
-+0000f214 <[^>]*> nop
-+0000f218 <[^>]*> nop
-+0000f21c <[^>]*> nop
-+0000f220 <[^>]*> nop
-+0000f224 <[^>]*> nop
-+0000f228 <[^>]*> nop
-+0000f22c <[^>]*> nop
-+0000f230 <[^>]*> nop
-+0000f234 <[^>]*> nop
-+0000f238 <[^>]*> nop
-+0000f23c <[^>]*> nop
-+0000f240 <[^>]*> nop
-+0000f244 <[^>]*> nop
-+0000f248 <[^>]*> nop
-+0000f24c <[^>]*> nop
-+0000f250 <[^>]*> nop
-+0000f254 <[^>]*> nop
-+0000f258 <[^>]*> nop
-+0000f25c <[^>]*> nop
-+0000f260 <[^>]*> nop
-+0000f264 <[^>]*> nop
-+0000f268 <[^>]*> nop
-+0000f26c <[^>]*> nop
-+0000f270 <[^>]*> nop
-+0000f274 <[^>]*> nop
-+0000f278 <[^>]*> nop
-+0000f27c <[^>]*> nop
-+0000f280 <[^>]*> nop
-+0000f284 <[^>]*> nop
-+0000f288 <[^>]*> nop
-+0000f28c <[^>]*> nop
-+0000f290 <[^>]*> nop
-+0000f294 <[^>]*> nop
-+0000f298 <[^>]*> nop
-+0000f29c <[^>]*> nop
-+0000f2a0 <[^>]*> nop
-+0000f2a4 <[^>]*> nop
-+0000f2a8 <[^>]*> nop
-+0000f2ac <[^>]*> nop
-+0000f2b0 <[^>]*> nop
-+0000f2b4 <[^>]*> nop
-+0000f2b8 <[^>]*> nop
-+0000f2bc <[^>]*> nop
-+0000f2c0 <[^>]*> nop
-+0000f2c4 <[^>]*> nop
-+0000f2c8 <[^>]*> nop
-+0000f2cc <[^>]*> nop
-+0000f2d0 <[^>]*> nop
-+0000f2d4 <[^>]*> nop
-+0000f2d8 <[^>]*> nop
-+0000f2dc <[^>]*> nop
-+0000f2e0 <[^>]*> nop
-+0000f2e4 <[^>]*> nop
-+0000f2e8 <[^>]*> nop
-+0000f2ec <[^>]*> nop
-+0000f2f0 <[^>]*> nop
-+0000f2f4 <[^>]*> nop
-+0000f2f8 <[^>]*> nop
-+0000f2fc <[^>]*> nop
-+0000f300 <[^>]*> nop
-+0000f304 <[^>]*> nop
-+0000f308 <[^>]*> nop
-+0000f30c <[^>]*> nop
-+0000f310 <[^>]*> nop
-+0000f314 <[^>]*> nop
-+0000f318 <[^>]*> nop
-+0000f31c <[^>]*> nop
-+0000f320 <[^>]*> nop
-+0000f324 <[^>]*> nop
-+0000f328 <[^>]*> nop
-+0000f32c <[^>]*> nop
-+0000f330 <[^>]*> nop
-+0000f334 <[^>]*> nop
-+0000f338 <[^>]*> nop
-+0000f33c <[^>]*> nop
-+0000f340 <[^>]*> nop
-+0000f344 <[^>]*> nop
-+0000f348 <[^>]*> nop
-+0000f34c <[^>]*> nop
-+0000f350 <[^>]*> nop
-+0000f354 <[^>]*> nop
-+0000f358 <[^>]*> nop
-+0000f35c <[^>]*> nop
-+0000f360 <[^>]*> nop
-+0000f364 <[^>]*> nop
-+0000f368 <[^>]*> nop
-+0000f36c <[^>]*> nop
-+0000f370 <[^>]*> nop
-+0000f374 <[^>]*> nop
-+0000f378 <[^>]*> nop
-+0000f37c <[^>]*> nop
-+0000f380 <[^>]*> nop
-+0000f384 <[^>]*> nop
-+0000f388 <[^>]*> nop
-+0000f38c <[^>]*> nop
-+0000f390 <[^>]*> nop
-+0000f394 <[^>]*> nop
-+0000f398 <[^>]*> nop
-+0000f39c <[^>]*> nop
-+0000f3a0 <[^>]*> nop
-+0000f3a4 <[^>]*> nop
-+0000f3a8 <[^>]*> nop
-+0000f3ac <[^>]*> nop
-+0000f3b0 <[^>]*> nop
-+0000f3b4 <[^>]*> nop
-+0000f3b8 <[^>]*> nop
-+0000f3bc <[^>]*> nop
-+0000f3c0 <[^>]*> nop
-+0000f3c4 <[^>]*> nop
-+0000f3c8 <[^>]*> nop
-+0000f3cc <[^>]*> nop
-+0000f3d0 <[^>]*> nop
-+0000f3d4 <[^>]*> nop
-+0000f3d8 <[^>]*> nop
-+0000f3dc <[^>]*> nop
-+0000f3e0 <[^>]*> nop
-+0000f3e4 <[^>]*> nop
-+0000f3e8 <[^>]*> nop
-+0000f3ec <[^>]*> nop
-+0000f3f0 <[^>]*> nop
-+0000f3f4 <[^>]*> nop
-+0000f3f8 <[^>]*> nop
-+0000f3fc <[^>]*> nop
-+0000f400 <[^>]*> nop
-+0000f404 <[^>]*> nop
-+0000f408 <[^>]*> nop
-+0000f40c <[^>]*> nop
-+0000f410 <[^>]*> nop
-+0000f414 <[^>]*> nop
-+0000f418 <[^>]*> nop
-+0000f41c <[^>]*> nop
-+0000f420 <[^>]*> nop
-+0000f424 <[^>]*> nop
-+0000f428 <[^>]*> nop
-+0000f42c <[^>]*> nop
-+0000f430 <[^>]*> nop
-+0000f434 <[^>]*> nop
-+0000f438 <[^>]*> nop
-+0000f43c <[^>]*> nop
-+0000f440 <[^>]*> nop
-+0000f444 <[^>]*> nop
-+0000f448 <[^>]*> nop
-+0000f44c <[^>]*> nop
-+0000f450 <[^>]*> nop
-+0000f454 <[^>]*> nop
-+0000f458 <[^>]*> nop
-+0000f45c <[^>]*> nop
-+0000f460 <[^>]*> nop
-+0000f464 <[^>]*> nop
-+0000f468 <[^>]*> nop
-+0000f46c <[^>]*> nop
-+0000f470 <[^>]*> nop
-+0000f474 <[^>]*> nop
-+0000f478 <[^>]*> nop
-+0000f47c <[^>]*> nop
-+0000f480 <[^>]*> nop
-+0000f484 <[^>]*> nop
-+0000f488 <[^>]*> nop
-+0000f48c <[^>]*> nop
-+0000f490 <[^>]*> nop
-+0000f494 <[^>]*> nop
-+0000f498 <[^>]*> nop
-+0000f49c <[^>]*> nop
-+0000f4a0 <[^>]*> nop
-+0000f4a4 <[^>]*> nop
-+0000f4a8 <[^>]*> nop
-+0000f4ac <[^>]*> nop
-+0000f4b0 <[^>]*> nop
-+0000f4b4 <[^>]*> nop
-+0000f4b8 <[^>]*> nop
-+0000f4bc <[^>]*> nop
-+0000f4c0 <[^>]*> nop
-+0000f4c4 <[^>]*> nop
-+0000f4c8 <[^>]*> nop
-+0000f4cc <[^>]*> nop
-+0000f4d0 <[^>]*> nop
-+0000f4d4 <[^>]*> nop
-+0000f4d8 <[^>]*> nop
-+0000f4dc <[^>]*> nop
-+0000f4e0 <[^>]*> nop
-+0000f4e4 <[^>]*> nop
-+0000f4e8 <[^>]*> nop
-+0000f4ec <[^>]*> nop
-+0000f4f0 <[^>]*> nop
-+0000f4f4 <[^>]*> nop
-+0000f4f8 <[^>]*> nop
-+0000f4fc <[^>]*> nop
-+0000f500 <[^>]*> nop
-+0000f504 <[^>]*> nop
-+0000f508 <[^>]*> nop
-+0000f50c <[^>]*> nop
-+0000f510 <[^>]*> nop
-+0000f514 <[^>]*> nop
-+0000f518 <[^>]*> nop
-+0000f51c <[^>]*> nop
-+0000f520 <[^>]*> nop
-+0000f524 <[^>]*> nop
-+0000f528 <[^>]*> nop
-+0000f52c <[^>]*> nop
-+0000f530 <[^>]*> nop
-+0000f534 <[^>]*> nop
-+0000f538 <[^>]*> nop
-+0000f53c <[^>]*> nop
-+0000f540 <[^>]*> nop
-+0000f544 <[^>]*> nop
-+0000f548 <[^>]*> nop
-+0000f54c <[^>]*> nop
-+0000f550 <[^>]*> nop
-+0000f554 <[^>]*> nop
-+0000f558 <[^>]*> nop
-+0000f55c <[^>]*> nop
-+0000f560 <[^>]*> nop
-+0000f564 <[^>]*> nop
-+0000f568 <[^>]*> nop
-+0000f56c <[^>]*> nop
-+0000f570 <[^>]*> nop
-+0000f574 <[^>]*> nop
-+0000f578 <[^>]*> nop
-+0000f57c <[^>]*> nop
-+0000f580 <[^>]*> nop
-+0000f584 <[^>]*> nop
-+0000f588 <[^>]*> nop
-+0000f58c <[^>]*> nop
-+0000f590 <[^>]*> nop
-+0000f594 <[^>]*> nop
-+0000f598 <[^>]*> nop
-+0000f59c <[^>]*> nop
-+0000f5a0 <[^>]*> nop
-+0000f5a4 <[^>]*> nop
-+0000f5a8 <[^>]*> nop
-+0000f5ac <[^>]*> nop
-+0000f5b0 <[^>]*> nop
-+0000f5b4 <[^>]*> nop
-+0000f5b8 <[^>]*> nop
-+0000f5bc <[^>]*> nop
-+0000f5c0 <[^>]*> nop
-+0000f5c4 <[^>]*> nop
-+0000f5c8 <[^>]*> nop
-+0000f5cc <[^>]*> nop
-+0000f5d0 <[^>]*> nop
-+0000f5d4 <[^>]*> nop
-+0000f5d8 <[^>]*> nop
-+0000f5dc <[^>]*> nop
-+0000f5e0 <[^>]*> nop
-+0000f5e4 <[^>]*> nop
-+0000f5e8 <[^>]*> nop
-+0000f5ec <[^>]*> nop
-+0000f5f0 <[^>]*> nop
-+0000f5f4 <[^>]*> nop
-+0000f5f8 <[^>]*> nop
-+0000f5fc <[^>]*> nop
-+0000f600 <[^>]*> nop
-+0000f604 <[^>]*> nop
-+0000f608 <[^>]*> nop
-+0000f60c <[^>]*> nop
-+0000f610 <[^>]*> nop
-+0000f614 <[^>]*> nop
-+0000f618 <[^>]*> nop
-+0000f61c <[^>]*> nop
-+0000f620 <[^>]*> nop
-+0000f624 <[^>]*> nop
-+0000f628 <[^>]*> nop
-+0000f62c <[^>]*> nop
-+0000f630 <[^>]*> nop
-+0000f634 <[^>]*> nop
-+0000f638 <[^>]*> nop
-+0000f63c <[^>]*> nop
-+0000f640 <[^>]*> nop
-+0000f644 <[^>]*> nop
-+0000f648 <[^>]*> nop
-+0000f64c <[^>]*> nop
-+0000f650 <[^>]*> nop
-+0000f654 <[^>]*> nop
-+0000f658 <[^>]*> nop
-+0000f65c <[^>]*> nop
-+0000f660 <[^>]*> nop
-+0000f664 <[^>]*> nop
-+0000f668 <[^>]*> nop
-+0000f66c <[^>]*> nop
-+0000f670 <[^>]*> nop
-+0000f674 <[^>]*> nop
-+0000f678 <[^>]*> nop
-+0000f67c <[^>]*> nop
-+0000f680 <[^>]*> nop
-+0000f684 <[^>]*> nop
-+0000f688 <[^>]*> nop
-+0000f68c <[^>]*> nop
-+0000f690 <[^>]*> nop
-+0000f694 <[^>]*> nop
-+0000f698 <[^>]*> nop
-+0000f69c <[^>]*> nop
-+0000f6a0 <[^>]*> nop
-+0000f6a4 <[^>]*> nop
-+0000f6a8 <[^>]*> nop
-+0000f6ac <[^>]*> nop
-+0000f6b0 <[^>]*> nop
-+0000f6b4 <[^>]*> nop
-+0000f6b8 <[^>]*> nop
-+0000f6bc <[^>]*> nop
-+0000f6c0 <[^>]*> nop
-+0000f6c4 <[^>]*> nop
-+0000f6c8 <[^>]*> nop
-+0000f6cc <[^>]*> nop
-+0000f6d0 <[^>]*> nop
-+0000f6d4 <[^>]*> nop
-+0000f6d8 <[^>]*> nop
-+0000f6dc <[^>]*> nop
-+0000f6e0 <[^>]*> nop
-+0000f6e4 <[^>]*> nop
-+0000f6e8 <[^>]*> nop
-+0000f6ec <[^>]*> nop
-+0000f6f0 <[^>]*> nop
-+0000f6f4 <[^>]*> nop
-+0000f6f8 <[^>]*> nop
-+0000f6fc <[^>]*> nop
-+0000f700 <[^>]*> nop
-+0000f704 <[^>]*> nop
-+0000f708 <[^>]*> nop
-+0000f70c <[^>]*> nop
-+0000f710 <[^>]*> nop
-+0000f714 <[^>]*> nop
-+0000f718 <[^>]*> nop
-+0000f71c <[^>]*> nop
-+0000f720 <[^>]*> nop
-+0000f724 <[^>]*> nop
-+0000f728 <[^>]*> nop
-+0000f72c <[^>]*> nop
-+0000f730 <[^>]*> nop
-+0000f734 <[^>]*> nop
-+0000f738 <[^>]*> nop
-+0000f73c <[^>]*> nop
-+0000f740 <[^>]*> nop
-+0000f744 <[^>]*> nop
-+0000f748 <[^>]*> nop
-+0000f74c <[^>]*> nop
-+0000f750 <[^>]*> nop
-+0000f754 <[^>]*> nop
-+0000f758 <[^>]*> nop
-+0000f75c <[^>]*> nop
-+0000f760 <[^>]*> nop
-+0000f764 <[^>]*> nop
-+0000f768 <[^>]*> nop
-+0000f76c <[^>]*> nop
-+0000f770 <[^>]*> nop
-+0000f774 <[^>]*> nop
-+0000f778 <[^>]*> nop
-+0000f77c <[^>]*> nop
-+0000f780 <[^>]*> nop
-+0000f784 <[^>]*> nop
-+0000f788 <[^>]*> nop
-+0000f78c <[^>]*> nop
-+0000f790 <[^>]*> nop
-+0000f794 <[^>]*> nop
-+0000f798 <[^>]*> nop
-+0000f79c <[^>]*> nop
-+0000f7a0 <[^>]*> nop
-+0000f7a4 <[^>]*> nop
-+0000f7a8 <[^>]*> nop
-+0000f7ac <[^>]*> nop
-+0000f7b0 <[^>]*> nop
-+0000f7b4 <[^>]*> nop
-+0000f7b8 <[^>]*> nop
-+0000f7bc <[^>]*> nop
-+0000f7c0 <[^>]*> nop
-+0000f7c4 <[^>]*> nop
-+0000f7c8 <[^>]*> nop
-+0000f7cc <[^>]*> nop
-+0000f7d0 <[^>]*> nop
-+0000f7d4 <[^>]*> nop
-+0000f7d8 <[^>]*> nop
-+0000f7dc <[^>]*> nop
-+0000f7e0 <[^>]*> nop
-+0000f7e4 <[^>]*> nop
-+0000f7e8 <[^>]*> nop
-+0000f7ec <[^>]*> nop
-+0000f7f0 <[^>]*> nop
-+0000f7f4 <[^>]*> nop
-+0000f7f8 <[^>]*> nop
-+0000f7fc <[^>]*> nop
-+0000f800 <[^>]*> nop
-+0000f804 <[^>]*> nop
-+0000f808 <[^>]*> nop
-+0000f80c <[^>]*> nop
-+0000f810 <[^>]*> nop
-+0000f814 <[^>]*> nop
-+0000f818 <[^>]*> nop
-+0000f81c <[^>]*> nop
-+0000f820 <[^>]*> nop
-+0000f824 <[^>]*> nop
-+0000f828 <[^>]*> nop
-+0000f82c <[^>]*> nop
-+0000f830 <[^>]*> nop
-+0000f834 <[^>]*> nop
-+0000f838 <[^>]*> nop
-+0000f83c <[^>]*> nop
-+0000f840 <[^>]*> nop
-+0000f844 <[^>]*> nop
-+0000f848 <[^>]*> nop
-+0000f84c <[^>]*> nop
-+0000f850 <[^>]*> nop
-+0000f854 <[^>]*> nop
-+0000f858 <[^>]*> nop
-+0000f85c <[^>]*> nop
-+0000f860 <[^>]*> nop
-+0000f864 <[^>]*> nop
-+0000f868 <[^>]*> nop
-+0000f86c <[^>]*> nop
-+0000f870 <[^>]*> nop
-+0000f874 <[^>]*> nop
-+0000f878 <[^>]*> nop
-+0000f87c <[^>]*> nop
-+0000f880 <[^>]*> nop
-+0000f884 <[^>]*> nop
-+0000f888 <[^>]*> nop
-+0000f88c <[^>]*> nop
-+0000f890 <[^>]*> nop
-+0000f894 <[^>]*> nop
-+0000f898 <[^>]*> nop
-+0000f89c <[^>]*> nop
-+0000f8a0 <[^>]*> nop
-+0000f8a4 <[^>]*> nop
-+0000f8a8 <[^>]*> nop
-+0000f8ac <[^>]*> nop
-+0000f8b0 <[^>]*> nop
-+0000f8b4 <[^>]*> nop
-+0000f8b8 <[^>]*> nop
-+0000f8bc <[^>]*> nop
-+0000f8c0 <[^>]*> nop
-+0000f8c4 <[^>]*> nop
-+0000f8c8 <[^>]*> nop
-+0000f8cc <[^>]*> nop
-+0000f8d0 <[^>]*> nop
-+0000f8d4 <[^>]*> nop
-+0000f8d8 <[^>]*> nop
-+0000f8dc <[^>]*> nop
-+0000f8e0 <[^>]*> nop
-+0000f8e4 <[^>]*> nop
-+0000f8e8 <[^>]*> nop
-+0000f8ec <[^>]*> nop
-+0000f8f0 <[^>]*> nop
-+0000f8f4 <[^>]*> nop
-+0000f8f8 <[^>]*> nop
-+0000f8fc <[^>]*> nop
-+0000f900 <[^>]*> nop
-+0000f904 <[^>]*> nop
-+0000f908 <[^>]*> nop
-+0000f90c <[^>]*> nop
-+0000f910 <[^>]*> nop
-+0000f914 <[^>]*> nop
-+0000f918 <[^>]*> nop
-+0000f91c <[^>]*> nop
-+0000f920 <[^>]*> nop
-+0000f924 <[^>]*> nop
-+0000f928 <[^>]*> nop
-+0000f92c <[^>]*> nop
-+0000f930 <[^>]*> nop
-+0000f934 <[^>]*> nop
-+0000f938 <[^>]*> nop
-+0000f93c <[^>]*> nop
-+0000f940 <[^>]*> nop
-+0000f944 <[^>]*> nop
-+0000f948 <[^>]*> nop
-+0000f94c <[^>]*> nop
-+0000f950 <[^>]*> nop
-+0000f954 <[^>]*> nop
-+0000f958 <[^>]*> nop
-+0000f95c <[^>]*> nop
-+0000f960 <[^>]*> nop
-+0000f964 <[^>]*> nop
-+0000f968 <[^>]*> nop
-+0000f96c <[^>]*> nop
-+0000f970 <[^>]*> nop
-+0000f974 <[^>]*> nop
-+0000f978 <[^>]*> nop
-+0000f97c <[^>]*> nop
-+0000f980 <[^>]*> nop
-+0000f984 <[^>]*> nop
-+0000f988 <[^>]*> nop
-+0000f98c <[^>]*> nop
-+0000f990 <[^>]*> nop
-+0000f994 <[^>]*> nop
-+0000f998 <[^>]*> nop
-+0000f99c <[^>]*> nop
-+0000f9a0 <[^>]*> nop
-+0000f9a4 <[^>]*> nop
-+0000f9a8 <[^>]*> nop
-+0000f9ac <[^>]*> nop
-+0000f9b0 <[^>]*> nop
-+0000f9b4 <[^>]*> nop
-+0000f9b8 <[^>]*> nop
-+0000f9bc <[^>]*> nop
-+0000f9c0 <[^>]*> nop
-+0000f9c4 <[^>]*> nop
-+0000f9c8 <[^>]*> nop
-+0000f9cc <[^>]*> nop
-+0000f9d0 <[^>]*> nop
-+0000f9d4 <[^>]*> nop
-+0000f9d8 <[^>]*> nop
-+0000f9dc <[^>]*> nop
-+0000f9e0 <[^>]*> nop
-+0000f9e4 <[^>]*> nop
-+0000f9e8 <[^>]*> nop
-+0000f9ec <[^>]*> nop
-+0000f9f0 <[^>]*> nop
-+0000f9f4 <[^>]*> nop
-+0000f9f8 <[^>]*> nop
-+0000f9fc <[^>]*> nop
-+0000fa00 <[^>]*> nop
-+0000fa04 <[^>]*> nop
-+0000fa08 <[^>]*> nop
-+0000fa0c <[^>]*> nop
-+0000fa10 <[^>]*> nop
-+0000fa14 <[^>]*> nop
-+0000fa18 <[^>]*> nop
-+0000fa1c <[^>]*> nop
-+0000fa20 <[^>]*> nop
-+0000fa24 <[^>]*> nop
-+0000fa28 <[^>]*> nop
-+0000fa2c <[^>]*> nop
-+0000fa30 <[^>]*> nop
-+0000fa34 <[^>]*> nop
-+0000fa38 <[^>]*> nop
-+0000fa3c <[^>]*> nop
-+0000fa40 <[^>]*> nop
-+0000fa44 <[^>]*> nop
-+0000fa48 <[^>]*> nop
-+0000fa4c <[^>]*> nop
-+0000fa50 <[^>]*> nop
-+0000fa54 <[^>]*> nop
-+0000fa58 <[^>]*> nop
-+0000fa5c <[^>]*> nop
-+0000fa60 <[^>]*> nop
-+0000fa64 <[^>]*> nop
-+0000fa68 <[^>]*> nop
-+0000fa6c <[^>]*> nop
-+0000fa70 <[^>]*> nop
-+0000fa74 <[^>]*> nop
-+0000fa78 <[^>]*> nop
-+0000fa7c <[^>]*> nop
-+0000fa80 <[^>]*> nop
-+0000fa84 <[^>]*> nop
-+0000fa88 <[^>]*> nop
-+0000fa8c <[^>]*> nop
-+0000fa90 <[^>]*> nop
-+0000fa94 <[^>]*> nop
-+0000fa98 <[^>]*> nop
-+0000fa9c <[^>]*> nop
-+0000faa0 <[^>]*> nop
-+0000faa4 <[^>]*> nop
-+0000faa8 <[^>]*> nop
-+0000faac <[^>]*> nop
-+0000fab0 <[^>]*> nop
-+0000fab4 <[^>]*> nop
-+0000fab8 <[^>]*> nop
-+0000fabc <[^>]*> nop
-+0000fac0 <[^>]*> nop
-+0000fac4 <[^>]*> nop
-+0000fac8 <[^>]*> nop
-+0000facc <[^>]*> nop
-+0000fad0 <[^>]*> nop
-+0000fad4 <[^>]*> nop
-+0000fad8 <[^>]*> nop
-+0000fadc <[^>]*> nop
-+0000fae0 <[^>]*> nop
-+0000fae4 <[^>]*> nop
-+0000fae8 <[^>]*> nop
-+0000faec <[^>]*> nop
-+0000faf0 <[^>]*> nop
-+0000faf4 <[^>]*> nop
-+0000faf8 <[^>]*> nop
-+0000fafc <[^>]*> nop
-+0000fb00 <[^>]*> nop
-+0000fb04 <[^>]*> nop
-+0000fb08 <[^>]*> nop
-+0000fb0c <[^>]*> nop
-+0000fb10 <[^>]*> nop
-+0000fb14 <[^>]*> nop
-+0000fb18 <[^>]*> nop
-+0000fb1c <[^>]*> nop
-+0000fb20 <[^>]*> nop
-+0000fb24 <[^>]*> nop
-+0000fb28 <[^>]*> nop
-+0000fb2c <[^>]*> nop
-+0000fb30 <[^>]*> nop
-+0000fb34 <[^>]*> nop
-+0000fb38 <[^>]*> nop
-+0000fb3c <[^>]*> nop
-+0000fb40 <[^>]*> nop
-+0000fb44 <[^>]*> nop
-+0000fb48 <[^>]*> nop
-+0000fb4c <[^>]*> nop
-+0000fb50 <[^>]*> nop
-+0000fb54 <[^>]*> nop
-+0000fb58 <[^>]*> nop
-+0000fb5c <[^>]*> nop
-+0000fb60 <[^>]*> nop
-+0000fb64 <[^>]*> nop
-+0000fb68 <[^>]*> nop
-+0000fb6c <[^>]*> nop
-+0000fb70 <[^>]*> nop
-+0000fb74 <[^>]*> nop
-+0000fb78 <[^>]*> nop
-+0000fb7c <[^>]*> nop
-+0000fb80 <[^>]*> nop
-+0000fb84 <[^>]*> nop
-+0000fb88 <[^>]*> nop
-+0000fb8c <[^>]*> nop
-+0000fb90 <[^>]*> nop
-+0000fb94 <[^>]*> nop
-+0000fb98 <[^>]*> nop
-+0000fb9c <[^>]*> nop
-+0000fba0 <[^>]*> nop
-+0000fba4 <[^>]*> nop
-+0000fba8 <[^>]*> nop
-+0000fbac <[^>]*> nop
-+0000fbb0 <[^>]*> nop
-+0000fbb4 <[^>]*> nop
-+0000fbb8 <[^>]*> nop
-+0000fbbc <[^>]*> nop
-+0000fbc0 <[^>]*> nop
-+0000fbc4 <[^>]*> nop
-+0000fbc8 <[^>]*> nop
-+0000fbcc <[^>]*> nop
-+0000fbd0 <[^>]*> nop
-+0000fbd4 <[^>]*> nop
-+0000fbd8 <[^>]*> nop
-+0000fbdc <[^>]*> nop
-+0000fbe0 <[^>]*> nop
-+0000fbe4 <[^>]*> nop
-+0000fbe8 <[^>]*> nop
-+0000fbec <[^>]*> nop
-+0000fbf0 <[^>]*> nop
-+0000fbf4 <[^>]*> nop
-+0000fbf8 <[^>]*> nop
-+0000fbfc <[^>]*> nop
-+0000fc00 <[^>]*> nop
-+0000fc04 <[^>]*> nop
-+0000fc08 <[^>]*> nop
-+0000fc0c <[^>]*> nop
-+0000fc10 <[^>]*> nop
-+0000fc14 <[^>]*> nop
-+0000fc18 <[^>]*> nop
-+0000fc1c <[^>]*> nop
-+0000fc20 <[^>]*> nop
-+0000fc24 <[^>]*> nop
-+0000fc28 <[^>]*> nop
-+0000fc2c <[^>]*> nop
-+0000fc30 <[^>]*> nop
-+0000fc34 <[^>]*> nop
-+0000fc38 <[^>]*> nop
-+0000fc3c <[^>]*> nop
-+0000fc40 <[^>]*> nop
-+0000fc44 <[^>]*> nop
-+0000fc48 <[^>]*> nop
-+0000fc4c <[^>]*> nop
-+0000fc50 <[^>]*> nop
-+0000fc54 <[^>]*> nop
-+0000fc58 <[^>]*> nop
-+0000fc5c <[^>]*> nop
-+0000fc60 <[^>]*> nop
-+0000fc64 <[^>]*> nop
-+0000fc68 <[^>]*> nop
-+0000fc6c <[^>]*> nop
-+0000fc70 <[^>]*> nop
-+0000fc74 <[^>]*> nop
-+0000fc78 <[^>]*> nop
-+0000fc7c <[^>]*> nop
-+0000fc80 <[^>]*> nop
-+0000fc84 <[^>]*> nop
-+0000fc88 <[^>]*> nop
-+0000fc8c <[^>]*> nop
-+0000fc90 <[^>]*> nop
-+0000fc94 <[^>]*> nop
-+0000fc98 <[^>]*> nop
-+0000fc9c <[^>]*> nop
-+0000fca0 <[^>]*> nop
-+0000fca4 <[^>]*> nop
-+0000fca8 <[^>]*> nop
-+0000fcac <[^>]*> nop
-+0000fcb0 <[^>]*> nop
-+0000fcb4 <[^>]*> nop
-+0000fcb8 <[^>]*> nop
-+0000fcbc <[^>]*> nop
-+0000fcc0 <[^>]*> nop
-+0000fcc4 <[^>]*> nop
-+0000fcc8 <[^>]*> nop
-+0000fccc <[^>]*> nop
-+0000fcd0 <[^>]*> nop
-+0000fcd4 <[^>]*> nop
-+0000fcd8 <[^>]*> nop
-+0000fcdc <[^>]*> nop
-+0000fce0 <[^>]*> nop
-+0000fce4 <[^>]*> nop
-+0000fce8 <[^>]*> nop
-+0000fcec <[^>]*> nop
-+0000fcf0 <[^>]*> nop
-+0000fcf4 <[^>]*> nop
-+0000fcf8 <[^>]*> nop
-+0000fcfc <[^>]*> nop
-+0000fd00 <[^>]*> nop
-+0000fd04 <[^>]*> nop
-+0000fd08 <[^>]*> nop
-+0000fd0c <[^>]*> nop
-+0000fd10 <[^>]*> nop
-+0000fd14 <[^>]*> nop
-+0000fd18 <[^>]*> nop
-+0000fd1c <[^>]*> nop
-+0000fd20 <[^>]*> nop
-+0000fd24 <[^>]*> nop
-+0000fd28 <[^>]*> nop
-+0000fd2c <[^>]*> nop
-+0000fd30 <[^>]*> nop
-+0000fd34 <[^>]*> nop
-+0000fd38 <[^>]*> nop
-+0000fd3c <[^>]*> nop
-+0000fd40 <[^>]*> nop
-+0000fd44 <[^>]*> nop
-+0000fd48 <[^>]*> nop
-+0000fd4c <[^>]*> nop
-+0000fd50 <[^>]*> nop
-+0000fd54 <[^>]*> nop
-+0000fd58 <[^>]*> nop
-+0000fd5c <[^>]*> nop
-+0000fd60 <[^>]*> nop
-+0000fd64 <[^>]*> nop
-+0000fd68 <[^>]*> nop
-+0000fd6c <[^>]*> nop
-+0000fd70 <[^>]*> nop
-+0000fd74 <[^>]*> nop
-+0000fd78 <[^>]*> nop
-+0000fd7c <[^>]*> nop
-+0000fd80 <[^>]*> nop
-+0000fd84 <[^>]*> nop
-+0000fd88 <[^>]*> nop
-+0000fd8c <[^>]*> nop
-+0000fd90 <[^>]*> nop
-+0000fd94 <[^>]*> nop
-+0000fd98 <[^>]*> nop
-+0000fd9c <[^>]*> nop
-+0000fda0 <[^>]*> nop
-+0000fda4 <[^>]*> nop
-+0000fda8 <[^>]*> nop
-+0000fdac <[^>]*> nop
-+0000fdb0 <[^>]*> nop
-+0000fdb4 <[^>]*> nop
-+0000fdb8 <[^>]*> nop
-+0000fdbc <[^>]*> nop
-+0000fdc0 <[^>]*> nop
-+0000fdc4 <[^>]*> nop
-+0000fdc8 <[^>]*> nop
-+0000fdcc <[^>]*> nop
-+0000fdd0 <[^>]*> nop
-+0000fdd4 <[^>]*> nop
-+0000fdd8 <[^>]*> nop
-+0000fddc <[^>]*> nop
-+0000fde0 <[^>]*> nop
-+0000fde4 <[^>]*> nop
-+0000fde8 <[^>]*> nop
-+0000fdec <[^>]*> nop
-+0000fdf0 <[^>]*> nop
-+0000fdf4 <[^>]*> nop
-+0000fdf8 <[^>]*> nop
-+0000fdfc <[^>]*> nop
-+0000fe00 <[^>]*> nop
-+0000fe04 <[^>]*> nop
-+0000fe08 <[^>]*> nop
-+0000fe0c <[^>]*> nop
-+0000fe10 <[^>]*> nop
-+0000fe14 <[^>]*> nop
-+0000fe18 <[^>]*> nop
-+0000fe1c <[^>]*> nop
-+0000fe20 <[^>]*> nop
-+0000fe24 <[^>]*> nop
-+0000fe28 <[^>]*> nop
-+0000fe2c <[^>]*> nop
-+0000fe30 <[^>]*> nop
-+0000fe34 <[^>]*> nop
-+0000fe38 <[^>]*> nop
-+0000fe3c <[^>]*> nop
-+0000fe40 <[^>]*> nop
-+0000fe44 <[^>]*> nop
-+0000fe48 <[^>]*> nop
-+0000fe4c <[^>]*> nop
-+0000fe50 <[^>]*> nop
-+0000fe54 <[^>]*> nop
-+0000fe58 <[^>]*> nop
-+0000fe5c <[^>]*> nop
-+0000fe60 <[^>]*> nop
-+0000fe64 <[^>]*> nop
-+0000fe68 <[^>]*> nop
-+0000fe6c <[^>]*> nop
-+0000fe70 <[^>]*> nop
-+0000fe74 <[^>]*> nop
-+0000fe78 <[^>]*> nop
-+0000fe7c <[^>]*> nop
-+0000fe80 <[^>]*> nop
-+0000fe84 <[^>]*> nop
-+0000fe88 <[^>]*> nop
-+0000fe8c <[^>]*> nop
-+0000fe90 <[^>]*> nop
-+0000fe94 <[^>]*> nop
-+0000fe98 <[^>]*> nop
-+0000fe9c <[^>]*> nop
-+0000fea0 <[^>]*> nop
-+0000fea4 <[^>]*> nop
-+0000fea8 <[^>]*> nop
-+0000feac <[^>]*> nop
-+0000feb0 <[^>]*> nop
-+0000feb4 <[^>]*> nop
-+0000feb8 <[^>]*> nop
-+0000febc <[^>]*> nop
-+0000fec0 <[^>]*> nop
-+0000fec4 <[^>]*> nop
-+0000fec8 <[^>]*> nop
-+0000fecc <[^>]*> nop
-+0000fed0 <[^>]*> nop
-+0000fed4 <[^>]*> nop
-+0000fed8 <[^>]*> nop
-+0000fedc <[^>]*> nop
-+0000fee0 <[^>]*> nop
-+0000fee4 <[^>]*> nop
-+0000fee8 <[^>]*> nop
-+0000feec <[^>]*> nop
-+0000fef0 <[^>]*> nop
-+0000fef4 <[^>]*> nop
-+0000fef8 <[^>]*> nop
-+0000fefc <[^>]*> nop
-+0000ff00 <[^>]*> nop
-+0000ff04 <[^>]*> nop
-+0000ff08 <[^>]*> nop
-+0000ff0c <[^>]*> nop
-+0000ff10 <[^>]*> nop
-+0000ff14 <[^>]*> nop
-+0000ff18 <[^>]*> nop
-+0000ff1c <[^>]*> nop
-+0000ff20 <[^>]*> nop
-+0000ff24 <[^>]*> nop
-+0000ff28 <[^>]*> nop
-+0000ff2c <[^>]*> nop
-+0000ff30 <[^>]*> nop
-+0000ff34 <[^>]*> nop
-+0000ff38 <[^>]*> nop
-+0000ff3c <[^>]*> nop
-+0000ff40 <[^>]*> nop
-+0000ff44 <[^>]*> nop
-+0000ff48 <[^>]*> nop
-+0000ff4c <[^>]*> nop
-+0000ff50 <[^>]*> nop
-+0000ff54 <[^>]*> nop
-+0000ff58 <[^>]*> nop
-+0000ff5c <[^>]*> nop
-+0000ff60 <[^>]*> nop
-+0000ff64 <[^>]*> nop
-+0000ff68 <[^>]*> nop
-+0000ff6c <[^>]*> nop
-+0000ff70 <[^>]*> nop
-+0000ff74 <[^>]*> nop
-+0000ff78 <[^>]*> nop
-+0000ff7c <[^>]*> nop
-+0000ff80 <[^>]*> nop
-+0000ff84 <[^>]*> nop
-+0000ff88 <[^>]*> nop
-+0000ff8c <[^>]*> nop
-+0000ff90 <[^>]*> nop
-+0000ff94 <[^>]*> nop
-+0000ff98 <[^>]*> nop
-+0000ff9c <[^>]*> nop
-+0000ffa0 <[^>]*> nop
-+0000ffa4 <[^>]*> nop
-+0000ffa8 <[^>]*> nop
-+0000ffac <[^>]*> nop
-+0000ffb0 <[^>]*> nop
-+0000ffb4 <[^>]*> nop
-+0000ffb8 <[^>]*> nop
-+0000ffbc <[^>]*> nop
-+0000ffc0 <[^>]*> nop
-+0000ffc4 <[^>]*> nop
-+0000ffc8 <[^>]*> nop
-+0000ffcc <[^>]*> nop
-+0000ffd0 <[^>]*> nop
-+0000ffd4 <[^>]*> nop
-+0000ffd8 <[^>]*> nop
-+0000ffdc <[^>]*> nop
-+0000ffe0 <[^>]*> nop
-+0000ffe4 <[^>]*> nop
-+0000ffe8 <[^>]*> nop
-+0000ffec <[^>]*> nop
-+0000fff0 <[^>]*> nop
-+0000fff4 <[^>]*> nop
-+0000fff8 <[^>]*> nop
-+0000fffc <[^>]*> nop
-+00010000 <[^>]*> bne	r2,r3,00010024 <[^>]*>
-+00010004 <[^>]*> nop
-+00010008 <[^>]*> nop
-+0001000c <[^>]*> nop
-+00010010 <[^>]*> nop
-+00010014 <[^>]*> nop
-+00010018 <[^>]*> nop
-+0001001c <[^>]*> nop
-+00010020 <[^>]*> nop
-+00010024 <[^>]*> nop
-+	...
---- binutils-2.15/gas/testsuite/gas/nios2/relax_cjmp.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/relax_cjmp.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,37 @@
-+# relaxing unconditional jumps
-+
-+.globl text1
-+.section text1, "ax", @progbits
-+
-+	beq r2, r3, on_border
-+	beq r2, r3, out_of_range
-+	nop
-+	nop
-+
-+
-+.align 15
-+	#nop
-+	#nop
-+	#nop
-+on_border:
-+	bne r2, r3, in_range
-+	nop
-+	nop
-+	nop
-+	nop
-+	nop
-+out_of_range:
-+in_range:
-+	nop
-+	
-+.globl text2
-+.section text2, "ax", @progbits
-+
-+	bge r2, r3, text1
-+	blt r2, r3, out_of_range
-+	ble r2, r3, sym
-+	nop
-+	nop
-+sym:
-+	nop
-+
---- binutils-2.15/gas/testsuite/gas/nios2/relax_section.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/relax_section.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8206 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 relax_section
-+
-+# Test relaxation of section
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> bne	r2,r3,00000010 <in_range-0xc>
-+0+0004 <[^>]*> movhi	at,0
-+0+0008 <[^>]*> ori	at,at,32780
-+0+000c <[^>]*> jmp	at
-+0+0010 <[^>]*> bne	r2,r3,0000001c <in_range>
-+0+0014 <[^>]*> nop
-+0+0018 <[^>]*> nop
-+0+001c <[^>]*> nop
-+0+0020 <[^>]*> nop
-+0+0024 <[^>]*> nop
-+0+0028 <[^>]*> nop
-+0+002c <[^>]*> nop
-+0+0030 <[^>]*> nop
-+0+0034 <[^>]*> nop
-+0+0038 <[^>]*> nop
-+0+003c <[^>]*> nop
-+0+0040 <[^>]*> nop
-+0+0044 <[^>]*> nop
-+0+0048 <[^>]*> nop
-+0+004c <[^>]*> nop
-+0+0050 <[^>]*> nop
-+0+0054 <[^>]*> nop
-+0+0058 <[^>]*> nop
-+0+005c <[^>]*> nop
-+0+0060 <[^>]*> nop
-+0+0064 <[^>]*> nop
-+0+0068 <[^>]*> nop
-+0+006c <[^>]*> nop
-+0+0070 <[^>]*> nop
-+0+0074 <[^>]*> nop
-+0+0078 <[^>]*> nop
-+0+007c <[^>]*> nop
-+0+0080 <[^>]*> nop
-+0+0084 <[^>]*> nop
-+0+0088 <[^>]*> nop
-+0+008c <[^>]*> nop
-+0+0090 <[^>]*> nop
-+0+0094 <[^>]*> nop
-+0+0098 <[^>]*> nop
-+0+009c <[^>]*> nop
-+0+00a0 <[^>]*> nop
-+0+00a4 <[^>]*> nop
-+0+00a8 <[^>]*> nop
-+0+00ac <[^>]*> nop
-+0+00b0 <[^>]*> nop
-+0+00b4 <[^>]*> nop
-+0+00b8 <[^>]*> nop
-+0+00bc <[^>]*> nop
-+0+00c0 <[^>]*> nop
-+0+00c4 <[^>]*> nop
-+0+00c8 <[^>]*> nop
-+0+00cc <[^>]*> nop
-+0+00d0 <[^>]*> nop
-+0+00d4 <[^>]*> nop
-+0+00d8 <[^>]*> nop
-+0+00dc <[^>]*> nop
-+0+00e0 <[^>]*> nop
-+0+00e4 <[^>]*> nop
-+0+00e8 <[^>]*> nop
-+0+00ec <[^>]*> nop
-+0+00f0 <[^>]*> nop
-+0+00f4 <[^>]*> nop
-+0+00f8 <[^>]*> nop
-+0+00fc <[^>]*> nop
-+0+0100 <[^>]*> nop
-+0+0104 <[^>]*> nop
-+0+0108 <[^>]*> nop
-+0+010c <[^>]*> nop
-+0+0110 <[^>]*> nop
-+0+0114 <[^>]*> nop
-+0+0118 <[^>]*> nop
-+0+011c <[^>]*> nop
-+0+0120 <[^>]*> nop
-+0+0124 <[^>]*> nop
-+0+0128 <[^>]*> nop
-+0+012c <[^>]*> nop
-+0+0130 <[^>]*> nop
-+0+0134 <[^>]*> nop
-+0+0138 <[^>]*> nop
-+0+013c <[^>]*> nop
-+0+0140 <[^>]*> nop
-+0+0144 <[^>]*> nop
-+0+0148 <[^>]*> nop
-+0+014c <[^>]*> nop
-+0+0150 <[^>]*> nop
-+0+0154 <[^>]*> nop
-+0+0158 <[^>]*> nop
-+0+015c <[^>]*> nop
-+0+0160 <[^>]*> nop
-+0+0164 <[^>]*> nop
-+0+0168 <[^>]*> nop
-+0+016c <[^>]*> nop
-+0+0170 <[^>]*> nop
-+0+0174 <[^>]*> nop
-+0+0178 <[^>]*> nop
-+0+017c <[^>]*> nop
-+0+0180 <[^>]*> nop
-+0+0184 <[^>]*> nop
-+0+0188 <[^>]*> nop
-+0+018c <[^>]*> nop
-+0+0190 <[^>]*> nop
-+0+0194 <[^>]*> nop
-+0+0198 <[^>]*> nop
-+0+019c <[^>]*> nop
-+0+01a0 <[^>]*> nop
-+0+01a4 <[^>]*> nop
-+0+01a8 <[^>]*> nop
-+0+01ac <[^>]*> nop
-+0+01b0 <[^>]*> nop
-+0+01b4 <[^>]*> nop
-+0+01b8 <[^>]*> nop
-+0+01bc <[^>]*> nop
-+0+01c0 <[^>]*> nop
-+0+01c4 <[^>]*> nop
-+0+01c8 <[^>]*> nop
-+0+01cc <[^>]*> nop
-+0+01d0 <[^>]*> nop
-+0+01d4 <[^>]*> nop
-+0+01d8 <[^>]*> nop
-+0+01dc <[^>]*> nop
-+0+01e0 <[^>]*> nop
-+0+01e4 <[^>]*> nop
-+0+01e8 <[^>]*> nop
-+0+01ec <[^>]*> nop
-+0+01f0 <[^>]*> nop
-+0+01f4 <[^>]*> nop
-+0+01f8 <[^>]*> nop
-+0+01fc <[^>]*> nop
-+0+0200 <[^>]*> nop
-+0+0204 <[^>]*> nop
-+0+0208 <[^>]*> nop
-+0+020c <[^>]*> nop
-+0+0210 <[^>]*> nop
-+0+0214 <[^>]*> nop
-+0+0218 <[^>]*> nop
-+0+021c <[^>]*> nop
-+0+0220 <[^>]*> nop
-+0+0224 <[^>]*> nop
-+0+0228 <[^>]*> nop
-+0+022c <[^>]*> nop
-+0+0230 <[^>]*> nop
-+0+0234 <[^>]*> nop
-+0+0238 <[^>]*> nop
-+0+023c <[^>]*> nop
-+0+0240 <[^>]*> nop
-+0+0244 <[^>]*> nop
-+0+0248 <[^>]*> nop
-+0+024c <[^>]*> nop
-+0+0250 <[^>]*> nop
-+0+0254 <[^>]*> nop
-+0+0258 <[^>]*> nop
-+0+025c <[^>]*> nop
-+0+0260 <[^>]*> nop
-+0+0264 <[^>]*> nop
-+0+0268 <[^>]*> nop
-+0+026c <[^>]*> nop
-+0+0270 <[^>]*> nop
-+0+0274 <[^>]*> nop
-+0+0278 <[^>]*> nop
-+0+027c <[^>]*> nop
-+0+0280 <[^>]*> nop
-+0+0284 <[^>]*> nop
-+0+0288 <[^>]*> nop
-+0+028c <[^>]*> nop
-+0+0290 <[^>]*> nop
-+0+0294 <[^>]*> nop
-+0+0298 <[^>]*> nop
-+0+029c <[^>]*> nop
-+0+02a0 <[^>]*> nop
-+0+02a4 <[^>]*> nop
-+0+02a8 <[^>]*> nop
-+0+02ac <[^>]*> nop
-+0+02b0 <[^>]*> nop
-+0+02b4 <[^>]*> nop
-+0+02b8 <[^>]*> nop
-+0+02bc <[^>]*> nop
-+0+02c0 <[^>]*> nop
-+0+02c4 <[^>]*> nop
-+0+02c8 <[^>]*> nop
-+0+02cc <[^>]*> nop
-+0+02d0 <[^>]*> nop
-+0+02d4 <[^>]*> nop
-+0+02d8 <[^>]*> nop
-+0+02dc <[^>]*> nop
-+0+02e0 <[^>]*> nop
-+0+02e4 <[^>]*> nop
-+0+02e8 <[^>]*> nop
-+0+02ec <[^>]*> nop
-+0+02f0 <[^>]*> nop
-+0+02f4 <[^>]*> nop
-+0+02f8 <[^>]*> nop
-+0+02fc <[^>]*> nop
-+0+0300 <[^>]*> nop
-+0+0304 <[^>]*> nop
-+0+0308 <[^>]*> nop
-+0+030c <[^>]*> nop
-+0+0310 <[^>]*> nop
-+0+0314 <[^>]*> nop
-+0+0318 <[^>]*> nop
-+0+031c <[^>]*> nop
-+0+0320 <[^>]*> nop
-+0+0324 <[^>]*> nop
-+0+0328 <[^>]*> nop
-+0+032c <[^>]*> nop
-+0+0330 <[^>]*> nop
-+0+0334 <[^>]*> nop
-+0+0338 <[^>]*> nop
-+0+033c <[^>]*> nop
-+0+0340 <[^>]*> nop
-+0+0344 <[^>]*> nop
-+0+0348 <[^>]*> nop
-+0+034c <[^>]*> nop
-+0+0350 <[^>]*> nop
-+0+0354 <[^>]*> nop
-+0+0358 <[^>]*> nop
-+0+035c <[^>]*> nop
-+0+0360 <[^>]*> nop
-+0+0364 <[^>]*> nop
-+0+0368 <[^>]*> nop
-+0+036c <[^>]*> nop
-+0+0370 <[^>]*> nop
-+0+0374 <[^>]*> nop
-+0+0378 <[^>]*> nop
-+0+037c <[^>]*> nop
-+0+0380 <[^>]*> nop
-+0+0384 <[^>]*> nop
-+0+0388 <[^>]*> nop
-+0+038c <[^>]*> nop
-+0+0390 <[^>]*> nop
-+0+0394 <[^>]*> nop
-+0+0398 <[^>]*> nop
-+0+039c <[^>]*> nop
-+0+03a0 <[^>]*> nop
-+0+03a4 <[^>]*> nop
-+0+03a8 <[^>]*> nop
-+0+03ac <[^>]*> nop
-+0+03b0 <[^>]*> nop
-+0+03b4 <[^>]*> nop
-+0+03b8 <[^>]*> nop
-+0+03bc <[^>]*> nop
-+0+03c0 <[^>]*> nop
-+0+03c4 <[^>]*> nop
-+0+03c8 <[^>]*> nop
-+0+03cc <[^>]*> nop
-+0+03d0 <[^>]*> nop
-+0+03d4 <[^>]*> nop
-+0+03d8 <[^>]*> nop
-+0+03dc <[^>]*> nop
-+0+03e0 <[^>]*> nop
-+0+03e4 <[^>]*> nop
-+0+03e8 <[^>]*> nop
-+0+03ec <[^>]*> nop
-+0+03f0 <[^>]*> nop
-+0+03f4 <[^>]*> nop
-+0+03f8 <[^>]*> nop
-+0+03fc <[^>]*> nop
-+0+0400 <[^>]*> nop
-+0+0404 <[^>]*> nop
-+0+0408 <[^>]*> nop
-+0+040c <[^>]*> nop
-+0+0410 <[^>]*> nop
-+0+0414 <[^>]*> nop
-+0+0418 <[^>]*> nop
-+0+041c <[^>]*> nop
-+0+0420 <[^>]*> nop
-+0+0424 <[^>]*> nop
-+0+0428 <[^>]*> nop
-+0+042c <[^>]*> nop
-+0+0430 <[^>]*> nop
-+0+0434 <[^>]*> nop
-+0+0438 <[^>]*> nop
-+0+043c <[^>]*> nop
-+0+0440 <[^>]*> nop
-+0+0444 <[^>]*> nop
-+0+0448 <[^>]*> nop
-+0+044c <[^>]*> nop
-+0+0450 <[^>]*> nop
-+0+0454 <[^>]*> nop
-+0+0458 <[^>]*> nop
-+0+045c <[^>]*> nop
-+0+0460 <[^>]*> nop
-+0+0464 <[^>]*> nop
-+0+0468 <[^>]*> nop
-+0+046c <[^>]*> nop
-+0+0470 <[^>]*> nop
-+0+0474 <[^>]*> nop
-+0+0478 <[^>]*> nop
-+0+047c <[^>]*> nop
-+0+0480 <[^>]*> nop
-+0+0484 <[^>]*> nop
-+0+0488 <[^>]*> nop
-+0+048c <[^>]*> nop
-+0+0490 <[^>]*> nop
-+0+0494 <[^>]*> nop
-+0+0498 <[^>]*> nop
-+0+049c <[^>]*> nop
-+0+04a0 <[^>]*> nop
-+0+04a4 <[^>]*> nop
-+0+04a8 <[^>]*> nop
-+0+04ac <[^>]*> nop
-+0+04b0 <[^>]*> nop
-+0+04b4 <[^>]*> nop
-+0+04b8 <[^>]*> nop
-+0+04bc <[^>]*> nop
-+0+04c0 <[^>]*> nop
-+0+04c4 <[^>]*> nop
-+0+04c8 <[^>]*> nop
-+0+04cc <[^>]*> nop
-+0+04d0 <[^>]*> nop
-+0+04d4 <[^>]*> nop
-+0+04d8 <[^>]*> nop
-+0+04dc <[^>]*> nop
-+0+04e0 <[^>]*> nop
-+0+04e4 <[^>]*> nop
-+0+04e8 <[^>]*> nop
-+0+04ec <[^>]*> nop
-+0+04f0 <[^>]*> nop
-+0+04f4 <[^>]*> nop
-+0+04f8 <[^>]*> nop
-+0+04fc <[^>]*> nop
-+0+0500 <[^>]*> nop
-+0+0504 <[^>]*> nop
-+0+0508 <[^>]*> nop
-+0+050c <[^>]*> nop
-+0+0510 <[^>]*> nop
-+0+0514 <[^>]*> nop
-+0+0518 <[^>]*> nop
-+0+051c <[^>]*> nop
-+0+0520 <[^>]*> nop
-+0+0524 <[^>]*> nop
-+0+0528 <[^>]*> nop
-+0+052c <[^>]*> nop
-+0+0530 <[^>]*> nop
-+0+0534 <[^>]*> nop
-+0+0538 <[^>]*> nop
-+0+053c <[^>]*> nop
-+0+0540 <[^>]*> nop
-+0+0544 <[^>]*> nop
-+0+0548 <[^>]*> nop
-+0+054c <[^>]*> nop
-+0+0550 <[^>]*> nop
-+0+0554 <[^>]*> nop
-+0+0558 <[^>]*> nop
-+0+055c <[^>]*> nop
-+0+0560 <[^>]*> nop
-+0+0564 <[^>]*> nop
-+0+0568 <[^>]*> nop
-+0+056c <[^>]*> nop
-+0+0570 <[^>]*> nop
-+0+0574 <[^>]*> nop
-+0+0578 <[^>]*> nop
-+0+057c <[^>]*> nop
-+0+0580 <[^>]*> nop
-+0+0584 <[^>]*> nop
-+0+0588 <[^>]*> nop
-+0+058c <[^>]*> nop
-+0+0590 <[^>]*> nop
-+0+0594 <[^>]*> nop
-+0+0598 <[^>]*> nop
-+0+059c <[^>]*> nop
-+0+05a0 <[^>]*> nop
-+0+05a4 <[^>]*> nop
-+0+05a8 <[^>]*> nop
-+0+05ac <[^>]*> nop
-+0+05b0 <[^>]*> nop
-+0+05b4 <[^>]*> nop
-+0+05b8 <[^>]*> nop
-+0+05bc <[^>]*> nop
-+0+05c0 <[^>]*> nop
-+0+05c4 <[^>]*> nop
-+0+05c8 <[^>]*> nop
-+0+05cc <[^>]*> nop
-+0+05d0 <[^>]*> nop
-+0+05d4 <[^>]*> nop
-+0+05d8 <[^>]*> nop
-+0+05dc <[^>]*> nop
-+0+05e0 <[^>]*> nop
-+0+05e4 <[^>]*> nop
-+0+05e8 <[^>]*> nop
-+0+05ec <[^>]*> nop
-+0+05f0 <[^>]*> nop
-+0+05f4 <[^>]*> nop
-+0+05f8 <[^>]*> nop
-+0+05fc <[^>]*> nop
-+0+0600 <[^>]*> nop
-+0+0604 <[^>]*> nop
-+0+0608 <[^>]*> nop
-+0+060c <[^>]*> nop
-+0+0610 <[^>]*> nop
-+0+0614 <[^>]*> nop
-+0+0618 <[^>]*> nop
-+0+061c <[^>]*> nop
-+0+0620 <[^>]*> nop
-+0+0624 <[^>]*> nop
-+0+0628 <[^>]*> nop
-+0+062c <[^>]*> nop
-+0+0630 <[^>]*> nop
-+0+0634 <[^>]*> nop
-+0+0638 <[^>]*> nop
-+0+063c <[^>]*> nop
-+0+0640 <[^>]*> nop
-+0+0644 <[^>]*> nop
-+0+0648 <[^>]*> nop
-+0+064c <[^>]*> nop
-+0+0650 <[^>]*> nop
-+0+0654 <[^>]*> nop
-+0+0658 <[^>]*> nop
-+0+065c <[^>]*> nop
-+0+0660 <[^>]*> nop
-+0+0664 <[^>]*> nop
-+0+0668 <[^>]*> nop
-+0+066c <[^>]*> nop
-+0+0670 <[^>]*> nop
-+0+0674 <[^>]*> nop
-+0+0678 <[^>]*> nop
-+0+067c <[^>]*> nop
-+0+0680 <[^>]*> nop
-+0+0684 <[^>]*> nop
-+0+0688 <[^>]*> nop
-+0+068c <[^>]*> nop
-+0+0690 <[^>]*> nop
-+0+0694 <[^>]*> nop
-+0+0698 <[^>]*> nop
-+0+069c <[^>]*> nop
-+0+06a0 <[^>]*> nop
-+0+06a4 <[^>]*> nop
-+0+06a8 <[^>]*> nop
-+0+06ac <[^>]*> nop
-+0+06b0 <[^>]*> nop
-+0+06b4 <[^>]*> nop
-+0+06b8 <[^>]*> nop
-+0+06bc <[^>]*> nop
-+0+06c0 <[^>]*> nop
-+0+06c4 <[^>]*> nop
-+0+06c8 <[^>]*> nop
-+0+06cc <[^>]*> nop
-+0+06d0 <[^>]*> nop
-+0+06d4 <[^>]*> nop
-+0+06d8 <[^>]*> nop
-+0+06dc <[^>]*> nop
-+0+06e0 <[^>]*> nop
-+0+06e4 <[^>]*> nop
-+0+06e8 <[^>]*> nop
-+0+06ec <[^>]*> nop
-+0+06f0 <[^>]*> nop
-+0+06f4 <[^>]*> nop
-+0+06f8 <[^>]*> nop
-+0+06fc <[^>]*> nop
-+0+0700 <[^>]*> nop
-+0+0704 <[^>]*> nop
-+0+0708 <[^>]*> nop
-+0+070c <[^>]*> nop
-+0+0710 <[^>]*> nop
-+0+0714 <[^>]*> nop
-+0+0718 <[^>]*> nop
-+0+071c <[^>]*> nop
-+0+0720 <[^>]*> nop
-+0+0724 <[^>]*> nop
-+0+0728 <[^>]*> nop
-+0+072c <[^>]*> nop
-+0+0730 <[^>]*> nop
-+0+0734 <[^>]*> nop
-+0+0738 <[^>]*> nop
-+0+073c <[^>]*> nop
-+0+0740 <[^>]*> nop
-+0+0744 <[^>]*> nop
-+0+0748 <[^>]*> nop
-+0+074c <[^>]*> nop
-+0+0750 <[^>]*> nop
-+0+0754 <[^>]*> nop
-+0+0758 <[^>]*> nop
-+0+075c <[^>]*> nop
-+0+0760 <[^>]*> nop
-+0+0764 <[^>]*> nop
-+0+0768 <[^>]*> nop
-+0+076c <[^>]*> nop
-+0+0770 <[^>]*> nop
-+0+0774 <[^>]*> nop
-+0+0778 <[^>]*> nop
-+0+077c <[^>]*> nop
-+0+0780 <[^>]*> nop
-+0+0784 <[^>]*> nop
-+0+0788 <[^>]*> nop
-+0+078c <[^>]*> nop
-+0+0790 <[^>]*> nop
-+0+0794 <[^>]*> nop
-+0+0798 <[^>]*> nop
-+0+079c <[^>]*> nop
-+0+07a0 <[^>]*> nop
-+0+07a4 <[^>]*> nop
-+0+07a8 <[^>]*> nop
-+0+07ac <[^>]*> nop
-+0+07b0 <[^>]*> nop
-+0+07b4 <[^>]*> nop
-+0+07b8 <[^>]*> nop
-+0+07bc <[^>]*> nop
-+0+07c0 <[^>]*> nop
-+0+07c4 <[^>]*> nop
-+0+07c8 <[^>]*> nop
-+0+07cc <[^>]*> nop
-+0+07d0 <[^>]*> nop
-+0+07d4 <[^>]*> nop
-+0+07d8 <[^>]*> nop
-+0+07dc <[^>]*> nop
-+0+07e0 <[^>]*> nop
-+0+07e4 <[^>]*> nop
-+0+07e8 <[^>]*> nop
-+0+07ec <[^>]*> nop
-+0+07f0 <[^>]*> nop
-+0+07f4 <[^>]*> nop
-+0+07f8 <[^>]*> nop
-+0+07fc <[^>]*> nop
-+0+0800 <[^>]*> nop
-+0+0804 <[^>]*> nop
-+0+0808 <[^>]*> nop
-+0+080c <[^>]*> nop
-+0+0810 <[^>]*> nop
-+0+0814 <[^>]*> nop
-+0+0818 <[^>]*> nop
-+0+081c <[^>]*> nop
-+0+0820 <[^>]*> nop
-+0+0824 <[^>]*> nop
-+0+0828 <[^>]*> nop
-+0+082c <[^>]*> nop
-+0+0830 <[^>]*> nop
-+0+0834 <[^>]*> nop
-+0+0838 <[^>]*> nop
-+0+083c <[^>]*> nop
-+0+0840 <[^>]*> nop
-+0+0844 <[^>]*> nop
-+0+0848 <[^>]*> nop
-+0+084c <[^>]*> nop
-+0+0850 <[^>]*> nop
-+0+0854 <[^>]*> nop
-+0+0858 <[^>]*> nop
-+0+085c <[^>]*> nop
-+0+0860 <[^>]*> nop
-+0+0864 <[^>]*> nop
-+0+0868 <[^>]*> nop
-+0+086c <[^>]*> nop
-+0+0870 <[^>]*> nop
-+0+0874 <[^>]*> nop
-+0+0878 <[^>]*> nop
-+0+087c <[^>]*> nop
-+0+0880 <[^>]*> nop
-+0+0884 <[^>]*> nop
-+0+0888 <[^>]*> nop
-+0+088c <[^>]*> nop
-+0+0890 <[^>]*> nop
-+0+0894 <[^>]*> nop
-+0+0898 <[^>]*> nop
-+0+089c <[^>]*> nop
-+0+08a0 <[^>]*> nop
-+0+08a4 <[^>]*> nop
-+0+08a8 <[^>]*> nop
-+0+08ac <[^>]*> nop
-+0+08b0 <[^>]*> nop
-+0+08b4 <[^>]*> nop
-+0+08b8 <[^>]*> nop
-+0+08bc <[^>]*> nop
-+0+08c0 <[^>]*> nop
-+0+08c4 <[^>]*> nop
-+0+08c8 <[^>]*> nop
-+0+08cc <[^>]*> nop
-+0+08d0 <[^>]*> nop
-+0+08d4 <[^>]*> nop
-+0+08d8 <[^>]*> nop
-+0+08dc <[^>]*> nop
-+0+08e0 <[^>]*> nop
-+0+08e4 <[^>]*> nop
-+0+08e8 <[^>]*> nop
-+0+08ec <[^>]*> nop
-+0+08f0 <[^>]*> nop
-+0+08f4 <[^>]*> nop
-+0+08f8 <[^>]*> nop
-+0+08fc <[^>]*> nop
-+0+0900 <[^>]*> nop
-+0+0904 <[^>]*> nop
-+0+0908 <[^>]*> nop
-+0+090c <[^>]*> nop
-+0+0910 <[^>]*> nop
-+0+0914 <[^>]*> nop
-+0+0918 <[^>]*> nop
-+0+091c <[^>]*> nop
-+0+0920 <[^>]*> nop
-+0+0924 <[^>]*> nop
-+0+0928 <[^>]*> nop
-+0+092c <[^>]*> nop
-+0+0930 <[^>]*> nop
-+0+0934 <[^>]*> nop
-+0+0938 <[^>]*> nop
-+0+093c <[^>]*> nop
-+0+0940 <[^>]*> nop
-+0+0944 <[^>]*> nop
-+0+0948 <[^>]*> nop
-+0+094c <[^>]*> nop
-+0+0950 <[^>]*> nop
-+0+0954 <[^>]*> nop
-+0+0958 <[^>]*> nop
-+0+095c <[^>]*> nop
-+0+0960 <[^>]*> nop
-+0+0964 <[^>]*> nop
-+0+0968 <[^>]*> nop
-+0+096c <[^>]*> nop
-+0+0970 <[^>]*> nop
-+0+0974 <[^>]*> nop
-+0+0978 <[^>]*> nop
-+0+097c <[^>]*> nop
-+0+0980 <[^>]*> nop
-+0+0984 <[^>]*> nop
-+0+0988 <[^>]*> nop
-+0+098c <[^>]*> nop
-+0+0990 <[^>]*> nop
-+0+0994 <[^>]*> nop
-+0+0998 <[^>]*> nop
-+0+099c <[^>]*> nop
-+0+09a0 <[^>]*> nop
-+0+09a4 <[^>]*> nop
-+0+09a8 <[^>]*> nop
-+0+09ac <[^>]*> nop
-+0+09b0 <[^>]*> nop
-+0+09b4 <[^>]*> nop
-+0+09b8 <[^>]*> nop
-+0+09bc <[^>]*> nop
-+0+09c0 <[^>]*> nop
-+0+09c4 <[^>]*> nop
-+0+09c8 <[^>]*> nop
-+0+09cc <[^>]*> nop
-+0+09d0 <[^>]*> nop
-+0+09d4 <[^>]*> nop
-+0+09d8 <[^>]*> nop
-+0+09dc <[^>]*> nop
-+0+09e0 <[^>]*> nop
-+0+09e4 <[^>]*> nop
-+0+09e8 <[^>]*> nop
-+0+09ec <[^>]*> nop
-+0+09f0 <[^>]*> nop
-+0+09f4 <[^>]*> nop
-+0+09f8 <[^>]*> nop
-+0+09fc <[^>]*> nop
-+0+0a00 <[^>]*> nop
-+0+0a04 <[^>]*> nop
-+0+0a08 <[^>]*> nop
-+0+0a0c <[^>]*> nop
-+0+0a10 <[^>]*> nop
-+0+0a14 <[^>]*> nop
-+0+0a18 <[^>]*> nop
-+0+0a1c <[^>]*> nop
-+0+0a20 <[^>]*> nop
-+0+0a24 <[^>]*> nop
-+0+0a28 <[^>]*> nop
-+0+0a2c <[^>]*> nop
-+0+0a30 <[^>]*> nop
-+0+0a34 <[^>]*> nop
-+0+0a38 <[^>]*> nop
-+0+0a3c <[^>]*> nop
-+0+0a40 <[^>]*> nop
-+0+0a44 <[^>]*> nop
-+0+0a48 <[^>]*> nop
-+0+0a4c <[^>]*> nop
-+0+0a50 <[^>]*> nop
-+0+0a54 <[^>]*> nop
-+0+0a58 <[^>]*> nop
-+0+0a5c <[^>]*> nop
-+0+0a60 <[^>]*> nop
-+0+0a64 <[^>]*> nop
-+0+0a68 <[^>]*> nop
-+0+0a6c <[^>]*> nop
-+0+0a70 <[^>]*> nop
-+0+0a74 <[^>]*> nop
-+0+0a78 <[^>]*> nop
-+0+0a7c <[^>]*> nop
-+0+0a80 <[^>]*> nop
-+0+0a84 <[^>]*> nop
-+0+0a88 <[^>]*> nop
-+0+0a8c <[^>]*> nop
-+0+0a90 <[^>]*> nop
-+0+0a94 <[^>]*> nop
-+0+0a98 <[^>]*> nop
-+0+0a9c <[^>]*> nop
-+0+0aa0 <[^>]*> nop
-+0+0aa4 <[^>]*> nop
-+0+0aa8 <[^>]*> nop
-+0+0aac <[^>]*> nop
-+0+0ab0 <[^>]*> nop
-+0+0ab4 <[^>]*> nop
-+0+0ab8 <[^>]*> nop
-+0+0abc <[^>]*> nop
-+0+0ac0 <[^>]*> nop
-+0+0ac4 <[^>]*> nop
-+0+0ac8 <[^>]*> nop
-+0+0acc <[^>]*> nop
-+0+0ad0 <[^>]*> nop
-+0+0ad4 <[^>]*> nop
-+0+0ad8 <[^>]*> nop
-+0+0adc <[^>]*> nop
-+0+0ae0 <[^>]*> nop
-+0+0ae4 <[^>]*> nop
-+0+0ae8 <[^>]*> nop
-+0+0aec <[^>]*> nop
-+0+0af0 <[^>]*> nop
-+0+0af4 <[^>]*> nop
-+0+0af8 <[^>]*> nop
-+0+0afc <[^>]*> nop
-+0+0b00 <[^>]*> nop
-+0+0b04 <[^>]*> nop
-+0+0b08 <[^>]*> nop
-+0+0b0c <[^>]*> nop
-+0+0b10 <[^>]*> nop
-+0+0b14 <[^>]*> nop
-+0+0b18 <[^>]*> nop
-+0+0b1c <[^>]*> nop
-+0+0b20 <[^>]*> nop
-+0+0b24 <[^>]*> nop
-+0+0b28 <[^>]*> nop
-+0+0b2c <[^>]*> nop
-+0+0b30 <[^>]*> nop
-+0+0b34 <[^>]*> nop
-+0+0b38 <[^>]*> nop
-+0+0b3c <[^>]*> nop
-+0+0b40 <[^>]*> nop
-+0+0b44 <[^>]*> nop
-+0+0b48 <[^>]*> nop
-+0+0b4c <[^>]*> nop
-+0+0b50 <[^>]*> nop
-+0+0b54 <[^>]*> nop
-+0+0b58 <[^>]*> nop
-+0+0b5c <[^>]*> nop
-+0+0b60 <[^>]*> nop
-+0+0b64 <[^>]*> nop
-+0+0b68 <[^>]*> nop
-+0+0b6c <[^>]*> nop
-+0+0b70 <[^>]*> nop
-+0+0b74 <[^>]*> nop
-+0+0b78 <[^>]*> nop
-+0+0b7c <[^>]*> nop
-+0+0b80 <[^>]*> nop
-+0+0b84 <[^>]*> nop
-+0+0b88 <[^>]*> nop
-+0+0b8c <[^>]*> nop
-+0+0b90 <[^>]*> nop
-+0+0b94 <[^>]*> nop
-+0+0b98 <[^>]*> nop
-+0+0b9c <[^>]*> nop
-+0+0ba0 <[^>]*> nop
-+0+0ba4 <[^>]*> nop
-+0+0ba8 <[^>]*> nop
-+0+0bac <[^>]*> nop
-+0+0bb0 <[^>]*> nop
-+0+0bb4 <[^>]*> nop
-+0+0bb8 <[^>]*> nop
-+0+0bbc <[^>]*> nop
-+0+0bc0 <[^>]*> nop
-+0+0bc4 <[^>]*> nop
-+0+0bc8 <[^>]*> nop
-+0+0bcc <[^>]*> nop
-+0+0bd0 <[^>]*> nop
-+0+0bd4 <[^>]*> nop
-+0+0bd8 <[^>]*> nop
-+0+0bdc <[^>]*> nop
-+0+0be0 <[^>]*> nop
-+0+0be4 <[^>]*> nop
-+0+0be8 <[^>]*> nop
-+0+0bec <[^>]*> nop
-+0+0bf0 <[^>]*> nop
-+0+0bf4 <[^>]*> nop
-+0+0bf8 <[^>]*> nop
-+0+0bfc <[^>]*> nop
-+0+0c00 <[^>]*> nop
-+0+0c04 <[^>]*> nop
-+0+0c08 <[^>]*> nop
-+0+0c0c <[^>]*> nop
-+0+0c10 <[^>]*> nop
-+0+0c14 <[^>]*> nop
-+0+0c18 <[^>]*> nop
-+0+0c1c <[^>]*> nop
-+0+0c20 <[^>]*> nop
-+0+0c24 <[^>]*> nop
-+0+0c28 <[^>]*> nop
-+0+0c2c <[^>]*> nop
-+0+0c30 <[^>]*> nop
-+0+0c34 <[^>]*> nop
-+0+0c38 <[^>]*> nop
-+0+0c3c <[^>]*> nop
-+0+0c40 <[^>]*> nop
-+0+0c44 <[^>]*> nop
-+0+0c48 <[^>]*> nop
-+0+0c4c <[^>]*> nop
-+0+0c50 <[^>]*> nop
-+0+0c54 <[^>]*> nop
-+0+0c58 <[^>]*> nop
-+0+0c5c <[^>]*> nop
-+0+0c60 <[^>]*> nop
-+0+0c64 <[^>]*> nop
-+0+0c68 <[^>]*> nop
-+0+0c6c <[^>]*> nop
-+0+0c70 <[^>]*> nop
-+0+0c74 <[^>]*> nop
-+0+0c78 <[^>]*> nop
-+0+0c7c <[^>]*> nop
-+0+0c80 <[^>]*> nop
-+0+0c84 <[^>]*> nop
-+0+0c88 <[^>]*> nop
-+0+0c8c <[^>]*> nop
-+0+0c90 <[^>]*> nop
-+0+0c94 <[^>]*> nop
-+0+0c98 <[^>]*> nop
-+0+0c9c <[^>]*> nop
-+0+0ca0 <[^>]*> nop
-+0+0ca4 <[^>]*> nop
-+0+0ca8 <[^>]*> nop
-+0+0cac <[^>]*> nop
-+0+0cb0 <[^>]*> nop
-+0+0cb4 <[^>]*> nop
-+0+0cb8 <[^>]*> nop
-+0+0cbc <[^>]*> nop
-+0+0cc0 <[^>]*> nop
-+0+0cc4 <[^>]*> nop
-+0+0cc8 <[^>]*> nop
-+0+0ccc <[^>]*> nop
-+0+0cd0 <[^>]*> nop
-+0+0cd4 <[^>]*> nop
-+0+0cd8 <[^>]*> nop
-+0+0cdc <[^>]*> nop
-+0+0ce0 <[^>]*> nop
-+0+0ce4 <[^>]*> nop
-+0+0ce8 <[^>]*> nop
-+0+0cec <[^>]*> nop
-+0+0cf0 <[^>]*> nop
-+0+0cf4 <[^>]*> nop
-+0+0cf8 <[^>]*> nop
-+0+0cfc <[^>]*> nop
-+0+0d00 <[^>]*> nop
-+0+0d04 <[^>]*> nop
-+0+0d08 <[^>]*> nop
-+0+0d0c <[^>]*> nop
-+0+0d10 <[^>]*> nop
-+0+0d14 <[^>]*> nop
-+0+0d18 <[^>]*> nop
-+0+0d1c <[^>]*> nop
-+0+0d20 <[^>]*> nop
-+0+0d24 <[^>]*> nop
-+0+0d28 <[^>]*> nop
-+0+0d2c <[^>]*> nop
-+0+0d30 <[^>]*> nop
-+0+0d34 <[^>]*> nop
-+0+0d38 <[^>]*> nop
-+0+0d3c <[^>]*> nop
-+0+0d40 <[^>]*> nop
-+0+0d44 <[^>]*> nop
-+0+0d48 <[^>]*> nop
-+0+0d4c <[^>]*> nop
-+0+0d50 <[^>]*> nop
-+0+0d54 <[^>]*> nop
-+0+0d58 <[^>]*> nop
-+0+0d5c <[^>]*> nop
-+0+0d60 <[^>]*> nop
-+0+0d64 <[^>]*> nop
-+0+0d68 <[^>]*> nop
-+0+0d6c <[^>]*> nop
-+0+0d70 <[^>]*> nop
-+0+0d74 <[^>]*> nop
-+0+0d78 <[^>]*> nop
-+0+0d7c <[^>]*> nop
-+0+0d80 <[^>]*> nop
-+0+0d84 <[^>]*> nop
-+0+0d88 <[^>]*> nop
-+0+0d8c <[^>]*> nop
-+0+0d90 <[^>]*> nop
-+0+0d94 <[^>]*> nop
-+0+0d98 <[^>]*> nop
-+0+0d9c <[^>]*> nop
-+0+0da0 <[^>]*> nop
-+0+0da4 <[^>]*> nop
-+0+0da8 <[^>]*> nop
-+0+0dac <[^>]*> nop
-+0+0db0 <[^>]*> nop
-+0+0db4 <[^>]*> nop
-+0+0db8 <[^>]*> nop
-+0+0dbc <[^>]*> nop
-+0+0dc0 <[^>]*> nop
-+0+0dc4 <[^>]*> nop
-+0+0dc8 <[^>]*> nop
-+0+0dcc <[^>]*> nop
-+0+0dd0 <[^>]*> nop
-+0+0dd4 <[^>]*> nop
-+0+0dd8 <[^>]*> nop
-+0+0ddc <[^>]*> nop
-+0+0de0 <[^>]*> nop
-+0+0de4 <[^>]*> nop
-+0+0de8 <[^>]*> nop
-+0+0dec <[^>]*> nop
-+0+0df0 <[^>]*> nop
-+0+0df4 <[^>]*> nop
-+0+0df8 <[^>]*> nop
-+0+0dfc <[^>]*> nop
-+0+0e00 <[^>]*> nop
-+0+0e04 <[^>]*> nop
-+0+0e08 <[^>]*> nop
-+0+0e0c <[^>]*> nop
-+0+0e10 <[^>]*> nop
-+0+0e14 <[^>]*> nop
-+0+0e18 <[^>]*> nop
-+0+0e1c <[^>]*> nop
-+0+0e20 <[^>]*> nop
-+0+0e24 <[^>]*> nop
-+0+0e28 <[^>]*> nop
-+0+0e2c <[^>]*> nop
-+0+0e30 <[^>]*> nop
-+0+0e34 <[^>]*> nop
-+0+0e38 <[^>]*> nop
-+0+0e3c <[^>]*> nop
-+0+0e40 <[^>]*> nop
-+0+0e44 <[^>]*> nop
-+0+0e48 <[^>]*> nop
-+0+0e4c <[^>]*> nop
-+0+0e50 <[^>]*> nop
-+0+0e54 <[^>]*> nop
-+0+0e58 <[^>]*> nop
-+0+0e5c <[^>]*> nop
-+0+0e60 <[^>]*> nop
-+0+0e64 <[^>]*> nop
-+0+0e68 <[^>]*> nop
-+0+0e6c <[^>]*> nop
-+0+0e70 <[^>]*> nop
-+0+0e74 <[^>]*> nop
-+0+0e78 <[^>]*> nop
-+0+0e7c <[^>]*> nop
-+0+0e80 <[^>]*> nop
-+0+0e84 <[^>]*> nop
-+0+0e88 <[^>]*> nop
-+0+0e8c <[^>]*> nop
-+0+0e90 <[^>]*> nop
-+0+0e94 <[^>]*> nop
-+0+0e98 <[^>]*> nop
-+0+0e9c <[^>]*> nop
-+0+0ea0 <[^>]*> nop
-+0+0ea4 <[^>]*> nop
-+0+0ea8 <[^>]*> nop
-+0+0eac <[^>]*> nop
-+0+0eb0 <[^>]*> nop
-+0+0eb4 <[^>]*> nop
-+0+0eb8 <[^>]*> nop
-+0+0ebc <[^>]*> nop
-+0+0ec0 <[^>]*> nop
-+0+0ec4 <[^>]*> nop
-+0+0ec8 <[^>]*> nop
-+0+0ecc <[^>]*> nop
-+0+0ed0 <[^>]*> nop
-+0+0ed4 <[^>]*> nop
-+0+0ed8 <[^>]*> nop
-+0+0edc <[^>]*> nop
-+0+0ee0 <[^>]*> nop
-+0+0ee4 <[^>]*> nop
-+0+0ee8 <[^>]*> nop
-+0+0eec <[^>]*> nop
-+0+0ef0 <[^>]*> nop
-+0+0ef4 <[^>]*> nop
-+0+0ef8 <[^>]*> nop
-+0+0efc <[^>]*> nop
-+0+0f00 <[^>]*> nop
-+0+0f04 <[^>]*> nop
-+0+0f08 <[^>]*> nop
-+0+0f0c <[^>]*> nop
-+0+0f10 <[^>]*> nop
-+0+0f14 <[^>]*> nop
-+0+0f18 <[^>]*> nop
-+0+0f1c <[^>]*> nop
-+0+0f20 <[^>]*> nop
-+0+0f24 <[^>]*> nop
-+0+0f28 <[^>]*> nop
-+0+0f2c <[^>]*> nop
-+0+0f30 <[^>]*> nop
-+0+0f34 <[^>]*> nop
-+0+0f38 <[^>]*> nop
-+0+0f3c <[^>]*> nop
-+0+0f40 <[^>]*> nop
-+0+0f44 <[^>]*> nop
-+0+0f48 <[^>]*> nop
-+0+0f4c <[^>]*> nop
-+0+0f50 <[^>]*> nop
-+0+0f54 <[^>]*> nop
-+0+0f58 <[^>]*> nop
-+0+0f5c <[^>]*> nop
-+0+0f60 <[^>]*> nop
-+0+0f64 <[^>]*> nop
-+0+0f68 <[^>]*> nop
-+0+0f6c <[^>]*> nop
-+0+0f70 <[^>]*> nop
-+0+0f74 <[^>]*> nop
-+0+0f78 <[^>]*> nop
-+0+0f7c <[^>]*> nop
-+0+0f80 <[^>]*> nop
-+0+0f84 <[^>]*> nop
-+0+0f88 <[^>]*> nop
-+0+0f8c <[^>]*> nop
-+0+0f90 <[^>]*> nop
-+0+0f94 <[^>]*> nop
-+0+0f98 <[^>]*> nop
-+0+0f9c <[^>]*> nop
-+0+0fa0 <[^>]*> nop
-+0+0fa4 <[^>]*> nop
-+0+0fa8 <[^>]*> nop
-+0+0fac <[^>]*> nop
-+0+0fb0 <[^>]*> nop
-+0+0fb4 <[^>]*> nop
-+0+0fb8 <[^>]*> nop
-+0+0fbc <[^>]*> nop
-+0+0fc0 <[^>]*> nop
-+0+0fc4 <[^>]*> nop
-+0+0fc8 <[^>]*> nop
-+0+0fcc <[^>]*> nop
-+0+0fd0 <[^>]*> nop
-+0+0fd4 <[^>]*> nop
-+0+0fd8 <[^>]*> nop
-+0+0fdc <[^>]*> nop
-+0+0fe0 <[^>]*> nop
-+0+0fe4 <[^>]*> nop
-+0+0fe8 <[^>]*> nop
-+0+0fec <[^>]*> nop
-+0+0ff0 <[^>]*> nop
-+0+0ff4 <[^>]*> nop
-+0+0ff8 <[^>]*> nop
-+0+0ffc <[^>]*> nop
-+0+1000 <[^>]*> nop
-+0+1004 <[^>]*> nop
-+0+1008 <[^>]*> nop
-+0+100c <[^>]*> nop
-+0+1010 <[^>]*> nop
-+0+1014 <[^>]*> nop
-+0+1018 <[^>]*> nop
-+0+101c <[^>]*> nop
-+0+1020 <[^>]*> nop
-+0+1024 <[^>]*> nop
-+0+1028 <[^>]*> nop
-+0+102c <[^>]*> nop
-+0+1030 <[^>]*> nop
-+0+1034 <[^>]*> nop
-+0+1038 <[^>]*> nop
-+0+103c <[^>]*> nop
-+0+1040 <[^>]*> nop
-+0+1044 <[^>]*> nop
-+0+1048 <[^>]*> nop
-+0+104c <[^>]*> nop
-+0+1050 <[^>]*> nop
-+0+1054 <[^>]*> nop
-+0+1058 <[^>]*> nop
-+0+105c <[^>]*> nop
-+0+1060 <[^>]*> nop
-+0+1064 <[^>]*> nop
-+0+1068 <[^>]*> nop
-+0+106c <[^>]*> nop
-+0+1070 <[^>]*> nop
-+0+1074 <[^>]*> nop
-+0+1078 <[^>]*> nop
-+0+107c <[^>]*> nop
-+0+1080 <[^>]*> nop
-+0+1084 <[^>]*> nop
-+0+1088 <[^>]*> nop
-+0+108c <[^>]*> nop
-+0+1090 <[^>]*> nop
-+0+1094 <[^>]*> nop
-+0+1098 <[^>]*> nop
-+0+109c <[^>]*> nop
-+0+10a0 <[^>]*> nop
-+0+10a4 <[^>]*> nop
-+0+10a8 <[^>]*> nop
-+0+10ac <[^>]*> nop
-+0+10b0 <[^>]*> nop
-+0+10b4 <[^>]*> nop
-+0+10b8 <[^>]*> nop
-+0+10bc <[^>]*> nop
-+0+10c0 <[^>]*> nop
-+0+10c4 <[^>]*> nop
-+0+10c8 <[^>]*> nop
-+0+10cc <[^>]*> nop
-+0+10d0 <[^>]*> nop
-+0+10d4 <[^>]*> nop
-+0+10d8 <[^>]*> nop
-+0+10dc <[^>]*> nop
-+0+10e0 <[^>]*> nop
-+0+10e4 <[^>]*> nop
-+0+10e8 <[^>]*> nop
-+0+10ec <[^>]*> nop
-+0+10f0 <[^>]*> nop
-+0+10f4 <[^>]*> nop
-+0+10f8 <[^>]*> nop
-+0+10fc <[^>]*> nop
-+0+1100 <[^>]*> nop
-+0+1104 <[^>]*> nop
-+0+1108 <[^>]*> nop
-+0+110c <[^>]*> nop
-+0+1110 <[^>]*> nop
-+0+1114 <[^>]*> nop
-+0+1118 <[^>]*> nop
-+0+111c <[^>]*> nop
-+0+1120 <[^>]*> nop
-+0+1124 <[^>]*> nop
-+0+1128 <[^>]*> nop
-+0+112c <[^>]*> nop
-+0+1130 <[^>]*> nop
-+0+1134 <[^>]*> nop
-+0+1138 <[^>]*> nop
-+0+113c <[^>]*> nop
-+0+1140 <[^>]*> nop
-+0+1144 <[^>]*> nop
-+0+1148 <[^>]*> nop
-+0+114c <[^>]*> nop
-+0+1150 <[^>]*> nop
-+0+1154 <[^>]*> nop
-+0+1158 <[^>]*> nop
-+0+115c <[^>]*> nop
-+0+1160 <[^>]*> nop
-+0+1164 <[^>]*> nop
-+0+1168 <[^>]*> nop
-+0+116c <[^>]*> nop
-+0+1170 <[^>]*> nop
-+0+1174 <[^>]*> nop
-+0+1178 <[^>]*> nop
-+0+117c <[^>]*> nop
-+0+1180 <[^>]*> nop
-+0+1184 <[^>]*> nop
-+0+1188 <[^>]*> nop
-+0+118c <[^>]*> nop
-+0+1190 <[^>]*> nop
-+0+1194 <[^>]*> nop
-+0+1198 <[^>]*> nop
-+0+119c <[^>]*> nop
-+0+11a0 <[^>]*> nop
-+0+11a4 <[^>]*> nop
-+0+11a8 <[^>]*> nop
-+0+11ac <[^>]*> nop
-+0+11b0 <[^>]*> nop
-+0+11b4 <[^>]*> nop
-+0+11b8 <[^>]*> nop
-+0+11bc <[^>]*> nop
-+0+11c0 <[^>]*> nop
-+0+11c4 <[^>]*> nop
-+0+11c8 <[^>]*> nop
-+0+11cc <[^>]*> nop
-+0+11d0 <[^>]*> nop
-+0+11d4 <[^>]*> nop
-+0+11d8 <[^>]*> nop
-+0+11dc <[^>]*> nop
-+0+11e0 <[^>]*> nop
-+0+11e4 <[^>]*> nop
-+0+11e8 <[^>]*> nop
-+0+11ec <[^>]*> nop
-+0+11f0 <[^>]*> nop
-+0+11f4 <[^>]*> nop
-+0+11f8 <[^>]*> nop
-+0+11fc <[^>]*> nop
-+0+1200 <[^>]*> nop
-+0+1204 <[^>]*> nop
-+0+1208 <[^>]*> nop
-+0+120c <[^>]*> nop
-+0+1210 <[^>]*> nop
-+0+1214 <[^>]*> nop
-+0+1218 <[^>]*> nop
-+0+121c <[^>]*> nop
-+0+1220 <[^>]*> nop
-+0+1224 <[^>]*> nop
-+0+1228 <[^>]*> nop
-+0+122c <[^>]*> nop
-+0+1230 <[^>]*> nop
-+0+1234 <[^>]*> nop
-+0+1238 <[^>]*> nop
-+0+123c <[^>]*> nop
-+0+1240 <[^>]*> nop
-+0+1244 <[^>]*> nop
-+0+1248 <[^>]*> nop
-+0+124c <[^>]*> nop
-+0+1250 <[^>]*> nop
-+0+1254 <[^>]*> nop
-+0+1258 <[^>]*> nop
-+0+125c <[^>]*> nop
-+0+1260 <[^>]*> nop
-+0+1264 <[^>]*> nop
-+0+1268 <[^>]*> nop
-+0+126c <[^>]*> nop
-+0+1270 <[^>]*> nop
-+0+1274 <[^>]*> nop
-+0+1278 <[^>]*> nop
-+0+127c <[^>]*> nop
-+0+1280 <[^>]*> nop
-+0+1284 <[^>]*> nop
-+0+1288 <[^>]*> nop
-+0+128c <[^>]*> nop
-+0+1290 <[^>]*> nop
-+0+1294 <[^>]*> nop
-+0+1298 <[^>]*> nop
-+0+129c <[^>]*> nop
-+0+12a0 <[^>]*> nop
-+0+12a4 <[^>]*> nop
-+0+12a8 <[^>]*> nop
-+0+12ac <[^>]*> nop
-+0+12b0 <[^>]*> nop
-+0+12b4 <[^>]*> nop
-+0+12b8 <[^>]*> nop
-+0+12bc <[^>]*> nop
-+0+12c0 <[^>]*> nop
-+0+12c4 <[^>]*> nop
-+0+12c8 <[^>]*> nop
-+0+12cc <[^>]*> nop
-+0+12d0 <[^>]*> nop
-+0+12d4 <[^>]*> nop
-+0+12d8 <[^>]*> nop
-+0+12dc <[^>]*> nop
-+0+12e0 <[^>]*> nop
-+0+12e4 <[^>]*> nop
-+0+12e8 <[^>]*> nop
-+0+12ec <[^>]*> nop
-+0+12f0 <[^>]*> nop
-+0+12f4 <[^>]*> nop
-+0+12f8 <[^>]*> nop
-+0+12fc <[^>]*> nop
-+0+1300 <[^>]*> nop
-+0+1304 <[^>]*> nop
-+0+1308 <[^>]*> nop
-+0+130c <[^>]*> nop
-+0+1310 <[^>]*> nop
-+0+1314 <[^>]*> nop
-+0+1318 <[^>]*> nop
-+0+131c <[^>]*> nop
-+0+1320 <[^>]*> nop
-+0+1324 <[^>]*> nop
-+0+1328 <[^>]*> nop
-+0+132c <[^>]*> nop
-+0+1330 <[^>]*> nop
-+0+1334 <[^>]*> nop
-+0+1338 <[^>]*> nop
-+0+133c <[^>]*> nop
-+0+1340 <[^>]*> nop
-+0+1344 <[^>]*> nop
-+0+1348 <[^>]*> nop
-+0+134c <[^>]*> nop
-+0+1350 <[^>]*> nop
-+0+1354 <[^>]*> nop
-+0+1358 <[^>]*> nop
-+0+135c <[^>]*> nop
-+0+1360 <[^>]*> nop
-+0+1364 <[^>]*> nop
-+0+1368 <[^>]*> nop
-+0+136c <[^>]*> nop
-+0+1370 <[^>]*> nop
-+0+1374 <[^>]*> nop
-+0+1378 <[^>]*> nop
-+0+137c <[^>]*> nop
-+0+1380 <[^>]*> nop
-+0+1384 <[^>]*> nop
-+0+1388 <[^>]*> nop
-+0+138c <[^>]*> nop
-+0+1390 <[^>]*> nop
-+0+1394 <[^>]*> nop
-+0+1398 <[^>]*> nop
-+0+139c <[^>]*> nop
-+0+13a0 <[^>]*> nop
-+0+13a4 <[^>]*> nop
-+0+13a8 <[^>]*> nop
-+0+13ac <[^>]*> nop
-+0+13b0 <[^>]*> nop
-+0+13b4 <[^>]*> nop
-+0+13b8 <[^>]*> nop
-+0+13bc <[^>]*> nop
-+0+13c0 <[^>]*> nop
-+0+13c4 <[^>]*> nop
-+0+13c8 <[^>]*> nop
-+0+13cc <[^>]*> nop
-+0+13d0 <[^>]*> nop
-+0+13d4 <[^>]*> nop
-+0+13d8 <[^>]*> nop
-+0+13dc <[^>]*> nop
-+0+13e0 <[^>]*> nop
-+0+13e4 <[^>]*> nop
-+0+13e8 <[^>]*> nop
-+0+13ec <[^>]*> nop
-+0+13f0 <[^>]*> nop
-+0+13f4 <[^>]*> nop
-+0+13f8 <[^>]*> nop
-+0+13fc <[^>]*> nop
-+0+1400 <[^>]*> nop
-+0+1404 <[^>]*> nop
-+0+1408 <[^>]*> nop
-+0+140c <[^>]*> nop
-+0+1410 <[^>]*> nop
-+0+1414 <[^>]*> nop
-+0+1418 <[^>]*> nop
-+0+141c <[^>]*> nop
-+0+1420 <[^>]*> nop
-+0+1424 <[^>]*> nop
-+0+1428 <[^>]*> nop
-+0+142c <[^>]*> nop
-+0+1430 <[^>]*> nop
-+0+1434 <[^>]*> nop
-+0+1438 <[^>]*> nop
-+0+143c <[^>]*> nop
-+0+1440 <[^>]*> nop
-+0+1444 <[^>]*> nop
-+0+1448 <[^>]*> nop
-+0+144c <[^>]*> nop
-+0+1450 <[^>]*> nop
-+0+1454 <[^>]*> nop
-+0+1458 <[^>]*> nop
-+0+145c <[^>]*> nop
-+0+1460 <[^>]*> nop
-+0+1464 <[^>]*> nop
-+0+1468 <[^>]*> nop
-+0+146c <[^>]*> nop
-+0+1470 <[^>]*> nop
-+0+1474 <[^>]*> nop
-+0+1478 <[^>]*> nop
-+0+147c <[^>]*> nop
-+0+1480 <[^>]*> nop
-+0+1484 <[^>]*> nop
-+0+1488 <[^>]*> nop
-+0+148c <[^>]*> nop
-+0+1490 <[^>]*> nop
-+0+1494 <[^>]*> nop
-+0+1498 <[^>]*> nop
-+0+149c <[^>]*> nop
-+0+14a0 <[^>]*> nop
-+0+14a4 <[^>]*> nop
-+0+14a8 <[^>]*> nop
-+0+14ac <[^>]*> nop
-+0+14b0 <[^>]*> nop
-+0+14b4 <[^>]*> nop
-+0+14b8 <[^>]*> nop
-+0+14bc <[^>]*> nop
-+0+14c0 <[^>]*> nop
-+0+14c4 <[^>]*> nop
-+0+14c8 <[^>]*> nop
-+0+14cc <[^>]*> nop
-+0+14d0 <[^>]*> nop
-+0+14d4 <[^>]*> nop
-+0+14d8 <[^>]*> nop
-+0+14dc <[^>]*> nop
-+0+14e0 <[^>]*> nop
-+0+14e4 <[^>]*> nop
-+0+14e8 <[^>]*> nop
-+0+14ec <[^>]*> nop
-+0+14f0 <[^>]*> nop
-+0+14f4 <[^>]*> nop
-+0+14f8 <[^>]*> nop
-+0+14fc <[^>]*> nop
-+0+1500 <[^>]*> nop
-+0+1504 <[^>]*> nop
-+0+1508 <[^>]*> nop
-+0+150c <[^>]*> nop
-+0+1510 <[^>]*> nop
-+0+1514 <[^>]*> nop
-+0+1518 <[^>]*> nop
-+0+151c <[^>]*> nop
-+0+1520 <[^>]*> nop
-+0+1524 <[^>]*> nop
-+0+1528 <[^>]*> nop
-+0+152c <[^>]*> nop
-+0+1530 <[^>]*> nop
-+0+1534 <[^>]*> nop
-+0+1538 <[^>]*> nop
-+0+153c <[^>]*> nop
-+0+1540 <[^>]*> nop
-+0+1544 <[^>]*> nop
-+0+1548 <[^>]*> nop
-+0+154c <[^>]*> nop
-+0+1550 <[^>]*> nop
-+0+1554 <[^>]*> nop
-+0+1558 <[^>]*> nop
-+0+155c <[^>]*> nop
-+0+1560 <[^>]*> nop
-+0+1564 <[^>]*> nop
-+0+1568 <[^>]*> nop
-+0+156c <[^>]*> nop
-+0+1570 <[^>]*> nop
-+0+1574 <[^>]*> nop
-+0+1578 <[^>]*> nop
-+0+157c <[^>]*> nop
-+0+1580 <[^>]*> nop
-+0+1584 <[^>]*> nop
-+0+1588 <[^>]*> nop
-+0+158c <[^>]*> nop
-+0+1590 <[^>]*> nop
-+0+1594 <[^>]*> nop
-+0+1598 <[^>]*> nop
-+0+159c <[^>]*> nop
-+0+15a0 <[^>]*> nop
-+0+15a4 <[^>]*> nop
-+0+15a8 <[^>]*> nop
-+0+15ac <[^>]*> nop
-+0+15b0 <[^>]*> nop
-+0+15b4 <[^>]*> nop
-+0+15b8 <[^>]*> nop
-+0+15bc <[^>]*> nop
-+0+15c0 <[^>]*> nop
-+0+15c4 <[^>]*> nop
-+0+15c8 <[^>]*> nop
-+0+15cc <[^>]*> nop
-+0+15d0 <[^>]*> nop
-+0+15d4 <[^>]*> nop
-+0+15d8 <[^>]*> nop
-+0+15dc <[^>]*> nop
-+0+15e0 <[^>]*> nop
-+0+15e4 <[^>]*> nop
-+0+15e8 <[^>]*> nop
-+0+15ec <[^>]*> nop
-+0+15f0 <[^>]*> nop
-+0+15f4 <[^>]*> nop
-+0+15f8 <[^>]*> nop
-+0+15fc <[^>]*> nop
-+0+1600 <[^>]*> nop
-+0+1604 <[^>]*> nop
-+0+1608 <[^>]*> nop
-+0+160c <[^>]*> nop
-+0+1610 <[^>]*> nop
-+0+1614 <[^>]*> nop
-+0+1618 <[^>]*> nop
-+0+161c <[^>]*> nop
-+0+1620 <[^>]*> nop
-+0+1624 <[^>]*> nop
-+0+1628 <[^>]*> nop
-+0+162c <[^>]*> nop
-+0+1630 <[^>]*> nop
-+0+1634 <[^>]*> nop
-+0+1638 <[^>]*> nop
-+0+163c <[^>]*> nop
-+0+1640 <[^>]*> nop
-+0+1644 <[^>]*> nop
-+0+1648 <[^>]*> nop
-+0+164c <[^>]*> nop
-+0+1650 <[^>]*> nop
-+0+1654 <[^>]*> nop
-+0+1658 <[^>]*> nop
-+0+165c <[^>]*> nop
-+0+1660 <[^>]*> nop
-+0+1664 <[^>]*> nop
-+0+1668 <[^>]*> nop
-+0+166c <[^>]*> nop
-+0+1670 <[^>]*> nop
-+0+1674 <[^>]*> nop
-+0+1678 <[^>]*> nop
-+0+167c <[^>]*> nop
-+0+1680 <[^>]*> nop
-+0+1684 <[^>]*> nop
-+0+1688 <[^>]*> nop
-+0+168c <[^>]*> nop
-+0+1690 <[^>]*> nop
-+0+1694 <[^>]*> nop
-+0+1698 <[^>]*> nop
-+0+169c <[^>]*> nop
-+0+16a0 <[^>]*> nop
-+0+16a4 <[^>]*> nop
-+0+16a8 <[^>]*> nop
-+0+16ac <[^>]*> nop
-+0+16b0 <[^>]*> nop
-+0+16b4 <[^>]*> nop
-+0+16b8 <[^>]*> nop
-+0+16bc <[^>]*> nop
-+0+16c0 <[^>]*> nop
-+0+16c4 <[^>]*> nop
-+0+16c8 <[^>]*> nop
-+0+16cc <[^>]*> nop
-+0+16d0 <[^>]*> nop
-+0+16d4 <[^>]*> nop
-+0+16d8 <[^>]*> nop
-+0+16dc <[^>]*> nop
-+0+16e0 <[^>]*> nop
-+0+16e4 <[^>]*> nop
-+0+16e8 <[^>]*> nop
-+0+16ec <[^>]*> nop
-+0+16f0 <[^>]*> nop
-+0+16f4 <[^>]*> nop
-+0+16f8 <[^>]*> nop
-+0+16fc <[^>]*> nop
-+0+1700 <[^>]*> nop
-+0+1704 <[^>]*> nop
-+0+1708 <[^>]*> nop
-+0+170c <[^>]*> nop
-+0+1710 <[^>]*> nop
-+0+1714 <[^>]*> nop
-+0+1718 <[^>]*> nop
-+0+171c <[^>]*> nop
-+0+1720 <[^>]*> nop
-+0+1724 <[^>]*> nop
-+0+1728 <[^>]*> nop
-+0+172c <[^>]*> nop
-+0+1730 <[^>]*> nop
-+0+1734 <[^>]*> nop
-+0+1738 <[^>]*> nop
-+0+173c <[^>]*> nop
-+0+1740 <[^>]*> nop
-+0+1744 <[^>]*> nop
-+0+1748 <[^>]*> nop
-+0+174c <[^>]*> nop
-+0+1750 <[^>]*> nop
-+0+1754 <[^>]*> nop
-+0+1758 <[^>]*> nop
-+0+175c <[^>]*> nop
-+0+1760 <[^>]*> nop
-+0+1764 <[^>]*> nop
-+0+1768 <[^>]*> nop
-+0+176c <[^>]*> nop
-+0+1770 <[^>]*> nop
-+0+1774 <[^>]*> nop
-+0+1778 <[^>]*> nop
-+0+177c <[^>]*> nop
-+0+1780 <[^>]*> nop
-+0+1784 <[^>]*> nop
-+0+1788 <[^>]*> nop
-+0+178c <[^>]*> nop
-+0+1790 <[^>]*> nop
-+0+1794 <[^>]*> nop
-+0+1798 <[^>]*> nop
-+0+179c <[^>]*> nop
-+0+17a0 <[^>]*> nop
-+0+17a4 <[^>]*> nop
-+0+17a8 <[^>]*> nop
-+0+17ac <[^>]*> nop
-+0+17b0 <[^>]*> nop
-+0+17b4 <[^>]*> nop
-+0+17b8 <[^>]*> nop
-+0+17bc <[^>]*> nop
-+0+17c0 <[^>]*> nop
-+0+17c4 <[^>]*> nop
-+0+17c8 <[^>]*> nop
-+0+17cc <[^>]*> nop
-+0+17d0 <[^>]*> nop
-+0+17d4 <[^>]*> nop
-+0+17d8 <[^>]*> nop
-+0+17dc <[^>]*> nop
-+0+17e0 <[^>]*> nop
-+0+17e4 <[^>]*> nop
-+0+17e8 <[^>]*> nop
-+0+17ec <[^>]*> nop
-+0+17f0 <[^>]*> nop
-+0+17f4 <[^>]*> nop
-+0+17f8 <[^>]*> nop
-+0+17fc <[^>]*> nop
-+0+1800 <[^>]*> nop
-+0+1804 <[^>]*> nop
-+0+1808 <[^>]*> nop
-+0+180c <[^>]*> nop
-+0+1810 <[^>]*> nop
-+0+1814 <[^>]*> nop
-+0+1818 <[^>]*> nop
-+0+181c <[^>]*> nop
-+0+1820 <[^>]*> nop
-+0+1824 <[^>]*> nop
-+0+1828 <[^>]*> nop
-+0+182c <[^>]*> nop
-+0+1830 <[^>]*> nop
-+0+1834 <[^>]*> nop
-+0+1838 <[^>]*> nop
-+0+183c <[^>]*> nop
-+0+1840 <[^>]*> nop
-+0+1844 <[^>]*> nop
-+0+1848 <[^>]*> nop
-+0+184c <[^>]*> nop
-+0+1850 <[^>]*> nop
-+0+1854 <[^>]*> nop
-+0+1858 <[^>]*> nop
-+0+185c <[^>]*> nop
-+0+1860 <[^>]*> nop
-+0+1864 <[^>]*> nop
-+0+1868 <[^>]*> nop
-+0+186c <[^>]*> nop
-+0+1870 <[^>]*> nop
-+0+1874 <[^>]*> nop
-+0+1878 <[^>]*> nop
-+0+187c <[^>]*> nop
-+0+1880 <[^>]*> nop
-+0+1884 <[^>]*> nop
-+0+1888 <[^>]*> nop
-+0+188c <[^>]*> nop
-+0+1890 <[^>]*> nop
-+0+1894 <[^>]*> nop
-+0+1898 <[^>]*> nop
-+0+189c <[^>]*> nop
-+0+18a0 <[^>]*> nop
-+0+18a4 <[^>]*> nop
-+0+18a8 <[^>]*> nop
-+0+18ac <[^>]*> nop
-+0+18b0 <[^>]*> nop
-+0+18b4 <[^>]*> nop
-+0+18b8 <[^>]*> nop
-+0+18bc <[^>]*> nop
-+0+18c0 <[^>]*> nop
-+0+18c4 <[^>]*> nop
-+0+18c8 <[^>]*> nop
-+0+18cc <[^>]*> nop
-+0+18d0 <[^>]*> nop
-+0+18d4 <[^>]*> nop
-+0+18d8 <[^>]*> nop
-+0+18dc <[^>]*> nop
-+0+18e0 <[^>]*> nop
-+0+18e4 <[^>]*> nop
-+0+18e8 <[^>]*> nop
-+0+18ec <[^>]*> nop
-+0+18f0 <[^>]*> nop
-+0+18f4 <[^>]*> nop
-+0+18f8 <[^>]*> nop
-+0+18fc <[^>]*> nop
-+0+1900 <[^>]*> nop
-+0+1904 <[^>]*> nop
-+0+1908 <[^>]*> nop
-+0+190c <[^>]*> nop
-+0+1910 <[^>]*> nop
-+0+1914 <[^>]*> nop
-+0+1918 <[^>]*> nop
-+0+191c <[^>]*> nop
-+0+1920 <[^>]*> nop
-+0+1924 <[^>]*> nop
-+0+1928 <[^>]*> nop
-+0+192c <[^>]*> nop
-+0+1930 <[^>]*> nop
-+0+1934 <[^>]*> nop
-+0+1938 <[^>]*> nop
-+0+193c <[^>]*> nop
-+0+1940 <[^>]*> nop
-+0+1944 <[^>]*> nop
-+0+1948 <[^>]*> nop
-+0+194c <[^>]*> nop
-+0+1950 <[^>]*> nop
-+0+1954 <[^>]*> nop
-+0+1958 <[^>]*> nop
-+0+195c <[^>]*> nop
-+0+1960 <[^>]*> nop
-+0+1964 <[^>]*> nop
-+0+1968 <[^>]*> nop
-+0+196c <[^>]*> nop
-+0+1970 <[^>]*> nop
-+0+1974 <[^>]*> nop
-+0+1978 <[^>]*> nop
-+0+197c <[^>]*> nop
-+0+1980 <[^>]*> nop
-+0+1984 <[^>]*> nop
-+0+1988 <[^>]*> nop
-+0+198c <[^>]*> nop
-+0+1990 <[^>]*> nop
-+0+1994 <[^>]*> nop
-+0+1998 <[^>]*> nop
-+0+199c <[^>]*> nop
-+0+19a0 <[^>]*> nop
-+0+19a4 <[^>]*> nop
-+0+19a8 <[^>]*> nop
-+0+19ac <[^>]*> nop
-+0+19b0 <[^>]*> nop
-+0+19b4 <[^>]*> nop
-+0+19b8 <[^>]*> nop
-+0+19bc <[^>]*> nop
-+0+19c0 <[^>]*> nop
-+0+19c4 <[^>]*> nop
-+0+19c8 <[^>]*> nop
-+0+19cc <[^>]*> nop
-+0+19d0 <[^>]*> nop
-+0+19d4 <[^>]*> nop
-+0+19d8 <[^>]*> nop
-+0+19dc <[^>]*> nop
-+0+19e0 <[^>]*> nop
-+0+19e4 <[^>]*> nop
-+0+19e8 <[^>]*> nop
-+0+19ec <[^>]*> nop
-+0+19f0 <[^>]*> nop
-+0+19f4 <[^>]*> nop
-+0+19f8 <[^>]*> nop
-+0+19fc <[^>]*> nop
-+0+1a00 <[^>]*> nop
-+0+1a04 <[^>]*> nop
-+0+1a08 <[^>]*> nop
-+0+1a0c <[^>]*> nop
-+0+1a10 <[^>]*> nop
-+0+1a14 <[^>]*> nop
-+0+1a18 <[^>]*> nop
-+0+1a1c <[^>]*> nop
-+0+1a20 <[^>]*> nop
-+0+1a24 <[^>]*> nop
-+0+1a28 <[^>]*> nop
-+0+1a2c <[^>]*> nop
-+0+1a30 <[^>]*> nop
-+0+1a34 <[^>]*> nop
-+0+1a38 <[^>]*> nop
-+0+1a3c <[^>]*> nop
-+0+1a40 <[^>]*> nop
-+0+1a44 <[^>]*> nop
-+0+1a48 <[^>]*> nop
-+0+1a4c <[^>]*> nop
-+0+1a50 <[^>]*> nop
-+0+1a54 <[^>]*> nop
-+0+1a58 <[^>]*> nop
-+0+1a5c <[^>]*> nop
-+0+1a60 <[^>]*> nop
-+0+1a64 <[^>]*> nop
-+0+1a68 <[^>]*> nop
-+0+1a6c <[^>]*> nop
-+0+1a70 <[^>]*> nop
-+0+1a74 <[^>]*> nop
-+0+1a78 <[^>]*> nop
-+0+1a7c <[^>]*> nop
-+0+1a80 <[^>]*> nop
-+0+1a84 <[^>]*> nop
-+0+1a88 <[^>]*> nop
-+0+1a8c <[^>]*> nop
-+0+1a90 <[^>]*> nop
-+0+1a94 <[^>]*> nop
-+0+1a98 <[^>]*> nop
-+0+1a9c <[^>]*> nop
-+0+1aa0 <[^>]*> nop
-+0+1aa4 <[^>]*> nop
-+0+1aa8 <[^>]*> nop
-+0+1aac <[^>]*> nop
-+0+1ab0 <[^>]*> nop
-+0+1ab4 <[^>]*> nop
-+0+1ab8 <[^>]*> nop
-+0+1abc <[^>]*> nop
-+0+1ac0 <[^>]*> nop
-+0+1ac4 <[^>]*> nop
-+0+1ac8 <[^>]*> nop
-+0+1acc <[^>]*> nop
-+0+1ad0 <[^>]*> nop
-+0+1ad4 <[^>]*> nop
-+0+1ad8 <[^>]*> nop
-+0+1adc <[^>]*> nop
-+0+1ae0 <[^>]*> nop
-+0+1ae4 <[^>]*> nop
-+0+1ae8 <[^>]*> nop
-+0+1aec <[^>]*> nop
-+0+1af0 <[^>]*> nop
-+0+1af4 <[^>]*> nop
-+0+1af8 <[^>]*> nop
-+0+1afc <[^>]*> nop
-+0+1b00 <[^>]*> nop
-+0+1b04 <[^>]*> nop
-+0+1b08 <[^>]*> nop
-+0+1b0c <[^>]*> nop
-+0+1b10 <[^>]*> nop
-+0+1b14 <[^>]*> nop
-+0+1b18 <[^>]*> nop
-+0+1b1c <[^>]*> nop
-+0+1b20 <[^>]*> nop
-+0+1b24 <[^>]*> nop
-+0+1b28 <[^>]*> nop
-+0+1b2c <[^>]*> nop
-+0+1b30 <[^>]*> nop
-+0+1b34 <[^>]*> nop
-+0+1b38 <[^>]*> nop
-+0+1b3c <[^>]*> nop
-+0+1b40 <[^>]*> nop
-+0+1b44 <[^>]*> nop
-+0+1b48 <[^>]*> nop
-+0+1b4c <[^>]*> nop
-+0+1b50 <[^>]*> nop
-+0+1b54 <[^>]*> nop
-+0+1b58 <[^>]*> nop
-+0+1b5c <[^>]*> nop
-+0+1b60 <[^>]*> nop
-+0+1b64 <[^>]*> nop
-+0+1b68 <[^>]*> nop
-+0+1b6c <[^>]*> nop
-+0+1b70 <[^>]*> nop
-+0+1b74 <[^>]*> nop
-+0+1b78 <[^>]*> nop
-+0+1b7c <[^>]*> nop
-+0+1b80 <[^>]*> nop
-+0+1b84 <[^>]*> nop
-+0+1b88 <[^>]*> nop
-+0+1b8c <[^>]*> nop
-+0+1b90 <[^>]*> nop
-+0+1b94 <[^>]*> nop
-+0+1b98 <[^>]*> nop
-+0+1b9c <[^>]*> nop
-+0+1ba0 <[^>]*> nop
-+0+1ba4 <[^>]*> nop
-+0+1ba8 <[^>]*> nop
-+0+1bac <[^>]*> nop
-+0+1bb0 <[^>]*> nop
-+0+1bb4 <[^>]*> nop
-+0+1bb8 <[^>]*> nop
-+0+1bbc <[^>]*> nop
-+0+1bc0 <[^>]*> nop
-+0+1bc4 <[^>]*> nop
-+0+1bc8 <[^>]*> nop
-+0+1bcc <[^>]*> nop
-+0+1bd0 <[^>]*> nop
-+0+1bd4 <[^>]*> nop
-+0+1bd8 <[^>]*> nop
-+0+1bdc <[^>]*> nop
-+0+1be0 <[^>]*> nop
-+0+1be4 <[^>]*> nop
-+0+1be8 <[^>]*> nop
-+0+1bec <[^>]*> nop
-+0+1bf0 <[^>]*> nop
-+0+1bf4 <[^>]*> nop
-+0+1bf8 <[^>]*> nop
-+0+1bfc <[^>]*> nop
-+0+1c00 <[^>]*> nop
-+0+1c04 <[^>]*> nop
-+0+1c08 <[^>]*> nop
-+0+1c0c <[^>]*> nop
-+0+1c10 <[^>]*> nop
-+0+1c14 <[^>]*> nop
-+0+1c18 <[^>]*> nop
-+0+1c1c <[^>]*> nop
-+0+1c20 <[^>]*> nop
-+0+1c24 <[^>]*> nop
-+0+1c28 <[^>]*> nop
-+0+1c2c <[^>]*> nop
-+0+1c30 <[^>]*> nop
-+0+1c34 <[^>]*> nop
-+0+1c38 <[^>]*> nop
-+0+1c3c <[^>]*> nop
-+0+1c40 <[^>]*> nop
-+0+1c44 <[^>]*> nop
-+0+1c48 <[^>]*> nop
-+0+1c4c <[^>]*> nop
-+0+1c50 <[^>]*> nop
-+0+1c54 <[^>]*> nop
-+0+1c58 <[^>]*> nop
-+0+1c5c <[^>]*> nop
-+0+1c60 <[^>]*> nop
-+0+1c64 <[^>]*> nop
-+0+1c68 <[^>]*> nop
-+0+1c6c <[^>]*> nop
-+0+1c70 <[^>]*> nop
-+0+1c74 <[^>]*> nop
-+0+1c78 <[^>]*> nop
-+0+1c7c <[^>]*> nop
-+0+1c80 <[^>]*> nop
-+0+1c84 <[^>]*> nop
-+0+1c88 <[^>]*> nop
-+0+1c8c <[^>]*> nop
-+0+1c90 <[^>]*> nop
-+0+1c94 <[^>]*> nop
-+0+1c98 <[^>]*> nop
-+0+1c9c <[^>]*> nop
-+0+1ca0 <[^>]*> nop
-+0+1ca4 <[^>]*> nop
-+0+1ca8 <[^>]*> nop
-+0+1cac <[^>]*> nop
-+0+1cb0 <[^>]*> nop
-+0+1cb4 <[^>]*> nop
-+0+1cb8 <[^>]*> nop
-+0+1cbc <[^>]*> nop
-+0+1cc0 <[^>]*> nop
-+0+1cc4 <[^>]*> nop
-+0+1cc8 <[^>]*> nop
-+0+1ccc <[^>]*> nop
-+0+1cd0 <[^>]*> nop
-+0+1cd4 <[^>]*> nop
-+0+1cd8 <[^>]*> nop
-+0+1cdc <[^>]*> nop
-+0+1ce0 <[^>]*> nop
-+0+1ce4 <[^>]*> nop
-+0+1ce8 <[^>]*> nop
-+0+1cec <[^>]*> nop
-+0+1cf0 <[^>]*> nop
-+0+1cf4 <[^>]*> nop
-+0+1cf8 <[^>]*> nop
-+0+1cfc <[^>]*> nop
-+0+1d00 <[^>]*> nop
-+0+1d04 <[^>]*> nop
-+0+1d08 <[^>]*> nop
-+0+1d0c <[^>]*> nop
-+0+1d10 <[^>]*> nop
-+0+1d14 <[^>]*> nop
-+0+1d18 <[^>]*> nop
-+0+1d1c <[^>]*> nop
-+0+1d20 <[^>]*> nop
-+0+1d24 <[^>]*> nop
-+0+1d28 <[^>]*> nop
-+0+1d2c <[^>]*> nop
-+0+1d30 <[^>]*> nop
-+0+1d34 <[^>]*> nop
-+0+1d38 <[^>]*> nop
-+0+1d3c <[^>]*> nop
-+0+1d40 <[^>]*> nop
-+0+1d44 <[^>]*> nop
-+0+1d48 <[^>]*> nop
-+0+1d4c <[^>]*> nop
-+0+1d50 <[^>]*> nop
-+0+1d54 <[^>]*> nop
-+0+1d58 <[^>]*> nop
-+0+1d5c <[^>]*> nop
-+0+1d60 <[^>]*> nop
-+0+1d64 <[^>]*> nop
-+0+1d68 <[^>]*> nop
-+0+1d6c <[^>]*> nop
-+0+1d70 <[^>]*> nop
-+0+1d74 <[^>]*> nop
-+0+1d78 <[^>]*> nop
-+0+1d7c <[^>]*> nop
-+0+1d80 <[^>]*> nop
-+0+1d84 <[^>]*> nop
-+0+1d88 <[^>]*> nop
-+0+1d8c <[^>]*> nop
-+0+1d90 <[^>]*> nop
-+0+1d94 <[^>]*> nop
-+0+1d98 <[^>]*> nop
-+0+1d9c <[^>]*> nop
-+0+1da0 <[^>]*> nop
-+0+1da4 <[^>]*> nop
-+0+1da8 <[^>]*> nop
-+0+1dac <[^>]*> nop
-+0+1db0 <[^>]*> nop
-+0+1db4 <[^>]*> nop
-+0+1db8 <[^>]*> nop
-+0+1dbc <[^>]*> nop
-+0+1dc0 <[^>]*> nop
-+0+1dc4 <[^>]*> nop
-+0+1dc8 <[^>]*> nop
-+0+1dcc <[^>]*> nop
-+0+1dd0 <[^>]*> nop
-+0+1dd4 <[^>]*> nop
-+0+1dd8 <[^>]*> nop
-+0+1ddc <[^>]*> nop
-+0+1de0 <[^>]*> nop
-+0+1de4 <[^>]*> nop
-+0+1de8 <[^>]*> nop
-+0+1dec <[^>]*> nop
-+0+1df0 <[^>]*> nop
-+0+1df4 <[^>]*> nop
-+0+1df8 <[^>]*> nop
-+0+1dfc <[^>]*> nop
-+0+1e00 <[^>]*> nop
-+0+1e04 <[^>]*> nop
-+0+1e08 <[^>]*> nop
-+0+1e0c <[^>]*> nop
-+0+1e10 <[^>]*> nop
-+0+1e14 <[^>]*> nop
-+0+1e18 <[^>]*> nop
-+0+1e1c <[^>]*> nop
-+0+1e20 <[^>]*> nop
-+0+1e24 <[^>]*> nop
-+0+1e28 <[^>]*> nop
-+0+1e2c <[^>]*> nop
-+0+1e30 <[^>]*> nop
-+0+1e34 <[^>]*> nop
-+0+1e38 <[^>]*> nop
-+0+1e3c <[^>]*> nop
-+0+1e40 <[^>]*> nop
-+0+1e44 <[^>]*> nop
-+0+1e48 <[^>]*> nop
-+0+1e4c <[^>]*> nop
-+0+1e50 <[^>]*> nop
-+0+1e54 <[^>]*> nop
-+0+1e58 <[^>]*> nop
-+0+1e5c <[^>]*> nop
-+0+1e60 <[^>]*> nop
-+0+1e64 <[^>]*> nop
-+0+1e68 <[^>]*> nop
-+0+1e6c <[^>]*> nop
-+0+1e70 <[^>]*> nop
-+0+1e74 <[^>]*> nop
-+0+1e78 <[^>]*> nop
-+0+1e7c <[^>]*> nop
-+0+1e80 <[^>]*> nop
-+0+1e84 <[^>]*> nop
-+0+1e88 <[^>]*> nop
-+0+1e8c <[^>]*> nop
-+0+1e90 <[^>]*> nop
-+0+1e94 <[^>]*> nop
-+0+1e98 <[^>]*> nop
-+0+1e9c <[^>]*> nop
-+0+1ea0 <[^>]*> nop
-+0+1ea4 <[^>]*> nop
-+0+1ea8 <[^>]*> nop
-+0+1eac <[^>]*> nop
-+0+1eb0 <[^>]*> nop
-+0+1eb4 <[^>]*> nop
-+0+1eb8 <[^>]*> nop
-+0+1ebc <[^>]*> nop
-+0+1ec0 <[^>]*> nop
-+0+1ec4 <[^>]*> nop
-+0+1ec8 <[^>]*> nop
-+0+1ecc <[^>]*> nop
-+0+1ed0 <[^>]*> nop
-+0+1ed4 <[^>]*> nop
-+0+1ed8 <[^>]*> nop
-+0+1edc <[^>]*> nop
-+0+1ee0 <[^>]*> nop
-+0+1ee4 <[^>]*> nop
-+0+1ee8 <[^>]*> nop
-+0+1eec <[^>]*> nop
-+0+1ef0 <[^>]*> nop
-+0+1ef4 <[^>]*> nop
-+0+1ef8 <[^>]*> nop
-+0+1efc <[^>]*> nop
-+0+1f00 <[^>]*> nop
-+0+1f04 <[^>]*> nop
-+0+1f08 <[^>]*> nop
-+0+1f0c <[^>]*> nop
-+0+1f10 <[^>]*> nop
-+0+1f14 <[^>]*> nop
-+0+1f18 <[^>]*> nop
-+0+1f1c <[^>]*> nop
-+0+1f20 <[^>]*> nop
-+0+1f24 <[^>]*> nop
-+0+1f28 <[^>]*> nop
-+0+1f2c <[^>]*> nop
-+0+1f30 <[^>]*> nop
-+0+1f34 <[^>]*> nop
-+0+1f38 <[^>]*> nop
-+0+1f3c <[^>]*> nop
-+0+1f40 <[^>]*> nop
-+0+1f44 <[^>]*> nop
-+0+1f48 <[^>]*> nop
-+0+1f4c <[^>]*> nop
-+0+1f50 <[^>]*> nop
-+0+1f54 <[^>]*> nop
-+0+1f58 <[^>]*> nop
-+0+1f5c <[^>]*> nop
-+0+1f60 <[^>]*> nop
-+0+1f64 <[^>]*> nop
-+0+1f68 <[^>]*> nop
-+0+1f6c <[^>]*> nop
-+0+1f70 <[^>]*> nop
-+0+1f74 <[^>]*> nop
-+0+1f78 <[^>]*> nop
-+0+1f7c <[^>]*> nop
-+0+1f80 <[^>]*> nop
-+0+1f84 <[^>]*> nop
-+0+1f88 <[^>]*> nop
-+0+1f8c <[^>]*> nop
-+0+1f90 <[^>]*> nop
-+0+1f94 <[^>]*> nop
-+0+1f98 <[^>]*> nop
-+0+1f9c <[^>]*> nop
-+0+1fa0 <[^>]*> nop
-+0+1fa4 <[^>]*> nop
-+0+1fa8 <[^>]*> nop
-+0+1fac <[^>]*> nop
-+0+1fb0 <[^>]*> nop
-+0+1fb4 <[^>]*> nop
-+0+1fb8 <[^>]*> nop
-+0+1fbc <[^>]*> nop
-+0+1fc0 <[^>]*> nop
-+0+1fc4 <[^>]*> nop
-+0+1fc8 <[^>]*> nop
-+0+1fcc <[^>]*> nop
-+0+1fd0 <[^>]*> nop
-+0+1fd4 <[^>]*> nop
-+0+1fd8 <[^>]*> nop
-+0+1fdc <[^>]*> nop
-+0+1fe0 <[^>]*> nop
-+0+1fe4 <[^>]*> nop
-+0+1fe8 <[^>]*> nop
-+0+1fec <[^>]*> nop
-+0+1ff0 <[^>]*> nop
-+0+1ff4 <[^>]*> nop
-+0+1ff8 <[^>]*> nop
-+0+1ffc <[^>]*> nop
-+0+2000 <[^>]*> nop
-+0+2004 <[^>]*> nop
-+0+2008 <[^>]*> nop
-+0+200c <[^>]*> nop
-+0+2010 <[^>]*> nop
-+0+2014 <[^>]*> nop
-+0+2018 <[^>]*> nop
-+0+201c <[^>]*> nop
-+0+2020 <[^>]*> nop
-+0+2024 <[^>]*> nop
-+0+2028 <[^>]*> nop
-+0+202c <[^>]*> nop
-+0+2030 <[^>]*> nop
-+0+2034 <[^>]*> nop
-+0+2038 <[^>]*> nop
-+0+203c <[^>]*> nop
-+0+2040 <[^>]*> nop
-+0+2044 <[^>]*> nop
-+0+2048 <[^>]*> nop
-+0+204c <[^>]*> nop
-+0+2050 <[^>]*> nop
-+0+2054 <[^>]*> nop
-+0+2058 <[^>]*> nop
-+0+205c <[^>]*> nop
-+0+2060 <[^>]*> nop
-+0+2064 <[^>]*> nop
-+0+2068 <[^>]*> nop
-+0+206c <[^>]*> nop
-+0+2070 <[^>]*> nop
-+0+2074 <[^>]*> nop
-+0+2078 <[^>]*> nop
-+0+207c <[^>]*> nop
-+0+2080 <[^>]*> nop
-+0+2084 <[^>]*> nop
-+0+2088 <[^>]*> nop
-+0+208c <[^>]*> nop
-+0+2090 <[^>]*> nop
-+0+2094 <[^>]*> nop
-+0+2098 <[^>]*> nop
-+0+209c <[^>]*> nop
-+0+20a0 <[^>]*> nop
-+0+20a4 <[^>]*> nop
-+0+20a8 <[^>]*> nop
-+0+20ac <[^>]*> nop
-+0+20b0 <[^>]*> nop
-+0+20b4 <[^>]*> nop
-+0+20b8 <[^>]*> nop
-+0+20bc <[^>]*> nop
-+0+20c0 <[^>]*> nop
-+0+20c4 <[^>]*> nop
-+0+20c8 <[^>]*> nop
-+0+20cc <[^>]*> nop
-+0+20d0 <[^>]*> nop
-+0+20d4 <[^>]*> nop
-+0+20d8 <[^>]*> nop
-+0+20dc <[^>]*> nop
-+0+20e0 <[^>]*> nop
-+0+20e4 <[^>]*> nop
-+0+20e8 <[^>]*> nop
-+0+20ec <[^>]*> nop
-+0+20f0 <[^>]*> nop
-+0+20f4 <[^>]*> nop
-+0+20f8 <[^>]*> nop
-+0+20fc <[^>]*> nop
-+0+2100 <[^>]*> nop
-+0+2104 <[^>]*> nop
-+0+2108 <[^>]*> nop
-+0+210c <[^>]*> nop
-+0+2110 <[^>]*> nop
-+0+2114 <[^>]*> nop
-+0+2118 <[^>]*> nop
-+0+211c <[^>]*> nop
-+0+2120 <[^>]*> nop
-+0+2124 <[^>]*> nop
-+0+2128 <[^>]*> nop
-+0+212c <[^>]*> nop
-+0+2130 <[^>]*> nop
-+0+2134 <[^>]*> nop
-+0+2138 <[^>]*> nop
-+0+213c <[^>]*> nop
-+0+2140 <[^>]*> nop
-+0+2144 <[^>]*> nop
-+0+2148 <[^>]*> nop
-+0+214c <[^>]*> nop
-+0+2150 <[^>]*> nop
-+0+2154 <[^>]*> nop
-+0+2158 <[^>]*> nop
-+0+215c <[^>]*> nop
-+0+2160 <[^>]*> nop
-+0+2164 <[^>]*> nop
-+0+2168 <[^>]*> nop
-+0+216c <[^>]*> nop
-+0+2170 <[^>]*> nop
-+0+2174 <[^>]*> nop
-+0+2178 <[^>]*> nop
-+0+217c <[^>]*> nop
-+0+2180 <[^>]*> nop
-+0+2184 <[^>]*> nop
-+0+2188 <[^>]*> nop
-+0+218c <[^>]*> nop
-+0+2190 <[^>]*> nop
-+0+2194 <[^>]*> nop
-+0+2198 <[^>]*> nop
-+0+219c <[^>]*> nop
-+0+21a0 <[^>]*> nop
-+0+21a4 <[^>]*> nop
-+0+21a8 <[^>]*> nop
-+0+21ac <[^>]*> nop
-+0+21b0 <[^>]*> nop
-+0+21b4 <[^>]*> nop
-+0+21b8 <[^>]*> nop
-+0+21bc <[^>]*> nop
-+0+21c0 <[^>]*> nop
-+0+21c4 <[^>]*> nop
-+0+21c8 <[^>]*> nop
-+0+21cc <[^>]*> nop
-+0+21d0 <[^>]*> nop
-+0+21d4 <[^>]*> nop
-+0+21d8 <[^>]*> nop
-+0+21dc <[^>]*> nop
-+0+21e0 <[^>]*> nop
-+0+21e4 <[^>]*> nop
-+0+21e8 <[^>]*> nop
-+0+21ec <[^>]*> nop
-+0+21f0 <[^>]*> nop
-+0+21f4 <[^>]*> nop
-+0+21f8 <[^>]*> nop
-+0+21fc <[^>]*> nop
-+0+2200 <[^>]*> nop
-+0+2204 <[^>]*> nop
-+0+2208 <[^>]*> nop
-+0+220c <[^>]*> nop
-+0+2210 <[^>]*> nop
-+0+2214 <[^>]*> nop
-+0+2218 <[^>]*> nop
-+0+221c <[^>]*> nop
-+0+2220 <[^>]*> nop
-+0+2224 <[^>]*> nop
-+0+2228 <[^>]*> nop
-+0+222c <[^>]*> nop
-+0+2230 <[^>]*> nop
-+0+2234 <[^>]*> nop
-+0+2238 <[^>]*> nop
-+0+223c <[^>]*> nop
-+0+2240 <[^>]*> nop
-+0+2244 <[^>]*> nop
-+0+2248 <[^>]*> nop
-+0+224c <[^>]*> nop
-+0+2250 <[^>]*> nop
-+0+2254 <[^>]*> nop
-+0+2258 <[^>]*> nop
-+0+225c <[^>]*> nop
-+0+2260 <[^>]*> nop
-+0+2264 <[^>]*> nop
-+0+2268 <[^>]*> nop
-+0+226c <[^>]*> nop
-+0+2270 <[^>]*> nop
-+0+2274 <[^>]*> nop
-+0+2278 <[^>]*> nop
-+0+227c <[^>]*> nop
-+0+2280 <[^>]*> nop
-+0+2284 <[^>]*> nop
-+0+2288 <[^>]*> nop
-+0+228c <[^>]*> nop
-+0+2290 <[^>]*> nop
-+0+2294 <[^>]*> nop
-+0+2298 <[^>]*> nop
-+0+229c <[^>]*> nop
-+0+22a0 <[^>]*> nop
-+0+22a4 <[^>]*> nop
-+0+22a8 <[^>]*> nop
-+0+22ac <[^>]*> nop
-+0+22b0 <[^>]*> nop
-+0+22b4 <[^>]*> nop
-+0+22b8 <[^>]*> nop
-+0+22bc <[^>]*> nop
-+0+22c0 <[^>]*> nop
-+0+22c4 <[^>]*> nop
-+0+22c8 <[^>]*> nop
-+0+22cc <[^>]*> nop
-+0+22d0 <[^>]*> nop
-+0+22d4 <[^>]*> nop
-+0+22d8 <[^>]*> nop
-+0+22dc <[^>]*> nop
-+0+22e0 <[^>]*> nop
-+0+22e4 <[^>]*> nop
-+0+22e8 <[^>]*> nop
-+0+22ec <[^>]*> nop
-+0+22f0 <[^>]*> nop
-+0+22f4 <[^>]*> nop
-+0+22f8 <[^>]*> nop
-+0+22fc <[^>]*> nop
-+0+2300 <[^>]*> nop
-+0+2304 <[^>]*> nop
-+0+2308 <[^>]*> nop
-+0+230c <[^>]*> nop
-+0+2310 <[^>]*> nop
-+0+2314 <[^>]*> nop
-+0+2318 <[^>]*> nop
-+0+231c <[^>]*> nop
-+0+2320 <[^>]*> nop
-+0+2324 <[^>]*> nop
-+0+2328 <[^>]*> nop
-+0+232c <[^>]*> nop
-+0+2330 <[^>]*> nop
-+0+2334 <[^>]*> nop
-+0+2338 <[^>]*> nop
-+0+233c <[^>]*> nop
-+0+2340 <[^>]*> nop
-+0+2344 <[^>]*> nop
-+0+2348 <[^>]*> nop
-+0+234c <[^>]*> nop
-+0+2350 <[^>]*> nop
-+0+2354 <[^>]*> nop
-+0+2358 <[^>]*> nop
-+0+235c <[^>]*> nop
-+0+2360 <[^>]*> nop
-+0+2364 <[^>]*> nop
-+0+2368 <[^>]*> nop
-+0+236c <[^>]*> nop
-+0+2370 <[^>]*> nop
-+0+2374 <[^>]*> nop
-+0+2378 <[^>]*> nop
-+0+237c <[^>]*> nop
-+0+2380 <[^>]*> nop
-+0+2384 <[^>]*> nop
-+0+2388 <[^>]*> nop
-+0+238c <[^>]*> nop
-+0+2390 <[^>]*> nop
-+0+2394 <[^>]*> nop
-+0+2398 <[^>]*> nop
-+0+239c <[^>]*> nop
-+0+23a0 <[^>]*> nop
-+0+23a4 <[^>]*> nop
-+0+23a8 <[^>]*> nop
-+0+23ac <[^>]*> nop
-+0+23b0 <[^>]*> nop
-+0+23b4 <[^>]*> nop
-+0+23b8 <[^>]*> nop
-+0+23bc <[^>]*> nop
-+0+23c0 <[^>]*> nop
-+0+23c4 <[^>]*> nop
-+0+23c8 <[^>]*> nop
-+0+23cc <[^>]*> nop
-+0+23d0 <[^>]*> nop
-+0+23d4 <[^>]*> nop
-+0+23d8 <[^>]*> nop
-+0+23dc <[^>]*> nop
-+0+23e0 <[^>]*> nop
-+0+23e4 <[^>]*> nop
-+0+23e8 <[^>]*> nop
-+0+23ec <[^>]*> nop
-+0+23f0 <[^>]*> nop
-+0+23f4 <[^>]*> nop
-+0+23f8 <[^>]*> nop
-+0+23fc <[^>]*> nop
-+0+2400 <[^>]*> nop
-+0+2404 <[^>]*> nop
-+0+2408 <[^>]*> nop
-+0+240c <[^>]*> nop
-+0+2410 <[^>]*> nop
-+0+2414 <[^>]*> nop
-+0+2418 <[^>]*> nop
-+0+241c <[^>]*> nop
-+0+2420 <[^>]*> nop
-+0+2424 <[^>]*> nop
-+0+2428 <[^>]*> nop
-+0+242c <[^>]*> nop
-+0+2430 <[^>]*> nop
-+0+2434 <[^>]*> nop
-+0+2438 <[^>]*> nop
-+0+243c <[^>]*> nop
-+0+2440 <[^>]*> nop
-+0+2444 <[^>]*> nop
-+0+2448 <[^>]*> nop
-+0+244c <[^>]*> nop
-+0+2450 <[^>]*> nop
-+0+2454 <[^>]*> nop
-+0+2458 <[^>]*> nop
-+0+245c <[^>]*> nop
-+0+2460 <[^>]*> nop
-+0+2464 <[^>]*> nop
-+0+2468 <[^>]*> nop
-+0+246c <[^>]*> nop
-+0+2470 <[^>]*> nop
-+0+2474 <[^>]*> nop
-+0+2478 <[^>]*> nop
-+0+247c <[^>]*> nop
-+0+2480 <[^>]*> nop
-+0+2484 <[^>]*> nop
-+0+2488 <[^>]*> nop
-+0+248c <[^>]*> nop
-+0+2490 <[^>]*> nop
-+0+2494 <[^>]*> nop
-+0+2498 <[^>]*> nop
-+0+249c <[^>]*> nop
-+0+24a0 <[^>]*> nop
-+0+24a4 <[^>]*> nop
-+0+24a8 <[^>]*> nop
-+0+24ac <[^>]*> nop
-+0+24b0 <[^>]*> nop
-+0+24b4 <[^>]*> nop
-+0+24b8 <[^>]*> nop
-+0+24bc <[^>]*> nop
-+0+24c0 <[^>]*> nop
-+0+24c4 <[^>]*> nop
-+0+24c8 <[^>]*> nop
-+0+24cc <[^>]*> nop
-+0+24d0 <[^>]*> nop
-+0+24d4 <[^>]*> nop
-+0+24d8 <[^>]*> nop
-+0+24dc <[^>]*> nop
-+0+24e0 <[^>]*> nop
-+0+24e4 <[^>]*> nop
-+0+24e8 <[^>]*> nop
-+0+24ec <[^>]*> nop
-+0+24f0 <[^>]*> nop
-+0+24f4 <[^>]*> nop
-+0+24f8 <[^>]*> nop
-+0+24fc <[^>]*> nop
-+0+2500 <[^>]*> nop
-+0+2504 <[^>]*> nop
-+0+2508 <[^>]*> nop
-+0+250c <[^>]*> nop
-+0+2510 <[^>]*> nop
-+0+2514 <[^>]*> nop
-+0+2518 <[^>]*> nop
-+0+251c <[^>]*> nop
-+0+2520 <[^>]*> nop
-+0+2524 <[^>]*> nop
-+0+2528 <[^>]*> nop
-+0+252c <[^>]*> nop
-+0+2530 <[^>]*> nop
-+0+2534 <[^>]*> nop
-+0+2538 <[^>]*> nop
-+0+253c <[^>]*> nop
-+0+2540 <[^>]*> nop
-+0+2544 <[^>]*> nop
-+0+2548 <[^>]*> nop
-+0+254c <[^>]*> nop
-+0+2550 <[^>]*> nop
-+0+2554 <[^>]*> nop
-+0+2558 <[^>]*> nop
-+0+255c <[^>]*> nop
-+0+2560 <[^>]*> nop
-+0+2564 <[^>]*> nop
-+0+2568 <[^>]*> nop
-+0+256c <[^>]*> nop
-+0+2570 <[^>]*> nop
-+0+2574 <[^>]*> nop
-+0+2578 <[^>]*> nop
-+0+257c <[^>]*> nop
-+0+2580 <[^>]*> nop
-+0+2584 <[^>]*> nop
-+0+2588 <[^>]*> nop
-+0+258c <[^>]*> nop
-+0+2590 <[^>]*> nop
-+0+2594 <[^>]*> nop
-+0+2598 <[^>]*> nop
-+0+259c <[^>]*> nop
-+0+25a0 <[^>]*> nop
-+0+25a4 <[^>]*> nop
-+0+25a8 <[^>]*> nop
-+0+25ac <[^>]*> nop
-+0+25b0 <[^>]*> nop
-+0+25b4 <[^>]*> nop
-+0+25b8 <[^>]*> nop
-+0+25bc <[^>]*> nop
-+0+25c0 <[^>]*> nop
-+0+25c4 <[^>]*> nop
-+0+25c8 <[^>]*> nop
-+0+25cc <[^>]*> nop
-+0+25d0 <[^>]*> nop
-+0+25d4 <[^>]*> nop
-+0+25d8 <[^>]*> nop
-+0+25dc <[^>]*> nop
-+0+25e0 <[^>]*> nop
-+0+25e4 <[^>]*> nop
-+0+25e8 <[^>]*> nop
-+0+25ec <[^>]*> nop
-+0+25f0 <[^>]*> nop
-+0+25f4 <[^>]*> nop
-+0+25f8 <[^>]*> nop
-+0+25fc <[^>]*> nop
-+0+2600 <[^>]*> nop
-+0+2604 <[^>]*> nop
-+0+2608 <[^>]*> nop
-+0+260c <[^>]*> nop
-+0+2610 <[^>]*> nop
-+0+2614 <[^>]*> nop
-+0+2618 <[^>]*> nop
-+0+261c <[^>]*> nop
-+0+2620 <[^>]*> nop
-+0+2624 <[^>]*> nop
-+0+2628 <[^>]*> nop
-+0+262c <[^>]*> nop
-+0+2630 <[^>]*> nop
-+0+2634 <[^>]*> nop
-+0+2638 <[^>]*> nop
-+0+263c <[^>]*> nop
-+0+2640 <[^>]*> nop
-+0+2644 <[^>]*> nop
-+0+2648 <[^>]*> nop
-+0+264c <[^>]*> nop
-+0+2650 <[^>]*> nop
-+0+2654 <[^>]*> nop
-+0+2658 <[^>]*> nop
-+0+265c <[^>]*> nop
-+0+2660 <[^>]*> nop
-+0+2664 <[^>]*> nop
-+0+2668 <[^>]*> nop
-+0+266c <[^>]*> nop
-+0+2670 <[^>]*> nop
-+0+2674 <[^>]*> nop
-+0+2678 <[^>]*> nop
-+0+267c <[^>]*> nop
-+0+2680 <[^>]*> nop
-+0+2684 <[^>]*> nop
-+0+2688 <[^>]*> nop
-+0+268c <[^>]*> nop
-+0+2690 <[^>]*> nop
-+0+2694 <[^>]*> nop
-+0+2698 <[^>]*> nop
-+0+269c <[^>]*> nop
-+0+26a0 <[^>]*> nop
-+0+26a4 <[^>]*> nop
-+0+26a8 <[^>]*> nop
-+0+26ac <[^>]*> nop
-+0+26b0 <[^>]*> nop
-+0+26b4 <[^>]*> nop
-+0+26b8 <[^>]*> nop
-+0+26bc <[^>]*> nop
-+0+26c0 <[^>]*> nop
-+0+26c4 <[^>]*> nop
-+0+26c8 <[^>]*> nop
-+0+26cc <[^>]*> nop
-+0+26d0 <[^>]*> nop
-+0+26d4 <[^>]*> nop
-+0+26d8 <[^>]*> nop
-+0+26dc <[^>]*> nop
-+0+26e0 <[^>]*> nop
-+0+26e4 <[^>]*> nop
-+0+26e8 <[^>]*> nop
-+0+26ec <[^>]*> nop
-+0+26f0 <[^>]*> nop
-+0+26f4 <[^>]*> nop
-+0+26f8 <[^>]*> nop
-+0+26fc <[^>]*> nop
-+0+2700 <[^>]*> nop
-+0+2704 <[^>]*> nop
-+0+2708 <[^>]*> nop
-+0+270c <[^>]*> nop
-+0+2710 <[^>]*> nop
-+0+2714 <[^>]*> nop
-+0+2718 <[^>]*> nop
-+0+271c <[^>]*> nop
-+0+2720 <[^>]*> nop
-+0+2724 <[^>]*> nop
-+0+2728 <[^>]*> nop
-+0+272c <[^>]*> nop
-+0+2730 <[^>]*> nop
-+0+2734 <[^>]*> nop
-+0+2738 <[^>]*> nop
-+0+273c <[^>]*> nop
-+0+2740 <[^>]*> nop
-+0+2744 <[^>]*> nop
-+0+2748 <[^>]*> nop
-+0+274c <[^>]*> nop
-+0+2750 <[^>]*> nop
-+0+2754 <[^>]*> nop
-+0+2758 <[^>]*> nop
-+0+275c <[^>]*> nop
-+0+2760 <[^>]*> nop
-+0+2764 <[^>]*> nop
-+0+2768 <[^>]*> nop
-+0+276c <[^>]*> nop
-+0+2770 <[^>]*> nop
-+0+2774 <[^>]*> nop
-+0+2778 <[^>]*> nop
-+0+277c <[^>]*> nop
-+0+2780 <[^>]*> nop
-+0+2784 <[^>]*> nop
-+0+2788 <[^>]*> nop
-+0+278c <[^>]*> nop
-+0+2790 <[^>]*> nop
-+0+2794 <[^>]*> nop
-+0+2798 <[^>]*> nop
-+0+279c <[^>]*> nop
-+0+27a0 <[^>]*> nop
-+0+27a4 <[^>]*> nop
-+0+27a8 <[^>]*> nop
-+0+27ac <[^>]*> nop
-+0+27b0 <[^>]*> nop
-+0+27b4 <[^>]*> nop
-+0+27b8 <[^>]*> nop
-+0+27bc <[^>]*> nop
-+0+27c0 <[^>]*> nop
-+0+27c4 <[^>]*> nop
-+0+27c8 <[^>]*> nop
-+0+27cc <[^>]*> nop
-+0+27d0 <[^>]*> nop
-+0+27d4 <[^>]*> nop
-+0+27d8 <[^>]*> nop
-+0+27dc <[^>]*> nop
-+0+27e0 <[^>]*> nop
-+0+27e4 <[^>]*> nop
-+0+27e8 <[^>]*> nop
-+0+27ec <[^>]*> nop
-+0+27f0 <[^>]*> nop
-+0+27f4 <[^>]*> nop
-+0+27f8 <[^>]*> nop
-+0+27fc <[^>]*> nop
-+0+2800 <[^>]*> nop
-+0+2804 <[^>]*> nop
-+0+2808 <[^>]*> nop
-+0+280c <[^>]*> nop
-+0+2810 <[^>]*> nop
-+0+2814 <[^>]*> nop
-+0+2818 <[^>]*> nop
-+0+281c <[^>]*> nop
-+0+2820 <[^>]*> nop
-+0+2824 <[^>]*> nop
-+0+2828 <[^>]*> nop
-+0+282c <[^>]*> nop
-+0+2830 <[^>]*> nop
-+0+2834 <[^>]*> nop
-+0+2838 <[^>]*> nop
-+0+283c <[^>]*> nop
-+0+2840 <[^>]*> nop
-+0+2844 <[^>]*> nop
-+0+2848 <[^>]*> nop
-+0+284c <[^>]*> nop
-+0+2850 <[^>]*> nop
-+0+2854 <[^>]*> nop
-+0+2858 <[^>]*> nop
-+0+285c <[^>]*> nop
-+0+2860 <[^>]*> nop
-+0+2864 <[^>]*> nop
-+0+2868 <[^>]*> nop
-+0+286c <[^>]*> nop
-+0+2870 <[^>]*> nop
-+0+2874 <[^>]*> nop
-+0+2878 <[^>]*> nop
-+0+287c <[^>]*> nop
-+0+2880 <[^>]*> nop
-+0+2884 <[^>]*> nop
-+0+2888 <[^>]*> nop
-+0+288c <[^>]*> nop
-+0+2890 <[^>]*> nop
-+0+2894 <[^>]*> nop
-+0+2898 <[^>]*> nop
-+0+289c <[^>]*> nop
-+0+28a0 <[^>]*> nop
-+0+28a4 <[^>]*> nop
-+0+28a8 <[^>]*> nop
-+0+28ac <[^>]*> nop
-+0+28b0 <[^>]*> nop
-+0+28b4 <[^>]*> nop
-+0+28b8 <[^>]*> nop
-+0+28bc <[^>]*> nop
-+0+28c0 <[^>]*> nop
-+0+28c4 <[^>]*> nop
-+0+28c8 <[^>]*> nop
-+0+28cc <[^>]*> nop
-+0+28d0 <[^>]*> nop
-+0+28d4 <[^>]*> nop
-+0+28d8 <[^>]*> nop
-+0+28dc <[^>]*> nop
-+0+28e0 <[^>]*> nop
-+0+28e4 <[^>]*> nop
-+0+28e8 <[^>]*> nop
-+0+28ec <[^>]*> nop
-+0+28f0 <[^>]*> nop
-+0+28f4 <[^>]*> nop
-+0+28f8 <[^>]*> nop
-+0+28fc <[^>]*> nop
-+0+2900 <[^>]*> nop
-+0+2904 <[^>]*> nop
-+0+2908 <[^>]*> nop
-+0+290c <[^>]*> nop
-+0+2910 <[^>]*> nop
-+0+2914 <[^>]*> nop
-+0+2918 <[^>]*> nop
-+0+291c <[^>]*> nop
-+0+2920 <[^>]*> nop
-+0+2924 <[^>]*> nop
-+0+2928 <[^>]*> nop
-+0+292c <[^>]*> nop
-+0+2930 <[^>]*> nop
-+0+2934 <[^>]*> nop
-+0+2938 <[^>]*> nop
-+0+293c <[^>]*> nop
-+0+2940 <[^>]*> nop
-+0+2944 <[^>]*> nop
-+0+2948 <[^>]*> nop
-+0+294c <[^>]*> nop
-+0+2950 <[^>]*> nop
-+0+2954 <[^>]*> nop
-+0+2958 <[^>]*> nop
-+0+295c <[^>]*> nop
-+0+2960 <[^>]*> nop
-+0+2964 <[^>]*> nop
-+0+2968 <[^>]*> nop
-+0+296c <[^>]*> nop
-+0+2970 <[^>]*> nop
-+0+2974 <[^>]*> nop
-+0+2978 <[^>]*> nop
-+0+297c <[^>]*> nop
-+0+2980 <[^>]*> nop
-+0+2984 <[^>]*> nop
-+0+2988 <[^>]*> nop
-+0+298c <[^>]*> nop
-+0+2990 <[^>]*> nop
-+0+2994 <[^>]*> nop
-+0+2998 <[^>]*> nop
-+0+299c <[^>]*> nop
-+0+29a0 <[^>]*> nop
-+0+29a4 <[^>]*> nop
-+0+29a8 <[^>]*> nop
-+0+29ac <[^>]*> nop
-+0+29b0 <[^>]*> nop
-+0+29b4 <[^>]*> nop
-+0+29b8 <[^>]*> nop
-+0+29bc <[^>]*> nop
-+0+29c0 <[^>]*> nop
-+0+29c4 <[^>]*> nop
-+0+29c8 <[^>]*> nop
-+0+29cc <[^>]*> nop
-+0+29d0 <[^>]*> nop
-+0+29d4 <[^>]*> nop
-+0+29d8 <[^>]*> nop
-+0+29dc <[^>]*> nop
-+0+29e0 <[^>]*> nop
-+0+29e4 <[^>]*> nop
-+0+29e8 <[^>]*> nop
-+0+29ec <[^>]*> nop
-+0+29f0 <[^>]*> nop
-+0+29f4 <[^>]*> nop
-+0+29f8 <[^>]*> nop
-+0+29fc <[^>]*> nop
-+0+2a00 <[^>]*> nop
-+0+2a04 <[^>]*> nop
-+0+2a08 <[^>]*> nop
-+0+2a0c <[^>]*> nop
-+0+2a10 <[^>]*> nop
-+0+2a14 <[^>]*> nop
-+0+2a18 <[^>]*> nop
-+0+2a1c <[^>]*> nop
-+0+2a20 <[^>]*> nop
-+0+2a24 <[^>]*> nop
-+0+2a28 <[^>]*> nop
-+0+2a2c <[^>]*> nop
-+0+2a30 <[^>]*> nop
-+0+2a34 <[^>]*> nop
-+0+2a38 <[^>]*> nop
-+0+2a3c <[^>]*> nop
-+0+2a40 <[^>]*> nop
-+0+2a44 <[^>]*> nop
-+0+2a48 <[^>]*> nop
-+0+2a4c <[^>]*> nop
-+0+2a50 <[^>]*> nop
-+0+2a54 <[^>]*> nop
-+0+2a58 <[^>]*> nop
-+0+2a5c <[^>]*> nop
-+0+2a60 <[^>]*> nop
-+0+2a64 <[^>]*> nop
-+0+2a68 <[^>]*> nop
-+0+2a6c <[^>]*> nop
-+0+2a70 <[^>]*> nop
-+0+2a74 <[^>]*> nop
-+0+2a78 <[^>]*> nop
-+0+2a7c <[^>]*> nop
-+0+2a80 <[^>]*> nop
-+0+2a84 <[^>]*> nop
-+0+2a88 <[^>]*> nop
-+0+2a8c <[^>]*> nop
-+0+2a90 <[^>]*> nop
-+0+2a94 <[^>]*> nop
-+0+2a98 <[^>]*> nop
-+0+2a9c <[^>]*> nop
-+0+2aa0 <[^>]*> nop
-+0+2aa4 <[^>]*> nop
-+0+2aa8 <[^>]*> nop
-+0+2aac <[^>]*> nop
-+0+2ab0 <[^>]*> nop
-+0+2ab4 <[^>]*> nop
-+0+2ab8 <[^>]*> nop
-+0+2abc <[^>]*> nop
-+0+2ac0 <[^>]*> nop
-+0+2ac4 <[^>]*> nop
-+0+2ac8 <[^>]*> nop
-+0+2acc <[^>]*> nop
-+0+2ad0 <[^>]*> nop
-+0+2ad4 <[^>]*> nop
-+0+2ad8 <[^>]*> nop
-+0+2adc <[^>]*> nop
-+0+2ae0 <[^>]*> nop
-+0+2ae4 <[^>]*> nop
-+0+2ae8 <[^>]*> nop
-+0+2aec <[^>]*> nop
-+0+2af0 <[^>]*> nop
-+0+2af4 <[^>]*> nop
-+0+2af8 <[^>]*> nop
-+0+2afc <[^>]*> nop
-+0+2b00 <[^>]*> nop
-+0+2b04 <[^>]*> nop
-+0+2b08 <[^>]*> nop
-+0+2b0c <[^>]*> nop
-+0+2b10 <[^>]*> nop
-+0+2b14 <[^>]*> nop
-+0+2b18 <[^>]*> nop
-+0+2b1c <[^>]*> nop
-+0+2b20 <[^>]*> nop
-+0+2b24 <[^>]*> nop
-+0+2b28 <[^>]*> nop
-+0+2b2c <[^>]*> nop
-+0+2b30 <[^>]*> nop
-+0+2b34 <[^>]*> nop
-+0+2b38 <[^>]*> nop
-+0+2b3c <[^>]*> nop
-+0+2b40 <[^>]*> nop
-+0+2b44 <[^>]*> nop
-+0+2b48 <[^>]*> nop
-+0+2b4c <[^>]*> nop
-+0+2b50 <[^>]*> nop
-+0+2b54 <[^>]*> nop
-+0+2b58 <[^>]*> nop
-+0+2b5c <[^>]*> nop
-+0+2b60 <[^>]*> nop
-+0+2b64 <[^>]*> nop
-+0+2b68 <[^>]*> nop
-+0+2b6c <[^>]*> nop
-+0+2b70 <[^>]*> nop
-+0+2b74 <[^>]*> nop
-+0+2b78 <[^>]*> nop
-+0+2b7c <[^>]*> nop
-+0+2b80 <[^>]*> nop
-+0+2b84 <[^>]*> nop
-+0+2b88 <[^>]*> nop
-+0+2b8c <[^>]*> nop
-+0+2b90 <[^>]*> nop
-+0+2b94 <[^>]*> nop
-+0+2b98 <[^>]*> nop
-+0+2b9c <[^>]*> nop
-+0+2ba0 <[^>]*> nop
-+0+2ba4 <[^>]*> nop
-+0+2ba8 <[^>]*> nop
-+0+2bac <[^>]*> nop
-+0+2bb0 <[^>]*> nop
-+0+2bb4 <[^>]*> nop
-+0+2bb8 <[^>]*> nop
-+0+2bbc <[^>]*> nop
-+0+2bc0 <[^>]*> nop
-+0+2bc4 <[^>]*> nop
-+0+2bc8 <[^>]*> nop
-+0+2bcc <[^>]*> nop
-+0+2bd0 <[^>]*> nop
-+0+2bd4 <[^>]*> nop
-+0+2bd8 <[^>]*> nop
-+0+2bdc <[^>]*> nop
-+0+2be0 <[^>]*> nop
-+0+2be4 <[^>]*> nop
-+0+2be8 <[^>]*> nop
-+0+2bec <[^>]*> nop
-+0+2bf0 <[^>]*> nop
-+0+2bf4 <[^>]*> nop
-+0+2bf8 <[^>]*> nop
-+0+2bfc <[^>]*> nop
-+0+2c00 <[^>]*> nop
-+0+2c04 <[^>]*> nop
-+0+2c08 <[^>]*> nop
-+0+2c0c <[^>]*> nop
-+0+2c10 <[^>]*> nop
-+0+2c14 <[^>]*> nop
-+0+2c18 <[^>]*> nop
-+0+2c1c <[^>]*> nop
-+0+2c20 <[^>]*> nop
-+0+2c24 <[^>]*> nop
-+0+2c28 <[^>]*> nop
-+0+2c2c <[^>]*> nop
-+0+2c30 <[^>]*> nop
-+0+2c34 <[^>]*> nop
-+0+2c38 <[^>]*> nop
-+0+2c3c <[^>]*> nop
-+0+2c40 <[^>]*> nop
-+0+2c44 <[^>]*> nop
-+0+2c48 <[^>]*> nop
-+0+2c4c <[^>]*> nop
-+0+2c50 <[^>]*> nop
-+0+2c54 <[^>]*> nop
-+0+2c58 <[^>]*> nop
-+0+2c5c <[^>]*> nop
-+0+2c60 <[^>]*> nop
-+0+2c64 <[^>]*> nop
-+0+2c68 <[^>]*> nop
-+0+2c6c <[^>]*> nop
-+0+2c70 <[^>]*> nop
-+0+2c74 <[^>]*> nop
-+0+2c78 <[^>]*> nop
-+0+2c7c <[^>]*> nop
-+0+2c80 <[^>]*> nop
-+0+2c84 <[^>]*> nop
-+0+2c88 <[^>]*> nop
-+0+2c8c <[^>]*> nop
-+0+2c90 <[^>]*> nop
-+0+2c94 <[^>]*> nop
-+0+2c98 <[^>]*> nop
-+0+2c9c <[^>]*> nop
-+0+2ca0 <[^>]*> nop
-+0+2ca4 <[^>]*> nop
-+0+2ca8 <[^>]*> nop
-+0+2cac <[^>]*> nop
-+0+2cb0 <[^>]*> nop
-+0+2cb4 <[^>]*> nop
-+0+2cb8 <[^>]*> nop
-+0+2cbc <[^>]*> nop
-+0+2cc0 <[^>]*> nop
-+0+2cc4 <[^>]*> nop
-+0+2cc8 <[^>]*> nop
-+0+2ccc <[^>]*> nop
-+0+2cd0 <[^>]*> nop
-+0+2cd4 <[^>]*> nop
-+0+2cd8 <[^>]*> nop
-+0+2cdc <[^>]*> nop
-+0+2ce0 <[^>]*> nop
-+0+2ce4 <[^>]*> nop
-+0+2ce8 <[^>]*> nop
-+0+2cec <[^>]*> nop
-+0+2cf0 <[^>]*> nop
-+0+2cf4 <[^>]*> nop
-+0+2cf8 <[^>]*> nop
-+0+2cfc <[^>]*> nop
-+0+2d00 <[^>]*> nop
-+0+2d04 <[^>]*> nop
-+0+2d08 <[^>]*> nop
-+0+2d0c <[^>]*> nop
-+0+2d10 <[^>]*> nop
-+0+2d14 <[^>]*> nop
-+0+2d18 <[^>]*> nop
-+0+2d1c <[^>]*> nop
-+0+2d20 <[^>]*> nop
-+0+2d24 <[^>]*> nop
-+0+2d28 <[^>]*> nop
-+0+2d2c <[^>]*> nop
-+0+2d30 <[^>]*> nop
-+0+2d34 <[^>]*> nop
-+0+2d38 <[^>]*> nop
-+0+2d3c <[^>]*> nop
-+0+2d40 <[^>]*> nop
-+0+2d44 <[^>]*> nop
-+0+2d48 <[^>]*> nop
-+0+2d4c <[^>]*> nop
-+0+2d50 <[^>]*> nop
-+0+2d54 <[^>]*> nop
-+0+2d58 <[^>]*> nop
-+0+2d5c <[^>]*> nop
-+0+2d60 <[^>]*> nop
-+0+2d64 <[^>]*> nop
-+0+2d68 <[^>]*> nop
-+0+2d6c <[^>]*> nop
-+0+2d70 <[^>]*> nop
-+0+2d74 <[^>]*> nop
-+0+2d78 <[^>]*> nop
-+0+2d7c <[^>]*> nop
-+0+2d80 <[^>]*> nop
-+0+2d84 <[^>]*> nop
-+0+2d88 <[^>]*> nop
-+0+2d8c <[^>]*> nop
-+0+2d90 <[^>]*> nop
-+0+2d94 <[^>]*> nop
-+0+2d98 <[^>]*> nop
-+0+2d9c <[^>]*> nop
-+0+2da0 <[^>]*> nop
-+0+2da4 <[^>]*> nop
-+0+2da8 <[^>]*> nop
-+0+2dac <[^>]*> nop
-+0+2db0 <[^>]*> nop
-+0+2db4 <[^>]*> nop
-+0+2db8 <[^>]*> nop
-+0+2dbc <[^>]*> nop
-+0+2dc0 <[^>]*> nop
-+0+2dc4 <[^>]*> nop
-+0+2dc8 <[^>]*> nop
-+0+2dcc <[^>]*> nop
-+0+2dd0 <[^>]*> nop
-+0+2dd4 <[^>]*> nop
-+0+2dd8 <[^>]*> nop
-+0+2ddc <[^>]*> nop
-+0+2de0 <[^>]*> nop
-+0+2de4 <[^>]*> nop
-+0+2de8 <[^>]*> nop
-+0+2dec <[^>]*> nop
-+0+2df0 <[^>]*> nop
-+0+2df4 <[^>]*> nop
-+0+2df8 <[^>]*> nop
-+0+2dfc <[^>]*> nop
-+0+2e00 <[^>]*> nop
-+0+2e04 <[^>]*> nop
-+0+2e08 <[^>]*> nop
-+0+2e0c <[^>]*> nop
-+0+2e10 <[^>]*> nop
-+0+2e14 <[^>]*> nop
-+0+2e18 <[^>]*> nop
-+0+2e1c <[^>]*> nop
-+0+2e20 <[^>]*> nop
-+0+2e24 <[^>]*> nop
-+0+2e28 <[^>]*> nop
-+0+2e2c <[^>]*> nop
-+0+2e30 <[^>]*> nop
-+0+2e34 <[^>]*> nop
-+0+2e38 <[^>]*> nop
-+0+2e3c <[^>]*> nop
-+0+2e40 <[^>]*> nop
-+0+2e44 <[^>]*> nop
-+0+2e48 <[^>]*> nop
-+0+2e4c <[^>]*> nop
-+0+2e50 <[^>]*> nop
-+0+2e54 <[^>]*> nop
-+0+2e58 <[^>]*> nop
-+0+2e5c <[^>]*> nop
-+0+2e60 <[^>]*> nop
-+0+2e64 <[^>]*> nop
-+0+2e68 <[^>]*> nop
-+0+2e6c <[^>]*> nop
-+0+2e70 <[^>]*> nop
-+0+2e74 <[^>]*> nop
-+0+2e78 <[^>]*> nop
-+0+2e7c <[^>]*> nop
-+0+2e80 <[^>]*> nop
-+0+2e84 <[^>]*> nop
-+0+2e88 <[^>]*> nop
-+0+2e8c <[^>]*> nop
-+0+2e90 <[^>]*> nop
-+0+2e94 <[^>]*> nop
-+0+2e98 <[^>]*> nop
-+0+2e9c <[^>]*> nop
-+0+2ea0 <[^>]*> nop
-+0+2ea4 <[^>]*> nop
-+0+2ea8 <[^>]*> nop
-+0+2eac <[^>]*> nop
-+0+2eb0 <[^>]*> nop
-+0+2eb4 <[^>]*> nop
-+0+2eb8 <[^>]*> nop
-+0+2ebc <[^>]*> nop
-+0+2ec0 <[^>]*> nop
-+0+2ec4 <[^>]*> nop
-+0+2ec8 <[^>]*> nop
-+0+2ecc <[^>]*> nop
-+0+2ed0 <[^>]*> nop
-+0+2ed4 <[^>]*> nop
-+0+2ed8 <[^>]*> nop
-+0+2edc <[^>]*> nop
-+0+2ee0 <[^>]*> nop
-+0+2ee4 <[^>]*> nop
-+0+2ee8 <[^>]*> nop
-+0+2eec <[^>]*> nop
-+0+2ef0 <[^>]*> nop
-+0+2ef4 <[^>]*> nop
-+0+2ef8 <[^>]*> nop
-+0+2efc <[^>]*> nop
-+0+2f00 <[^>]*> nop
-+0+2f04 <[^>]*> nop
-+0+2f08 <[^>]*> nop
-+0+2f0c <[^>]*> nop
-+0+2f10 <[^>]*> nop
-+0+2f14 <[^>]*> nop
-+0+2f18 <[^>]*> nop
-+0+2f1c <[^>]*> nop
-+0+2f20 <[^>]*> nop
-+0+2f24 <[^>]*> nop
-+0+2f28 <[^>]*> nop
-+0+2f2c <[^>]*> nop
-+0+2f30 <[^>]*> nop
-+0+2f34 <[^>]*> nop
-+0+2f38 <[^>]*> nop
-+0+2f3c <[^>]*> nop
-+0+2f40 <[^>]*> nop
-+0+2f44 <[^>]*> nop
-+0+2f48 <[^>]*> nop
-+0+2f4c <[^>]*> nop
-+0+2f50 <[^>]*> nop
-+0+2f54 <[^>]*> nop
-+0+2f58 <[^>]*> nop
-+0+2f5c <[^>]*> nop
-+0+2f60 <[^>]*> nop
-+0+2f64 <[^>]*> nop
-+0+2f68 <[^>]*> nop
-+0+2f6c <[^>]*> nop
-+0+2f70 <[^>]*> nop
-+0+2f74 <[^>]*> nop
-+0+2f78 <[^>]*> nop
-+0+2f7c <[^>]*> nop
-+0+2f80 <[^>]*> nop
-+0+2f84 <[^>]*> nop
-+0+2f88 <[^>]*> nop
-+0+2f8c <[^>]*> nop
-+0+2f90 <[^>]*> nop
-+0+2f94 <[^>]*> nop
-+0+2f98 <[^>]*> nop
-+0+2f9c <[^>]*> nop
-+0+2fa0 <[^>]*> nop
-+0+2fa4 <[^>]*> nop
-+0+2fa8 <[^>]*> nop
-+0+2fac <[^>]*> nop
-+0+2fb0 <[^>]*> nop
-+0+2fb4 <[^>]*> nop
-+0+2fb8 <[^>]*> nop
-+0+2fbc <[^>]*> nop
-+0+2fc0 <[^>]*> nop
-+0+2fc4 <[^>]*> nop
-+0+2fc8 <[^>]*> nop
-+0+2fcc <[^>]*> nop
-+0+2fd0 <[^>]*> nop
-+0+2fd4 <[^>]*> nop
-+0+2fd8 <[^>]*> nop
-+0+2fdc <[^>]*> nop
-+0+2fe0 <[^>]*> nop
-+0+2fe4 <[^>]*> nop
-+0+2fe8 <[^>]*> nop
-+0+2fec <[^>]*> nop
-+0+2ff0 <[^>]*> nop
-+0+2ff4 <[^>]*> nop
-+0+2ff8 <[^>]*> nop
-+0+2ffc <[^>]*> nop
-+0+3000 <[^>]*> nop
-+0+3004 <[^>]*> nop
-+0+3008 <[^>]*> nop
-+0+300c <[^>]*> nop
-+0+3010 <[^>]*> nop
-+0+3014 <[^>]*> nop
-+0+3018 <[^>]*> nop
-+0+301c <[^>]*> nop
-+0+3020 <[^>]*> nop
-+0+3024 <[^>]*> nop
-+0+3028 <[^>]*> nop
-+0+302c <[^>]*> nop
-+0+3030 <[^>]*> nop
-+0+3034 <[^>]*> nop
-+0+3038 <[^>]*> nop
-+0+303c <[^>]*> nop
-+0+3040 <[^>]*> nop
-+0+3044 <[^>]*> nop
-+0+3048 <[^>]*> nop
-+0+304c <[^>]*> nop
-+0+3050 <[^>]*> nop
-+0+3054 <[^>]*> nop
-+0+3058 <[^>]*> nop
-+0+305c <[^>]*> nop
-+0+3060 <[^>]*> nop
-+0+3064 <[^>]*> nop
-+0+3068 <[^>]*> nop
-+0+306c <[^>]*> nop
-+0+3070 <[^>]*> nop
-+0+3074 <[^>]*> nop
-+0+3078 <[^>]*> nop
-+0+307c <[^>]*> nop
-+0+3080 <[^>]*> nop
-+0+3084 <[^>]*> nop
-+0+3088 <[^>]*> nop
-+0+308c <[^>]*> nop
-+0+3090 <[^>]*> nop
-+0+3094 <[^>]*> nop
-+0+3098 <[^>]*> nop
-+0+309c <[^>]*> nop
-+0+30a0 <[^>]*> nop
-+0+30a4 <[^>]*> nop
-+0+30a8 <[^>]*> nop
-+0+30ac <[^>]*> nop
-+0+30b0 <[^>]*> nop
-+0+30b4 <[^>]*> nop
-+0+30b8 <[^>]*> nop
-+0+30bc <[^>]*> nop
-+0+30c0 <[^>]*> nop
-+0+30c4 <[^>]*> nop
-+0+30c8 <[^>]*> nop
-+0+30cc <[^>]*> nop
-+0+30d0 <[^>]*> nop
-+0+30d4 <[^>]*> nop
-+0+30d8 <[^>]*> nop
-+0+30dc <[^>]*> nop
-+0+30e0 <[^>]*> nop
-+0+30e4 <[^>]*> nop
-+0+30e8 <[^>]*> nop
-+0+30ec <[^>]*> nop
-+0+30f0 <[^>]*> nop
-+0+30f4 <[^>]*> nop
-+0+30f8 <[^>]*> nop
-+0+30fc <[^>]*> nop
-+0+3100 <[^>]*> nop
-+0+3104 <[^>]*> nop
-+0+3108 <[^>]*> nop
-+0+310c <[^>]*> nop
-+0+3110 <[^>]*> nop
-+0+3114 <[^>]*> nop
-+0+3118 <[^>]*> nop
-+0+311c <[^>]*> nop
-+0+3120 <[^>]*> nop
-+0+3124 <[^>]*> nop
-+0+3128 <[^>]*> nop
-+0+312c <[^>]*> nop
-+0+3130 <[^>]*> nop
-+0+3134 <[^>]*> nop
-+0+3138 <[^>]*> nop
-+0+313c <[^>]*> nop
-+0+3140 <[^>]*> nop
-+0+3144 <[^>]*> nop
-+0+3148 <[^>]*> nop
-+0+314c <[^>]*> nop
-+0+3150 <[^>]*> nop
-+0+3154 <[^>]*> nop
-+0+3158 <[^>]*> nop
-+0+315c <[^>]*> nop
-+0+3160 <[^>]*> nop
-+0+3164 <[^>]*> nop
-+0+3168 <[^>]*> nop
-+0+316c <[^>]*> nop
-+0+3170 <[^>]*> nop
-+0+3174 <[^>]*> nop
-+0+3178 <[^>]*> nop
-+0+317c <[^>]*> nop
-+0+3180 <[^>]*> nop
-+0+3184 <[^>]*> nop
-+0+3188 <[^>]*> nop
-+0+318c <[^>]*> nop
-+0+3190 <[^>]*> nop
-+0+3194 <[^>]*> nop
-+0+3198 <[^>]*> nop
-+0+319c <[^>]*> nop
-+0+31a0 <[^>]*> nop
-+0+31a4 <[^>]*> nop
-+0+31a8 <[^>]*> nop
-+0+31ac <[^>]*> nop
-+0+31b0 <[^>]*> nop
-+0+31b4 <[^>]*> nop
-+0+31b8 <[^>]*> nop
-+0+31bc <[^>]*> nop
-+0+31c0 <[^>]*> nop
-+0+31c4 <[^>]*> nop
-+0+31c8 <[^>]*> nop
-+0+31cc <[^>]*> nop
-+0+31d0 <[^>]*> nop
-+0+31d4 <[^>]*> nop
-+0+31d8 <[^>]*> nop
-+0+31dc <[^>]*> nop
-+0+31e0 <[^>]*> nop
-+0+31e4 <[^>]*> nop
-+0+31e8 <[^>]*> nop
-+0+31ec <[^>]*> nop
-+0+31f0 <[^>]*> nop
-+0+31f4 <[^>]*> nop
-+0+31f8 <[^>]*> nop
-+0+31fc <[^>]*> nop
-+0+3200 <[^>]*> nop
-+0+3204 <[^>]*> nop
-+0+3208 <[^>]*> nop
-+0+320c <[^>]*> nop
-+0+3210 <[^>]*> nop
-+0+3214 <[^>]*> nop
-+0+3218 <[^>]*> nop
-+0+321c <[^>]*> nop
-+0+3220 <[^>]*> nop
-+0+3224 <[^>]*> nop
-+0+3228 <[^>]*> nop
-+0+322c <[^>]*> nop
-+0+3230 <[^>]*> nop
-+0+3234 <[^>]*> nop
-+0+3238 <[^>]*> nop
-+0+323c <[^>]*> nop
-+0+3240 <[^>]*> nop
-+0+3244 <[^>]*> nop
-+0+3248 <[^>]*> nop
-+0+324c <[^>]*> nop
-+0+3250 <[^>]*> nop
-+0+3254 <[^>]*> nop
-+0+3258 <[^>]*> nop
-+0+325c <[^>]*> nop
-+0+3260 <[^>]*> nop
-+0+3264 <[^>]*> nop
-+0+3268 <[^>]*> nop
-+0+326c <[^>]*> nop
-+0+3270 <[^>]*> nop
-+0+3274 <[^>]*> nop
-+0+3278 <[^>]*> nop
-+0+327c <[^>]*> nop
-+0+3280 <[^>]*> nop
-+0+3284 <[^>]*> nop
-+0+3288 <[^>]*> nop
-+0+328c <[^>]*> nop
-+0+3290 <[^>]*> nop
-+0+3294 <[^>]*> nop
-+0+3298 <[^>]*> nop
-+0+329c <[^>]*> nop
-+0+32a0 <[^>]*> nop
-+0+32a4 <[^>]*> nop
-+0+32a8 <[^>]*> nop
-+0+32ac <[^>]*> nop
-+0+32b0 <[^>]*> nop
-+0+32b4 <[^>]*> nop
-+0+32b8 <[^>]*> nop
-+0+32bc <[^>]*> nop
-+0+32c0 <[^>]*> nop
-+0+32c4 <[^>]*> nop
-+0+32c8 <[^>]*> nop
-+0+32cc <[^>]*> nop
-+0+32d0 <[^>]*> nop
-+0+32d4 <[^>]*> nop
-+0+32d8 <[^>]*> nop
-+0+32dc <[^>]*> nop
-+0+32e0 <[^>]*> nop
-+0+32e4 <[^>]*> nop
-+0+32e8 <[^>]*> nop
-+0+32ec <[^>]*> nop
-+0+32f0 <[^>]*> nop
-+0+32f4 <[^>]*> nop
-+0+32f8 <[^>]*> nop
-+0+32fc <[^>]*> nop
-+0+3300 <[^>]*> nop
-+0+3304 <[^>]*> nop
-+0+3308 <[^>]*> nop
-+0+330c <[^>]*> nop
-+0+3310 <[^>]*> nop
-+0+3314 <[^>]*> nop
-+0+3318 <[^>]*> nop
-+0+331c <[^>]*> nop
-+0+3320 <[^>]*> nop
-+0+3324 <[^>]*> nop
-+0+3328 <[^>]*> nop
-+0+332c <[^>]*> nop
-+0+3330 <[^>]*> nop
-+0+3334 <[^>]*> nop
-+0+3338 <[^>]*> nop
-+0+333c <[^>]*> nop
-+0+3340 <[^>]*> nop
-+0+3344 <[^>]*> nop
-+0+3348 <[^>]*> nop
-+0+334c <[^>]*> nop
-+0+3350 <[^>]*> nop
-+0+3354 <[^>]*> nop
-+0+3358 <[^>]*> nop
-+0+335c <[^>]*> nop
-+0+3360 <[^>]*> nop
-+0+3364 <[^>]*> nop
-+0+3368 <[^>]*> nop
-+0+336c <[^>]*> nop
-+0+3370 <[^>]*> nop
-+0+3374 <[^>]*> nop
-+0+3378 <[^>]*> nop
-+0+337c <[^>]*> nop
-+0+3380 <[^>]*> nop
-+0+3384 <[^>]*> nop
-+0+3388 <[^>]*> nop
-+0+338c <[^>]*> nop
-+0+3390 <[^>]*> nop
-+0+3394 <[^>]*> nop
-+0+3398 <[^>]*> nop
-+0+339c <[^>]*> nop
-+0+33a0 <[^>]*> nop
-+0+33a4 <[^>]*> nop
-+0+33a8 <[^>]*> nop
-+0+33ac <[^>]*> nop
-+0+33b0 <[^>]*> nop
-+0+33b4 <[^>]*> nop
-+0+33b8 <[^>]*> nop
-+0+33bc <[^>]*> nop
-+0+33c0 <[^>]*> nop
-+0+33c4 <[^>]*> nop
-+0+33c8 <[^>]*> nop
-+0+33cc <[^>]*> nop
-+0+33d0 <[^>]*> nop
-+0+33d4 <[^>]*> nop
-+0+33d8 <[^>]*> nop
-+0+33dc <[^>]*> nop
-+0+33e0 <[^>]*> nop
-+0+33e4 <[^>]*> nop
-+0+33e8 <[^>]*> nop
-+0+33ec <[^>]*> nop
-+0+33f0 <[^>]*> nop
-+0+33f4 <[^>]*> nop
-+0+33f8 <[^>]*> nop
-+0+33fc <[^>]*> nop
-+0+3400 <[^>]*> nop
-+0+3404 <[^>]*> nop
-+0+3408 <[^>]*> nop
-+0+340c <[^>]*> nop
-+0+3410 <[^>]*> nop
-+0+3414 <[^>]*> nop
-+0+3418 <[^>]*> nop
-+0+341c <[^>]*> nop
-+0+3420 <[^>]*> nop
-+0+3424 <[^>]*> nop
-+0+3428 <[^>]*> nop
-+0+342c <[^>]*> nop
-+0+3430 <[^>]*> nop
-+0+3434 <[^>]*> nop
-+0+3438 <[^>]*> nop
-+0+343c <[^>]*> nop
-+0+3440 <[^>]*> nop
-+0+3444 <[^>]*> nop
-+0+3448 <[^>]*> nop
-+0+344c <[^>]*> nop
-+0+3450 <[^>]*> nop
-+0+3454 <[^>]*> nop
-+0+3458 <[^>]*> nop
-+0+345c <[^>]*> nop
-+0+3460 <[^>]*> nop
-+0+3464 <[^>]*> nop
-+0+3468 <[^>]*> nop
-+0+346c <[^>]*> nop
-+0+3470 <[^>]*> nop
-+0+3474 <[^>]*> nop
-+0+3478 <[^>]*> nop
-+0+347c <[^>]*> nop
-+0+3480 <[^>]*> nop
-+0+3484 <[^>]*> nop
-+0+3488 <[^>]*> nop
-+0+348c <[^>]*> nop
-+0+3490 <[^>]*> nop
-+0+3494 <[^>]*> nop
-+0+3498 <[^>]*> nop
-+0+349c <[^>]*> nop
-+0+34a0 <[^>]*> nop
-+0+34a4 <[^>]*> nop
-+0+34a8 <[^>]*> nop
-+0+34ac <[^>]*> nop
-+0+34b0 <[^>]*> nop
-+0+34b4 <[^>]*> nop
-+0+34b8 <[^>]*> nop
-+0+34bc <[^>]*> nop
-+0+34c0 <[^>]*> nop
-+0+34c4 <[^>]*> nop
-+0+34c8 <[^>]*> nop
-+0+34cc <[^>]*> nop
-+0+34d0 <[^>]*> nop
-+0+34d4 <[^>]*> nop
-+0+34d8 <[^>]*> nop
-+0+34dc <[^>]*> nop
-+0+34e0 <[^>]*> nop
-+0+34e4 <[^>]*> nop
-+0+34e8 <[^>]*> nop
-+0+34ec <[^>]*> nop
-+0+34f0 <[^>]*> nop
-+0+34f4 <[^>]*> nop
-+0+34f8 <[^>]*> nop
-+0+34fc <[^>]*> nop
-+0+3500 <[^>]*> nop
-+0+3504 <[^>]*> nop
-+0+3508 <[^>]*> nop
-+0+350c <[^>]*> nop
-+0+3510 <[^>]*> nop
-+0+3514 <[^>]*> nop
-+0+3518 <[^>]*> nop
-+0+351c <[^>]*> nop
-+0+3520 <[^>]*> nop
-+0+3524 <[^>]*> nop
-+0+3528 <[^>]*> nop
-+0+352c <[^>]*> nop
-+0+3530 <[^>]*> nop
-+0+3534 <[^>]*> nop
-+0+3538 <[^>]*> nop
-+0+353c <[^>]*> nop
-+0+3540 <[^>]*> nop
-+0+3544 <[^>]*> nop
-+0+3548 <[^>]*> nop
-+0+354c <[^>]*> nop
-+0+3550 <[^>]*> nop
-+0+3554 <[^>]*> nop
-+0+3558 <[^>]*> nop
-+0+355c <[^>]*> nop
-+0+3560 <[^>]*> nop
-+0+3564 <[^>]*> nop
-+0+3568 <[^>]*> nop
-+0+356c <[^>]*> nop
-+0+3570 <[^>]*> nop
-+0+3574 <[^>]*> nop
-+0+3578 <[^>]*> nop
-+0+357c <[^>]*> nop
-+0+3580 <[^>]*> nop
-+0+3584 <[^>]*> nop
-+0+3588 <[^>]*> nop
-+0+358c <[^>]*> nop
-+0+3590 <[^>]*> nop
-+0+3594 <[^>]*> nop
-+0+3598 <[^>]*> nop
-+0+359c <[^>]*> nop
-+0+35a0 <[^>]*> nop
-+0+35a4 <[^>]*> nop
-+0+35a8 <[^>]*> nop
-+0+35ac <[^>]*> nop
-+0+35b0 <[^>]*> nop
-+0+35b4 <[^>]*> nop
-+0+35b8 <[^>]*> nop
-+0+35bc <[^>]*> nop
-+0+35c0 <[^>]*> nop
-+0+35c4 <[^>]*> nop
-+0+35c8 <[^>]*> nop
-+0+35cc <[^>]*> nop
-+0+35d0 <[^>]*> nop
-+0+35d4 <[^>]*> nop
-+0+35d8 <[^>]*> nop
-+0+35dc <[^>]*> nop
-+0+35e0 <[^>]*> nop
-+0+35e4 <[^>]*> nop
-+0+35e8 <[^>]*> nop
-+0+35ec <[^>]*> nop
-+0+35f0 <[^>]*> nop
-+0+35f4 <[^>]*> nop
-+0+35f8 <[^>]*> nop
-+0+35fc <[^>]*> nop
-+0+3600 <[^>]*> nop
-+0+3604 <[^>]*> nop
-+0+3608 <[^>]*> nop
-+0+360c <[^>]*> nop
-+0+3610 <[^>]*> nop
-+0+3614 <[^>]*> nop
-+0+3618 <[^>]*> nop
-+0+361c <[^>]*> nop
-+0+3620 <[^>]*> nop
-+0+3624 <[^>]*> nop
-+0+3628 <[^>]*> nop
-+0+362c <[^>]*> nop
-+0+3630 <[^>]*> nop
-+0+3634 <[^>]*> nop
-+0+3638 <[^>]*> nop
-+0+363c <[^>]*> nop
-+0+3640 <[^>]*> nop
-+0+3644 <[^>]*> nop
-+0+3648 <[^>]*> nop
-+0+364c <[^>]*> nop
-+0+3650 <[^>]*> nop
-+0+3654 <[^>]*> nop
-+0+3658 <[^>]*> nop
-+0+365c <[^>]*> nop
-+0+3660 <[^>]*> nop
-+0+3664 <[^>]*> nop
-+0+3668 <[^>]*> nop
-+0+366c <[^>]*> nop
-+0+3670 <[^>]*> nop
-+0+3674 <[^>]*> nop
-+0+3678 <[^>]*> nop
-+0+367c <[^>]*> nop
-+0+3680 <[^>]*> nop
-+0+3684 <[^>]*> nop
-+0+3688 <[^>]*> nop
-+0+368c <[^>]*> nop
-+0+3690 <[^>]*> nop
-+0+3694 <[^>]*> nop
-+0+3698 <[^>]*> nop
-+0+369c <[^>]*> nop
-+0+36a0 <[^>]*> nop
-+0+36a4 <[^>]*> nop
-+0+36a8 <[^>]*> nop
-+0+36ac <[^>]*> nop
-+0+36b0 <[^>]*> nop
-+0+36b4 <[^>]*> nop
-+0+36b8 <[^>]*> nop
-+0+36bc <[^>]*> nop
-+0+36c0 <[^>]*> nop
-+0+36c4 <[^>]*> nop
-+0+36c8 <[^>]*> nop
-+0+36cc <[^>]*> nop
-+0+36d0 <[^>]*> nop
-+0+36d4 <[^>]*> nop
-+0+36d8 <[^>]*> nop
-+0+36dc <[^>]*> nop
-+0+36e0 <[^>]*> nop
-+0+36e4 <[^>]*> nop
-+0+36e8 <[^>]*> nop
-+0+36ec <[^>]*> nop
-+0+36f0 <[^>]*> nop
-+0+36f4 <[^>]*> nop
-+0+36f8 <[^>]*> nop
-+0+36fc <[^>]*> nop
-+0+3700 <[^>]*> nop
-+0+3704 <[^>]*> nop
-+0+3708 <[^>]*> nop
-+0+370c <[^>]*> nop
-+0+3710 <[^>]*> nop
-+0+3714 <[^>]*> nop
-+0+3718 <[^>]*> nop
-+0+371c <[^>]*> nop
-+0+3720 <[^>]*> nop
-+0+3724 <[^>]*> nop
-+0+3728 <[^>]*> nop
-+0+372c <[^>]*> nop
-+0+3730 <[^>]*> nop
-+0+3734 <[^>]*> nop
-+0+3738 <[^>]*> nop
-+0+373c <[^>]*> nop
-+0+3740 <[^>]*> nop
-+0+3744 <[^>]*> nop
-+0+3748 <[^>]*> nop
-+0+374c <[^>]*> nop
-+0+3750 <[^>]*> nop
-+0+3754 <[^>]*> nop
-+0+3758 <[^>]*> nop
-+0+375c <[^>]*> nop
-+0+3760 <[^>]*> nop
-+0+3764 <[^>]*> nop
-+0+3768 <[^>]*> nop
-+0+376c <[^>]*> nop
-+0+3770 <[^>]*> nop
-+0+3774 <[^>]*> nop
-+0+3778 <[^>]*> nop
-+0+377c <[^>]*> nop
-+0+3780 <[^>]*> nop
-+0+3784 <[^>]*> nop
-+0+3788 <[^>]*> nop
-+0+378c <[^>]*> nop
-+0+3790 <[^>]*> nop
-+0+3794 <[^>]*> nop
-+0+3798 <[^>]*> nop
-+0+379c <[^>]*> nop
-+0+37a0 <[^>]*> nop
-+0+37a4 <[^>]*> nop
-+0+37a8 <[^>]*> nop
-+0+37ac <[^>]*> nop
-+0+37b0 <[^>]*> nop
-+0+37b4 <[^>]*> nop
-+0+37b8 <[^>]*> nop
-+0+37bc <[^>]*> nop
-+0+37c0 <[^>]*> nop
-+0+37c4 <[^>]*> nop
-+0+37c8 <[^>]*> nop
-+0+37cc <[^>]*> nop
-+0+37d0 <[^>]*> nop
-+0+37d4 <[^>]*> nop
-+0+37d8 <[^>]*> nop
-+0+37dc <[^>]*> nop
-+0+37e0 <[^>]*> nop
-+0+37e4 <[^>]*> nop
-+0+37e8 <[^>]*> nop
-+0+37ec <[^>]*> nop
-+0+37f0 <[^>]*> nop
-+0+37f4 <[^>]*> nop
-+0+37f8 <[^>]*> nop
-+0+37fc <[^>]*> nop
-+0+3800 <[^>]*> nop
-+0+3804 <[^>]*> nop
-+0+3808 <[^>]*> nop
-+0+380c <[^>]*> nop
-+0+3810 <[^>]*> nop
-+0+3814 <[^>]*> nop
-+0+3818 <[^>]*> nop
-+0+381c <[^>]*> nop
-+0+3820 <[^>]*> nop
-+0+3824 <[^>]*> nop
-+0+3828 <[^>]*> nop
-+0+382c <[^>]*> nop
-+0+3830 <[^>]*> nop
-+0+3834 <[^>]*> nop
-+0+3838 <[^>]*> nop
-+0+383c <[^>]*> nop
-+0+3840 <[^>]*> nop
-+0+3844 <[^>]*> nop
-+0+3848 <[^>]*> nop
-+0+384c <[^>]*> nop
-+0+3850 <[^>]*> nop
-+0+3854 <[^>]*> nop
-+0+3858 <[^>]*> nop
-+0+385c <[^>]*> nop
-+0+3860 <[^>]*> nop
-+0+3864 <[^>]*> nop
-+0+3868 <[^>]*> nop
-+0+386c <[^>]*> nop
-+0+3870 <[^>]*> nop
-+0+3874 <[^>]*> nop
-+0+3878 <[^>]*> nop
-+0+387c <[^>]*> nop
-+0+3880 <[^>]*> nop
-+0+3884 <[^>]*> nop
-+0+3888 <[^>]*> nop
-+0+388c <[^>]*> nop
-+0+3890 <[^>]*> nop
-+0+3894 <[^>]*> nop
-+0+3898 <[^>]*> nop
-+0+389c <[^>]*> nop
-+0+38a0 <[^>]*> nop
-+0+38a4 <[^>]*> nop
-+0+38a8 <[^>]*> nop
-+0+38ac <[^>]*> nop
-+0+38b0 <[^>]*> nop
-+0+38b4 <[^>]*> nop
-+0+38b8 <[^>]*> nop
-+0+38bc <[^>]*> nop
-+0+38c0 <[^>]*> nop
-+0+38c4 <[^>]*> nop
-+0+38c8 <[^>]*> nop
-+0+38cc <[^>]*> nop
-+0+38d0 <[^>]*> nop
-+0+38d4 <[^>]*> nop
-+0+38d8 <[^>]*> nop
-+0+38dc <[^>]*> nop
-+0+38e0 <[^>]*> nop
-+0+38e4 <[^>]*> nop
-+0+38e8 <[^>]*> nop
-+0+38ec <[^>]*> nop
-+0+38f0 <[^>]*> nop
-+0+38f4 <[^>]*> nop
-+0+38f8 <[^>]*> nop
-+0+38fc <[^>]*> nop
-+0+3900 <[^>]*> nop
-+0+3904 <[^>]*> nop
-+0+3908 <[^>]*> nop
-+0+390c <[^>]*> nop
-+0+3910 <[^>]*> nop
-+0+3914 <[^>]*> nop
-+0+3918 <[^>]*> nop
-+0+391c <[^>]*> nop
-+0+3920 <[^>]*> nop
-+0+3924 <[^>]*> nop
-+0+3928 <[^>]*> nop
-+0+392c <[^>]*> nop
-+0+3930 <[^>]*> nop
-+0+3934 <[^>]*> nop
-+0+3938 <[^>]*> nop
-+0+393c <[^>]*> nop
-+0+3940 <[^>]*> nop
-+0+3944 <[^>]*> nop
-+0+3948 <[^>]*> nop
-+0+394c <[^>]*> nop
-+0+3950 <[^>]*> nop
-+0+3954 <[^>]*> nop
-+0+3958 <[^>]*> nop
-+0+395c <[^>]*> nop
-+0+3960 <[^>]*> nop
-+0+3964 <[^>]*> nop
-+0+3968 <[^>]*> nop
-+0+396c <[^>]*> nop
-+0+3970 <[^>]*> nop
-+0+3974 <[^>]*> nop
-+0+3978 <[^>]*> nop
-+0+397c <[^>]*> nop
-+0+3980 <[^>]*> nop
-+0+3984 <[^>]*> nop
-+0+3988 <[^>]*> nop
-+0+398c <[^>]*> nop
-+0+3990 <[^>]*> nop
-+0+3994 <[^>]*> nop
-+0+3998 <[^>]*> nop
-+0+399c <[^>]*> nop
-+0+39a0 <[^>]*> nop
-+0+39a4 <[^>]*> nop
-+0+39a8 <[^>]*> nop
-+0+39ac <[^>]*> nop
-+0+39b0 <[^>]*> nop
-+0+39b4 <[^>]*> nop
-+0+39b8 <[^>]*> nop
-+0+39bc <[^>]*> nop
-+0+39c0 <[^>]*> nop
-+0+39c4 <[^>]*> nop
-+0+39c8 <[^>]*> nop
-+0+39cc <[^>]*> nop
-+0+39d0 <[^>]*> nop
-+0+39d4 <[^>]*> nop
-+0+39d8 <[^>]*> nop
-+0+39dc <[^>]*> nop
-+0+39e0 <[^>]*> nop
-+0+39e4 <[^>]*> nop
-+0+39e8 <[^>]*> nop
-+0+39ec <[^>]*> nop
-+0+39f0 <[^>]*> nop
-+0+39f4 <[^>]*> nop
-+0+39f8 <[^>]*> nop
-+0+39fc <[^>]*> nop
-+0+3a00 <[^>]*> nop
-+0+3a04 <[^>]*> nop
-+0+3a08 <[^>]*> nop
-+0+3a0c <[^>]*> nop
-+0+3a10 <[^>]*> nop
-+0+3a14 <[^>]*> nop
-+0+3a18 <[^>]*> nop
-+0+3a1c <[^>]*> nop
-+0+3a20 <[^>]*> nop
-+0+3a24 <[^>]*> nop
-+0+3a28 <[^>]*> nop
-+0+3a2c <[^>]*> nop
-+0+3a30 <[^>]*> nop
-+0+3a34 <[^>]*> nop
-+0+3a38 <[^>]*> nop
-+0+3a3c <[^>]*> nop
-+0+3a40 <[^>]*> nop
-+0+3a44 <[^>]*> nop
-+0+3a48 <[^>]*> nop
-+0+3a4c <[^>]*> nop
-+0+3a50 <[^>]*> nop
-+0+3a54 <[^>]*> nop
-+0+3a58 <[^>]*> nop
-+0+3a5c <[^>]*> nop
-+0+3a60 <[^>]*> nop
-+0+3a64 <[^>]*> nop
-+0+3a68 <[^>]*> nop
-+0+3a6c <[^>]*> nop
-+0+3a70 <[^>]*> nop
-+0+3a74 <[^>]*> nop
-+0+3a78 <[^>]*> nop
-+0+3a7c <[^>]*> nop
-+0+3a80 <[^>]*> nop
-+0+3a84 <[^>]*> nop
-+0+3a88 <[^>]*> nop
-+0+3a8c <[^>]*> nop
-+0+3a90 <[^>]*> nop
-+0+3a94 <[^>]*> nop
-+0+3a98 <[^>]*> nop
-+0+3a9c <[^>]*> nop
-+0+3aa0 <[^>]*> nop
-+0+3aa4 <[^>]*> nop
-+0+3aa8 <[^>]*> nop
-+0+3aac <[^>]*> nop
-+0+3ab0 <[^>]*> nop
-+0+3ab4 <[^>]*> nop
-+0+3ab8 <[^>]*> nop
-+0+3abc <[^>]*> nop
-+0+3ac0 <[^>]*> nop
-+0+3ac4 <[^>]*> nop
-+0+3ac8 <[^>]*> nop
-+0+3acc <[^>]*> nop
-+0+3ad0 <[^>]*> nop
-+0+3ad4 <[^>]*> nop
-+0+3ad8 <[^>]*> nop
-+0+3adc <[^>]*> nop
-+0+3ae0 <[^>]*> nop
-+0+3ae4 <[^>]*> nop
-+0+3ae8 <[^>]*> nop
-+0+3aec <[^>]*> nop
-+0+3af0 <[^>]*> nop
-+0+3af4 <[^>]*> nop
-+0+3af8 <[^>]*> nop
-+0+3afc <[^>]*> nop
-+0+3b00 <[^>]*> nop
-+0+3b04 <[^>]*> nop
-+0+3b08 <[^>]*> nop
-+0+3b0c <[^>]*> nop
-+0+3b10 <[^>]*> nop
-+0+3b14 <[^>]*> nop
-+0+3b18 <[^>]*> nop
-+0+3b1c <[^>]*> nop
-+0+3b20 <[^>]*> nop
-+0+3b24 <[^>]*> nop
-+0+3b28 <[^>]*> nop
-+0+3b2c <[^>]*> nop
-+0+3b30 <[^>]*> nop
-+0+3b34 <[^>]*> nop
-+0+3b38 <[^>]*> nop
-+0+3b3c <[^>]*> nop
-+0+3b40 <[^>]*> nop
-+0+3b44 <[^>]*> nop
-+0+3b48 <[^>]*> nop
-+0+3b4c <[^>]*> nop
-+0+3b50 <[^>]*> nop
-+0+3b54 <[^>]*> nop
-+0+3b58 <[^>]*> nop
-+0+3b5c <[^>]*> nop
-+0+3b60 <[^>]*> nop
-+0+3b64 <[^>]*> nop
-+0+3b68 <[^>]*> nop
-+0+3b6c <[^>]*> nop
-+0+3b70 <[^>]*> nop
-+0+3b74 <[^>]*> nop
-+0+3b78 <[^>]*> nop
-+0+3b7c <[^>]*> nop
-+0+3b80 <[^>]*> nop
-+0+3b84 <[^>]*> nop
-+0+3b88 <[^>]*> nop
-+0+3b8c <[^>]*> nop
-+0+3b90 <[^>]*> nop
-+0+3b94 <[^>]*> nop
-+0+3b98 <[^>]*> nop
-+0+3b9c <[^>]*> nop
-+0+3ba0 <[^>]*> nop
-+0+3ba4 <[^>]*> nop
-+0+3ba8 <[^>]*> nop
-+0+3bac <[^>]*> nop
-+0+3bb0 <[^>]*> nop
-+0+3bb4 <[^>]*> nop
-+0+3bb8 <[^>]*> nop
-+0+3bbc <[^>]*> nop
-+0+3bc0 <[^>]*> nop
-+0+3bc4 <[^>]*> nop
-+0+3bc8 <[^>]*> nop
-+0+3bcc <[^>]*> nop
-+0+3bd0 <[^>]*> nop
-+0+3bd4 <[^>]*> nop
-+0+3bd8 <[^>]*> nop
-+0+3bdc <[^>]*> nop
-+0+3be0 <[^>]*> nop
-+0+3be4 <[^>]*> nop
-+0+3be8 <[^>]*> nop
-+0+3bec <[^>]*> nop
-+0+3bf0 <[^>]*> nop
-+0+3bf4 <[^>]*> nop
-+0+3bf8 <[^>]*> nop
-+0+3bfc <[^>]*> nop
-+0+3c00 <[^>]*> nop
-+0+3c04 <[^>]*> nop
-+0+3c08 <[^>]*> nop
-+0+3c0c <[^>]*> nop
-+0+3c10 <[^>]*> nop
-+0+3c14 <[^>]*> nop
-+0+3c18 <[^>]*> nop
-+0+3c1c <[^>]*> nop
-+0+3c20 <[^>]*> nop
-+0+3c24 <[^>]*> nop
-+0+3c28 <[^>]*> nop
-+0+3c2c <[^>]*> nop
-+0+3c30 <[^>]*> nop
-+0+3c34 <[^>]*> nop
-+0+3c38 <[^>]*> nop
-+0+3c3c <[^>]*> nop
-+0+3c40 <[^>]*> nop
-+0+3c44 <[^>]*> nop
-+0+3c48 <[^>]*> nop
-+0+3c4c <[^>]*> nop
-+0+3c50 <[^>]*> nop
-+0+3c54 <[^>]*> nop
-+0+3c58 <[^>]*> nop
-+0+3c5c <[^>]*> nop
-+0+3c60 <[^>]*> nop
-+0+3c64 <[^>]*> nop
-+0+3c68 <[^>]*> nop
-+0+3c6c <[^>]*> nop
-+0+3c70 <[^>]*> nop
-+0+3c74 <[^>]*> nop
-+0+3c78 <[^>]*> nop
-+0+3c7c <[^>]*> nop
-+0+3c80 <[^>]*> nop
-+0+3c84 <[^>]*> nop
-+0+3c88 <[^>]*> nop
-+0+3c8c <[^>]*> nop
-+0+3c90 <[^>]*> nop
-+0+3c94 <[^>]*> nop
-+0+3c98 <[^>]*> nop
-+0+3c9c <[^>]*> nop
-+0+3ca0 <[^>]*> nop
-+0+3ca4 <[^>]*> nop
-+0+3ca8 <[^>]*> nop
-+0+3cac <[^>]*> nop
-+0+3cb0 <[^>]*> nop
-+0+3cb4 <[^>]*> nop
-+0+3cb8 <[^>]*> nop
-+0+3cbc <[^>]*> nop
-+0+3cc0 <[^>]*> nop
-+0+3cc4 <[^>]*> nop
-+0+3cc8 <[^>]*> nop
-+0+3ccc <[^>]*> nop
-+0+3cd0 <[^>]*> nop
-+0+3cd4 <[^>]*> nop
-+0+3cd8 <[^>]*> nop
-+0+3cdc <[^>]*> nop
-+0+3ce0 <[^>]*> nop
-+0+3ce4 <[^>]*> nop
-+0+3ce8 <[^>]*> nop
-+0+3cec <[^>]*> nop
-+0+3cf0 <[^>]*> nop
-+0+3cf4 <[^>]*> nop
-+0+3cf8 <[^>]*> nop
-+0+3cfc <[^>]*> nop
-+0+3d00 <[^>]*> nop
-+0+3d04 <[^>]*> nop
-+0+3d08 <[^>]*> nop
-+0+3d0c <[^>]*> nop
-+0+3d10 <[^>]*> nop
-+0+3d14 <[^>]*> nop
-+0+3d18 <[^>]*> nop
-+0+3d1c <[^>]*> nop
-+0+3d20 <[^>]*> nop
-+0+3d24 <[^>]*> nop
-+0+3d28 <[^>]*> nop
-+0+3d2c <[^>]*> nop
-+0+3d30 <[^>]*> nop
-+0+3d34 <[^>]*> nop
-+0+3d38 <[^>]*> nop
-+0+3d3c <[^>]*> nop
-+0+3d40 <[^>]*> nop
-+0+3d44 <[^>]*> nop
-+0+3d48 <[^>]*> nop
-+0+3d4c <[^>]*> nop
-+0+3d50 <[^>]*> nop
-+0+3d54 <[^>]*> nop
-+0+3d58 <[^>]*> nop
-+0+3d5c <[^>]*> nop
-+0+3d60 <[^>]*> nop
-+0+3d64 <[^>]*> nop
-+0+3d68 <[^>]*> nop
-+0+3d6c <[^>]*> nop
-+0+3d70 <[^>]*> nop
-+0+3d74 <[^>]*> nop
-+0+3d78 <[^>]*> nop
-+0+3d7c <[^>]*> nop
-+0+3d80 <[^>]*> nop
-+0+3d84 <[^>]*> nop
-+0+3d88 <[^>]*> nop
-+0+3d8c <[^>]*> nop
-+0+3d90 <[^>]*> nop
-+0+3d94 <[^>]*> nop
-+0+3d98 <[^>]*> nop
-+0+3d9c <[^>]*> nop
-+0+3da0 <[^>]*> nop
-+0+3da4 <[^>]*> nop
-+0+3da8 <[^>]*> nop
-+0+3dac <[^>]*> nop
-+0+3db0 <[^>]*> nop
-+0+3db4 <[^>]*> nop
-+0+3db8 <[^>]*> nop
-+0+3dbc <[^>]*> nop
-+0+3dc0 <[^>]*> nop
-+0+3dc4 <[^>]*> nop
-+0+3dc8 <[^>]*> nop
-+0+3dcc <[^>]*> nop
-+0+3dd0 <[^>]*> nop
-+0+3dd4 <[^>]*> nop
-+0+3dd8 <[^>]*> nop
-+0+3ddc <[^>]*> nop
-+0+3de0 <[^>]*> nop
-+0+3de4 <[^>]*> nop
-+0+3de8 <[^>]*> nop
-+0+3dec <[^>]*> nop
-+0+3df0 <[^>]*> nop
-+0+3df4 <[^>]*> nop
-+0+3df8 <[^>]*> nop
-+0+3dfc <[^>]*> nop
-+0+3e00 <[^>]*> nop
-+0+3e04 <[^>]*> nop
-+0+3e08 <[^>]*> nop
-+0+3e0c <[^>]*> nop
-+0+3e10 <[^>]*> nop
-+0+3e14 <[^>]*> nop
-+0+3e18 <[^>]*> nop
-+0+3e1c <[^>]*> nop
-+0+3e20 <[^>]*> nop
-+0+3e24 <[^>]*> nop
-+0+3e28 <[^>]*> nop
-+0+3e2c <[^>]*> nop
-+0+3e30 <[^>]*> nop
-+0+3e34 <[^>]*> nop
-+0+3e38 <[^>]*> nop
-+0+3e3c <[^>]*> nop
-+0+3e40 <[^>]*> nop
-+0+3e44 <[^>]*> nop
-+0+3e48 <[^>]*> nop
-+0+3e4c <[^>]*> nop
-+0+3e50 <[^>]*> nop
-+0+3e54 <[^>]*> nop
-+0+3e58 <[^>]*> nop
-+0+3e5c <[^>]*> nop
-+0+3e60 <[^>]*> nop
-+0+3e64 <[^>]*> nop
-+0+3e68 <[^>]*> nop
-+0+3e6c <[^>]*> nop
-+0+3e70 <[^>]*> nop
-+0+3e74 <[^>]*> nop
-+0+3e78 <[^>]*> nop
-+0+3e7c <[^>]*> nop
-+0+3e80 <[^>]*> nop
-+0+3e84 <[^>]*> nop
-+0+3e88 <[^>]*> nop
-+0+3e8c <[^>]*> nop
-+0+3e90 <[^>]*> nop
-+0+3e94 <[^>]*> nop
-+0+3e98 <[^>]*> nop
-+0+3e9c <[^>]*> nop
-+0+3ea0 <[^>]*> nop
-+0+3ea4 <[^>]*> nop
-+0+3ea8 <[^>]*> nop
-+0+3eac <[^>]*> nop
-+0+3eb0 <[^>]*> nop
-+0+3eb4 <[^>]*> nop
-+0+3eb8 <[^>]*> nop
-+0+3ebc <[^>]*> nop
-+0+3ec0 <[^>]*> nop
-+0+3ec4 <[^>]*> nop
-+0+3ec8 <[^>]*> nop
-+0+3ecc <[^>]*> nop
-+0+3ed0 <[^>]*> nop
-+0+3ed4 <[^>]*> nop
-+0+3ed8 <[^>]*> nop
-+0+3edc <[^>]*> nop
-+0+3ee0 <[^>]*> nop
-+0+3ee4 <[^>]*> nop
-+0+3ee8 <[^>]*> nop
-+0+3eec <[^>]*> nop
-+0+3ef0 <[^>]*> nop
-+0+3ef4 <[^>]*> nop
-+0+3ef8 <[^>]*> nop
-+0+3efc <[^>]*> nop
-+0+3f00 <[^>]*> nop
-+0+3f04 <[^>]*> nop
-+0+3f08 <[^>]*> nop
-+0+3f0c <[^>]*> nop
-+0+3f10 <[^>]*> nop
-+0+3f14 <[^>]*> nop
-+0+3f18 <[^>]*> nop
-+0+3f1c <[^>]*> nop
-+0+3f20 <[^>]*> nop
-+0+3f24 <[^>]*> nop
-+0+3f28 <[^>]*> nop
-+0+3f2c <[^>]*> nop
-+0+3f30 <[^>]*> nop
-+0+3f34 <[^>]*> nop
-+0+3f38 <[^>]*> nop
-+0+3f3c <[^>]*> nop
-+0+3f40 <[^>]*> nop
-+0+3f44 <[^>]*> nop
-+0+3f48 <[^>]*> nop
-+0+3f4c <[^>]*> nop
-+0+3f50 <[^>]*> nop
-+0+3f54 <[^>]*> nop
-+0+3f58 <[^>]*> nop
-+0+3f5c <[^>]*> nop
-+0+3f60 <[^>]*> nop
-+0+3f64 <[^>]*> nop
-+0+3f68 <[^>]*> nop
-+0+3f6c <[^>]*> nop
-+0+3f70 <[^>]*> nop
-+0+3f74 <[^>]*> nop
-+0+3f78 <[^>]*> nop
-+0+3f7c <[^>]*> nop
-+0+3f80 <[^>]*> nop
-+0+3f84 <[^>]*> nop
-+0+3f88 <[^>]*> nop
-+0+3f8c <[^>]*> nop
-+0+3f90 <[^>]*> nop
-+0+3f94 <[^>]*> nop
-+0+3f98 <[^>]*> nop
-+0+3f9c <[^>]*> nop
-+0+3fa0 <[^>]*> nop
-+0+3fa4 <[^>]*> nop
-+0+3fa8 <[^>]*> nop
-+0+3fac <[^>]*> nop
-+0+3fb0 <[^>]*> nop
-+0+3fb4 <[^>]*> nop
-+0+3fb8 <[^>]*> nop
-+0+3fbc <[^>]*> nop
-+0+3fc0 <[^>]*> nop
-+0+3fc4 <[^>]*> nop
-+0+3fc8 <[^>]*> nop
-+0+3fcc <[^>]*> nop
-+0+3fd0 <[^>]*> nop
-+0+3fd4 <[^>]*> nop
-+0+3fd8 <[^>]*> nop
-+0+3fdc <[^>]*> nop
-+0+3fe0 <[^>]*> nop
-+0+3fe4 <[^>]*> nop
-+0+3fe8 <[^>]*> nop
-+0+3fec <[^>]*> nop
-+0+3ff0 <[^>]*> nop
-+0+3ff4 <[^>]*> nop
-+0+3ff8 <[^>]*> nop
-+0+3ffc <[^>]*> nop
-+0+4000 <[^>]*> nop
-+0+4004 <[^>]*> nop
-+0+4008 <[^>]*> nop
-+0+400c <[^>]*> nop
-+0+4010 <[^>]*> nop
-+0+4014 <[^>]*> nop
-+0+4018 <[^>]*> nop
-+0+401c <[^>]*> nop
-+0+4020 <[^>]*> nop
-+0+4024 <[^>]*> nop
-+0+4028 <[^>]*> nop
-+0+402c <[^>]*> nop
-+0+4030 <[^>]*> nop
-+0+4034 <[^>]*> nop
-+0+4038 <[^>]*> nop
-+0+403c <[^>]*> nop
-+0+4040 <[^>]*> nop
-+0+4044 <[^>]*> nop
-+0+4048 <[^>]*> nop
-+0+404c <[^>]*> nop
-+0+4050 <[^>]*> nop
-+0+4054 <[^>]*> nop
-+0+4058 <[^>]*> nop
-+0+405c <[^>]*> nop
-+0+4060 <[^>]*> nop
-+0+4064 <[^>]*> nop
-+0+4068 <[^>]*> nop
-+0+406c <[^>]*> nop
-+0+4070 <[^>]*> nop
-+0+4074 <[^>]*> nop
-+0+4078 <[^>]*> nop
-+0+407c <[^>]*> nop
-+0+4080 <[^>]*> nop
-+0+4084 <[^>]*> nop
-+0+4088 <[^>]*> nop
-+0+408c <[^>]*> nop
-+0+4090 <[^>]*> nop
-+0+4094 <[^>]*> nop
-+0+4098 <[^>]*> nop
-+0+409c <[^>]*> nop
-+0+40a0 <[^>]*> nop
-+0+40a4 <[^>]*> nop
-+0+40a8 <[^>]*> nop
-+0+40ac <[^>]*> nop
-+0+40b0 <[^>]*> nop
-+0+40b4 <[^>]*> nop
-+0+40b8 <[^>]*> nop
-+0+40bc <[^>]*> nop
-+0+40c0 <[^>]*> nop
-+0+40c4 <[^>]*> nop
-+0+40c8 <[^>]*> nop
-+0+40cc <[^>]*> nop
-+0+40d0 <[^>]*> nop
-+0+40d4 <[^>]*> nop
-+0+40d8 <[^>]*> nop
-+0+40dc <[^>]*> nop
-+0+40e0 <[^>]*> nop
-+0+40e4 <[^>]*> nop
-+0+40e8 <[^>]*> nop
-+0+40ec <[^>]*> nop
-+0+40f0 <[^>]*> nop
-+0+40f4 <[^>]*> nop
-+0+40f8 <[^>]*> nop
-+0+40fc <[^>]*> nop
-+0+4100 <[^>]*> nop
-+0+4104 <[^>]*> nop
-+0+4108 <[^>]*> nop
-+0+410c <[^>]*> nop
-+0+4110 <[^>]*> nop
-+0+4114 <[^>]*> nop
-+0+4118 <[^>]*> nop
-+0+411c <[^>]*> nop
-+0+4120 <[^>]*> nop
-+0+4124 <[^>]*> nop
-+0+4128 <[^>]*> nop
-+0+412c <[^>]*> nop
-+0+4130 <[^>]*> nop
-+0+4134 <[^>]*> nop
-+0+4138 <[^>]*> nop
-+0+413c <[^>]*> nop
-+0+4140 <[^>]*> nop
-+0+4144 <[^>]*> nop
-+0+4148 <[^>]*> nop
-+0+414c <[^>]*> nop
-+0+4150 <[^>]*> nop
-+0+4154 <[^>]*> nop
-+0+4158 <[^>]*> nop
-+0+415c <[^>]*> nop
-+0+4160 <[^>]*> nop
-+0+4164 <[^>]*> nop
-+0+4168 <[^>]*> nop
-+0+416c <[^>]*> nop
-+0+4170 <[^>]*> nop
-+0+4174 <[^>]*> nop
-+0+4178 <[^>]*> nop
-+0+417c <[^>]*> nop
-+0+4180 <[^>]*> nop
-+0+4184 <[^>]*> nop
-+0+4188 <[^>]*> nop
-+0+418c <[^>]*> nop
-+0+4190 <[^>]*> nop
-+0+4194 <[^>]*> nop
-+0+4198 <[^>]*> nop
-+0+419c <[^>]*> nop
-+0+41a0 <[^>]*> nop
-+0+41a4 <[^>]*> nop
-+0+41a8 <[^>]*> nop
-+0+41ac <[^>]*> nop
-+0+41b0 <[^>]*> nop
-+0+41b4 <[^>]*> nop
-+0+41b8 <[^>]*> nop
-+0+41bc <[^>]*> nop
-+0+41c0 <[^>]*> nop
-+0+41c4 <[^>]*> nop
-+0+41c8 <[^>]*> nop
-+0+41cc <[^>]*> nop
-+0+41d0 <[^>]*> nop
-+0+41d4 <[^>]*> nop
-+0+41d8 <[^>]*> nop
-+0+41dc <[^>]*> nop
-+0+41e0 <[^>]*> nop
-+0+41e4 <[^>]*> nop
-+0+41e8 <[^>]*> nop
-+0+41ec <[^>]*> nop
-+0+41f0 <[^>]*> nop
-+0+41f4 <[^>]*> nop
-+0+41f8 <[^>]*> nop
-+0+41fc <[^>]*> nop
-+0+4200 <[^>]*> nop
-+0+4204 <[^>]*> nop
-+0+4208 <[^>]*> nop
-+0+420c <[^>]*> nop
-+0+4210 <[^>]*> nop
-+0+4214 <[^>]*> nop
-+0+4218 <[^>]*> nop
-+0+421c <[^>]*> nop
-+0+4220 <[^>]*> nop
-+0+4224 <[^>]*> nop
-+0+4228 <[^>]*> nop
-+0+422c <[^>]*> nop
-+0+4230 <[^>]*> nop
-+0+4234 <[^>]*> nop
-+0+4238 <[^>]*> nop
-+0+423c <[^>]*> nop
-+0+4240 <[^>]*> nop
-+0+4244 <[^>]*> nop
-+0+4248 <[^>]*> nop
-+0+424c <[^>]*> nop
-+0+4250 <[^>]*> nop
-+0+4254 <[^>]*> nop
-+0+4258 <[^>]*> nop
-+0+425c <[^>]*> nop
-+0+4260 <[^>]*> nop
-+0+4264 <[^>]*> nop
-+0+4268 <[^>]*> nop
-+0+426c <[^>]*> nop
-+0+4270 <[^>]*> nop
-+0+4274 <[^>]*> nop
-+0+4278 <[^>]*> nop
-+0+427c <[^>]*> nop
-+0+4280 <[^>]*> nop
-+0+4284 <[^>]*> nop
-+0+4288 <[^>]*> nop
-+0+428c <[^>]*> nop
-+0+4290 <[^>]*> nop
-+0+4294 <[^>]*> nop
-+0+4298 <[^>]*> nop
-+0+429c <[^>]*> nop
-+0+42a0 <[^>]*> nop
-+0+42a4 <[^>]*> nop
-+0+42a8 <[^>]*> nop
-+0+42ac <[^>]*> nop
-+0+42b0 <[^>]*> nop
-+0+42b4 <[^>]*> nop
-+0+42b8 <[^>]*> nop
-+0+42bc <[^>]*> nop
-+0+42c0 <[^>]*> nop
-+0+42c4 <[^>]*> nop
-+0+42c8 <[^>]*> nop
-+0+42cc <[^>]*> nop
-+0+42d0 <[^>]*> nop
-+0+42d4 <[^>]*> nop
-+0+42d8 <[^>]*> nop
-+0+42dc <[^>]*> nop
-+0+42e0 <[^>]*> nop
-+0+42e4 <[^>]*> nop
-+0+42e8 <[^>]*> nop
-+0+42ec <[^>]*> nop
-+0+42f0 <[^>]*> nop
-+0+42f4 <[^>]*> nop
-+0+42f8 <[^>]*> nop
-+0+42fc <[^>]*> nop
-+0+4300 <[^>]*> nop
-+0+4304 <[^>]*> nop
-+0+4308 <[^>]*> nop
-+0+430c <[^>]*> nop
-+0+4310 <[^>]*> nop
-+0+4314 <[^>]*> nop
-+0+4318 <[^>]*> nop
-+0+431c <[^>]*> nop
-+0+4320 <[^>]*> nop
-+0+4324 <[^>]*> nop
-+0+4328 <[^>]*> nop
-+0+432c <[^>]*> nop
-+0+4330 <[^>]*> nop
-+0+4334 <[^>]*> nop
-+0+4338 <[^>]*> nop
-+0+433c <[^>]*> nop
-+0+4340 <[^>]*> nop
-+0+4344 <[^>]*> nop
-+0+4348 <[^>]*> nop
-+0+434c <[^>]*> nop
-+0+4350 <[^>]*> nop
-+0+4354 <[^>]*> nop
-+0+4358 <[^>]*> nop
-+0+435c <[^>]*> nop
-+0+4360 <[^>]*> nop
-+0+4364 <[^>]*> nop
-+0+4368 <[^>]*> nop
-+0+436c <[^>]*> nop
-+0+4370 <[^>]*> nop
-+0+4374 <[^>]*> nop
-+0+4378 <[^>]*> nop
-+0+437c <[^>]*> nop
-+0+4380 <[^>]*> nop
-+0+4384 <[^>]*> nop
-+0+4388 <[^>]*> nop
-+0+438c <[^>]*> nop
-+0+4390 <[^>]*> nop
-+0+4394 <[^>]*> nop
-+0+4398 <[^>]*> nop
-+0+439c <[^>]*> nop
-+0+43a0 <[^>]*> nop
-+0+43a4 <[^>]*> nop
-+0+43a8 <[^>]*> nop
-+0+43ac <[^>]*> nop
-+0+43b0 <[^>]*> nop
-+0+43b4 <[^>]*> nop
-+0+43b8 <[^>]*> nop
-+0+43bc <[^>]*> nop
-+0+43c0 <[^>]*> nop
-+0+43c4 <[^>]*> nop
-+0+43c8 <[^>]*> nop
-+0+43cc <[^>]*> nop
-+0+43d0 <[^>]*> nop
-+0+43d4 <[^>]*> nop
-+0+43d8 <[^>]*> nop
-+0+43dc <[^>]*> nop
-+0+43e0 <[^>]*> nop
-+0+43e4 <[^>]*> nop
-+0+43e8 <[^>]*> nop
-+0+43ec <[^>]*> nop
-+0+43f0 <[^>]*> nop
-+0+43f4 <[^>]*> nop
-+0+43f8 <[^>]*> nop
-+0+43fc <[^>]*> nop
-+0+4400 <[^>]*> nop
-+0+4404 <[^>]*> nop
-+0+4408 <[^>]*> nop
-+0+440c <[^>]*> nop
-+0+4410 <[^>]*> nop
-+0+4414 <[^>]*> nop
-+0+4418 <[^>]*> nop
-+0+441c <[^>]*> nop
-+0+4420 <[^>]*> nop
-+0+4424 <[^>]*> nop
-+0+4428 <[^>]*> nop
-+0+442c <[^>]*> nop
-+0+4430 <[^>]*> nop
-+0+4434 <[^>]*> nop
-+0+4438 <[^>]*> nop
-+0+443c <[^>]*> nop
-+0+4440 <[^>]*> nop
-+0+4444 <[^>]*> nop
-+0+4448 <[^>]*> nop
-+0+444c <[^>]*> nop
-+0+4450 <[^>]*> nop
-+0+4454 <[^>]*> nop
-+0+4458 <[^>]*> nop
-+0+445c <[^>]*> nop
-+0+4460 <[^>]*> nop
-+0+4464 <[^>]*> nop
-+0+4468 <[^>]*> nop
-+0+446c <[^>]*> nop
-+0+4470 <[^>]*> nop
-+0+4474 <[^>]*> nop
-+0+4478 <[^>]*> nop
-+0+447c <[^>]*> nop
-+0+4480 <[^>]*> nop
-+0+4484 <[^>]*> nop
-+0+4488 <[^>]*> nop
-+0+448c <[^>]*> nop
-+0+4490 <[^>]*> nop
-+0+4494 <[^>]*> nop
-+0+4498 <[^>]*> nop
-+0+449c <[^>]*> nop
-+0+44a0 <[^>]*> nop
-+0+44a4 <[^>]*> nop
-+0+44a8 <[^>]*> nop
-+0+44ac <[^>]*> nop
-+0+44b0 <[^>]*> nop
-+0+44b4 <[^>]*> nop
-+0+44b8 <[^>]*> nop
-+0+44bc <[^>]*> nop
-+0+44c0 <[^>]*> nop
-+0+44c4 <[^>]*> nop
-+0+44c8 <[^>]*> nop
-+0+44cc <[^>]*> nop
-+0+44d0 <[^>]*> nop
-+0+44d4 <[^>]*> nop
-+0+44d8 <[^>]*> nop
-+0+44dc <[^>]*> nop
-+0+44e0 <[^>]*> nop
-+0+44e4 <[^>]*> nop
-+0+44e8 <[^>]*> nop
-+0+44ec <[^>]*> nop
-+0+44f0 <[^>]*> nop
-+0+44f4 <[^>]*> nop
-+0+44f8 <[^>]*> nop
-+0+44fc <[^>]*> nop
-+0+4500 <[^>]*> nop
-+0+4504 <[^>]*> nop
-+0+4508 <[^>]*> nop
-+0+450c <[^>]*> nop
-+0+4510 <[^>]*> nop
-+0+4514 <[^>]*> nop
-+0+4518 <[^>]*> nop
-+0+451c <[^>]*> nop
-+0+4520 <[^>]*> nop
-+0+4524 <[^>]*> nop
-+0+4528 <[^>]*> nop
-+0+452c <[^>]*> nop
-+0+4530 <[^>]*> nop
-+0+4534 <[^>]*> nop
-+0+4538 <[^>]*> nop
-+0+453c <[^>]*> nop
-+0+4540 <[^>]*> nop
-+0+4544 <[^>]*> nop
-+0+4548 <[^>]*> nop
-+0+454c <[^>]*> nop
-+0+4550 <[^>]*> nop
-+0+4554 <[^>]*> nop
-+0+4558 <[^>]*> nop
-+0+455c <[^>]*> nop
-+0+4560 <[^>]*> nop
-+0+4564 <[^>]*> nop
-+0+4568 <[^>]*> nop
-+0+456c <[^>]*> nop
-+0+4570 <[^>]*> nop
-+0+4574 <[^>]*> nop
-+0+4578 <[^>]*> nop
-+0+457c <[^>]*> nop
-+0+4580 <[^>]*> nop
-+0+4584 <[^>]*> nop
-+0+4588 <[^>]*> nop
-+0+458c <[^>]*> nop
-+0+4590 <[^>]*> nop
-+0+4594 <[^>]*> nop
-+0+4598 <[^>]*> nop
-+0+459c <[^>]*> nop
-+0+45a0 <[^>]*> nop
-+0+45a4 <[^>]*> nop
-+0+45a8 <[^>]*> nop
-+0+45ac <[^>]*> nop
-+0+45b0 <[^>]*> nop
-+0+45b4 <[^>]*> nop
-+0+45b8 <[^>]*> nop
-+0+45bc <[^>]*> nop
-+0+45c0 <[^>]*> nop
-+0+45c4 <[^>]*> nop
-+0+45c8 <[^>]*> nop
-+0+45cc <[^>]*> nop
-+0+45d0 <[^>]*> nop
-+0+45d4 <[^>]*> nop
-+0+45d8 <[^>]*> nop
-+0+45dc <[^>]*> nop
-+0+45e0 <[^>]*> nop
-+0+45e4 <[^>]*> nop
-+0+45e8 <[^>]*> nop
-+0+45ec <[^>]*> nop
-+0+45f0 <[^>]*> nop
-+0+45f4 <[^>]*> nop
-+0+45f8 <[^>]*> nop
-+0+45fc <[^>]*> nop
-+0+4600 <[^>]*> nop
-+0+4604 <[^>]*> nop
-+0+4608 <[^>]*> nop
-+0+460c <[^>]*> nop
-+0+4610 <[^>]*> nop
-+0+4614 <[^>]*> nop
-+0+4618 <[^>]*> nop
-+0+461c <[^>]*> nop
-+0+4620 <[^>]*> nop
-+0+4624 <[^>]*> nop
-+0+4628 <[^>]*> nop
-+0+462c <[^>]*> nop
-+0+4630 <[^>]*> nop
-+0+4634 <[^>]*> nop
-+0+4638 <[^>]*> nop
-+0+463c <[^>]*> nop
-+0+4640 <[^>]*> nop
-+0+4644 <[^>]*> nop
-+0+4648 <[^>]*> nop
-+0+464c <[^>]*> nop
-+0+4650 <[^>]*> nop
-+0+4654 <[^>]*> nop
-+0+4658 <[^>]*> nop
-+0+465c <[^>]*> nop
-+0+4660 <[^>]*> nop
-+0+4664 <[^>]*> nop
-+0+4668 <[^>]*> nop
-+0+466c <[^>]*> nop
-+0+4670 <[^>]*> nop
-+0+4674 <[^>]*> nop
-+0+4678 <[^>]*> nop
-+0+467c <[^>]*> nop
-+0+4680 <[^>]*> nop
-+0+4684 <[^>]*> nop
-+0+4688 <[^>]*> nop
-+0+468c <[^>]*> nop
-+0+4690 <[^>]*> nop
-+0+4694 <[^>]*> nop
-+0+4698 <[^>]*> nop
-+0+469c <[^>]*> nop
-+0+46a0 <[^>]*> nop
-+0+46a4 <[^>]*> nop
-+0+46a8 <[^>]*> nop
-+0+46ac <[^>]*> nop
-+0+46b0 <[^>]*> nop
-+0+46b4 <[^>]*> nop
-+0+46b8 <[^>]*> nop
-+0+46bc <[^>]*> nop
-+0+46c0 <[^>]*> nop
-+0+46c4 <[^>]*> nop
-+0+46c8 <[^>]*> nop
-+0+46cc <[^>]*> nop
-+0+46d0 <[^>]*> nop
-+0+46d4 <[^>]*> nop
-+0+46d8 <[^>]*> nop
-+0+46dc <[^>]*> nop
-+0+46e0 <[^>]*> nop
-+0+46e4 <[^>]*> nop
-+0+46e8 <[^>]*> nop
-+0+46ec <[^>]*> nop
-+0+46f0 <[^>]*> nop
-+0+46f4 <[^>]*> nop
-+0+46f8 <[^>]*> nop
-+0+46fc <[^>]*> nop
-+0+4700 <[^>]*> nop
-+0+4704 <[^>]*> nop
-+0+4708 <[^>]*> nop
-+0+470c <[^>]*> nop
-+0+4710 <[^>]*> nop
-+0+4714 <[^>]*> nop
-+0+4718 <[^>]*> nop
-+0+471c <[^>]*> nop
-+0+4720 <[^>]*> nop
-+0+4724 <[^>]*> nop
-+0+4728 <[^>]*> nop
-+0+472c <[^>]*> nop
-+0+4730 <[^>]*> nop
-+0+4734 <[^>]*> nop
-+0+4738 <[^>]*> nop
-+0+473c <[^>]*> nop
-+0+4740 <[^>]*> nop
-+0+4744 <[^>]*> nop
-+0+4748 <[^>]*> nop
-+0+474c <[^>]*> nop
-+0+4750 <[^>]*> nop
-+0+4754 <[^>]*> nop
-+0+4758 <[^>]*> nop
-+0+475c <[^>]*> nop
-+0+4760 <[^>]*> nop
-+0+4764 <[^>]*> nop
-+0+4768 <[^>]*> nop
-+0+476c <[^>]*> nop
-+0+4770 <[^>]*> nop
-+0+4774 <[^>]*> nop
-+0+4778 <[^>]*> nop
-+0+477c <[^>]*> nop
-+0+4780 <[^>]*> nop
-+0+4784 <[^>]*> nop
-+0+4788 <[^>]*> nop
-+0+478c <[^>]*> nop
-+0+4790 <[^>]*> nop
-+0+4794 <[^>]*> nop
-+0+4798 <[^>]*> nop
-+0+479c <[^>]*> nop
-+0+47a0 <[^>]*> nop
-+0+47a4 <[^>]*> nop
-+0+47a8 <[^>]*> nop
-+0+47ac <[^>]*> nop
-+0+47b0 <[^>]*> nop
-+0+47b4 <[^>]*> nop
-+0+47b8 <[^>]*> nop
-+0+47bc <[^>]*> nop
-+0+47c0 <[^>]*> nop
-+0+47c4 <[^>]*> nop
-+0+47c8 <[^>]*> nop
-+0+47cc <[^>]*> nop
-+0+47d0 <[^>]*> nop
-+0+47d4 <[^>]*> nop
-+0+47d8 <[^>]*> nop
-+0+47dc <[^>]*> nop
-+0+47e0 <[^>]*> nop
-+0+47e4 <[^>]*> nop
-+0+47e8 <[^>]*> nop
-+0+47ec <[^>]*> nop
-+0+47f0 <[^>]*> nop
-+0+47f4 <[^>]*> nop
-+0+47f8 <[^>]*> nop
-+0+47fc <[^>]*> nop
-+0+4800 <[^>]*> nop
-+0+4804 <[^>]*> nop
-+0+4808 <[^>]*> nop
-+0+480c <[^>]*> nop
-+0+4810 <[^>]*> nop
-+0+4814 <[^>]*> nop
-+0+4818 <[^>]*> nop
-+0+481c <[^>]*> nop
-+0+4820 <[^>]*> nop
-+0+4824 <[^>]*> nop
-+0+4828 <[^>]*> nop
-+0+482c <[^>]*> nop
-+0+4830 <[^>]*> nop
-+0+4834 <[^>]*> nop
-+0+4838 <[^>]*> nop
-+0+483c <[^>]*> nop
-+0+4840 <[^>]*> nop
-+0+4844 <[^>]*> nop
-+0+4848 <[^>]*> nop
-+0+484c <[^>]*> nop
-+0+4850 <[^>]*> nop
-+0+4854 <[^>]*> nop
-+0+4858 <[^>]*> nop
-+0+485c <[^>]*> nop
-+0+4860 <[^>]*> nop
-+0+4864 <[^>]*> nop
-+0+4868 <[^>]*> nop
-+0+486c <[^>]*> nop
-+0+4870 <[^>]*> nop
-+0+4874 <[^>]*> nop
-+0+4878 <[^>]*> nop
-+0+487c <[^>]*> nop
-+0+4880 <[^>]*> nop
-+0+4884 <[^>]*> nop
-+0+4888 <[^>]*> nop
-+0+488c <[^>]*> nop
-+0+4890 <[^>]*> nop
-+0+4894 <[^>]*> nop
-+0+4898 <[^>]*> nop
-+0+489c <[^>]*> nop
-+0+48a0 <[^>]*> nop
-+0+48a4 <[^>]*> nop
-+0+48a8 <[^>]*> nop
-+0+48ac <[^>]*> nop
-+0+48b0 <[^>]*> nop
-+0+48b4 <[^>]*> nop
-+0+48b8 <[^>]*> nop
-+0+48bc <[^>]*> nop
-+0+48c0 <[^>]*> nop
-+0+48c4 <[^>]*> nop
-+0+48c8 <[^>]*> nop
-+0+48cc <[^>]*> nop
-+0+48d0 <[^>]*> nop
-+0+48d4 <[^>]*> nop
-+0+48d8 <[^>]*> nop
-+0+48dc <[^>]*> nop
-+0+48e0 <[^>]*> nop
-+0+48e4 <[^>]*> nop
-+0+48e8 <[^>]*> nop
-+0+48ec <[^>]*> nop
-+0+48f0 <[^>]*> nop
-+0+48f4 <[^>]*> nop
-+0+48f8 <[^>]*> nop
-+0+48fc <[^>]*> nop
-+0+4900 <[^>]*> nop
-+0+4904 <[^>]*> nop
-+0+4908 <[^>]*> nop
-+0+490c <[^>]*> nop
-+0+4910 <[^>]*> nop
-+0+4914 <[^>]*> nop
-+0+4918 <[^>]*> nop
-+0+491c <[^>]*> nop
-+0+4920 <[^>]*> nop
-+0+4924 <[^>]*> nop
-+0+4928 <[^>]*> nop
-+0+492c <[^>]*> nop
-+0+4930 <[^>]*> nop
-+0+4934 <[^>]*> nop
-+0+4938 <[^>]*> nop
-+0+493c <[^>]*> nop
-+0+4940 <[^>]*> nop
-+0+4944 <[^>]*> nop
-+0+4948 <[^>]*> nop
-+0+494c <[^>]*> nop
-+0+4950 <[^>]*> nop
-+0+4954 <[^>]*> nop
-+0+4958 <[^>]*> nop
-+0+495c <[^>]*> nop
-+0+4960 <[^>]*> nop
-+0+4964 <[^>]*> nop
-+0+4968 <[^>]*> nop
-+0+496c <[^>]*> nop
-+0+4970 <[^>]*> nop
-+0+4974 <[^>]*> nop
-+0+4978 <[^>]*> nop
-+0+497c <[^>]*> nop
-+0+4980 <[^>]*> nop
-+0+4984 <[^>]*> nop
-+0+4988 <[^>]*> nop
-+0+498c <[^>]*> nop
-+0+4990 <[^>]*> nop
-+0+4994 <[^>]*> nop
-+0+4998 <[^>]*> nop
-+0+499c <[^>]*> nop
-+0+49a0 <[^>]*> nop
-+0+49a4 <[^>]*> nop
-+0+49a8 <[^>]*> nop
-+0+49ac <[^>]*> nop
-+0+49b0 <[^>]*> nop
-+0+49b4 <[^>]*> nop
-+0+49b8 <[^>]*> nop
-+0+49bc <[^>]*> nop
-+0+49c0 <[^>]*> nop
-+0+49c4 <[^>]*> nop
-+0+49c8 <[^>]*> nop
-+0+49cc <[^>]*> nop
-+0+49d0 <[^>]*> nop
-+0+49d4 <[^>]*> nop
-+0+49d8 <[^>]*> nop
-+0+49dc <[^>]*> nop
-+0+49e0 <[^>]*> nop
-+0+49e4 <[^>]*> nop
-+0+49e8 <[^>]*> nop
-+0+49ec <[^>]*> nop
-+0+49f0 <[^>]*> nop
-+0+49f4 <[^>]*> nop
-+0+49f8 <[^>]*> nop
-+0+49fc <[^>]*> nop
-+0+4a00 <[^>]*> nop
-+0+4a04 <[^>]*> nop
-+0+4a08 <[^>]*> nop
-+0+4a0c <[^>]*> nop
-+0+4a10 <[^>]*> nop
-+0+4a14 <[^>]*> nop
-+0+4a18 <[^>]*> nop
-+0+4a1c <[^>]*> nop
-+0+4a20 <[^>]*> nop
-+0+4a24 <[^>]*> nop
-+0+4a28 <[^>]*> nop
-+0+4a2c <[^>]*> nop
-+0+4a30 <[^>]*> nop
-+0+4a34 <[^>]*> nop
-+0+4a38 <[^>]*> nop
-+0+4a3c <[^>]*> nop
-+0+4a40 <[^>]*> nop
-+0+4a44 <[^>]*> nop
-+0+4a48 <[^>]*> nop
-+0+4a4c <[^>]*> nop
-+0+4a50 <[^>]*> nop
-+0+4a54 <[^>]*> nop
-+0+4a58 <[^>]*> nop
-+0+4a5c <[^>]*> nop
-+0+4a60 <[^>]*> nop
-+0+4a64 <[^>]*> nop
-+0+4a68 <[^>]*> nop
-+0+4a6c <[^>]*> nop
-+0+4a70 <[^>]*> nop
-+0+4a74 <[^>]*> nop
-+0+4a78 <[^>]*> nop
-+0+4a7c <[^>]*> nop
-+0+4a80 <[^>]*> nop
-+0+4a84 <[^>]*> nop
-+0+4a88 <[^>]*> nop
-+0+4a8c <[^>]*> nop
-+0+4a90 <[^>]*> nop
-+0+4a94 <[^>]*> nop
-+0+4a98 <[^>]*> nop
-+0+4a9c <[^>]*> nop
-+0+4aa0 <[^>]*> nop
-+0+4aa4 <[^>]*> nop
-+0+4aa8 <[^>]*> nop
-+0+4aac <[^>]*> nop
-+0+4ab0 <[^>]*> nop
-+0+4ab4 <[^>]*> nop
-+0+4ab8 <[^>]*> nop
-+0+4abc <[^>]*> nop
-+0+4ac0 <[^>]*> nop
-+0+4ac4 <[^>]*> nop
-+0+4ac8 <[^>]*> nop
-+0+4acc <[^>]*> nop
-+0+4ad0 <[^>]*> nop
-+0+4ad4 <[^>]*> nop
-+0+4ad8 <[^>]*> nop
-+0+4adc <[^>]*> nop
-+0+4ae0 <[^>]*> nop
-+0+4ae4 <[^>]*> nop
-+0+4ae8 <[^>]*> nop
-+0+4aec <[^>]*> nop
-+0+4af0 <[^>]*> nop
-+0+4af4 <[^>]*> nop
-+0+4af8 <[^>]*> nop
-+0+4afc <[^>]*> nop
-+0+4b00 <[^>]*> nop
-+0+4b04 <[^>]*> nop
-+0+4b08 <[^>]*> nop
-+0+4b0c <[^>]*> nop
-+0+4b10 <[^>]*> nop
-+0+4b14 <[^>]*> nop
-+0+4b18 <[^>]*> nop
-+0+4b1c <[^>]*> nop
-+0+4b20 <[^>]*> nop
-+0+4b24 <[^>]*> nop
-+0+4b28 <[^>]*> nop
-+0+4b2c <[^>]*> nop
-+0+4b30 <[^>]*> nop
-+0+4b34 <[^>]*> nop
-+0+4b38 <[^>]*> nop
-+0+4b3c <[^>]*> nop
-+0+4b40 <[^>]*> nop
-+0+4b44 <[^>]*> nop
-+0+4b48 <[^>]*> nop
-+0+4b4c <[^>]*> nop
-+0+4b50 <[^>]*> nop
-+0+4b54 <[^>]*> nop
-+0+4b58 <[^>]*> nop
-+0+4b5c <[^>]*> nop
-+0+4b60 <[^>]*> nop
-+0+4b64 <[^>]*> nop
-+0+4b68 <[^>]*> nop
-+0+4b6c <[^>]*> nop
-+0+4b70 <[^>]*> nop
-+0+4b74 <[^>]*> nop
-+0+4b78 <[^>]*> nop
-+0+4b7c <[^>]*> nop
-+0+4b80 <[^>]*> nop
-+0+4b84 <[^>]*> nop
-+0+4b88 <[^>]*> nop
-+0+4b8c <[^>]*> nop
-+0+4b90 <[^>]*> nop
-+0+4b94 <[^>]*> nop
-+0+4b98 <[^>]*> nop
-+0+4b9c <[^>]*> nop
-+0+4ba0 <[^>]*> nop
-+0+4ba4 <[^>]*> nop
-+0+4ba8 <[^>]*> nop
-+0+4bac <[^>]*> nop
-+0+4bb0 <[^>]*> nop
-+0+4bb4 <[^>]*> nop
-+0+4bb8 <[^>]*> nop
-+0+4bbc <[^>]*> nop
-+0+4bc0 <[^>]*> nop
-+0+4bc4 <[^>]*> nop
-+0+4bc8 <[^>]*> nop
-+0+4bcc <[^>]*> nop
-+0+4bd0 <[^>]*> nop
-+0+4bd4 <[^>]*> nop
-+0+4bd8 <[^>]*> nop
-+0+4bdc <[^>]*> nop
-+0+4be0 <[^>]*> nop
-+0+4be4 <[^>]*> nop
-+0+4be8 <[^>]*> nop
-+0+4bec <[^>]*> nop
-+0+4bf0 <[^>]*> nop
-+0+4bf4 <[^>]*> nop
-+0+4bf8 <[^>]*> nop
-+0+4bfc <[^>]*> nop
-+0+4c00 <[^>]*> nop
-+0+4c04 <[^>]*> nop
-+0+4c08 <[^>]*> nop
-+0+4c0c <[^>]*> nop
-+0+4c10 <[^>]*> nop
-+0+4c14 <[^>]*> nop
-+0+4c18 <[^>]*> nop
-+0+4c1c <[^>]*> nop
-+0+4c20 <[^>]*> nop
-+0+4c24 <[^>]*> nop
-+0+4c28 <[^>]*> nop
-+0+4c2c <[^>]*> nop
-+0+4c30 <[^>]*> nop
-+0+4c34 <[^>]*> nop
-+0+4c38 <[^>]*> nop
-+0+4c3c <[^>]*> nop
-+0+4c40 <[^>]*> nop
-+0+4c44 <[^>]*> nop
-+0+4c48 <[^>]*> nop
-+0+4c4c <[^>]*> nop
-+0+4c50 <[^>]*> nop
-+0+4c54 <[^>]*> nop
-+0+4c58 <[^>]*> nop
-+0+4c5c <[^>]*> nop
-+0+4c60 <[^>]*> nop
-+0+4c64 <[^>]*> nop
-+0+4c68 <[^>]*> nop
-+0+4c6c <[^>]*> nop
-+0+4c70 <[^>]*> nop
-+0+4c74 <[^>]*> nop
-+0+4c78 <[^>]*> nop
-+0+4c7c <[^>]*> nop
-+0+4c80 <[^>]*> nop
-+0+4c84 <[^>]*> nop
-+0+4c88 <[^>]*> nop
-+0+4c8c <[^>]*> nop
-+0+4c90 <[^>]*> nop
-+0+4c94 <[^>]*> nop
-+0+4c98 <[^>]*> nop
-+0+4c9c <[^>]*> nop
-+0+4ca0 <[^>]*> nop
-+0+4ca4 <[^>]*> nop
-+0+4ca8 <[^>]*> nop
-+0+4cac <[^>]*> nop
-+0+4cb0 <[^>]*> nop
-+0+4cb4 <[^>]*> nop
-+0+4cb8 <[^>]*> nop
-+0+4cbc <[^>]*> nop
-+0+4cc0 <[^>]*> nop
-+0+4cc4 <[^>]*> nop
-+0+4cc8 <[^>]*> nop
-+0+4ccc <[^>]*> nop
-+0+4cd0 <[^>]*> nop
-+0+4cd4 <[^>]*> nop
-+0+4cd8 <[^>]*> nop
-+0+4cdc <[^>]*> nop
-+0+4ce0 <[^>]*> nop
-+0+4ce4 <[^>]*> nop
-+0+4ce8 <[^>]*> nop
-+0+4cec <[^>]*> nop
-+0+4cf0 <[^>]*> nop
-+0+4cf4 <[^>]*> nop
-+0+4cf8 <[^>]*> nop
-+0+4cfc <[^>]*> nop
-+0+4d00 <[^>]*> nop
-+0+4d04 <[^>]*> nop
-+0+4d08 <[^>]*> nop
-+0+4d0c <[^>]*> nop
-+0+4d10 <[^>]*> nop
-+0+4d14 <[^>]*> nop
-+0+4d18 <[^>]*> nop
-+0+4d1c <[^>]*> nop
-+0+4d20 <[^>]*> nop
-+0+4d24 <[^>]*> nop
-+0+4d28 <[^>]*> nop
-+0+4d2c <[^>]*> nop
-+0+4d30 <[^>]*> nop
-+0+4d34 <[^>]*> nop
-+0+4d38 <[^>]*> nop
-+0+4d3c <[^>]*> nop
-+0+4d40 <[^>]*> nop
-+0+4d44 <[^>]*> nop
-+0+4d48 <[^>]*> nop
-+0+4d4c <[^>]*> nop
-+0+4d50 <[^>]*> nop
-+0+4d54 <[^>]*> nop
-+0+4d58 <[^>]*> nop
-+0+4d5c <[^>]*> nop
-+0+4d60 <[^>]*> nop
-+0+4d64 <[^>]*> nop
-+0+4d68 <[^>]*> nop
-+0+4d6c <[^>]*> nop
-+0+4d70 <[^>]*> nop
-+0+4d74 <[^>]*> nop
-+0+4d78 <[^>]*> nop
-+0+4d7c <[^>]*> nop
-+0+4d80 <[^>]*> nop
-+0+4d84 <[^>]*> nop
-+0+4d88 <[^>]*> nop
-+0+4d8c <[^>]*> nop
-+0+4d90 <[^>]*> nop
-+0+4d94 <[^>]*> nop
-+0+4d98 <[^>]*> nop
-+0+4d9c <[^>]*> nop
-+0+4da0 <[^>]*> nop
-+0+4da4 <[^>]*> nop
-+0+4da8 <[^>]*> nop
-+0+4dac <[^>]*> nop
-+0+4db0 <[^>]*> nop
-+0+4db4 <[^>]*> nop
-+0+4db8 <[^>]*> nop
-+0+4dbc <[^>]*> nop
-+0+4dc0 <[^>]*> nop
-+0+4dc4 <[^>]*> nop
-+0+4dc8 <[^>]*> nop
-+0+4dcc <[^>]*> nop
-+0+4dd0 <[^>]*> nop
-+0+4dd4 <[^>]*> nop
-+0+4dd8 <[^>]*> nop
-+0+4ddc <[^>]*> nop
-+0+4de0 <[^>]*> nop
-+0+4de4 <[^>]*> nop
-+0+4de8 <[^>]*> nop
-+0+4dec <[^>]*> nop
-+0+4df0 <[^>]*> nop
-+0+4df4 <[^>]*> nop
-+0+4df8 <[^>]*> nop
-+0+4dfc <[^>]*> nop
-+0+4e00 <[^>]*> nop
-+0+4e04 <[^>]*> nop
-+0+4e08 <[^>]*> nop
-+0+4e0c <[^>]*> nop
-+0+4e10 <[^>]*> nop
-+0+4e14 <[^>]*> nop
-+0+4e18 <[^>]*> nop
-+0+4e1c <[^>]*> nop
-+0+4e20 <[^>]*> nop
-+0+4e24 <[^>]*> nop
-+0+4e28 <[^>]*> nop
-+0+4e2c <[^>]*> nop
-+0+4e30 <[^>]*> nop
-+0+4e34 <[^>]*> nop
-+0+4e38 <[^>]*> nop
-+0+4e3c <[^>]*> nop
-+0+4e40 <[^>]*> nop
-+0+4e44 <[^>]*> nop
-+0+4e48 <[^>]*> nop
-+0+4e4c <[^>]*> nop
-+0+4e50 <[^>]*> nop
-+0+4e54 <[^>]*> nop
-+0+4e58 <[^>]*> nop
-+0+4e5c <[^>]*> nop
-+0+4e60 <[^>]*> nop
-+0+4e64 <[^>]*> nop
-+0+4e68 <[^>]*> nop
-+0+4e6c <[^>]*> nop
-+0+4e70 <[^>]*> nop
-+0+4e74 <[^>]*> nop
-+0+4e78 <[^>]*> nop
-+0+4e7c <[^>]*> nop
-+0+4e80 <[^>]*> nop
-+0+4e84 <[^>]*> nop
-+0+4e88 <[^>]*> nop
-+0+4e8c <[^>]*> nop
-+0+4e90 <[^>]*> nop
-+0+4e94 <[^>]*> nop
-+0+4e98 <[^>]*> nop
-+0+4e9c <[^>]*> nop
-+0+4ea0 <[^>]*> nop
-+0+4ea4 <[^>]*> nop
-+0+4ea8 <[^>]*> nop
-+0+4eac <[^>]*> nop
-+0+4eb0 <[^>]*> nop
-+0+4eb4 <[^>]*> nop
-+0+4eb8 <[^>]*> nop
-+0+4ebc <[^>]*> nop
-+0+4ec0 <[^>]*> nop
-+0+4ec4 <[^>]*> nop
-+0+4ec8 <[^>]*> nop
-+0+4ecc <[^>]*> nop
-+0+4ed0 <[^>]*> nop
-+0+4ed4 <[^>]*> nop
-+0+4ed8 <[^>]*> nop
-+0+4edc <[^>]*> nop
-+0+4ee0 <[^>]*> nop
-+0+4ee4 <[^>]*> nop
-+0+4ee8 <[^>]*> nop
-+0+4eec <[^>]*> nop
-+0+4ef0 <[^>]*> nop
-+0+4ef4 <[^>]*> nop
-+0+4ef8 <[^>]*> nop
-+0+4efc <[^>]*> nop
-+0+4f00 <[^>]*> nop
-+0+4f04 <[^>]*> nop
-+0+4f08 <[^>]*> nop
-+0+4f0c <[^>]*> nop
-+0+4f10 <[^>]*> nop
-+0+4f14 <[^>]*> nop
-+0+4f18 <[^>]*> nop
-+0+4f1c <[^>]*> nop
-+0+4f20 <[^>]*> nop
-+0+4f24 <[^>]*> nop
-+0+4f28 <[^>]*> nop
-+0+4f2c <[^>]*> nop
-+0+4f30 <[^>]*> nop
-+0+4f34 <[^>]*> nop
-+0+4f38 <[^>]*> nop
-+0+4f3c <[^>]*> nop
-+0+4f40 <[^>]*> nop
-+0+4f44 <[^>]*> nop
-+0+4f48 <[^>]*> nop
-+0+4f4c <[^>]*> nop
-+0+4f50 <[^>]*> nop
-+0+4f54 <[^>]*> nop
-+0+4f58 <[^>]*> nop
-+0+4f5c <[^>]*> nop
-+0+4f60 <[^>]*> nop
-+0+4f64 <[^>]*> nop
-+0+4f68 <[^>]*> nop
-+0+4f6c <[^>]*> nop
-+0+4f70 <[^>]*> nop
-+0+4f74 <[^>]*> nop
-+0+4f78 <[^>]*> nop
-+0+4f7c <[^>]*> nop
-+0+4f80 <[^>]*> nop
-+0+4f84 <[^>]*> nop
-+0+4f88 <[^>]*> nop
-+0+4f8c <[^>]*> nop
-+0+4f90 <[^>]*> nop
-+0+4f94 <[^>]*> nop
-+0+4f98 <[^>]*> nop
-+0+4f9c <[^>]*> nop
-+0+4fa0 <[^>]*> nop
-+0+4fa4 <[^>]*> nop
-+0+4fa8 <[^>]*> nop
-+0+4fac <[^>]*> nop
-+0+4fb0 <[^>]*> nop
-+0+4fb4 <[^>]*> nop
-+0+4fb8 <[^>]*> nop
-+0+4fbc <[^>]*> nop
-+0+4fc0 <[^>]*> nop
-+0+4fc4 <[^>]*> nop
-+0+4fc8 <[^>]*> nop
-+0+4fcc <[^>]*> nop
-+0+4fd0 <[^>]*> nop
-+0+4fd4 <[^>]*> nop
-+0+4fd8 <[^>]*> nop
-+0+4fdc <[^>]*> nop
-+0+4fe0 <[^>]*> nop
-+0+4fe4 <[^>]*> nop
-+0+4fe8 <[^>]*> nop
-+0+4fec <[^>]*> nop
-+0+4ff0 <[^>]*> nop
-+0+4ff4 <[^>]*> nop
-+0+4ff8 <[^>]*> nop
-+0+4ffc <[^>]*> nop
-+0+5000 <[^>]*> nop
-+0+5004 <[^>]*> nop
-+0+5008 <[^>]*> nop
-+0+500c <[^>]*> nop
-+0+5010 <[^>]*> nop
-+0+5014 <[^>]*> nop
-+0+5018 <[^>]*> nop
-+0+501c <[^>]*> nop
-+0+5020 <[^>]*> nop
-+0+5024 <[^>]*> nop
-+0+5028 <[^>]*> nop
-+0+502c <[^>]*> nop
-+0+5030 <[^>]*> nop
-+0+5034 <[^>]*> nop
-+0+5038 <[^>]*> nop
-+0+503c <[^>]*> nop
-+0+5040 <[^>]*> nop
-+0+5044 <[^>]*> nop
-+0+5048 <[^>]*> nop
-+0+504c <[^>]*> nop
-+0+5050 <[^>]*> nop
-+0+5054 <[^>]*> nop
-+0+5058 <[^>]*> nop
-+0+505c <[^>]*> nop
-+0+5060 <[^>]*> nop
-+0+5064 <[^>]*> nop
-+0+5068 <[^>]*> nop
-+0+506c <[^>]*> nop
-+0+5070 <[^>]*> nop
-+0+5074 <[^>]*> nop
-+0+5078 <[^>]*> nop
-+0+507c <[^>]*> nop
-+0+5080 <[^>]*> nop
-+0+5084 <[^>]*> nop
-+0+5088 <[^>]*> nop
-+0+508c <[^>]*> nop
-+0+5090 <[^>]*> nop
-+0+5094 <[^>]*> nop
-+0+5098 <[^>]*> nop
-+0+509c <[^>]*> nop
-+0+50a0 <[^>]*> nop
-+0+50a4 <[^>]*> nop
-+0+50a8 <[^>]*> nop
-+0+50ac <[^>]*> nop
-+0+50b0 <[^>]*> nop
-+0+50b4 <[^>]*> nop
-+0+50b8 <[^>]*> nop
-+0+50bc <[^>]*> nop
-+0+50c0 <[^>]*> nop
-+0+50c4 <[^>]*> nop
-+0+50c8 <[^>]*> nop
-+0+50cc <[^>]*> nop
-+0+50d0 <[^>]*> nop
-+0+50d4 <[^>]*> nop
-+0+50d8 <[^>]*> nop
-+0+50dc <[^>]*> nop
-+0+50e0 <[^>]*> nop
-+0+50e4 <[^>]*> nop
-+0+50e8 <[^>]*> nop
-+0+50ec <[^>]*> nop
-+0+50f0 <[^>]*> nop
-+0+50f4 <[^>]*> nop
-+0+50f8 <[^>]*> nop
-+0+50fc <[^>]*> nop
-+0+5100 <[^>]*> nop
-+0+5104 <[^>]*> nop
-+0+5108 <[^>]*> nop
-+0+510c <[^>]*> nop
-+0+5110 <[^>]*> nop
-+0+5114 <[^>]*> nop
-+0+5118 <[^>]*> nop
-+0+511c <[^>]*> nop
-+0+5120 <[^>]*> nop
-+0+5124 <[^>]*> nop
-+0+5128 <[^>]*> nop
-+0+512c <[^>]*> nop
-+0+5130 <[^>]*> nop
-+0+5134 <[^>]*> nop
-+0+5138 <[^>]*> nop
-+0+513c <[^>]*> nop
-+0+5140 <[^>]*> nop
-+0+5144 <[^>]*> nop
-+0+5148 <[^>]*> nop
-+0+514c <[^>]*> nop
-+0+5150 <[^>]*> nop
-+0+5154 <[^>]*> nop
-+0+5158 <[^>]*> nop
-+0+515c <[^>]*> nop
-+0+5160 <[^>]*> nop
-+0+5164 <[^>]*> nop
-+0+5168 <[^>]*> nop
-+0+516c <[^>]*> nop
-+0+5170 <[^>]*> nop
-+0+5174 <[^>]*> nop
-+0+5178 <[^>]*> nop
-+0+517c <[^>]*> nop
-+0+5180 <[^>]*> nop
-+0+5184 <[^>]*> nop
-+0+5188 <[^>]*> nop
-+0+518c <[^>]*> nop
-+0+5190 <[^>]*> nop
-+0+5194 <[^>]*> nop
-+0+5198 <[^>]*> nop
-+0+519c <[^>]*> nop
-+0+51a0 <[^>]*> nop
-+0+51a4 <[^>]*> nop
-+0+51a8 <[^>]*> nop
-+0+51ac <[^>]*> nop
-+0+51b0 <[^>]*> nop
-+0+51b4 <[^>]*> nop
-+0+51b8 <[^>]*> nop
-+0+51bc <[^>]*> nop
-+0+51c0 <[^>]*> nop
-+0+51c4 <[^>]*> nop
-+0+51c8 <[^>]*> nop
-+0+51cc <[^>]*> nop
-+0+51d0 <[^>]*> nop
-+0+51d4 <[^>]*> nop
-+0+51d8 <[^>]*> nop
-+0+51dc <[^>]*> nop
-+0+51e0 <[^>]*> nop
-+0+51e4 <[^>]*> nop
-+0+51e8 <[^>]*> nop
-+0+51ec <[^>]*> nop
-+0+51f0 <[^>]*> nop
-+0+51f4 <[^>]*> nop
-+0+51f8 <[^>]*> nop
-+0+51fc <[^>]*> nop
-+0+5200 <[^>]*> nop
-+0+5204 <[^>]*> nop
-+0+5208 <[^>]*> nop
-+0+520c <[^>]*> nop
-+0+5210 <[^>]*> nop
-+0+5214 <[^>]*> nop
-+0+5218 <[^>]*> nop
-+0+521c <[^>]*> nop
-+0+5220 <[^>]*> nop
-+0+5224 <[^>]*> nop
-+0+5228 <[^>]*> nop
-+0+522c <[^>]*> nop
-+0+5230 <[^>]*> nop
-+0+5234 <[^>]*> nop
-+0+5238 <[^>]*> nop
-+0+523c <[^>]*> nop
-+0+5240 <[^>]*> nop
-+0+5244 <[^>]*> nop
-+0+5248 <[^>]*> nop
-+0+524c <[^>]*> nop
-+0+5250 <[^>]*> nop
-+0+5254 <[^>]*> nop
-+0+5258 <[^>]*> nop
-+0+525c <[^>]*> nop
-+0+5260 <[^>]*> nop
-+0+5264 <[^>]*> nop
-+0+5268 <[^>]*> nop
-+0+526c <[^>]*> nop
-+0+5270 <[^>]*> nop
-+0+5274 <[^>]*> nop
-+0+5278 <[^>]*> nop
-+0+527c <[^>]*> nop
-+0+5280 <[^>]*> nop
-+0+5284 <[^>]*> nop
-+0+5288 <[^>]*> nop
-+0+528c <[^>]*> nop
-+0+5290 <[^>]*> nop
-+0+5294 <[^>]*> nop
-+0+5298 <[^>]*> nop
-+0+529c <[^>]*> nop
-+0+52a0 <[^>]*> nop
-+0+52a4 <[^>]*> nop
-+0+52a8 <[^>]*> nop
-+0+52ac <[^>]*> nop
-+0+52b0 <[^>]*> nop
-+0+52b4 <[^>]*> nop
-+0+52b8 <[^>]*> nop
-+0+52bc <[^>]*> nop
-+0+52c0 <[^>]*> nop
-+0+52c4 <[^>]*> nop
-+0+52c8 <[^>]*> nop
-+0+52cc <[^>]*> nop
-+0+52d0 <[^>]*> nop
-+0+52d4 <[^>]*> nop
-+0+52d8 <[^>]*> nop
-+0+52dc <[^>]*> nop
-+0+52e0 <[^>]*> nop
-+0+52e4 <[^>]*> nop
-+0+52e8 <[^>]*> nop
-+0+52ec <[^>]*> nop
-+0+52f0 <[^>]*> nop
-+0+52f4 <[^>]*> nop
-+0+52f8 <[^>]*> nop
-+0+52fc <[^>]*> nop
-+0+5300 <[^>]*> nop
-+0+5304 <[^>]*> nop
-+0+5308 <[^>]*> nop
-+0+530c <[^>]*> nop
-+0+5310 <[^>]*> nop
-+0+5314 <[^>]*> nop
-+0+5318 <[^>]*> nop
-+0+531c <[^>]*> nop
-+0+5320 <[^>]*> nop
-+0+5324 <[^>]*> nop
-+0+5328 <[^>]*> nop
-+0+532c <[^>]*> nop
-+0+5330 <[^>]*> nop
-+0+5334 <[^>]*> nop
-+0+5338 <[^>]*> nop
-+0+533c <[^>]*> nop
-+0+5340 <[^>]*> nop
-+0+5344 <[^>]*> nop
-+0+5348 <[^>]*> nop
-+0+534c <[^>]*> nop
-+0+5350 <[^>]*> nop
-+0+5354 <[^>]*> nop
-+0+5358 <[^>]*> nop
-+0+535c <[^>]*> nop
-+0+5360 <[^>]*> nop
-+0+5364 <[^>]*> nop
-+0+5368 <[^>]*> nop
-+0+536c <[^>]*> nop
-+0+5370 <[^>]*> nop
-+0+5374 <[^>]*> nop
-+0+5378 <[^>]*> nop
-+0+537c <[^>]*> nop
-+0+5380 <[^>]*> nop
-+0+5384 <[^>]*> nop
-+0+5388 <[^>]*> nop
-+0+538c <[^>]*> nop
-+0+5390 <[^>]*> nop
-+0+5394 <[^>]*> nop
-+0+5398 <[^>]*> nop
-+0+539c <[^>]*> nop
-+0+53a0 <[^>]*> nop
-+0+53a4 <[^>]*> nop
-+0+53a8 <[^>]*> nop
-+0+53ac <[^>]*> nop
-+0+53b0 <[^>]*> nop
-+0+53b4 <[^>]*> nop
-+0+53b8 <[^>]*> nop
-+0+53bc <[^>]*> nop
-+0+53c0 <[^>]*> nop
-+0+53c4 <[^>]*> nop
-+0+53c8 <[^>]*> nop
-+0+53cc <[^>]*> nop
-+0+53d0 <[^>]*> nop
-+0+53d4 <[^>]*> nop
-+0+53d8 <[^>]*> nop
-+0+53dc <[^>]*> nop
-+0+53e0 <[^>]*> nop
-+0+53e4 <[^>]*> nop
-+0+53e8 <[^>]*> nop
-+0+53ec <[^>]*> nop
-+0+53f0 <[^>]*> nop
-+0+53f4 <[^>]*> nop
-+0+53f8 <[^>]*> nop
-+0+53fc <[^>]*> nop
-+0+5400 <[^>]*> nop
-+0+5404 <[^>]*> nop
-+0+5408 <[^>]*> nop
-+0+540c <[^>]*> nop
-+0+5410 <[^>]*> nop
-+0+5414 <[^>]*> nop
-+0+5418 <[^>]*> nop
-+0+541c <[^>]*> nop
-+0+5420 <[^>]*> nop
-+0+5424 <[^>]*> nop
-+0+5428 <[^>]*> nop
-+0+542c <[^>]*> nop
-+0+5430 <[^>]*> nop
-+0+5434 <[^>]*> nop
-+0+5438 <[^>]*> nop
-+0+543c <[^>]*> nop
-+0+5440 <[^>]*> nop
-+0+5444 <[^>]*> nop
-+0+5448 <[^>]*> nop
-+0+544c <[^>]*> nop
-+0+5450 <[^>]*> nop
-+0+5454 <[^>]*> nop
-+0+5458 <[^>]*> nop
-+0+545c <[^>]*> nop
-+0+5460 <[^>]*> nop
-+0+5464 <[^>]*> nop
-+0+5468 <[^>]*> nop
-+0+546c <[^>]*> nop
-+0+5470 <[^>]*> nop
-+0+5474 <[^>]*> nop
-+0+5478 <[^>]*> nop
-+0+547c <[^>]*> nop
-+0+5480 <[^>]*> nop
-+0+5484 <[^>]*> nop
-+0+5488 <[^>]*> nop
-+0+548c <[^>]*> nop
-+0+5490 <[^>]*> nop
-+0+5494 <[^>]*> nop
-+0+5498 <[^>]*> nop
-+0+549c <[^>]*> nop
-+0+54a0 <[^>]*> nop
-+0+54a4 <[^>]*> nop
-+0+54a8 <[^>]*> nop
-+0+54ac <[^>]*> nop
-+0+54b0 <[^>]*> nop
-+0+54b4 <[^>]*> nop
-+0+54b8 <[^>]*> nop
-+0+54bc <[^>]*> nop
-+0+54c0 <[^>]*> nop
-+0+54c4 <[^>]*> nop
-+0+54c8 <[^>]*> nop
-+0+54cc <[^>]*> nop
-+0+54d0 <[^>]*> nop
-+0+54d4 <[^>]*> nop
-+0+54d8 <[^>]*> nop
-+0+54dc <[^>]*> nop
-+0+54e0 <[^>]*> nop
-+0+54e4 <[^>]*> nop
-+0+54e8 <[^>]*> nop
-+0+54ec <[^>]*> nop
-+0+54f0 <[^>]*> nop
-+0+54f4 <[^>]*> nop
-+0+54f8 <[^>]*> nop
-+0+54fc <[^>]*> nop
-+0+5500 <[^>]*> nop
-+0+5504 <[^>]*> nop
-+0+5508 <[^>]*> nop
-+0+550c <[^>]*> nop
-+0+5510 <[^>]*> nop
-+0+5514 <[^>]*> nop
-+0+5518 <[^>]*> nop
-+0+551c <[^>]*> nop
-+0+5520 <[^>]*> nop
-+0+5524 <[^>]*> nop
-+0+5528 <[^>]*> nop
-+0+552c <[^>]*> nop
-+0+5530 <[^>]*> nop
-+0+5534 <[^>]*> nop
-+0+5538 <[^>]*> nop
-+0+553c <[^>]*> nop
-+0+5540 <[^>]*> nop
-+0+5544 <[^>]*> nop
-+0+5548 <[^>]*> nop
-+0+554c <[^>]*> nop
-+0+5550 <[^>]*> nop
-+0+5554 <[^>]*> nop
-+0+5558 <[^>]*> nop
-+0+555c <[^>]*> nop
-+0+5560 <[^>]*> nop
-+0+5564 <[^>]*> nop
-+0+5568 <[^>]*> nop
-+0+556c <[^>]*> nop
-+0+5570 <[^>]*> nop
-+0+5574 <[^>]*> nop
-+0+5578 <[^>]*> nop
-+0+557c <[^>]*> nop
-+0+5580 <[^>]*> nop
-+0+5584 <[^>]*> nop
-+0+5588 <[^>]*> nop
-+0+558c <[^>]*> nop
-+0+5590 <[^>]*> nop
-+0+5594 <[^>]*> nop
-+0+5598 <[^>]*> nop
-+0+559c <[^>]*> nop
-+0+55a0 <[^>]*> nop
-+0+55a4 <[^>]*> nop
-+0+55a8 <[^>]*> nop
-+0+55ac <[^>]*> nop
-+0+55b0 <[^>]*> nop
-+0+55b4 <[^>]*> nop
-+0+55b8 <[^>]*> nop
-+0+55bc <[^>]*> nop
-+0+55c0 <[^>]*> nop
-+0+55c4 <[^>]*> nop
-+0+55c8 <[^>]*> nop
-+0+55cc <[^>]*> nop
-+0+55d0 <[^>]*> nop
-+0+55d4 <[^>]*> nop
-+0+55d8 <[^>]*> nop
-+0+55dc <[^>]*> nop
-+0+55e0 <[^>]*> nop
-+0+55e4 <[^>]*> nop
-+0+55e8 <[^>]*> nop
-+0+55ec <[^>]*> nop
-+0+55f0 <[^>]*> nop
-+0+55f4 <[^>]*> nop
-+0+55f8 <[^>]*> nop
-+0+55fc <[^>]*> nop
-+0+5600 <[^>]*> nop
-+0+5604 <[^>]*> nop
-+0+5608 <[^>]*> nop
-+0+560c <[^>]*> nop
-+0+5610 <[^>]*> nop
-+0+5614 <[^>]*> nop
-+0+5618 <[^>]*> nop
-+0+561c <[^>]*> nop
-+0+5620 <[^>]*> nop
-+0+5624 <[^>]*> nop
-+0+5628 <[^>]*> nop
-+0+562c <[^>]*> nop
-+0+5630 <[^>]*> nop
-+0+5634 <[^>]*> nop
-+0+5638 <[^>]*> nop
-+0+563c <[^>]*> nop
-+0+5640 <[^>]*> nop
-+0+5644 <[^>]*> nop
-+0+5648 <[^>]*> nop
-+0+564c <[^>]*> nop
-+0+5650 <[^>]*> nop
-+0+5654 <[^>]*> nop
-+0+5658 <[^>]*> nop
-+0+565c <[^>]*> nop
-+0+5660 <[^>]*> nop
-+0+5664 <[^>]*> nop
-+0+5668 <[^>]*> nop
-+0+566c <[^>]*> nop
-+0+5670 <[^>]*> nop
-+0+5674 <[^>]*> nop
-+0+5678 <[^>]*> nop
-+0+567c <[^>]*> nop
-+0+5680 <[^>]*> nop
-+0+5684 <[^>]*> nop
-+0+5688 <[^>]*> nop
-+0+568c <[^>]*> nop
-+0+5690 <[^>]*> nop
-+0+5694 <[^>]*> nop
-+0+5698 <[^>]*> nop
-+0+569c <[^>]*> nop
-+0+56a0 <[^>]*> nop
-+0+56a4 <[^>]*> nop
-+0+56a8 <[^>]*> nop
-+0+56ac <[^>]*> nop
-+0+56b0 <[^>]*> nop
-+0+56b4 <[^>]*> nop
-+0+56b8 <[^>]*> nop
-+0+56bc <[^>]*> nop
-+0+56c0 <[^>]*> nop
-+0+56c4 <[^>]*> nop
-+0+56c8 <[^>]*> nop
-+0+56cc <[^>]*> nop
-+0+56d0 <[^>]*> nop
-+0+56d4 <[^>]*> nop
-+0+56d8 <[^>]*> nop
-+0+56dc <[^>]*> nop
-+0+56e0 <[^>]*> nop
-+0+56e4 <[^>]*> nop
-+0+56e8 <[^>]*> nop
-+0+56ec <[^>]*> nop
-+0+56f0 <[^>]*> nop
-+0+56f4 <[^>]*> nop
-+0+56f8 <[^>]*> nop
-+0+56fc <[^>]*> nop
-+0+5700 <[^>]*> nop
-+0+5704 <[^>]*> nop
-+0+5708 <[^>]*> nop
-+0+570c <[^>]*> nop
-+0+5710 <[^>]*> nop
-+0+5714 <[^>]*> nop
-+0+5718 <[^>]*> nop
-+0+571c <[^>]*> nop
-+0+5720 <[^>]*> nop
-+0+5724 <[^>]*> nop
-+0+5728 <[^>]*> nop
-+0+572c <[^>]*> nop
-+0+5730 <[^>]*> nop
-+0+5734 <[^>]*> nop
-+0+5738 <[^>]*> nop
-+0+573c <[^>]*> nop
-+0+5740 <[^>]*> nop
-+0+5744 <[^>]*> nop
-+0+5748 <[^>]*> nop
-+0+574c <[^>]*> nop
-+0+5750 <[^>]*> nop
-+0+5754 <[^>]*> nop
-+0+5758 <[^>]*> nop
-+0+575c <[^>]*> nop
-+0+5760 <[^>]*> nop
-+0+5764 <[^>]*> nop
-+0+5768 <[^>]*> nop
-+0+576c <[^>]*> nop
-+0+5770 <[^>]*> nop
-+0+5774 <[^>]*> nop
-+0+5778 <[^>]*> nop
-+0+577c <[^>]*> nop
-+0+5780 <[^>]*> nop
-+0+5784 <[^>]*> nop
-+0+5788 <[^>]*> nop
-+0+578c <[^>]*> nop
-+0+5790 <[^>]*> nop
-+0+5794 <[^>]*> nop
-+0+5798 <[^>]*> nop
-+0+579c <[^>]*> nop
-+0+57a0 <[^>]*> nop
-+0+57a4 <[^>]*> nop
-+0+57a8 <[^>]*> nop
-+0+57ac <[^>]*> nop
-+0+57b0 <[^>]*> nop
-+0+57b4 <[^>]*> nop
-+0+57b8 <[^>]*> nop
-+0+57bc <[^>]*> nop
-+0+57c0 <[^>]*> nop
-+0+57c4 <[^>]*> nop
-+0+57c8 <[^>]*> nop
-+0+57cc <[^>]*> nop
-+0+57d0 <[^>]*> nop
-+0+57d4 <[^>]*> nop
-+0+57d8 <[^>]*> nop
-+0+57dc <[^>]*> nop
-+0+57e0 <[^>]*> nop
-+0+57e4 <[^>]*> nop
-+0+57e8 <[^>]*> nop
-+0+57ec <[^>]*> nop
-+0+57f0 <[^>]*> nop
-+0+57f4 <[^>]*> nop
-+0+57f8 <[^>]*> nop
-+0+57fc <[^>]*> nop
-+0+5800 <[^>]*> nop
-+0+5804 <[^>]*> nop
-+0+5808 <[^>]*> nop
-+0+580c <[^>]*> nop
-+0+5810 <[^>]*> nop
-+0+5814 <[^>]*> nop
-+0+5818 <[^>]*> nop
-+0+581c <[^>]*> nop
-+0+5820 <[^>]*> nop
-+0+5824 <[^>]*> nop
-+0+5828 <[^>]*> nop
-+0+582c <[^>]*> nop
-+0+5830 <[^>]*> nop
-+0+5834 <[^>]*> nop
-+0+5838 <[^>]*> nop
-+0+583c <[^>]*> nop
-+0+5840 <[^>]*> nop
-+0+5844 <[^>]*> nop
-+0+5848 <[^>]*> nop
-+0+584c <[^>]*> nop
-+0+5850 <[^>]*> nop
-+0+5854 <[^>]*> nop
-+0+5858 <[^>]*> nop
-+0+585c <[^>]*> nop
-+0+5860 <[^>]*> nop
-+0+5864 <[^>]*> nop
-+0+5868 <[^>]*> nop
-+0+586c <[^>]*> nop
-+0+5870 <[^>]*> nop
-+0+5874 <[^>]*> nop
-+0+5878 <[^>]*> nop
-+0+587c <[^>]*> nop
-+0+5880 <[^>]*> nop
-+0+5884 <[^>]*> nop
-+0+5888 <[^>]*> nop
-+0+588c <[^>]*> nop
-+0+5890 <[^>]*> nop
-+0+5894 <[^>]*> nop
-+0+5898 <[^>]*> nop
-+0+589c <[^>]*> nop
-+0+58a0 <[^>]*> nop
-+0+58a4 <[^>]*> nop
-+0+58a8 <[^>]*> nop
-+0+58ac <[^>]*> nop
-+0+58b0 <[^>]*> nop
-+0+58b4 <[^>]*> nop
-+0+58b8 <[^>]*> nop
-+0+58bc <[^>]*> nop
-+0+58c0 <[^>]*> nop
-+0+58c4 <[^>]*> nop
-+0+58c8 <[^>]*> nop
-+0+58cc <[^>]*> nop
-+0+58d0 <[^>]*> nop
-+0+58d4 <[^>]*> nop
-+0+58d8 <[^>]*> nop
-+0+58dc <[^>]*> nop
-+0+58e0 <[^>]*> nop
-+0+58e4 <[^>]*> nop
-+0+58e8 <[^>]*> nop
-+0+58ec <[^>]*> nop
-+0+58f0 <[^>]*> nop
-+0+58f4 <[^>]*> nop
-+0+58f8 <[^>]*> nop
-+0+58fc <[^>]*> nop
-+0+5900 <[^>]*> nop
-+0+5904 <[^>]*> nop
-+0+5908 <[^>]*> nop
-+0+590c <[^>]*> nop
-+0+5910 <[^>]*> nop
-+0+5914 <[^>]*> nop
-+0+5918 <[^>]*> nop
-+0+591c <[^>]*> nop
-+0+5920 <[^>]*> nop
-+0+5924 <[^>]*> nop
-+0+5928 <[^>]*> nop
-+0+592c <[^>]*> nop
-+0+5930 <[^>]*> nop
-+0+5934 <[^>]*> nop
-+0+5938 <[^>]*> nop
-+0+593c <[^>]*> nop
-+0+5940 <[^>]*> nop
-+0+5944 <[^>]*> nop
-+0+5948 <[^>]*> nop
-+0+594c <[^>]*> nop
-+0+5950 <[^>]*> nop
-+0+5954 <[^>]*> nop
-+0+5958 <[^>]*> nop
-+0+595c <[^>]*> nop
-+0+5960 <[^>]*> nop
-+0+5964 <[^>]*> nop
-+0+5968 <[^>]*> nop
-+0+596c <[^>]*> nop
-+0+5970 <[^>]*> nop
-+0+5974 <[^>]*> nop
-+0+5978 <[^>]*> nop
-+0+597c <[^>]*> nop
-+0+5980 <[^>]*> nop
-+0+5984 <[^>]*> nop
-+0+5988 <[^>]*> nop
-+0+598c <[^>]*> nop
-+0+5990 <[^>]*> nop
-+0+5994 <[^>]*> nop
-+0+5998 <[^>]*> nop
-+0+599c <[^>]*> nop
-+0+59a0 <[^>]*> nop
-+0+59a4 <[^>]*> nop
-+0+59a8 <[^>]*> nop
-+0+59ac <[^>]*> nop
-+0+59b0 <[^>]*> nop
-+0+59b4 <[^>]*> nop
-+0+59b8 <[^>]*> nop
-+0+59bc <[^>]*> nop
-+0+59c0 <[^>]*> nop
-+0+59c4 <[^>]*> nop
-+0+59c8 <[^>]*> nop
-+0+59cc <[^>]*> nop
-+0+59d0 <[^>]*> nop
-+0+59d4 <[^>]*> nop
-+0+59d8 <[^>]*> nop
-+0+59dc <[^>]*> nop
-+0+59e0 <[^>]*> nop
-+0+59e4 <[^>]*> nop
-+0+59e8 <[^>]*> nop
-+0+59ec <[^>]*> nop
-+0+59f0 <[^>]*> nop
-+0+59f4 <[^>]*> nop
-+0+59f8 <[^>]*> nop
-+0+59fc <[^>]*> nop
-+0+5a00 <[^>]*> nop
-+0+5a04 <[^>]*> nop
-+0+5a08 <[^>]*> nop
-+0+5a0c <[^>]*> nop
-+0+5a10 <[^>]*> nop
-+0+5a14 <[^>]*> nop
-+0+5a18 <[^>]*> nop
-+0+5a1c <[^>]*> nop
-+0+5a20 <[^>]*> nop
-+0+5a24 <[^>]*> nop
-+0+5a28 <[^>]*> nop
-+0+5a2c <[^>]*> nop
-+0+5a30 <[^>]*> nop
-+0+5a34 <[^>]*> nop
-+0+5a38 <[^>]*> nop
-+0+5a3c <[^>]*> nop
-+0+5a40 <[^>]*> nop
-+0+5a44 <[^>]*> nop
-+0+5a48 <[^>]*> nop
-+0+5a4c <[^>]*> nop
-+0+5a50 <[^>]*> nop
-+0+5a54 <[^>]*> nop
-+0+5a58 <[^>]*> nop
-+0+5a5c <[^>]*> nop
-+0+5a60 <[^>]*> nop
-+0+5a64 <[^>]*> nop
-+0+5a68 <[^>]*> nop
-+0+5a6c <[^>]*> nop
-+0+5a70 <[^>]*> nop
-+0+5a74 <[^>]*> nop
-+0+5a78 <[^>]*> nop
-+0+5a7c <[^>]*> nop
-+0+5a80 <[^>]*> nop
-+0+5a84 <[^>]*> nop
-+0+5a88 <[^>]*> nop
-+0+5a8c <[^>]*> nop
-+0+5a90 <[^>]*> nop
-+0+5a94 <[^>]*> nop
-+0+5a98 <[^>]*> nop
-+0+5a9c <[^>]*> nop
-+0+5aa0 <[^>]*> nop
-+0+5aa4 <[^>]*> nop
-+0+5aa8 <[^>]*> nop
-+0+5aac <[^>]*> nop
-+0+5ab0 <[^>]*> nop
-+0+5ab4 <[^>]*> nop
-+0+5ab8 <[^>]*> nop
-+0+5abc <[^>]*> nop
-+0+5ac0 <[^>]*> nop
-+0+5ac4 <[^>]*> nop
-+0+5ac8 <[^>]*> nop
-+0+5acc <[^>]*> nop
-+0+5ad0 <[^>]*> nop
-+0+5ad4 <[^>]*> nop
-+0+5ad8 <[^>]*> nop
-+0+5adc <[^>]*> nop
-+0+5ae0 <[^>]*> nop
-+0+5ae4 <[^>]*> nop
-+0+5ae8 <[^>]*> nop
-+0+5aec <[^>]*> nop
-+0+5af0 <[^>]*> nop
-+0+5af4 <[^>]*> nop
-+0+5af8 <[^>]*> nop
-+0+5afc <[^>]*> nop
-+0+5b00 <[^>]*> nop
-+0+5b04 <[^>]*> nop
-+0+5b08 <[^>]*> nop
-+0+5b0c <[^>]*> nop
-+0+5b10 <[^>]*> nop
-+0+5b14 <[^>]*> nop
-+0+5b18 <[^>]*> nop
-+0+5b1c <[^>]*> nop
-+0+5b20 <[^>]*> nop
-+0+5b24 <[^>]*> nop
-+0+5b28 <[^>]*> nop
-+0+5b2c <[^>]*> nop
-+0+5b30 <[^>]*> nop
-+0+5b34 <[^>]*> nop
-+0+5b38 <[^>]*> nop
-+0+5b3c <[^>]*> nop
-+0+5b40 <[^>]*> nop
-+0+5b44 <[^>]*> nop
-+0+5b48 <[^>]*> nop
-+0+5b4c <[^>]*> nop
-+0+5b50 <[^>]*> nop
-+0+5b54 <[^>]*> nop
-+0+5b58 <[^>]*> nop
-+0+5b5c <[^>]*> nop
-+0+5b60 <[^>]*> nop
-+0+5b64 <[^>]*> nop
-+0+5b68 <[^>]*> nop
-+0+5b6c <[^>]*> nop
-+0+5b70 <[^>]*> nop
-+0+5b74 <[^>]*> nop
-+0+5b78 <[^>]*> nop
-+0+5b7c <[^>]*> nop
-+0+5b80 <[^>]*> nop
-+0+5b84 <[^>]*> nop
-+0+5b88 <[^>]*> nop
-+0+5b8c <[^>]*> nop
-+0+5b90 <[^>]*> nop
-+0+5b94 <[^>]*> nop
-+0+5b98 <[^>]*> nop
-+0+5b9c <[^>]*> nop
-+0+5ba0 <[^>]*> nop
-+0+5ba4 <[^>]*> nop
-+0+5ba8 <[^>]*> nop
-+0+5bac <[^>]*> nop
-+0+5bb0 <[^>]*> nop
-+0+5bb4 <[^>]*> nop
-+0+5bb8 <[^>]*> nop
-+0+5bbc <[^>]*> nop
-+0+5bc0 <[^>]*> nop
-+0+5bc4 <[^>]*> nop
-+0+5bc8 <[^>]*> nop
-+0+5bcc <[^>]*> nop
-+0+5bd0 <[^>]*> nop
-+0+5bd4 <[^>]*> nop
-+0+5bd8 <[^>]*> nop
-+0+5bdc <[^>]*> nop
-+0+5be0 <[^>]*> nop
-+0+5be4 <[^>]*> nop
-+0+5be8 <[^>]*> nop
-+0+5bec <[^>]*> nop
-+0+5bf0 <[^>]*> nop
-+0+5bf4 <[^>]*> nop
-+0+5bf8 <[^>]*> nop
-+0+5bfc <[^>]*> nop
-+0+5c00 <[^>]*> nop
-+0+5c04 <[^>]*> nop
-+0+5c08 <[^>]*> nop
-+0+5c0c <[^>]*> nop
-+0+5c10 <[^>]*> nop
-+0+5c14 <[^>]*> nop
-+0+5c18 <[^>]*> nop
-+0+5c1c <[^>]*> nop
-+0+5c20 <[^>]*> nop
-+0+5c24 <[^>]*> nop
-+0+5c28 <[^>]*> nop
-+0+5c2c <[^>]*> nop
-+0+5c30 <[^>]*> nop
-+0+5c34 <[^>]*> nop
-+0+5c38 <[^>]*> nop
-+0+5c3c <[^>]*> nop
-+0+5c40 <[^>]*> nop
-+0+5c44 <[^>]*> nop
-+0+5c48 <[^>]*> nop
-+0+5c4c <[^>]*> nop
-+0+5c50 <[^>]*> nop
-+0+5c54 <[^>]*> nop
-+0+5c58 <[^>]*> nop
-+0+5c5c <[^>]*> nop
-+0+5c60 <[^>]*> nop
-+0+5c64 <[^>]*> nop
-+0+5c68 <[^>]*> nop
-+0+5c6c <[^>]*> nop
-+0+5c70 <[^>]*> nop
-+0+5c74 <[^>]*> nop
-+0+5c78 <[^>]*> nop
-+0+5c7c <[^>]*> nop
-+0+5c80 <[^>]*> nop
-+0+5c84 <[^>]*> nop
-+0+5c88 <[^>]*> nop
-+0+5c8c <[^>]*> nop
-+0+5c90 <[^>]*> nop
-+0+5c94 <[^>]*> nop
-+0+5c98 <[^>]*> nop
-+0+5c9c <[^>]*> nop
-+0+5ca0 <[^>]*> nop
-+0+5ca4 <[^>]*> nop
-+0+5ca8 <[^>]*> nop
-+0+5cac <[^>]*> nop
-+0+5cb0 <[^>]*> nop
-+0+5cb4 <[^>]*> nop
-+0+5cb8 <[^>]*> nop
-+0+5cbc <[^>]*> nop
-+0+5cc0 <[^>]*> nop
-+0+5cc4 <[^>]*> nop
-+0+5cc8 <[^>]*> nop
-+0+5ccc <[^>]*> nop
-+0+5cd0 <[^>]*> nop
-+0+5cd4 <[^>]*> nop
-+0+5cd8 <[^>]*> nop
-+0+5cdc <[^>]*> nop
-+0+5ce0 <[^>]*> nop
-+0+5ce4 <[^>]*> nop
-+0+5ce8 <[^>]*> nop
-+0+5cec <[^>]*> nop
-+0+5cf0 <[^>]*> nop
-+0+5cf4 <[^>]*> nop
-+0+5cf8 <[^>]*> nop
-+0+5cfc <[^>]*> nop
-+0+5d00 <[^>]*> nop
-+0+5d04 <[^>]*> nop
-+0+5d08 <[^>]*> nop
-+0+5d0c <[^>]*> nop
-+0+5d10 <[^>]*> nop
-+0+5d14 <[^>]*> nop
-+0+5d18 <[^>]*> nop
-+0+5d1c <[^>]*> nop
-+0+5d20 <[^>]*> nop
-+0+5d24 <[^>]*> nop
-+0+5d28 <[^>]*> nop
-+0+5d2c <[^>]*> nop
-+0+5d30 <[^>]*> nop
-+0+5d34 <[^>]*> nop
-+0+5d38 <[^>]*> nop
-+0+5d3c <[^>]*> nop
-+0+5d40 <[^>]*> nop
-+0+5d44 <[^>]*> nop
-+0+5d48 <[^>]*> nop
-+0+5d4c <[^>]*> nop
-+0+5d50 <[^>]*> nop
-+0+5d54 <[^>]*> nop
-+0+5d58 <[^>]*> nop
-+0+5d5c <[^>]*> nop
-+0+5d60 <[^>]*> nop
-+0+5d64 <[^>]*> nop
-+0+5d68 <[^>]*> nop
-+0+5d6c <[^>]*> nop
-+0+5d70 <[^>]*> nop
-+0+5d74 <[^>]*> nop
-+0+5d78 <[^>]*> nop
-+0+5d7c <[^>]*> nop
-+0+5d80 <[^>]*> nop
-+0+5d84 <[^>]*> nop
-+0+5d88 <[^>]*> nop
-+0+5d8c <[^>]*> nop
-+0+5d90 <[^>]*> nop
-+0+5d94 <[^>]*> nop
-+0+5d98 <[^>]*> nop
-+0+5d9c <[^>]*> nop
-+0+5da0 <[^>]*> nop
-+0+5da4 <[^>]*> nop
-+0+5da8 <[^>]*> nop
-+0+5dac <[^>]*> nop
-+0+5db0 <[^>]*> nop
-+0+5db4 <[^>]*> nop
-+0+5db8 <[^>]*> nop
-+0+5dbc <[^>]*> nop
-+0+5dc0 <[^>]*> nop
-+0+5dc4 <[^>]*> nop
-+0+5dc8 <[^>]*> nop
-+0+5dcc <[^>]*> nop
-+0+5dd0 <[^>]*> nop
-+0+5dd4 <[^>]*> nop
-+0+5dd8 <[^>]*> nop
-+0+5ddc <[^>]*> nop
-+0+5de0 <[^>]*> nop
-+0+5de4 <[^>]*> nop
-+0+5de8 <[^>]*> nop
-+0+5dec <[^>]*> nop
-+0+5df0 <[^>]*> nop
-+0+5df4 <[^>]*> nop
-+0+5df8 <[^>]*> nop
-+0+5dfc <[^>]*> nop
-+0+5e00 <[^>]*> nop
-+0+5e04 <[^>]*> nop
-+0+5e08 <[^>]*> nop
-+0+5e0c <[^>]*> nop
-+0+5e10 <[^>]*> nop
-+0+5e14 <[^>]*> nop
-+0+5e18 <[^>]*> nop
-+0+5e1c <[^>]*> nop
-+0+5e20 <[^>]*> nop
-+0+5e24 <[^>]*> nop
-+0+5e28 <[^>]*> nop
-+0+5e2c <[^>]*> nop
-+0+5e30 <[^>]*> nop
-+0+5e34 <[^>]*> nop
-+0+5e38 <[^>]*> nop
-+0+5e3c <[^>]*> nop
-+0+5e40 <[^>]*> nop
-+0+5e44 <[^>]*> nop
-+0+5e48 <[^>]*> nop
-+0+5e4c <[^>]*> nop
-+0+5e50 <[^>]*> nop
-+0+5e54 <[^>]*> nop
-+0+5e58 <[^>]*> nop
-+0+5e5c <[^>]*> nop
-+0+5e60 <[^>]*> nop
-+0+5e64 <[^>]*> nop
-+0+5e68 <[^>]*> nop
-+0+5e6c <[^>]*> nop
-+0+5e70 <[^>]*> nop
-+0+5e74 <[^>]*> nop
-+0+5e78 <[^>]*> nop
-+0+5e7c <[^>]*> nop
-+0+5e80 <[^>]*> nop
-+0+5e84 <[^>]*> nop
-+0+5e88 <[^>]*> nop
-+0+5e8c <[^>]*> nop
-+0+5e90 <[^>]*> nop
-+0+5e94 <[^>]*> nop
-+0+5e98 <[^>]*> nop
-+0+5e9c <[^>]*> nop
-+0+5ea0 <[^>]*> nop
-+0+5ea4 <[^>]*> nop
-+0+5ea8 <[^>]*> nop
-+0+5eac <[^>]*> nop
-+0+5eb0 <[^>]*> nop
-+0+5eb4 <[^>]*> nop
-+0+5eb8 <[^>]*> nop
-+0+5ebc <[^>]*> nop
-+0+5ec0 <[^>]*> nop
-+0+5ec4 <[^>]*> nop
-+0+5ec8 <[^>]*> nop
-+0+5ecc <[^>]*> nop
-+0+5ed0 <[^>]*> nop
-+0+5ed4 <[^>]*> nop
-+0+5ed8 <[^>]*> nop
-+0+5edc <[^>]*> nop
-+0+5ee0 <[^>]*> nop
-+0+5ee4 <[^>]*> nop
-+0+5ee8 <[^>]*> nop
-+0+5eec <[^>]*> nop
-+0+5ef0 <[^>]*> nop
-+0+5ef4 <[^>]*> nop
-+0+5ef8 <[^>]*> nop
-+0+5efc <[^>]*> nop
-+0+5f00 <[^>]*> nop
-+0+5f04 <[^>]*> nop
-+0+5f08 <[^>]*> nop
-+0+5f0c <[^>]*> nop
-+0+5f10 <[^>]*> nop
-+0+5f14 <[^>]*> nop
-+0+5f18 <[^>]*> nop
-+0+5f1c <[^>]*> nop
-+0+5f20 <[^>]*> nop
-+0+5f24 <[^>]*> nop
-+0+5f28 <[^>]*> nop
-+0+5f2c <[^>]*> nop
-+0+5f30 <[^>]*> nop
-+0+5f34 <[^>]*> nop
-+0+5f38 <[^>]*> nop
-+0+5f3c <[^>]*> nop
-+0+5f40 <[^>]*> nop
-+0+5f44 <[^>]*> nop
-+0+5f48 <[^>]*> nop
-+0+5f4c <[^>]*> nop
-+0+5f50 <[^>]*> nop
-+0+5f54 <[^>]*> nop
-+0+5f58 <[^>]*> nop
-+0+5f5c <[^>]*> nop
-+0+5f60 <[^>]*> nop
-+0+5f64 <[^>]*> nop
-+0+5f68 <[^>]*> nop
-+0+5f6c <[^>]*> nop
-+0+5f70 <[^>]*> nop
-+0+5f74 <[^>]*> nop
-+0+5f78 <[^>]*> nop
-+0+5f7c <[^>]*> nop
-+0+5f80 <[^>]*> nop
-+0+5f84 <[^>]*> nop
-+0+5f88 <[^>]*> nop
-+0+5f8c <[^>]*> nop
-+0+5f90 <[^>]*> nop
-+0+5f94 <[^>]*> nop
-+0+5f98 <[^>]*> nop
-+0+5f9c <[^>]*> nop
-+0+5fa0 <[^>]*> nop
-+0+5fa4 <[^>]*> nop
-+0+5fa8 <[^>]*> nop
-+0+5fac <[^>]*> nop
-+0+5fb0 <[^>]*> nop
-+0+5fb4 <[^>]*> nop
-+0+5fb8 <[^>]*> nop
-+0+5fbc <[^>]*> nop
-+0+5fc0 <[^>]*> nop
-+0+5fc4 <[^>]*> nop
-+0+5fc8 <[^>]*> nop
-+0+5fcc <[^>]*> nop
-+0+5fd0 <[^>]*> nop
-+0+5fd4 <[^>]*> nop
-+0+5fd8 <[^>]*> nop
-+0+5fdc <[^>]*> nop
-+0+5fe0 <[^>]*> nop
-+0+5fe4 <[^>]*> nop
-+0+5fe8 <[^>]*> nop
-+0+5fec <[^>]*> nop
-+0+5ff0 <[^>]*> nop
-+0+5ff4 <[^>]*> nop
-+0+5ff8 <[^>]*> nop
-+0+5ffc <[^>]*> nop
-+0+6000 <[^>]*> nop
-+0+6004 <[^>]*> nop
-+0+6008 <[^>]*> nop
-+0+600c <[^>]*> nop
-+0+6010 <[^>]*> nop
-+0+6014 <[^>]*> nop
-+0+6018 <[^>]*> nop
-+0+601c <[^>]*> nop
-+0+6020 <[^>]*> nop
-+0+6024 <[^>]*> nop
-+0+6028 <[^>]*> nop
-+0+602c <[^>]*> nop
-+0+6030 <[^>]*> nop
-+0+6034 <[^>]*> nop
-+0+6038 <[^>]*> nop
-+0+603c <[^>]*> nop
-+0+6040 <[^>]*> nop
-+0+6044 <[^>]*> nop
-+0+6048 <[^>]*> nop
-+0+604c <[^>]*> nop
-+0+6050 <[^>]*> nop
-+0+6054 <[^>]*> nop
-+0+6058 <[^>]*> nop
-+0+605c <[^>]*> nop
-+0+6060 <[^>]*> nop
-+0+6064 <[^>]*> nop
-+0+6068 <[^>]*> nop
-+0+606c <[^>]*> nop
-+0+6070 <[^>]*> nop
-+0+6074 <[^>]*> nop
-+0+6078 <[^>]*> nop
-+0+607c <[^>]*> nop
-+0+6080 <[^>]*> nop
-+0+6084 <[^>]*> nop
-+0+6088 <[^>]*> nop
-+0+608c <[^>]*> nop
-+0+6090 <[^>]*> nop
-+0+6094 <[^>]*> nop
-+0+6098 <[^>]*> nop
-+0+609c <[^>]*> nop
-+0+60a0 <[^>]*> nop
-+0+60a4 <[^>]*> nop
-+0+60a8 <[^>]*> nop
-+0+60ac <[^>]*> nop
-+0+60b0 <[^>]*> nop
-+0+60b4 <[^>]*> nop
-+0+60b8 <[^>]*> nop
-+0+60bc <[^>]*> nop
-+0+60c0 <[^>]*> nop
-+0+60c4 <[^>]*> nop
-+0+60c8 <[^>]*> nop
-+0+60cc <[^>]*> nop
-+0+60d0 <[^>]*> nop
-+0+60d4 <[^>]*> nop
-+0+60d8 <[^>]*> nop
-+0+60dc <[^>]*> nop
-+0+60e0 <[^>]*> nop
-+0+60e4 <[^>]*> nop
-+0+60e8 <[^>]*> nop
-+0+60ec <[^>]*> nop
-+0+60f0 <[^>]*> nop
-+0+60f4 <[^>]*> nop
-+0+60f8 <[^>]*> nop
-+0+60fc <[^>]*> nop
-+0+6100 <[^>]*> nop
-+0+6104 <[^>]*> nop
-+0+6108 <[^>]*> nop
-+0+610c <[^>]*> nop
-+0+6110 <[^>]*> nop
-+0+6114 <[^>]*> nop
-+0+6118 <[^>]*> nop
-+0+611c <[^>]*> nop
-+0+6120 <[^>]*> nop
-+0+6124 <[^>]*> nop
-+0+6128 <[^>]*> nop
-+0+612c <[^>]*> nop
-+0+6130 <[^>]*> nop
-+0+6134 <[^>]*> nop
-+0+6138 <[^>]*> nop
-+0+613c <[^>]*> nop
-+0+6140 <[^>]*> nop
-+0+6144 <[^>]*> nop
-+0+6148 <[^>]*> nop
-+0+614c <[^>]*> nop
-+0+6150 <[^>]*> nop
-+0+6154 <[^>]*> nop
-+0+6158 <[^>]*> nop
-+0+615c <[^>]*> nop
-+0+6160 <[^>]*> nop
-+0+6164 <[^>]*> nop
-+0+6168 <[^>]*> nop
-+0+616c <[^>]*> nop
-+0+6170 <[^>]*> nop
-+0+6174 <[^>]*> nop
-+0+6178 <[^>]*> nop
-+0+617c <[^>]*> nop
-+0+6180 <[^>]*> nop
-+0+6184 <[^>]*> nop
-+0+6188 <[^>]*> nop
-+0+618c <[^>]*> nop
-+0+6190 <[^>]*> nop
-+0+6194 <[^>]*> nop
-+0+6198 <[^>]*> nop
-+0+619c <[^>]*> nop
-+0+61a0 <[^>]*> nop
-+0+61a4 <[^>]*> nop
-+0+61a8 <[^>]*> nop
-+0+61ac <[^>]*> nop
-+0+61b0 <[^>]*> nop
-+0+61b4 <[^>]*> nop
-+0+61b8 <[^>]*> nop
-+0+61bc <[^>]*> nop
-+0+61c0 <[^>]*> nop
-+0+61c4 <[^>]*> nop
-+0+61c8 <[^>]*> nop
-+0+61cc <[^>]*> nop
-+0+61d0 <[^>]*> nop
-+0+61d4 <[^>]*> nop
-+0+61d8 <[^>]*> nop
-+0+61dc <[^>]*> nop
-+0+61e0 <[^>]*> nop
-+0+61e4 <[^>]*> nop
-+0+61e8 <[^>]*> nop
-+0+61ec <[^>]*> nop
-+0+61f0 <[^>]*> nop
-+0+61f4 <[^>]*> nop
-+0+61f8 <[^>]*> nop
-+0+61fc <[^>]*> nop
-+0+6200 <[^>]*> nop
-+0+6204 <[^>]*> nop
-+0+6208 <[^>]*> nop
-+0+620c <[^>]*> nop
-+0+6210 <[^>]*> nop
-+0+6214 <[^>]*> nop
-+0+6218 <[^>]*> nop
-+0+621c <[^>]*> nop
-+0+6220 <[^>]*> nop
-+0+6224 <[^>]*> nop
-+0+6228 <[^>]*> nop
-+0+622c <[^>]*> nop
-+0+6230 <[^>]*> nop
-+0+6234 <[^>]*> nop
-+0+6238 <[^>]*> nop
-+0+623c <[^>]*> nop
-+0+6240 <[^>]*> nop
-+0+6244 <[^>]*> nop
-+0+6248 <[^>]*> nop
-+0+624c <[^>]*> nop
-+0+6250 <[^>]*> nop
-+0+6254 <[^>]*> nop
-+0+6258 <[^>]*> nop
-+0+625c <[^>]*> nop
-+0+6260 <[^>]*> nop
-+0+6264 <[^>]*> nop
-+0+6268 <[^>]*> nop
-+0+626c <[^>]*> nop
-+0+6270 <[^>]*> nop
-+0+6274 <[^>]*> nop
-+0+6278 <[^>]*> nop
-+0+627c <[^>]*> nop
-+0+6280 <[^>]*> nop
-+0+6284 <[^>]*> nop
-+0+6288 <[^>]*> nop
-+0+628c <[^>]*> nop
-+0+6290 <[^>]*> nop
-+0+6294 <[^>]*> nop
-+0+6298 <[^>]*> nop
-+0+629c <[^>]*> nop
-+0+62a0 <[^>]*> nop
-+0+62a4 <[^>]*> nop
-+0+62a8 <[^>]*> nop
-+0+62ac <[^>]*> nop
-+0+62b0 <[^>]*> nop
-+0+62b4 <[^>]*> nop
-+0+62b8 <[^>]*> nop
-+0+62bc <[^>]*> nop
-+0+62c0 <[^>]*> nop
-+0+62c4 <[^>]*> nop
-+0+62c8 <[^>]*> nop
-+0+62cc <[^>]*> nop
-+0+62d0 <[^>]*> nop
-+0+62d4 <[^>]*> nop
-+0+62d8 <[^>]*> nop
-+0+62dc <[^>]*> nop
-+0+62e0 <[^>]*> nop
-+0+62e4 <[^>]*> nop
-+0+62e8 <[^>]*> nop
-+0+62ec <[^>]*> nop
-+0+62f0 <[^>]*> nop
-+0+62f4 <[^>]*> nop
-+0+62f8 <[^>]*> nop
-+0+62fc <[^>]*> nop
-+0+6300 <[^>]*> nop
-+0+6304 <[^>]*> nop
-+0+6308 <[^>]*> nop
-+0+630c <[^>]*> nop
-+0+6310 <[^>]*> nop
-+0+6314 <[^>]*> nop
-+0+6318 <[^>]*> nop
-+0+631c <[^>]*> nop
-+0+6320 <[^>]*> nop
-+0+6324 <[^>]*> nop
-+0+6328 <[^>]*> nop
-+0+632c <[^>]*> nop
-+0+6330 <[^>]*> nop
-+0+6334 <[^>]*> nop
-+0+6338 <[^>]*> nop
-+0+633c <[^>]*> nop
-+0+6340 <[^>]*> nop
-+0+6344 <[^>]*> nop
-+0+6348 <[^>]*> nop
-+0+634c <[^>]*> nop
-+0+6350 <[^>]*> nop
-+0+6354 <[^>]*> nop
-+0+6358 <[^>]*> nop
-+0+635c <[^>]*> nop
-+0+6360 <[^>]*> nop
-+0+6364 <[^>]*> nop
-+0+6368 <[^>]*> nop
-+0+636c <[^>]*> nop
-+0+6370 <[^>]*> nop
-+0+6374 <[^>]*> nop
-+0+6378 <[^>]*> nop
-+0+637c <[^>]*> nop
-+0+6380 <[^>]*> nop
-+0+6384 <[^>]*> nop
-+0+6388 <[^>]*> nop
-+0+638c <[^>]*> nop
-+0+6390 <[^>]*> nop
-+0+6394 <[^>]*> nop
-+0+6398 <[^>]*> nop
-+0+639c <[^>]*> nop
-+0+63a0 <[^>]*> nop
-+0+63a4 <[^>]*> nop
-+0+63a8 <[^>]*> nop
-+0+63ac <[^>]*> nop
-+0+63b0 <[^>]*> nop
-+0+63b4 <[^>]*> nop
-+0+63b8 <[^>]*> nop
-+0+63bc <[^>]*> nop
-+0+63c0 <[^>]*> nop
-+0+63c4 <[^>]*> nop
-+0+63c8 <[^>]*> nop
-+0+63cc <[^>]*> nop
-+0+63d0 <[^>]*> nop
-+0+63d4 <[^>]*> nop
-+0+63d8 <[^>]*> nop
-+0+63dc <[^>]*> nop
-+0+63e0 <[^>]*> nop
-+0+63e4 <[^>]*> nop
-+0+63e8 <[^>]*> nop
-+0+63ec <[^>]*> nop
-+0+63f0 <[^>]*> nop
-+0+63f4 <[^>]*> nop
-+0+63f8 <[^>]*> nop
-+0+63fc <[^>]*> nop
-+0+6400 <[^>]*> nop
-+0+6404 <[^>]*> nop
-+0+6408 <[^>]*> nop
-+0+640c <[^>]*> nop
-+0+6410 <[^>]*> nop
-+0+6414 <[^>]*> nop
-+0+6418 <[^>]*> nop
-+0+641c <[^>]*> nop
-+0+6420 <[^>]*> nop
-+0+6424 <[^>]*> nop
-+0+6428 <[^>]*> nop
-+0+642c <[^>]*> nop
-+0+6430 <[^>]*> nop
-+0+6434 <[^>]*> nop
-+0+6438 <[^>]*> nop
-+0+643c <[^>]*> nop
-+0+6440 <[^>]*> nop
-+0+6444 <[^>]*> nop
-+0+6448 <[^>]*> nop
-+0+644c <[^>]*> nop
-+0+6450 <[^>]*> nop
-+0+6454 <[^>]*> nop
-+0+6458 <[^>]*> nop
-+0+645c <[^>]*> nop
-+0+6460 <[^>]*> nop
-+0+6464 <[^>]*> nop
-+0+6468 <[^>]*> nop
-+0+646c <[^>]*> nop
-+0+6470 <[^>]*> nop
-+0+6474 <[^>]*> nop
-+0+6478 <[^>]*> nop
-+0+647c <[^>]*> nop
-+0+6480 <[^>]*> nop
-+0+6484 <[^>]*> nop
-+0+6488 <[^>]*> nop
-+0+648c <[^>]*> nop
-+0+6490 <[^>]*> nop
-+0+6494 <[^>]*> nop
-+0+6498 <[^>]*> nop
-+0+649c <[^>]*> nop
-+0+64a0 <[^>]*> nop
-+0+64a4 <[^>]*> nop
-+0+64a8 <[^>]*> nop
-+0+64ac <[^>]*> nop
-+0+64b0 <[^>]*> nop
-+0+64b4 <[^>]*> nop
-+0+64b8 <[^>]*> nop
-+0+64bc <[^>]*> nop
-+0+64c0 <[^>]*> nop
-+0+64c4 <[^>]*> nop
-+0+64c8 <[^>]*> nop
-+0+64cc <[^>]*> nop
-+0+64d0 <[^>]*> nop
-+0+64d4 <[^>]*> nop
-+0+64d8 <[^>]*> nop
-+0+64dc <[^>]*> nop
-+0+64e0 <[^>]*> nop
-+0+64e4 <[^>]*> nop
-+0+64e8 <[^>]*> nop
-+0+64ec <[^>]*> nop
-+0+64f0 <[^>]*> nop
-+0+64f4 <[^>]*> nop
-+0+64f8 <[^>]*> nop
-+0+64fc <[^>]*> nop
-+0+6500 <[^>]*> nop
-+0+6504 <[^>]*> nop
-+0+6508 <[^>]*> nop
-+0+650c <[^>]*> nop
-+0+6510 <[^>]*> nop
-+0+6514 <[^>]*> nop
-+0+6518 <[^>]*> nop
-+0+651c <[^>]*> nop
-+0+6520 <[^>]*> nop
-+0+6524 <[^>]*> nop
-+0+6528 <[^>]*> nop
-+0+652c <[^>]*> nop
-+0+6530 <[^>]*> nop
-+0+6534 <[^>]*> nop
-+0+6538 <[^>]*> nop
-+0+653c <[^>]*> nop
-+0+6540 <[^>]*> nop
-+0+6544 <[^>]*> nop
-+0+6548 <[^>]*> nop
-+0+654c <[^>]*> nop
-+0+6550 <[^>]*> nop
-+0+6554 <[^>]*> nop
-+0+6558 <[^>]*> nop
-+0+655c <[^>]*> nop
-+0+6560 <[^>]*> nop
-+0+6564 <[^>]*> nop
-+0+6568 <[^>]*> nop
-+0+656c <[^>]*> nop
-+0+6570 <[^>]*> nop
-+0+6574 <[^>]*> nop
-+0+6578 <[^>]*> nop
-+0+657c <[^>]*> nop
-+0+6580 <[^>]*> nop
-+0+6584 <[^>]*> nop
-+0+6588 <[^>]*> nop
-+0+658c <[^>]*> nop
-+0+6590 <[^>]*> nop
-+0+6594 <[^>]*> nop
-+0+6598 <[^>]*> nop
-+0+659c <[^>]*> nop
-+0+65a0 <[^>]*> nop
-+0+65a4 <[^>]*> nop
-+0+65a8 <[^>]*> nop
-+0+65ac <[^>]*> nop
-+0+65b0 <[^>]*> nop
-+0+65b4 <[^>]*> nop
-+0+65b8 <[^>]*> nop
-+0+65bc <[^>]*> nop
-+0+65c0 <[^>]*> nop
-+0+65c4 <[^>]*> nop
-+0+65c8 <[^>]*> nop
-+0+65cc <[^>]*> nop
-+0+65d0 <[^>]*> nop
-+0+65d4 <[^>]*> nop
-+0+65d8 <[^>]*> nop
-+0+65dc <[^>]*> nop
-+0+65e0 <[^>]*> nop
-+0+65e4 <[^>]*> nop
-+0+65e8 <[^>]*> nop
-+0+65ec <[^>]*> nop
-+0+65f0 <[^>]*> nop
-+0+65f4 <[^>]*> nop
-+0+65f8 <[^>]*> nop
-+0+65fc <[^>]*> nop
-+0+6600 <[^>]*> nop
-+0+6604 <[^>]*> nop
-+0+6608 <[^>]*> nop
-+0+660c <[^>]*> nop
-+0+6610 <[^>]*> nop
-+0+6614 <[^>]*> nop
-+0+6618 <[^>]*> nop
-+0+661c <[^>]*> nop
-+0+6620 <[^>]*> nop
-+0+6624 <[^>]*> nop
-+0+6628 <[^>]*> nop
-+0+662c <[^>]*> nop
-+0+6630 <[^>]*> nop
-+0+6634 <[^>]*> nop
-+0+6638 <[^>]*> nop
-+0+663c <[^>]*> nop
-+0+6640 <[^>]*> nop
-+0+6644 <[^>]*> nop
-+0+6648 <[^>]*> nop
-+0+664c <[^>]*> nop
-+0+6650 <[^>]*> nop
-+0+6654 <[^>]*> nop
-+0+6658 <[^>]*> nop
-+0+665c <[^>]*> nop
-+0+6660 <[^>]*> nop
-+0+6664 <[^>]*> nop
-+0+6668 <[^>]*> nop
-+0+666c <[^>]*> nop
-+0+6670 <[^>]*> nop
-+0+6674 <[^>]*> nop
-+0+6678 <[^>]*> nop
-+0+667c <[^>]*> nop
-+0+6680 <[^>]*> nop
-+0+6684 <[^>]*> nop
-+0+6688 <[^>]*> nop
-+0+668c <[^>]*> nop
-+0+6690 <[^>]*> nop
-+0+6694 <[^>]*> nop
-+0+6698 <[^>]*> nop
-+0+669c <[^>]*> nop
-+0+66a0 <[^>]*> nop
-+0+66a4 <[^>]*> nop
-+0+66a8 <[^>]*> nop
-+0+66ac <[^>]*> nop
-+0+66b0 <[^>]*> nop
-+0+66b4 <[^>]*> nop
-+0+66b8 <[^>]*> nop
-+0+66bc <[^>]*> nop
-+0+66c0 <[^>]*> nop
-+0+66c4 <[^>]*> nop
-+0+66c8 <[^>]*> nop
-+0+66cc <[^>]*> nop
-+0+66d0 <[^>]*> nop
-+0+66d4 <[^>]*> nop
-+0+66d8 <[^>]*> nop
-+0+66dc <[^>]*> nop
-+0+66e0 <[^>]*> nop
-+0+66e4 <[^>]*> nop
-+0+66e8 <[^>]*> nop
-+0+66ec <[^>]*> nop
-+0+66f0 <[^>]*> nop
-+0+66f4 <[^>]*> nop
-+0+66f8 <[^>]*> nop
-+0+66fc <[^>]*> nop
-+0+6700 <[^>]*> nop
-+0+6704 <[^>]*> nop
-+0+6708 <[^>]*> nop
-+0+670c <[^>]*> nop
-+0+6710 <[^>]*> nop
-+0+6714 <[^>]*> nop
-+0+6718 <[^>]*> nop
-+0+671c <[^>]*> nop
-+0+6720 <[^>]*> nop
-+0+6724 <[^>]*> nop
-+0+6728 <[^>]*> nop
-+0+672c <[^>]*> nop
-+0+6730 <[^>]*> nop
-+0+6734 <[^>]*> nop
-+0+6738 <[^>]*> nop
-+0+673c <[^>]*> nop
-+0+6740 <[^>]*> nop
-+0+6744 <[^>]*> nop
-+0+6748 <[^>]*> nop
-+0+674c <[^>]*> nop
-+0+6750 <[^>]*> nop
-+0+6754 <[^>]*> nop
-+0+6758 <[^>]*> nop
-+0+675c <[^>]*> nop
-+0+6760 <[^>]*> nop
-+0+6764 <[^>]*> nop
-+0+6768 <[^>]*> nop
-+0+676c <[^>]*> nop
-+0+6770 <[^>]*> nop
-+0+6774 <[^>]*> nop
-+0+6778 <[^>]*> nop
-+0+677c <[^>]*> nop
-+0+6780 <[^>]*> nop
-+0+6784 <[^>]*> nop
-+0+6788 <[^>]*> nop
-+0+678c <[^>]*> nop
-+0+6790 <[^>]*> nop
-+0+6794 <[^>]*> nop
-+0+6798 <[^>]*> nop
-+0+679c <[^>]*> nop
-+0+67a0 <[^>]*> nop
-+0+67a4 <[^>]*> nop
-+0+67a8 <[^>]*> nop
-+0+67ac <[^>]*> nop
-+0+67b0 <[^>]*> nop
-+0+67b4 <[^>]*> nop
-+0+67b8 <[^>]*> nop
-+0+67bc <[^>]*> nop
-+0+67c0 <[^>]*> nop
-+0+67c4 <[^>]*> nop
-+0+67c8 <[^>]*> nop
-+0+67cc <[^>]*> nop
-+0+67d0 <[^>]*> nop
-+0+67d4 <[^>]*> nop
-+0+67d8 <[^>]*> nop
-+0+67dc <[^>]*> nop
-+0+67e0 <[^>]*> nop
-+0+67e4 <[^>]*> nop
-+0+67e8 <[^>]*> nop
-+0+67ec <[^>]*> nop
-+0+67f0 <[^>]*> nop
-+0+67f4 <[^>]*> nop
-+0+67f8 <[^>]*> nop
-+0+67fc <[^>]*> nop
-+0+6800 <[^>]*> nop
-+0+6804 <[^>]*> nop
-+0+6808 <[^>]*> nop
-+0+680c <[^>]*> nop
-+0+6810 <[^>]*> nop
-+0+6814 <[^>]*> nop
-+0+6818 <[^>]*> nop
-+0+681c <[^>]*> nop
-+0+6820 <[^>]*> nop
-+0+6824 <[^>]*> nop
-+0+6828 <[^>]*> nop
-+0+682c <[^>]*> nop
-+0+6830 <[^>]*> nop
-+0+6834 <[^>]*> nop
-+0+6838 <[^>]*> nop
-+0+683c <[^>]*> nop
-+0+6840 <[^>]*> nop
-+0+6844 <[^>]*> nop
-+0+6848 <[^>]*> nop
-+0+684c <[^>]*> nop
-+0+6850 <[^>]*> nop
-+0+6854 <[^>]*> nop
-+0+6858 <[^>]*> nop
-+0+685c <[^>]*> nop
-+0+6860 <[^>]*> nop
-+0+6864 <[^>]*> nop
-+0+6868 <[^>]*> nop
-+0+686c <[^>]*> nop
-+0+6870 <[^>]*> nop
-+0+6874 <[^>]*> nop
-+0+6878 <[^>]*> nop
-+0+687c <[^>]*> nop
-+0+6880 <[^>]*> nop
-+0+6884 <[^>]*> nop
-+0+6888 <[^>]*> nop
-+0+688c <[^>]*> nop
-+0+6890 <[^>]*> nop
-+0+6894 <[^>]*> nop
-+0+6898 <[^>]*> nop
-+0+689c <[^>]*> nop
-+0+68a0 <[^>]*> nop
-+0+68a4 <[^>]*> nop
-+0+68a8 <[^>]*> nop
-+0+68ac <[^>]*> nop
-+0+68b0 <[^>]*> nop
-+0+68b4 <[^>]*> nop
-+0+68b8 <[^>]*> nop
-+0+68bc <[^>]*> nop
-+0+68c0 <[^>]*> nop
-+0+68c4 <[^>]*> nop
-+0+68c8 <[^>]*> nop
-+0+68cc <[^>]*> nop
-+0+68d0 <[^>]*> nop
-+0+68d4 <[^>]*> nop
-+0+68d8 <[^>]*> nop
-+0+68dc <[^>]*> nop
-+0+68e0 <[^>]*> nop
-+0+68e4 <[^>]*> nop
-+0+68e8 <[^>]*> nop
-+0+68ec <[^>]*> nop
-+0+68f0 <[^>]*> nop
-+0+68f4 <[^>]*> nop
-+0+68f8 <[^>]*> nop
-+0+68fc <[^>]*> nop
-+0+6900 <[^>]*> nop
-+0+6904 <[^>]*> nop
-+0+6908 <[^>]*> nop
-+0+690c <[^>]*> nop
-+0+6910 <[^>]*> nop
-+0+6914 <[^>]*> nop
-+0+6918 <[^>]*> nop
-+0+691c <[^>]*> nop
-+0+6920 <[^>]*> nop
-+0+6924 <[^>]*> nop
-+0+6928 <[^>]*> nop
-+0+692c <[^>]*> nop
-+0+6930 <[^>]*> nop
-+0+6934 <[^>]*> nop
-+0+6938 <[^>]*> nop
-+0+693c <[^>]*> nop
-+0+6940 <[^>]*> nop
-+0+6944 <[^>]*> nop
-+0+6948 <[^>]*> nop
-+0+694c <[^>]*> nop
-+0+6950 <[^>]*> nop
-+0+6954 <[^>]*> nop
-+0+6958 <[^>]*> nop
-+0+695c <[^>]*> nop
-+0+6960 <[^>]*> nop
-+0+6964 <[^>]*> nop
-+0+6968 <[^>]*> nop
-+0+696c <[^>]*> nop
-+0+6970 <[^>]*> nop
-+0+6974 <[^>]*> nop
-+0+6978 <[^>]*> nop
-+0+697c <[^>]*> nop
-+0+6980 <[^>]*> nop
-+0+6984 <[^>]*> nop
-+0+6988 <[^>]*> nop
-+0+698c <[^>]*> nop
-+0+6990 <[^>]*> nop
-+0+6994 <[^>]*> nop
-+0+6998 <[^>]*> nop
-+0+699c <[^>]*> nop
-+0+69a0 <[^>]*> nop
-+0+69a4 <[^>]*> nop
-+0+69a8 <[^>]*> nop
-+0+69ac <[^>]*> nop
-+0+69b0 <[^>]*> nop
-+0+69b4 <[^>]*> nop
-+0+69b8 <[^>]*> nop
-+0+69bc <[^>]*> nop
-+0+69c0 <[^>]*> nop
-+0+69c4 <[^>]*> nop
-+0+69c8 <[^>]*> nop
-+0+69cc <[^>]*> nop
-+0+69d0 <[^>]*> nop
-+0+69d4 <[^>]*> nop
-+0+69d8 <[^>]*> nop
-+0+69dc <[^>]*> nop
-+0+69e0 <[^>]*> nop
-+0+69e4 <[^>]*> nop
-+0+69e8 <[^>]*> nop
-+0+69ec <[^>]*> nop
-+0+69f0 <[^>]*> nop
-+0+69f4 <[^>]*> nop
-+0+69f8 <[^>]*> nop
-+0+69fc <[^>]*> nop
-+0+6a00 <[^>]*> nop
-+0+6a04 <[^>]*> nop
-+0+6a08 <[^>]*> nop
-+0+6a0c <[^>]*> nop
-+0+6a10 <[^>]*> nop
-+0+6a14 <[^>]*> nop
-+0+6a18 <[^>]*> nop
-+0+6a1c <[^>]*> nop
-+0+6a20 <[^>]*> nop
-+0+6a24 <[^>]*> nop
-+0+6a28 <[^>]*> nop
-+0+6a2c <[^>]*> nop
-+0+6a30 <[^>]*> nop
-+0+6a34 <[^>]*> nop
-+0+6a38 <[^>]*> nop
-+0+6a3c <[^>]*> nop
-+0+6a40 <[^>]*> nop
-+0+6a44 <[^>]*> nop
-+0+6a48 <[^>]*> nop
-+0+6a4c <[^>]*> nop
-+0+6a50 <[^>]*> nop
-+0+6a54 <[^>]*> nop
-+0+6a58 <[^>]*> nop
-+0+6a5c <[^>]*> nop
-+0+6a60 <[^>]*> nop
-+0+6a64 <[^>]*> nop
-+0+6a68 <[^>]*> nop
-+0+6a6c <[^>]*> nop
-+0+6a70 <[^>]*> nop
-+0+6a74 <[^>]*> nop
-+0+6a78 <[^>]*> nop
-+0+6a7c <[^>]*> nop
-+0+6a80 <[^>]*> nop
-+0+6a84 <[^>]*> nop
-+0+6a88 <[^>]*> nop
-+0+6a8c <[^>]*> nop
-+0+6a90 <[^>]*> nop
-+0+6a94 <[^>]*> nop
-+0+6a98 <[^>]*> nop
-+0+6a9c <[^>]*> nop
-+0+6aa0 <[^>]*> nop
-+0+6aa4 <[^>]*> nop
-+0+6aa8 <[^>]*> nop
-+0+6aac <[^>]*> nop
-+0+6ab0 <[^>]*> nop
-+0+6ab4 <[^>]*> nop
-+0+6ab8 <[^>]*> nop
-+0+6abc <[^>]*> nop
-+0+6ac0 <[^>]*> nop
-+0+6ac4 <[^>]*> nop
-+0+6ac8 <[^>]*> nop
-+0+6acc <[^>]*> nop
-+0+6ad0 <[^>]*> nop
-+0+6ad4 <[^>]*> nop
-+0+6ad8 <[^>]*> nop
-+0+6adc <[^>]*> nop
-+0+6ae0 <[^>]*> nop
-+0+6ae4 <[^>]*> nop
-+0+6ae8 <[^>]*> nop
-+0+6aec <[^>]*> nop
-+0+6af0 <[^>]*> nop
-+0+6af4 <[^>]*> nop
-+0+6af8 <[^>]*> nop
-+0+6afc <[^>]*> nop
-+0+6b00 <[^>]*> nop
-+0+6b04 <[^>]*> nop
-+0+6b08 <[^>]*> nop
-+0+6b0c <[^>]*> nop
-+0+6b10 <[^>]*> nop
-+0+6b14 <[^>]*> nop
-+0+6b18 <[^>]*> nop
-+0+6b1c <[^>]*> nop
-+0+6b20 <[^>]*> nop
-+0+6b24 <[^>]*> nop
-+0+6b28 <[^>]*> nop
-+0+6b2c <[^>]*> nop
-+0+6b30 <[^>]*> nop
-+0+6b34 <[^>]*> nop
-+0+6b38 <[^>]*> nop
-+0+6b3c <[^>]*> nop
-+0+6b40 <[^>]*> nop
-+0+6b44 <[^>]*> nop
-+0+6b48 <[^>]*> nop
-+0+6b4c <[^>]*> nop
-+0+6b50 <[^>]*> nop
-+0+6b54 <[^>]*> nop
-+0+6b58 <[^>]*> nop
-+0+6b5c <[^>]*> nop
-+0+6b60 <[^>]*> nop
-+0+6b64 <[^>]*> nop
-+0+6b68 <[^>]*> nop
-+0+6b6c <[^>]*> nop
-+0+6b70 <[^>]*> nop
-+0+6b74 <[^>]*> nop
-+0+6b78 <[^>]*> nop
-+0+6b7c <[^>]*> nop
-+0+6b80 <[^>]*> nop
-+0+6b84 <[^>]*> nop
-+0+6b88 <[^>]*> nop
-+0+6b8c <[^>]*> nop
-+0+6b90 <[^>]*> nop
-+0+6b94 <[^>]*> nop
-+0+6b98 <[^>]*> nop
-+0+6b9c <[^>]*> nop
-+0+6ba0 <[^>]*> nop
-+0+6ba4 <[^>]*> nop
-+0+6ba8 <[^>]*> nop
-+0+6bac <[^>]*> nop
-+0+6bb0 <[^>]*> nop
-+0+6bb4 <[^>]*> nop
-+0+6bb8 <[^>]*> nop
-+0+6bbc <[^>]*> nop
-+0+6bc0 <[^>]*> nop
-+0+6bc4 <[^>]*> nop
-+0+6bc8 <[^>]*> nop
-+0+6bcc <[^>]*> nop
-+0+6bd0 <[^>]*> nop
-+0+6bd4 <[^>]*> nop
-+0+6bd8 <[^>]*> nop
-+0+6bdc <[^>]*> nop
-+0+6be0 <[^>]*> nop
-+0+6be4 <[^>]*> nop
-+0+6be8 <[^>]*> nop
-+0+6bec <[^>]*> nop
-+0+6bf0 <[^>]*> nop
-+0+6bf4 <[^>]*> nop
-+0+6bf8 <[^>]*> nop
-+0+6bfc <[^>]*> nop
-+0+6c00 <[^>]*> nop
-+0+6c04 <[^>]*> nop
-+0+6c08 <[^>]*> nop
-+0+6c0c <[^>]*> nop
-+0+6c10 <[^>]*> nop
-+0+6c14 <[^>]*> nop
-+0+6c18 <[^>]*> nop
-+0+6c1c <[^>]*> nop
-+0+6c20 <[^>]*> nop
-+0+6c24 <[^>]*> nop
-+0+6c28 <[^>]*> nop
-+0+6c2c <[^>]*> nop
-+0+6c30 <[^>]*> nop
-+0+6c34 <[^>]*> nop
-+0+6c38 <[^>]*> nop
-+0+6c3c <[^>]*> nop
-+0+6c40 <[^>]*> nop
-+0+6c44 <[^>]*> nop
-+0+6c48 <[^>]*> nop
-+0+6c4c <[^>]*> nop
-+0+6c50 <[^>]*> nop
-+0+6c54 <[^>]*> nop
-+0+6c58 <[^>]*> nop
-+0+6c5c <[^>]*> nop
-+0+6c60 <[^>]*> nop
-+0+6c64 <[^>]*> nop
-+0+6c68 <[^>]*> nop
-+0+6c6c <[^>]*> nop
-+0+6c70 <[^>]*> nop
-+0+6c74 <[^>]*> nop
-+0+6c78 <[^>]*> nop
-+0+6c7c <[^>]*> nop
-+0+6c80 <[^>]*> nop
-+0+6c84 <[^>]*> nop
-+0+6c88 <[^>]*> nop
-+0+6c8c <[^>]*> nop
-+0+6c90 <[^>]*> nop
-+0+6c94 <[^>]*> nop
-+0+6c98 <[^>]*> nop
-+0+6c9c <[^>]*> nop
-+0+6ca0 <[^>]*> nop
-+0+6ca4 <[^>]*> nop
-+0+6ca8 <[^>]*> nop
-+0+6cac <[^>]*> nop
-+0+6cb0 <[^>]*> nop
-+0+6cb4 <[^>]*> nop
-+0+6cb8 <[^>]*> nop
-+0+6cbc <[^>]*> nop
-+0+6cc0 <[^>]*> nop
-+0+6cc4 <[^>]*> nop
-+0+6cc8 <[^>]*> nop
-+0+6ccc <[^>]*> nop
-+0+6cd0 <[^>]*> nop
-+0+6cd4 <[^>]*> nop
-+0+6cd8 <[^>]*> nop
-+0+6cdc <[^>]*> nop
-+0+6ce0 <[^>]*> nop
-+0+6ce4 <[^>]*> nop
-+0+6ce8 <[^>]*> nop
-+0+6cec <[^>]*> nop
-+0+6cf0 <[^>]*> nop
-+0+6cf4 <[^>]*> nop
-+0+6cf8 <[^>]*> nop
-+0+6cfc <[^>]*> nop
-+0+6d00 <[^>]*> nop
-+0+6d04 <[^>]*> nop
-+0+6d08 <[^>]*> nop
-+0+6d0c <[^>]*> nop
-+0+6d10 <[^>]*> nop
-+0+6d14 <[^>]*> nop
-+0+6d18 <[^>]*> nop
-+0+6d1c <[^>]*> nop
-+0+6d20 <[^>]*> nop
-+0+6d24 <[^>]*> nop
-+0+6d28 <[^>]*> nop
-+0+6d2c <[^>]*> nop
-+0+6d30 <[^>]*> nop
-+0+6d34 <[^>]*> nop
-+0+6d38 <[^>]*> nop
-+0+6d3c <[^>]*> nop
-+0+6d40 <[^>]*> nop
-+0+6d44 <[^>]*> nop
-+0+6d48 <[^>]*> nop
-+0+6d4c <[^>]*> nop
-+0+6d50 <[^>]*> nop
-+0+6d54 <[^>]*> nop
-+0+6d58 <[^>]*> nop
-+0+6d5c <[^>]*> nop
-+0+6d60 <[^>]*> nop
-+0+6d64 <[^>]*> nop
-+0+6d68 <[^>]*> nop
-+0+6d6c <[^>]*> nop
-+0+6d70 <[^>]*> nop
-+0+6d74 <[^>]*> nop
-+0+6d78 <[^>]*> nop
-+0+6d7c <[^>]*> nop
-+0+6d80 <[^>]*> nop
-+0+6d84 <[^>]*> nop
-+0+6d88 <[^>]*> nop
-+0+6d8c <[^>]*> nop
-+0+6d90 <[^>]*> nop
-+0+6d94 <[^>]*> nop
-+0+6d98 <[^>]*> nop
-+0+6d9c <[^>]*> nop
-+0+6da0 <[^>]*> nop
-+0+6da4 <[^>]*> nop
-+0+6da8 <[^>]*> nop
-+0+6dac <[^>]*> nop
-+0+6db0 <[^>]*> nop
-+0+6db4 <[^>]*> nop
-+0+6db8 <[^>]*> nop
-+0+6dbc <[^>]*> nop
-+0+6dc0 <[^>]*> nop
-+0+6dc4 <[^>]*> nop
-+0+6dc8 <[^>]*> nop
-+0+6dcc <[^>]*> nop
-+0+6dd0 <[^>]*> nop
-+0+6dd4 <[^>]*> nop
-+0+6dd8 <[^>]*> nop
-+0+6ddc <[^>]*> nop
-+0+6de0 <[^>]*> nop
-+0+6de4 <[^>]*> nop
-+0+6de8 <[^>]*> nop
-+0+6dec <[^>]*> nop
-+0+6df0 <[^>]*> nop
-+0+6df4 <[^>]*> nop
-+0+6df8 <[^>]*> nop
-+0+6dfc <[^>]*> nop
-+0+6e00 <[^>]*> nop
-+0+6e04 <[^>]*> nop
-+0+6e08 <[^>]*> nop
-+0+6e0c <[^>]*> nop
-+0+6e10 <[^>]*> nop
-+0+6e14 <[^>]*> nop
-+0+6e18 <[^>]*> nop
-+0+6e1c <[^>]*> nop
-+0+6e20 <[^>]*> nop
-+0+6e24 <[^>]*> nop
-+0+6e28 <[^>]*> nop
-+0+6e2c <[^>]*> nop
-+0+6e30 <[^>]*> nop
-+0+6e34 <[^>]*> nop
-+0+6e38 <[^>]*> nop
-+0+6e3c <[^>]*> nop
-+0+6e40 <[^>]*> nop
-+0+6e44 <[^>]*> nop
-+0+6e48 <[^>]*> nop
-+0+6e4c <[^>]*> nop
-+0+6e50 <[^>]*> nop
-+0+6e54 <[^>]*> nop
-+0+6e58 <[^>]*> nop
-+0+6e5c <[^>]*> nop
-+0+6e60 <[^>]*> nop
-+0+6e64 <[^>]*> nop
-+0+6e68 <[^>]*> nop
-+0+6e6c <[^>]*> nop
-+0+6e70 <[^>]*> nop
-+0+6e74 <[^>]*> nop
-+0+6e78 <[^>]*> nop
-+0+6e7c <[^>]*> nop
-+0+6e80 <[^>]*> nop
-+0+6e84 <[^>]*> nop
-+0+6e88 <[^>]*> nop
-+0+6e8c <[^>]*> nop
-+0+6e90 <[^>]*> nop
-+0+6e94 <[^>]*> nop
-+0+6e98 <[^>]*> nop
-+0+6e9c <[^>]*> nop
-+0+6ea0 <[^>]*> nop
-+0+6ea4 <[^>]*> nop
-+0+6ea8 <[^>]*> nop
-+0+6eac <[^>]*> nop
-+0+6eb0 <[^>]*> nop
-+0+6eb4 <[^>]*> nop
-+0+6eb8 <[^>]*> nop
-+0+6ebc <[^>]*> nop
-+0+6ec0 <[^>]*> nop
-+0+6ec4 <[^>]*> nop
-+0+6ec8 <[^>]*> nop
-+0+6ecc <[^>]*> nop
-+0+6ed0 <[^>]*> nop
-+0+6ed4 <[^>]*> nop
-+0+6ed8 <[^>]*> nop
-+0+6edc <[^>]*> nop
-+0+6ee0 <[^>]*> nop
-+0+6ee4 <[^>]*> nop
-+0+6ee8 <[^>]*> nop
-+0+6eec <[^>]*> nop
-+0+6ef0 <[^>]*> nop
-+0+6ef4 <[^>]*> nop
-+0+6ef8 <[^>]*> nop
-+0+6efc <[^>]*> nop
-+0+6f00 <[^>]*> nop
-+0+6f04 <[^>]*> nop
-+0+6f08 <[^>]*> nop
-+0+6f0c <[^>]*> nop
-+0+6f10 <[^>]*> nop
-+0+6f14 <[^>]*> nop
-+0+6f18 <[^>]*> nop
-+0+6f1c <[^>]*> nop
-+0+6f20 <[^>]*> nop
-+0+6f24 <[^>]*> nop
-+0+6f28 <[^>]*> nop
-+0+6f2c <[^>]*> nop
-+0+6f30 <[^>]*> nop
-+0+6f34 <[^>]*> nop
-+0+6f38 <[^>]*> nop
-+0+6f3c <[^>]*> nop
-+0+6f40 <[^>]*> nop
-+0+6f44 <[^>]*> nop
-+0+6f48 <[^>]*> nop
-+0+6f4c <[^>]*> nop
-+0+6f50 <[^>]*> nop
-+0+6f54 <[^>]*> nop
-+0+6f58 <[^>]*> nop
-+0+6f5c <[^>]*> nop
-+0+6f60 <[^>]*> nop
-+0+6f64 <[^>]*> nop
-+0+6f68 <[^>]*> nop
-+0+6f6c <[^>]*> nop
-+0+6f70 <[^>]*> nop
-+0+6f74 <[^>]*> nop
-+0+6f78 <[^>]*> nop
-+0+6f7c <[^>]*> nop
-+0+6f80 <[^>]*> nop
-+0+6f84 <[^>]*> nop
-+0+6f88 <[^>]*> nop
-+0+6f8c <[^>]*> nop
-+0+6f90 <[^>]*> nop
-+0+6f94 <[^>]*> nop
-+0+6f98 <[^>]*> nop
-+0+6f9c <[^>]*> nop
-+0+6fa0 <[^>]*> nop
-+0+6fa4 <[^>]*> nop
-+0+6fa8 <[^>]*> nop
-+0+6fac <[^>]*> nop
-+0+6fb0 <[^>]*> nop
-+0+6fb4 <[^>]*> nop
-+0+6fb8 <[^>]*> nop
-+0+6fbc <[^>]*> nop
-+0+6fc0 <[^>]*> nop
-+0+6fc4 <[^>]*> nop
-+0+6fc8 <[^>]*> nop
-+0+6fcc <[^>]*> nop
-+0+6fd0 <[^>]*> nop
-+0+6fd4 <[^>]*> nop
-+0+6fd8 <[^>]*> nop
-+0+6fdc <[^>]*> nop
-+0+6fe0 <[^>]*> nop
-+0+6fe4 <[^>]*> nop
-+0+6fe8 <[^>]*> nop
-+0+6fec <[^>]*> nop
-+0+6ff0 <[^>]*> nop
-+0+6ff4 <[^>]*> nop
-+0+6ff8 <[^>]*> nop
-+0+6ffc <[^>]*> nop
-+0+7000 <[^>]*> nop
-+0+7004 <[^>]*> nop
-+0+7008 <[^>]*> nop
-+0+700c <[^>]*> nop
-+0+7010 <[^>]*> nop
-+0+7014 <[^>]*> nop
-+0+7018 <[^>]*> nop
-+0+701c <[^>]*> nop
-+0+7020 <[^>]*> nop
-+0+7024 <[^>]*> nop
-+0+7028 <[^>]*> nop
-+0+702c <[^>]*> nop
-+0+7030 <[^>]*> nop
-+0+7034 <[^>]*> nop
-+0+7038 <[^>]*> nop
-+0+703c <[^>]*> nop
-+0+7040 <[^>]*> nop
-+0+7044 <[^>]*> nop
-+0+7048 <[^>]*> nop
-+0+704c <[^>]*> nop
-+0+7050 <[^>]*> nop
-+0+7054 <[^>]*> nop
-+0+7058 <[^>]*> nop
-+0+705c <[^>]*> nop
-+0+7060 <[^>]*> nop
-+0+7064 <[^>]*> nop
-+0+7068 <[^>]*> nop
-+0+706c <[^>]*> nop
-+0+7070 <[^>]*> nop
-+0+7074 <[^>]*> nop
-+0+7078 <[^>]*> nop
-+0+707c <[^>]*> nop
-+0+7080 <[^>]*> nop
-+0+7084 <[^>]*> nop
-+0+7088 <[^>]*> nop
-+0+708c <[^>]*> nop
-+0+7090 <[^>]*> nop
-+0+7094 <[^>]*> nop
-+0+7098 <[^>]*> nop
-+0+709c <[^>]*> nop
-+0+70a0 <[^>]*> nop
-+0+70a4 <[^>]*> nop
-+0+70a8 <[^>]*> nop
-+0+70ac <[^>]*> nop
-+0+70b0 <[^>]*> nop
-+0+70b4 <[^>]*> nop
-+0+70b8 <[^>]*> nop
-+0+70bc <[^>]*> nop
-+0+70c0 <[^>]*> nop
-+0+70c4 <[^>]*> nop
-+0+70c8 <[^>]*> nop
-+0+70cc <[^>]*> nop
-+0+70d0 <[^>]*> nop
-+0+70d4 <[^>]*> nop
-+0+70d8 <[^>]*> nop
-+0+70dc <[^>]*> nop
-+0+70e0 <[^>]*> nop
-+0+70e4 <[^>]*> nop
-+0+70e8 <[^>]*> nop
-+0+70ec <[^>]*> nop
-+0+70f0 <[^>]*> nop
-+0+70f4 <[^>]*> nop
-+0+70f8 <[^>]*> nop
-+0+70fc <[^>]*> nop
-+0+7100 <[^>]*> nop
-+0+7104 <[^>]*> nop
-+0+7108 <[^>]*> nop
-+0+710c <[^>]*> nop
-+0+7110 <[^>]*> nop
-+0+7114 <[^>]*> nop
-+0+7118 <[^>]*> nop
-+0+711c <[^>]*> nop
-+0+7120 <[^>]*> nop
-+0+7124 <[^>]*> nop
-+0+7128 <[^>]*> nop
-+0+712c <[^>]*> nop
-+0+7130 <[^>]*> nop
-+0+7134 <[^>]*> nop
-+0+7138 <[^>]*> nop
-+0+713c <[^>]*> nop
-+0+7140 <[^>]*> nop
-+0+7144 <[^>]*> nop
-+0+7148 <[^>]*> nop
-+0+714c <[^>]*> nop
-+0+7150 <[^>]*> nop
-+0+7154 <[^>]*> nop
-+0+7158 <[^>]*> nop
-+0+715c <[^>]*> nop
-+0+7160 <[^>]*> nop
-+0+7164 <[^>]*> nop
-+0+7168 <[^>]*> nop
-+0+716c <[^>]*> nop
-+0+7170 <[^>]*> nop
-+0+7174 <[^>]*> nop
-+0+7178 <[^>]*> nop
-+0+717c <[^>]*> nop
-+0+7180 <[^>]*> nop
-+0+7184 <[^>]*> nop
-+0+7188 <[^>]*> nop
-+0+718c <[^>]*> nop
-+0+7190 <[^>]*> nop
-+0+7194 <[^>]*> nop
-+0+7198 <[^>]*> nop
-+0+719c <[^>]*> nop
-+0+71a0 <[^>]*> nop
-+0+71a4 <[^>]*> nop
-+0+71a8 <[^>]*> nop
-+0+71ac <[^>]*> nop
-+0+71b0 <[^>]*> nop
-+0+71b4 <[^>]*> nop
-+0+71b8 <[^>]*> nop
-+0+71bc <[^>]*> nop
-+0+71c0 <[^>]*> nop
-+0+71c4 <[^>]*> nop
-+0+71c8 <[^>]*> nop
-+0+71cc <[^>]*> nop
-+0+71d0 <[^>]*> nop
-+0+71d4 <[^>]*> nop
-+0+71d8 <[^>]*> nop
-+0+71dc <[^>]*> nop
-+0+71e0 <[^>]*> nop
-+0+71e4 <[^>]*> nop
-+0+71e8 <[^>]*> nop
-+0+71ec <[^>]*> nop
-+0+71f0 <[^>]*> nop
-+0+71f4 <[^>]*> nop
-+0+71f8 <[^>]*> nop
-+0+71fc <[^>]*> nop
-+0+7200 <[^>]*> nop
-+0+7204 <[^>]*> nop
-+0+7208 <[^>]*> nop
-+0+720c <[^>]*> nop
-+0+7210 <[^>]*> nop
-+0+7214 <[^>]*> nop
-+0+7218 <[^>]*> nop
-+0+721c <[^>]*> nop
-+0+7220 <[^>]*> nop
-+0+7224 <[^>]*> nop
-+0+7228 <[^>]*> nop
-+0+722c <[^>]*> nop
-+0+7230 <[^>]*> nop
-+0+7234 <[^>]*> nop
-+0+7238 <[^>]*> nop
-+0+723c <[^>]*> nop
-+0+7240 <[^>]*> nop
-+0+7244 <[^>]*> nop
-+0+7248 <[^>]*> nop
-+0+724c <[^>]*> nop
-+0+7250 <[^>]*> nop
-+0+7254 <[^>]*> nop
-+0+7258 <[^>]*> nop
-+0+725c <[^>]*> nop
-+0+7260 <[^>]*> nop
-+0+7264 <[^>]*> nop
-+0+7268 <[^>]*> nop
-+0+726c <[^>]*> nop
-+0+7270 <[^>]*> nop
-+0+7274 <[^>]*> nop
-+0+7278 <[^>]*> nop
-+0+727c <[^>]*> nop
-+0+7280 <[^>]*> nop
-+0+7284 <[^>]*> nop
-+0+7288 <[^>]*> nop
-+0+728c <[^>]*> nop
-+0+7290 <[^>]*> nop
-+0+7294 <[^>]*> nop
-+0+7298 <[^>]*> nop
-+0+729c <[^>]*> nop
-+0+72a0 <[^>]*> nop
-+0+72a4 <[^>]*> nop
-+0+72a8 <[^>]*> nop
-+0+72ac <[^>]*> nop
-+0+72b0 <[^>]*> nop
-+0+72b4 <[^>]*> nop
-+0+72b8 <[^>]*> nop
-+0+72bc <[^>]*> nop
-+0+72c0 <[^>]*> nop
-+0+72c4 <[^>]*> nop
-+0+72c8 <[^>]*> nop
-+0+72cc <[^>]*> nop
-+0+72d0 <[^>]*> nop
-+0+72d4 <[^>]*> nop
-+0+72d8 <[^>]*> nop
-+0+72dc <[^>]*> nop
-+0+72e0 <[^>]*> nop
-+0+72e4 <[^>]*> nop
-+0+72e8 <[^>]*> nop
-+0+72ec <[^>]*> nop
-+0+72f0 <[^>]*> nop
-+0+72f4 <[^>]*> nop
-+0+72f8 <[^>]*> nop
-+0+72fc <[^>]*> nop
-+0+7300 <[^>]*> nop
-+0+7304 <[^>]*> nop
-+0+7308 <[^>]*> nop
-+0+730c <[^>]*> nop
-+0+7310 <[^>]*> nop
-+0+7314 <[^>]*> nop
-+0+7318 <[^>]*> nop
-+0+731c <[^>]*> nop
-+0+7320 <[^>]*> nop
-+0+7324 <[^>]*> nop
-+0+7328 <[^>]*> nop
-+0+732c <[^>]*> nop
-+0+7330 <[^>]*> nop
-+0+7334 <[^>]*> nop
-+0+7338 <[^>]*> nop
-+0+733c <[^>]*> nop
-+0+7340 <[^>]*> nop
-+0+7344 <[^>]*> nop
-+0+7348 <[^>]*> nop
-+0+734c <[^>]*> nop
-+0+7350 <[^>]*> nop
-+0+7354 <[^>]*> nop
-+0+7358 <[^>]*> nop
-+0+735c <[^>]*> nop
-+0+7360 <[^>]*> nop
-+0+7364 <[^>]*> nop
-+0+7368 <[^>]*> nop
-+0+736c <[^>]*> nop
-+0+7370 <[^>]*> nop
-+0+7374 <[^>]*> nop
-+0+7378 <[^>]*> nop
-+0+737c <[^>]*> nop
-+0+7380 <[^>]*> nop
-+0+7384 <[^>]*> nop
-+0+7388 <[^>]*> nop
-+0+738c <[^>]*> nop
-+0+7390 <[^>]*> nop
-+0+7394 <[^>]*> nop
-+0+7398 <[^>]*> nop
-+0+739c <[^>]*> nop
-+0+73a0 <[^>]*> nop
-+0+73a4 <[^>]*> nop
-+0+73a8 <[^>]*> nop
-+0+73ac <[^>]*> nop
-+0+73b0 <[^>]*> nop
-+0+73b4 <[^>]*> nop
-+0+73b8 <[^>]*> nop
-+0+73bc <[^>]*> nop
-+0+73c0 <[^>]*> nop
-+0+73c4 <[^>]*> nop
-+0+73c8 <[^>]*> nop
-+0+73cc <[^>]*> nop
-+0+73d0 <[^>]*> nop
-+0+73d4 <[^>]*> nop
-+0+73d8 <[^>]*> nop
-+0+73dc <[^>]*> nop
-+0+73e0 <[^>]*> nop
-+0+73e4 <[^>]*> nop
-+0+73e8 <[^>]*> nop
-+0+73ec <[^>]*> nop
-+0+73f0 <[^>]*> nop
-+0+73f4 <[^>]*> nop
-+0+73f8 <[^>]*> nop
-+0+73fc <[^>]*> nop
-+0+7400 <[^>]*> nop
-+0+7404 <[^>]*> nop
-+0+7408 <[^>]*> nop
-+0+740c <[^>]*> nop
-+0+7410 <[^>]*> nop
-+0+7414 <[^>]*> nop
-+0+7418 <[^>]*> nop
-+0+741c <[^>]*> nop
-+0+7420 <[^>]*> nop
-+0+7424 <[^>]*> nop
-+0+7428 <[^>]*> nop
-+0+742c <[^>]*> nop
-+0+7430 <[^>]*> nop
-+0+7434 <[^>]*> nop
-+0+7438 <[^>]*> nop
-+0+743c <[^>]*> nop
-+0+7440 <[^>]*> nop
-+0+7444 <[^>]*> nop
-+0+7448 <[^>]*> nop
-+0+744c <[^>]*> nop
-+0+7450 <[^>]*> nop
-+0+7454 <[^>]*> nop
-+0+7458 <[^>]*> nop
-+0+745c <[^>]*> nop
-+0+7460 <[^>]*> nop
-+0+7464 <[^>]*> nop
-+0+7468 <[^>]*> nop
-+0+746c <[^>]*> nop
-+0+7470 <[^>]*> nop
-+0+7474 <[^>]*> nop
-+0+7478 <[^>]*> nop
-+0+747c <[^>]*> nop
-+0+7480 <[^>]*> nop
-+0+7484 <[^>]*> nop
-+0+7488 <[^>]*> nop
-+0+748c <[^>]*> nop
-+0+7490 <[^>]*> nop
-+0+7494 <[^>]*> nop
-+0+7498 <[^>]*> nop
-+0+749c <[^>]*> nop
-+0+74a0 <[^>]*> nop
-+0+74a4 <[^>]*> nop
-+0+74a8 <[^>]*> nop
-+0+74ac <[^>]*> nop
-+0+74b0 <[^>]*> nop
-+0+74b4 <[^>]*> nop
-+0+74b8 <[^>]*> nop
-+0+74bc <[^>]*> nop
-+0+74c0 <[^>]*> nop
-+0+74c4 <[^>]*> nop
-+0+74c8 <[^>]*> nop
-+0+74cc <[^>]*> nop
-+0+74d0 <[^>]*> nop
-+0+74d4 <[^>]*> nop
-+0+74d8 <[^>]*> nop
-+0+74dc <[^>]*> nop
-+0+74e0 <[^>]*> nop
-+0+74e4 <[^>]*> nop
-+0+74e8 <[^>]*> nop
-+0+74ec <[^>]*> nop
-+0+74f0 <[^>]*> nop
-+0+74f4 <[^>]*> nop
-+0+74f8 <[^>]*> nop
-+0+74fc <[^>]*> nop
-+0+7500 <[^>]*> nop
-+0+7504 <[^>]*> nop
-+0+7508 <[^>]*> nop
-+0+750c <[^>]*> nop
-+0+7510 <[^>]*> nop
-+0+7514 <[^>]*> nop
-+0+7518 <[^>]*> nop
-+0+751c <[^>]*> nop
-+0+7520 <[^>]*> nop
-+0+7524 <[^>]*> nop
-+0+7528 <[^>]*> nop
-+0+752c <[^>]*> nop
-+0+7530 <[^>]*> nop
-+0+7534 <[^>]*> nop
-+0+7538 <[^>]*> nop
-+0+753c <[^>]*> nop
-+0+7540 <[^>]*> nop
-+0+7544 <[^>]*> nop
-+0+7548 <[^>]*> nop
-+0+754c <[^>]*> nop
-+0+7550 <[^>]*> nop
-+0+7554 <[^>]*> nop
-+0+7558 <[^>]*> nop
-+0+755c <[^>]*> nop
-+0+7560 <[^>]*> nop
-+0+7564 <[^>]*> nop
-+0+7568 <[^>]*> nop
-+0+756c <[^>]*> nop
-+0+7570 <[^>]*> nop
-+0+7574 <[^>]*> nop
-+0+7578 <[^>]*> nop
-+0+757c <[^>]*> nop
-+0+7580 <[^>]*> nop
-+0+7584 <[^>]*> nop
-+0+7588 <[^>]*> nop
-+0+758c <[^>]*> nop
-+0+7590 <[^>]*> nop
-+0+7594 <[^>]*> nop
-+0+7598 <[^>]*> nop
-+0+759c <[^>]*> nop
-+0+75a0 <[^>]*> nop
-+0+75a4 <[^>]*> nop
-+0+75a8 <[^>]*> nop
-+0+75ac <[^>]*> nop
-+0+75b0 <[^>]*> nop
-+0+75b4 <[^>]*> nop
-+0+75b8 <[^>]*> nop
-+0+75bc <[^>]*> nop
-+0+75c0 <[^>]*> nop
-+0+75c4 <[^>]*> nop
-+0+75c8 <[^>]*> nop
-+0+75cc <[^>]*> nop
-+0+75d0 <[^>]*> nop
-+0+75d4 <[^>]*> nop
-+0+75d8 <[^>]*> nop
-+0+75dc <[^>]*> nop
-+0+75e0 <[^>]*> nop
-+0+75e4 <[^>]*> nop
-+0+75e8 <[^>]*> nop
-+0+75ec <[^>]*> nop
-+0+75f0 <[^>]*> nop
-+0+75f4 <[^>]*> nop
-+0+75f8 <[^>]*> nop
-+0+75fc <[^>]*> nop
-+0+7600 <[^>]*> nop
-+0+7604 <[^>]*> nop
-+0+7608 <[^>]*> nop
-+0+760c <[^>]*> nop
-+0+7610 <[^>]*> nop
-+0+7614 <[^>]*> nop
-+0+7618 <[^>]*> nop
-+0+761c <[^>]*> nop
-+0+7620 <[^>]*> nop
-+0+7624 <[^>]*> nop
-+0+7628 <[^>]*> nop
-+0+762c <[^>]*> nop
-+0+7630 <[^>]*> nop
-+0+7634 <[^>]*> nop
-+0+7638 <[^>]*> nop
-+0+763c <[^>]*> nop
-+0+7640 <[^>]*> nop
-+0+7644 <[^>]*> nop
-+0+7648 <[^>]*> nop
-+0+764c <[^>]*> nop
-+0+7650 <[^>]*> nop
-+0+7654 <[^>]*> nop
-+0+7658 <[^>]*> nop
-+0+765c <[^>]*> nop
-+0+7660 <[^>]*> nop
-+0+7664 <[^>]*> nop
-+0+7668 <[^>]*> nop
-+0+766c <[^>]*> nop
-+0+7670 <[^>]*> nop
-+0+7674 <[^>]*> nop
-+0+7678 <[^>]*> nop
-+0+767c <[^>]*> nop
-+0+7680 <[^>]*> nop
-+0+7684 <[^>]*> nop
-+0+7688 <[^>]*> nop
-+0+768c <[^>]*> nop
-+0+7690 <[^>]*> nop
-+0+7694 <[^>]*> nop
-+0+7698 <[^>]*> nop
-+0+769c <[^>]*> nop
-+0+76a0 <[^>]*> nop
-+0+76a4 <[^>]*> nop
-+0+76a8 <[^>]*> nop
-+0+76ac <[^>]*> nop
-+0+76b0 <[^>]*> nop
-+0+76b4 <[^>]*> nop
-+0+76b8 <[^>]*> nop
-+0+76bc <[^>]*> nop
-+0+76c0 <[^>]*> nop
-+0+76c4 <[^>]*> nop
-+0+76c8 <[^>]*> nop
-+0+76cc <[^>]*> nop
-+0+76d0 <[^>]*> nop
-+0+76d4 <[^>]*> nop
-+0+76d8 <[^>]*> nop
-+0+76dc <[^>]*> nop
-+0+76e0 <[^>]*> nop
-+0+76e4 <[^>]*> nop
-+0+76e8 <[^>]*> nop
-+0+76ec <[^>]*> nop
-+0+76f0 <[^>]*> nop
-+0+76f4 <[^>]*> nop
-+0+76f8 <[^>]*> nop
-+0+76fc <[^>]*> nop
-+0+7700 <[^>]*> nop
-+0+7704 <[^>]*> nop
-+0+7708 <[^>]*> nop
-+0+770c <[^>]*> nop
-+0+7710 <[^>]*> nop
-+0+7714 <[^>]*> nop
-+0+7718 <[^>]*> nop
-+0+771c <[^>]*> nop
-+0+7720 <[^>]*> nop
-+0+7724 <[^>]*> nop
-+0+7728 <[^>]*> nop
-+0+772c <[^>]*> nop
-+0+7730 <[^>]*> nop
-+0+7734 <[^>]*> nop
-+0+7738 <[^>]*> nop
-+0+773c <[^>]*> nop
-+0+7740 <[^>]*> nop
-+0+7744 <[^>]*> nop
-+0+7748 <[^>]*> nop
-+0+774c <[^>]*> nop
-+0+7750 <[^>]*> nop
-+0+7754 <[^>]*> nop
-+0+7758 <[^>]*> nop
-+0+775c <[^>]*> nop
-+0+7760 <[^>]*> nop
-+0+7764 <[^>]*> nop
-+0+7768 <[^>]*> nop
-+0+776c <[^>]*> nop
-+0+7770 <[^>]*> nop
-+0+7774 <[^>]*> nop
-+0+7778 <[^>]*> nop
-+0+777c <[^>]*> nop
-+0+7780 <[^>]*> nop
-+0+7784 <[^>]*> nop
-+0+7788 <[^>]*> nop
-+0+778c <[^>]*> nop
-+0+7790 <[^>]*> nop
-+0+7794 <[^>]*> nop
-+0+7798 <[^>]*> nop
-+0+779c <[^>]*> nop
-+0+77a0 <[^>]*> nop
-+0+77a4 <[^>]*> nop
-+0+77a8 <[^>]*> nop
-+0+77ac <[^>]*> nop
-+0+77b0 <[^>]*> nop
-+0+77b4 <[^>]*> nop
-+0+77b8 <[^>]*> nop
-+0+77bc <[^>]*> nop
-+0+77c0 <[^>]*> nop
-+0+77c4 <[^>]*> nop
-+0+77c8 <[^>]*> nop
-+0+77cc <[^>]*> nop
-+0+77d0 <[^>]*> nop
-+0+77d4 <[^>]*> nop
-+0+77d8 <[^>]*> nop
-+0+77dc <[^>]*> nop
-+0+77e0 <[^>]*> nop
-+0+77e4 <[^>]*> nop
-+0+77e8 <[^>]*> nop
-+0+77ec <[^>]*> nop
-+0+77f0 <[^>]*> nop
-+0+77f4 <[^>]*> nop
-+0+77f8 <[^>]*> nop
-+0+77fc <[^>]*> nop
-+0+7800 <[^>]*> nop
-+0+7804 <[^>]*> nop
-+0+7808 <[^>]*> nop
-+0+780c <[^>]*> nop
-+0+7810 <[^>]*> nop
-+0+7814 <[^>]*> nop
-+0+7818 <[^>]*> nop
-+0+781c <[^>]*> nop
-+0+7820 <[^>]*> nop
-+0+7824 <[^>]*> nop
-+0+7828 <[^>]*> nop
-+0+782c <[^>]*> nop
-+0+7830 <[^>]*> nop
-+0+7834 <[^>]*> nop
-+0+7838 <[^>]*> nop
-+0+783c <[^>]*> nop
-+0+7840 <[^>]*> nop
-+0+7844 <[^>]*> nop
-+0+7848 <[^>]*> nop
-+0+784c <[^>]*> nop
-+0+7850 <[^>]*> nop
-+0+7854 <[^>]*> nop
-+0+7858 <[^>]*> nop
-+0+785c <[^>]*> nop
-+0+7860 <[^>]*> nop
-+0+7864 <[^>]*> nop
-+0+7868 <[^>]*> nop
-+0+786c <[^>]*> nop
-+0+7870 <[^>]*> nop
-+0+7874 <[^>]*> nop
-+0+7878 <[^>]*> nop
-+0+787c <[^>]*> nop
-+0+7880 <[^>]*> nop
-+0+7884 <[^>]*> nop
-+0+7888 <[^>]*> nop
-+0+788c <[^>]*> nop
-+0+7890 <[^>]*> nop
-+0+7894 <[^>]*> nop
-+0+7898 <[^>]*> nop
-+0+789c <[^>]*> nop
-+0+78a0 <[^>]*> nop
-+0+78a4 <[^>]*> nop
-+0+78a8 <[^>]*> nop
-+0+78ac <[^>]*> nop
-+0+78b0 <[^>]*> nop
-+0+78b4 <[^>]*> nop
-+0+78b8 <[^>]*> nop
-+0+78bc <[^>]*> nop
-+0+78c0 <[^>]*> nop
-+0+78c4 <[^>]*> nop
-+0+78c8 <[^>]*> nop
-+0+78cc <[^>]*> nop
-+0+78d0 <[^>]*> nop
-+0+78d4 <[^>]*> nop
-+0+78d8 <[^>]*> nop
-+0+78dc <[^>]*> nop
-+0+78e0 <[^>]*> nop
-+0+78e4 <[^>]*> nop
-+0+78e8 <[^>]*> nop
-+0+78ec <[^>]*> nop
-+0+78f0 <[^>]*> nop
-+0+78f4 <[^>]*> nop
-+0+78f8 <[^>]*> nop
-+0+78fc <[^>]*> nop
-+0+7900 <[^>]*> nop
-+0+7904 <[^>]*> nop
-+0+7908 <[^>]*> nop
-+0+790c <[^>]*> nop
-+0+7910 <[^>]*> nop
-+0+7914 <[^>]*> nop
-+0+7918 <[^>]*> nop
-+0+791c <[^>]*> nop
-+0+7920 <[^>]*> nop
-+0+7924 <[^>]*> nop
-+0+7928 <[^>]*> nop
-+0+792c <[^>]*> nop
-+0+7930 <[^>]*> nop
-+0+7934 <[^>]*> nop
-+0+7938 <[^>]*> nop
-+0+793c <[^>]*> nop
-+0+7940 <[^>]*> nop
-+0+7944 <[^>]*> nop
-+0+7948 <[^>]*> nop
-+0+794c <[^>]*> nop
-+0+7950 <[^>]*> nop
-+0+7954 <[^>]*> nop
-+0+7958 <[^>]*> nop
-+0+795c <[^>]*> nop
-+0+7960 <[^>]*> nop
-+0+7964 <[^>]*> nop
-+0+7968 <[^>]*> nop
-+0+796c <[^>]*> nop
-+0+7970 <[^>]*> nop
-+0+7974 <[^>]*> nop
-+0+7978 <[^>]*> nop
-+0+797c <[^>]*> nop
-+0+7980 <[^>]*> nop
-+0+7984 <[^>]*> nop
-+0+7988 <[^>]*> nop
-+0+798c <[^>]*> nop
-+0+7990 <[^>]*> nop
-+0+7994 <[^>]*> nop
-+0+7998 <[^>]*> nop
-+0+799c <[^>]*> nop
-+0+79a0 <[^>]*> nop
-+0+79a4 <[^>]*> nop
-+0+79a8 <[^>]*> nop
-+0+79ac <[^>]*> nop
-+0+79b0 <[^>]*> nop
-+0+79b4 <[^>]*> nop
-+0+79b8 <[^>]*> nop
-+0+79bc <[^>]*> nop
-+0+79c0 <[^>]*> nop
-+0+79c4 <[^>]*> nop
-+0+79c8 <[^>]*> nop
-+0+79cc <[^>]*> nop
-+0+79d0 <[^>]*> nop
-+0+79d4 <[^>]*> nop
-+0+79d8 <[^>]*> nop
-+0+79dc <[^>]*> nop
-+0+79e0 <[^>]*> nop
-+0+79e4 <[^>]*> nop
-+0+79e8 <[^>]*> nop
-+0+79ec <[^>]*> nop
-+0+79f0 <[^>]*> nop
-+0+79f4 <[^>]*> nop
-+0+79f8 <[^>]*> nop
-+0+79fc <[^>]*> nop
-+0+7a00 <[^>]*> nop
-+0+7a04 <[^>]*> nop
-+0+7a08 <[^>]*> nop
-+0+7a0c <[^>]*> nop
-+0+7a10 <[^>]*> nop
-+0+7a14 <[^>]*> nop
-+0+7a18 <[^>]*> nop
-+0+7a1c <[^>]*> nop
-+0+7a20 <[^>]*> nop
-+0+7a24 <[^>]*> nop
-+0+7a28 <[^>]*> nop
-+0+7a2c <[^>]*> nop
-+0+7a30 <[^>]*> nop
-+0+7a34 <[^>]*> nop
-+0+7a38 <[^>]*> nop
-+0+7a3c <[^>]*> nop
-+0+7a40 <[^>]*> nop
-+0+7a44 <[^>]*> nop
-+0+7a48 <[^>]*> nop
-+0+7a4c <[^>]*> nop
-+0+7a50 <[^>]*> nop
-+0+7a54 <[^>]*> nop
-+0+7a58 <[^>]*> nop
-+0+7a5c <[^>]*> nop
-+0+7a60 <[^>]*> nop
-+0+7a64 <[^>]*> nop
-+0+7a68 <[^>]*> nop
-+0+7a6c <[^>]*> nop
-+0+7a70 <[^>]*> nop
-+0+7a74 <[^>]*> nop
-+0+7a78 <[^>]*> nop
-+0+7a7c <[^>]*> nop
-+0+7a80 <[^>]*> nop
-+0+7a84 <[^>]*> nop
-+0+7a88 <[^>]*> nop
-+0+7a8c <[^>]*> nop
-+0+7a90 <[^>]*> nop
-+0+7a94 <[^>]*> nop
-+0+7a98 <[^>]*> nop
-+0+7a9c <[^>]*> nop
-+0+7aa0 <[^>]*> nop
-+0+7aa4 <[^>]*> nop
-+0+7aa8 <[^>]*> nop
-+0+7aac <[^>]*> nop
-+0+7ab0 <[^>]*> nop
-+0+7ab4 <[^>]*> nop
-+0+7ab8 <[^>]*> nop
-+0+7abc <[^>]*> nop
-+0+7ac0 <[^>]*> nop
-+0+7ac4 <[^>]*> nop
-+0+7ac8 <[^>]*> nop
-+0+7acc <[^>]*> nop
-+0+7ad0 <[^>]*> nop
-+0+7ad4 <[^>]*> nop
-+0+7ad8 <[^>]*> nop
-+0+7adc <[^>]*> nop
-+0+7ae0 <[^>]*> nop
-+0+7ae4 <[^>]*> nop
-+0+7ae8 <[^>]*> nop
-+0+7aec <[^>]*> nop
-+0+7af0 <[^>]*> nop
-+0+7af4 <[^>]*> nop
-+0+7af8 <[^>]*> nop
-+0+7afc <[^>]*> nop
-+0+7b00 <[^>]*> nop
-+0+7b04 <[^>]*> nop
-+0+7b08 <[^>]*> nop
-+0+7b0c <[^>]*> nop
-+0+7b10 <[^>]*> nop
-+0+7b14 <[^>]*> nop
-+0+7b18 <[^>]*> nop
-+0+7b1c <[^>]*> nop
-+0+7b20 <[^>]*> nop
-+0+7b24 <[^>]*> nop
-+0+7b28 <[^>]*> nop
-+0+7b2c <[^>]*> nop
-+0+7b30 <[^>]*> nop
-+0+7b34 <[^>]*> nop
-+0+7b38 <[^>]*> nop
-+0+7b3c <[^>]*> nop
-+0+7b40 <[^>]*> nop
-+0+7b44 <[^>]*> nop
-+0+7b48 <[^>]*> nop
-+0+7b4c <[^>]*> nop
-+0+7b50 <[^>]*> nop
-+0+7b54 <[^>]*> nop
-+0+7b58 <[^>]*> nop
-+0+7b5c <[^>]*> nop
-+0+7b60 <[^>]*> nop
-+0+7b64 <[^>]*> nop
-+0+7b68 <[^>]*> nop
-+0+7b6c <[^>]*> nop
-+0+7b70 <[^>]*> nop
-+0+7b74 <[^>]*> nop
-+0+7b78 <[^>]*> nop
-+0+7b7c <[^>]*> nop
-+0+7b80 <[^>]*> nop
-+0+7b84 <[^>]*> nop
-+0+7b88 <[^>]*> nop
-+0+7b8c <[^>]*> nop
-+0+7b90 <[^>]*> nop
-+0+7b94 <[^>]*> nop
-+0+7b98 <[^>]*> nop
-+0+7b9c <[^>]*> nop
-+0+7ba0 <[^>]*> nop
-+0+7ba4 <[^>]*> nop
-+0+7ba8 <[^>]*> nop
-+0+7bac <[^>]*> nop
-+0+7bb0 <[^>]*> nop
-+0+7bb4 <[^>]*> nop
-+0+7bb8 <[^>]*> nop
-+0+7bbc <[^>]*> nop
-+0+7bc0 <[^>]*> nop
-+0+7bc4 <[^>]*> nop
-+0+7bc8 <[^>]*> nop
-+0+7bcc <[^>]*> nop
-+0+7bd0 <[^>]*> nop
-+0+7bd4 <[^>]*> nop
-+0+7bd8 <[^>]*> nop
-+0+7bdc <[^>]*> nop
-+0+7be0 <[^>]*> nop
-+0+7be4 <[^>]*> nop
-+0+7be8 <[^>]*> nop
-+0+7bec <[^>]*> nop
-+0+7bf0 <[^>]*> nop
-+0+7bf4 <[^>]*> nop
-+0+7bf8 <[^>]*> nop
-+0+7bfc <[^>]*> nop
-+0+7c00 <[^>]*> nop
-+0+7c04 <[^>]*> nop
-+0+7c08 <[^>]*> nop
-+0+7c0c <[^>]*> nop
-+0+7c10 <[^>]*> nop
-+0+7c14 <[^>]*> nop
-+0+7c18 <[^>]*> nop
-+0+7c1c <[^>]*> nop
-+0+7c20 <[^>]*> nop
-+0+7c24 <[^>]*> nop
-+0+7c28 <[^>]*> nop
-+0+7c2c <[^>]*> nop
-+0+7c30 <[^>]*> nop
-+0+7c34 <[^>]*> nop
-+0+7c38 <[^>]*> nop
-+0+7c3c <[^>]*> nop
-+0+7c40 <[^>]*> nop
-+0+7c44 <[^>]*> nop
-+0+7c48 <[^>]*> nop
-+0+7c4c <[^>]*> nop
-+0+7c50 <[^>]*> nop
-+0+7c54 <[^>]*> nop
-+0+7c58 <[^>]*> nop
-+0+7c5c <[^>]*> nop
-+0+7c60 <[^>]*> nop
-+0+7c64 <[^>]*> nop
-+0+7c68 <[^>]*> nop
-+0+7c6c <[^>]*> nop
-+0+7c70 <[^>]*> nop
-+0+7c74 <[^>]*> nop
-+0+7c78 <[^>]*> nop
-+0+7c7c <[^>]*> nop
-+0+7c80 <[^>]*> nop
-+0+7c84 <[^>]*> nop
-+0+7c88 <[^>]*> nop
-+0+7c8c <[^>]*> nop
-+0+7c90 <[^>]*> nop
-+0+7c94 <[^>]*> nop
-+0+7c98 <[^>]*> nop
-+0+7c9c <[^>]*> nop
-+0+7ca0 <[^>]*> nop
-+0+7ca4 <[^>]*> nop
-+0+7ca8 <[^>]*> nop
-+0+7cac <[^>]*> nop
-+0+7cb0 <[^>]*> nop
-+0+7cb4 <[^>]*> nop
-+0+7cb8 <[^>]*> nop
-+0+7cbc <[^>]*> nop
-+0+7cc0 <[^>]*> nop
-+0+7cc4 <[^>]*> nop
-+0+7cc8 <[^>]*> nop
-+0+7ccc <[^>]*> nop
-+0+7cd0 <[^>]*> nop
-+0+7cd4 <[^>]*> nop
-+0+7cd8 <[^>]*> nop
-+0+7cdc <[^>]*> nop
-+0+7ce0 <[^>]*> nop
-+0+7ce4 <[^>]*> nop
-+0+7ce8 <[^>]*> nop
-+0+7cec <[^>]*> nop
-+0+7cf0 <[^>]*> nop
-+0+7cf4 <[^>]*> nop
-+0+7cf8 <[^>]*> nop
-+0+7cfc <[^>]*> nop
-+0+7d00 <[^>]*> nop
-+0+7d04 <[^>]*> nop
-+0+7d08 <[^>]*> nop
-+0+7d0c <[^>]*> nop
-+0+7d10 <[^>]*> nop
-+0+7d14 <[^>]*> nop
-+0+7d18 <[^>]*> nop
-+0+7d1c <[^>]*> nop
-+0+7d20 <[^>]*> nop
-+0+7d24 <[^>]*> nop
-+0+7d28 <[^>]*> nop
-+0+7d2c <[^>]*> nop
-+0+7d30 <[^>]*> nop
-+0+7d34 <[^>]*> nop
-+0+7d38 <[^>]*> nop
-+0+7d3c <[^>]*> nop
-+0+7d40 <[^>]*> nop
-+0+7d44 <[^>]*> nop
-+0+7d48 <[^>]*> nop
-+0+7d4c <[^>]*> nop
-+0+7d50 <[^>]*> nop
-+0+7d54 <[^>]*> nop
-+0+7d58 <[^>]*> nop
-+0+7d5c <[^>]*> nop
-+0+7d60 <[^>]*> nop
-+0+7d64 <[^>]*> nop
-+0+7d68 <[^>]*> nop
-+0+7d6c <[^>]*> nop
-+0+7d70 <[^>]*> nop
-+0+7d74 <[^>]*> nop
-+0+7d78 <[^>]*> nop
-+0+7d7c <[^>]*> nop
-+0+7d80 <[^>]*> nop
-+0+7d84 <[^>]*> nop
-+0+7d88 <[^>]*> nop
-+0+7d8c <[^>]*> nop
-+0+7d90 <[^>]*> nop
-+0+7d94 <[^>]*> nop
-+0+7d98 <[^>]*> nop
-+0+7d9c <[^>]*> nop
-+0+7da0 <[^>]*> nop
-+0+7da4 <[^>]*> nop
-+0+7da8 <[^>]*> nop
-+0+7dac <[^>]*> nop
-+0+7db0 <[^>]*> nop
-+0+7db4 <[^>]*> nop
-+0+7db8 <[^>]*> nop
-+0+7dbc <[^>]*> nop
-+0+7dc0 <[^>]*> nop
-+0+7dc4 <[^>]*> nop
-+0+7dc8 <[^>]*> nop
-+0+7dcc <[^>]*> nop
-+0+7dd0 <[^>]*> nop
-+0+7dd4 <[^>]*> nop
-+0+7dd8 <[^>]*> nop
-+0+7ddc <[^>]*> nop
-+0+7de0 <[^>]*> nop
-+0+7de4 <[^>]*> nop
-+0+7de8 <[^>]*> nop
-+0+7dec <[^>]*> nop
-+0+7df0 <[^>]*> nop
-+0+7df4 <[^>]*> nop
-+0+7df8 <[^>]*> nop
-+0+7dfc <[^>]*> nop
-+0+7e00 <[^>]*> nop
-+0+7e04 <[^>]*> nop
-+0+7e08 <[^>]*> nop
-+0+7e0c <[^>]*> nop
-+0+7e10 <[^>]*> nop
-+0+7e14 <[^>]*> nop
-+0+7e18 <[^>]*> nop
-+0+7e1c <[^>]*> nop
-+0+7e20 <[^>]*> nop
-+0+7e24 <[^>]*> nop
-+0+7e28 <[^>]*> nop
-+0+7e2c <[^>]*> nop
-+0+7e30 <[^>]*> nop
-+0+7e34 <[^>]*> nop
-+0+7e38 <[^>]*> nop
-+0+7e3c <[^>]*> nop
-+0+7e40 <[^>]*> nop
-+0+7e44 <[^>]*> nop
-+0+7e48 <[^>]*> nop
-+0+7e4c <[^>]*> nop
-+0+7e50 <[^>]*> nop
-+0+7e54 <[^>]*> nop
-+0+7e58 <[^>]*> nop
-+0+7e5c <[^>]*> nop
-+0+7e60 <[^>]*> nop
-+0+7e64 <[^>]*> nop
-+0+7e68 <[^>]*> nop
-+0+7e6c <[^>]*> nop
-+0+7e70 <[^>]*> nop
-+0+7e74 <[^>]*> nop
-+0+7e78 <[^>]*> nop
-+0+7e7c <[^>]*> nop
-+0+7e80 <[^>]*> nop
-+0+7e84 <[^>]*> nop
-+0+7e88 <[^>]*> nop
-+0+7e8c <[^>]*> nop
-+0+7e90 <[^>]*> nop
-+0+7e94 <[^>]*> nop
-+0+7e98 <[^>]*> nop
-+0+7e9c <[^>]*> nop
-+0+7ea0 <[^>]*> nop
-+0+7ea4 <[^>]*> nop
-+0+7ea8 <[^>]*> nop
-+0+7eac <[^>]*> nop
-+0+7eb0 <[^>]*> nop
-+0+7eb4 <[^>]*> nop
-+0+7eb8 <[^>]*> nop
-+0+7ebc <[^>]*> nop
-+0+7ec0 <[^>]*> nop
-+0+7ec4 <[^>]*> nop
-+0+7ec8 <[^>]*> nop
-+0+7ecc <[^>]*> nop
-+0+7ed0 <[^>]*> nop
-+0+7ed4 <[^>]*> nop
-+0+7ed8 <[^>]*> nop
-+0+7edc <[^>]*> nop
-+0+7ee0 <[^>]*> nop
-+0+7ee4 <[^>]*> nop
-+0+7ee8 <[^>]*> nop
-+0+7eec <[^>]*> nop
-+0+7ef0 <[^>]*> nop
-+0+7ef4 <[^>]*> nop
-+0+7ef8 <[^>]*> nop
-+0+7efc <[^>]*> nop
-+0+7f00 <[^>]*> nop
-+0+7f04 <[^>]*> nop
-+0+7f08 <[^>]*> nop
-+0+7f0c <[^>]*> nop
-+0+7f10 <[^>]*> nop
-+0+7f14 <[^>]*> nop
-+0+7f18 <[^>]*> nop
-+0+7f1c <[^>]*> nop
-+0+7f20 <[^>]*> nop
-+0+7f24 <[^>]*> nop
-+0+7f28 <[^>]*> nop
-+0+7f2c <[^>]*> nop
-+0+7f30 <[^>]*> nop
-+0+7f34 <[^>]*> nop
-+0+7f38 <[^>]*> nop
-+0+7f3c <[^>]*> nop
-+0+7f40 <[^>]*> nop
-+0+7f44 <[^>]*> nop
-+0+7f48 <[^>]*> nop
-+0+7f4c <[^>]*> nop
-+0+7f50 <[^>]*> nop
-+0+7f54 <[^>]*> nop
-+0+7f58 <[^>]*> nop
-+0+7f5c <[^>]*> nop
-+0+7f60 <[^>]*> nop
-+0+7f64 <[^>]*> nop
-+0+7f68 <[^>]*> nop
-+0+7f6c <[^>]*> nop
-+0+7f70 <[^>]*> nop
-+0+7f74 <[^>]*> nop
-+0+7f78 <[^>]*> nop
-+0+7f7c <[^>]*> nop
-+0+7f80 <[^>]*> nop
-+0+7f84 <[^>]*> nop
-+0+7f88 <[^>]*> nop
-+0+7f8c <[^>]*> nop
-+0+7f90 <[^>]*> nop
-+0+7f94 <[^>]*> nop
-+0+7f98 <[^>]*> nop
-+0+7f9c <[^>]*> nop
-+0+7fa0 <[^>]*> nop
-+0+7fa4 <[^>]*> nop
-+0+7fa8 <[^>]*> nop
-+0+7fac <[^>]*> nop
-+0+7fb0 <[^>]*> nop
-+0+7fb4 <[^>]*> nop
-+0+7fb8 <[^>]*> nop
-+0+7fbc <[^>]*> nop
-+0+7fc0 <[^>]*> nop
-+0+7fc4 <[^>]*> nop
-+0+7fc8 <[^>]*> nop
-+0+7fcc <[^>]*> nop
-+0+7fd0 <[^>]*> nop
-+0+7fd4 <[^>]*> nop
-+0+7fd8 <[^>]*> nop
-+0+7fdc <[^>]*> nop
-+0+7fe0 <[^>]*> nop
-+0+7fe4 <[^>]*> nop
-+0+7fe8 <[^>]*> nop
-+0+7fec <[^>]*> nop
-+0+7ff0 <[^>]*> nop
-+0+7ff4 <[^>]*> nop
-+0+7ff8 <[^>]*> nop
-+0+7ffc <[^>]*> nop
-+0+8000 <[^>]*> movhi	at,0
-+0+8004 <[^>]*> ori	at,at,0
-+0+8008 <[^>]*> jmp	at
-+0+800c <out_of_range> nop
-+	...
-+
---- binutils-2.15/gas/testsuite/gas/nios2/relax_section.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/relax_section.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,10 @@
-+	beq r2, r3, out_of_range
-+	bne r2, r3, in_range
-+	nop
-+	nop
-+in_range:
-+	nop
-+.align 15
-+	br 0
-+out_of_range:
-+	nop
---- binutils-2.15/gas/testsuite/gas/nios2/relax_ujmp.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/relax_ujmp.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8221 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 relax_ujmp
-+
-+# Test relaxation of unconditional jumps
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section text2:
-+00000000 <[^>]*> br	00008000 <[^>]*>
-+00000004 <[^>]*> nop
-+00000008 <[^>]*> nop
-+0000000c <[^>]*> movhi	at,1
-+00000010 <[^>]*> ori	at,at,24
-+00000014 <[^>]*> jmp	at
-+00000018 <[^>]*> br	0000002c <[^>]*>
-+0000001c <[^>]*> nop
-+00000020 <[^>]*> nop
-+00000024 <[^>]*> nop
-+00000028 <[^>]*> nop
-+0000002c <[^>]*> nop
-+Disassembly of section text1:
-+00008000 <[^>]*> br	00010000 <[^>]*>
-+00008004 <[^>]*> nop
-+00008008 <[^>]*> nop
-+0000800c <[^>]*> movhi	at,1
-+00008010 <[^>]*> ori	at,at,24
-+00008014 <[^>]*> jmp	at
-+00008018 <[^>]*> nop
-+0000801c <[^>]*> nop
-+00008020 <[^>]*> nop
-+00008024 <[^>]*> nop
-+00008028 <[^>]*> nop
-+0000802c <[^>]*> nop
-+00008030 <[^>]*> nop
-+00008034 <[^>]*> nop
-+00008038 <[^>]*> nop
-+0000803c <[^>]*> nop
-+00008040 <[^>]*> nop
-+00008044 <[^>]*> nop
-+00008048 <[^>]*> nop
-+0000804c <[^>]*> nop
-+00008050 <[^>]*> nop
-+00008054 <[^>]*> nop
-+00008058 <[^>]*> nop
-+0000805c <[^>]*> nop
-+00008060 <[^>]*> nop
-+00008064 <[^>]*> nop
-+00008068 <[^>]*> nop
-+0000806c <[^>]*> nop
-+00008070 <[^>]*> nop
-+00008074 <[^>]*> nop
-+00008078 <[^>]*> nop
-+0000807c <[^>]*> nop
-+00008080 <[^>]*> nop
-+00008084 <[^>]*> nop
-+00008088 <[^>]*> nop
-+0000808c <[^>]*> nop
-+00008090 <[^>]*> nop
-+00008094 <[^>]*> nop
-+00008098 <[^>]*> nop
-+0000809c <[^>]*> nop
-+000080a0 <[^>]*> nop
-+000080a4 <[^>]*> nop
-+000080a8 <[^>]*> nop
-+000080ac <[^>]*> nop
-+000080b0 <[^>]*> nop
-+000080b4 <[^>]*> nop
-+000080b8 <[^>]*> nop
-+000080bc <[^>]*> nop
-+000080c0 <[^>]*> nop
-+000080c4 <[^>]*> nop
-+000080c8 <[^>]*> nop
-+000080cc <[^>]*> nop
-+000080d0 <[^>]*> nop
-+000080d4 <[^>]*> nop
-+000080d8 <[^>]*> nop
-+000080dc <[^>]*> nop
-+000080e0 <[^>]*> nop
-+000080e4 <[^>]*> nop
-+000080e8 <[^>]*> nop
-+000080ec <[^>]*> nop
-+000080f0 <[^>]*> nop
-+000080f4 <[^>]*> nop
-+000080f8 <[^>]*> nop
-+000080fc <[^>]*> nop
-+00008100 <[^>]*> nop
-+00008104 <[^>]*> nop
-+00008108 <[^>]*> nop
-+0000810c <[^>]*> nop
-+00008110 <[^>]*> nop
-+00008114 <[^>]*> nop
-+00008118 <[^>]*> nop
-+0000811c <[^>]*> nop
-+00008120 <[^>]*> nop
-+00008124 <[^>]*> nop
-+00008128 <[^>]*> nop
-+0000812c <[^>]*> nop
-+00008130 <[^>]*> nop
-+00008134 <[^>]*> nop
-+00008138 <[^>]*> nop
-+0000813c <[^>]*> nop
-+00008140 <[^>]*> nop
-+00008144 <[^>]*> nop
-+00008148 <[^>]*> nop
-+0000814c <[^>]*> nop
-+00008150 <[^>]*> nop
-+00008154 <[^>]*> nop
-+00008158 <[^>]*> nop
-+0000815c <[^>]*> nop
-+00008160 <[^>]*> nop
-+00008164 <[^>]*> nop
-+00008168 <[^>]*> nop
-+0000816c <[^>]*> nop
-+00008170 <[^>]*> nop
-+00008174 <[^>]*> nop
-+00008178 <[^>]*> nop
-+0000817c <[^>]*> nop
-+00008180 <[^>]*> nop
-+00008184 <[^>]*> nop
-+00008188 <[^>]*> nop
-+0000818c <[^>]*> nop
-+00008190 <[^>]*> nop
-+00008194 <[^>]*> nop
-+00008198 <[^>]*> nop
-+0000819c <[^>]*> nop
-+000081a0 <[^>]*> nop
-+000081a4 <[^>]*> nop
-+000081a8 <[^>]*> nop
-+000081ac <[^>]*> nop
-+000081b0 <[^>]*> nop
-+000081b4 <[^>]*> nop
-+000081b8 <[^>]*> nop
-+000081bc <[^>]*> nop
-+000081c0 <[^>]*> nop
-+000081c4 <[^>]*> nop
-+000081c8 <[^>]*> nop
-+000081cc <[^>]*> nop
-+000081d0 <[^>]*> nop
-+000081d4 <[^>]*> nop
-+000081d8 <[^>]*> nop
-+000081dc <[^>]*> nop
-+000081e0 <[^>]*> nop
-+000081e4 <[^>]*> nop
-+000081e8 <[^>]*> nop
-+000081ec <[^>]*> nop
-+000081f0 <[^>]*> nop
-+000081f4 <[^>]*> nop
-+000081f8 <[^>]*> nop
-+000081fc <[^>]*> nop
-+00008200 <[^>]*> nop
-+00008204 <[^>]*> nop
-+00008208 <[^>]*> nop
-+0000820c <[^>]*> nop
-+00008210 <[^>]*> nop
-+00008214 <[^>]*> nop
-+00008218 <[^>]*> nop
-+0000821c <[^>]*> nop
-+00008220 <[^>]*> nop
-+00008224 <[^>]*> nop
-+00008228 <[^>]*> nop
-+0000822c <[^>]*> nop
-+00008230 <[^>]*> nop
-+00008234 <[^>]*> nop
-+00008238 <[^>]*> nop
-+0000823c <[^>]*> nop
-+00008240 <[^>]*> nop
-+00008244 <[^>]*> nop
-+00008248 <[^>]*> nop
-+0000824c <[^>]*> nop
-+00008250 <[^>]*> nop
-+00008254 <[^>]*> nop
-+00008258 <[^>]*> nop
-+0000825c <[^>]*> nop
-+00008260 <[^>]*> nop
-+00008264 <[^>]*> nop
-+00008268 <[^>]*> nop
-+0000826c <[^>]*> nop
-+00008270 <[^>]*> nop
-+00008274 <[^>]*> nop
-+00008278 <[^>]*> nop
-+0000827c <[^>]*> nop
-+00008280 <[^>]*> nop
-+00008284 <[^>]*> nop
-+00008288 <[^>]*> nop
-+0000828c <[^>]*> nop
-+00008290 <[^>]*> nop
-+00008294 <[^>]*> nop
-+00008298 <[^>]*> nop
-+0000829c <[^>]*> nop
-+000082a0 <[^>]*> nop
-+000082a4 <[^>]*> nop
-+000082a8 <[^>]*> nop
-+000082ac <[^>]*> nop
-+000082b0 <[^>]*> nop
-+000082b4 <[^>]*> nop
-+000082b8 <[^>]*> nop
-+000082bc <[^>]*> nop
-+000082c0 <[^>]*> nop
-+000082c4 <[^>]*> nop
-+000082c8 <[^>]*> nop
-+000082cc <[^>]*> nop
-+000082d0 <[^>]*> nop
-+000082d4 <[^>]*> nop
-+000082d8 <[^>]*> nop
-+000082dc <[^>]*> nop
-+000082e0 <[^>]*> nop
-+000082e4 <[^>]*> nop
-+000082e8 <[^>]*> nop
-+000082ec <[^>]*> nop
-+000082f0 <[^>]*> nop
-+000082f4 <[^>]*> nop
-+000082f8 <[^>]*> nop
-+000082fc <[^>]*> nop
-+00008300 <[^>]*> nop
-+00008304 <[^>]*> nop
-+00008308 <[^>]*> nop
-+0000830c <[^>]*> nop
-+00008310 <[^>]*> nop
-+00008314 <[^>]*> nop
-+00008318 <[^>]*> nop
-+0000831c <[^>]*> nop
-+00008320 <[^>]*> nop
-+00008324 <[^>]*> nop
-+00008328 <[^>]*> nop
-+0000832c <[^>]*> nop
-+00008330 <[^>]*> nop
-+00008334 <[^>]*> nop
-+00008338 <[^>]*> nop
-+0000833c <[^>]*> nop
-+00008340 <[^>]*> nop
-+00008344 <[^>]*> nop
-+00008348 <[^>]*> nop
-+0000834c <[^>]*> nop
-+00008350 <[^>]*> nop
-+00008354 <[^>]*> nop
-+00008358 <[^>]*> nop
-+0000835c <[^>]*> nop
-+00008360 <[^>]*> nop
-+00008364 <[^>]*> nop
-+00008368 <[^>]*> nop
-+0000836c <[^>]*> nop
-+00008370 <[^>]*> nop
-+00008374 <[^>]*> nop
-+00008378 <[^>]*> nop
-+0000837c <[^>]*> nop
-+00008380 <[^>]*> nop
-+00008384 <[^>]*> nop
-+00008388 <[^>]*> nop
-+0000838c <[^>]*> nop
-+00008390 <[^>]*> nop
-+00008394 <[^>]*> nop
-+00008398 <[^>]*> nop
-+0000839c <[^>]*> nop
-+000083a0 <[^>]*> nop
-+000083a4 <[^>]*> nop
-+000083a8 <[^>]*> nop
-+000083ac <[^>]*> nop
-+000083b0 <[^>]*> nop
-+000083b4 <[^>]*> nop
-+000083b8 <[^>]*> nop
-+000083bc <[^>]*> nop
-+000083c0 <[^>]*> nop
-+000083c4 <[^>]*> nop
-+000083c8 <[^>]*> nop
-+000083cc <[^>]*> nop
-+000083d0 <[^>]*> nop
-+000083d4 <[^>]*> nop
-+000083d8 <[^>]*> nop
-+000083dc <[^>]*> nop
-+000083e0 <[^>]*> nop
-+000083e4 <[^>]*> nop
-+000083e8 <[^>]*> nop
-+000083ec <[^>]*> nop
-+000083f0 <[^>]*> nop
-+000083f4 <[^>]*> nop
-+000083f8 <[^>]*> nop
-+000083fc <[^>]*> nop
-+00008400 <[^>]*> nop
-+00008404 <[^>]*> nop
-+00008408 <[^>]*> nop
-+0000840c <[^>]*> nop
-+00008410 <[^>]*> nop
-+00008414 <[^>]*> nop
-+00008418 <[^>]*> nop
-+0000841c <[^>]*> nop
-+00008420 <[^>]*> nop
-+00008424 <[^>]*> nop
-+00008428 <[^>]*> nop
-+0000842c <[^>]*> nop
-+00008430 <[^>]*> nop
-+00008434 <[^>]*> nop
-+00008438 <[^>]*> nop
-+0000843c <[^>]*> nop
-+00008440 <[^>]*> nop
-+00008444 <[^>]*> nop
-+00008448 <[^>]*> nop
-+0000844c <[^>]*> nop
-+00008450 <[^>]*> nop
-+00008454 <[^>]*> nop
-+00008458 <[^>]*> nop
-+0000845c <[^>]*> nop
-+00008460 <[^>]*> nop
-+00008464 <[^>]*> nop
-+00008468 <[^>]*> nop
-+0000846c <[^>]*> nop
-+00008470 <[^>]*> nop
-+00008474 <[^>]*> nop
-+00008478 <[^>]*> nop
-+0000847c <[^>]*> nop
-+00008480 <[^>]*> nop
-+00008484 <[^>]*> nop
-+00008488 <[^>]*> nop
-+0000848c <[^>]*> nop
-+00008490 <[^>]*> nop
-+00008494 <[^>]*> nop
-+00008498 <[^>]*> nop
-+0000849c <[^>]*> nop
-+000084a0 <[^>]*> nop
-+000084a4 <[^>]*> nop
-+000084a8 <[^>]*> nop
-+000084ac <[^>]*> nop
-+000084b0 <[^>]*> nop
-+000084b4 <[^>]*> nop
-+000084b8 <[^>]*> nop
-+000084bc <[^>]*> nop
-+000084c0 <[^>]*> nop
-+000084c4 <[^>]*> nop
-+000084c8 <[^>]*> nop
-+000084cc <[^>]*> nop
-+000084d0 <[^>]*> nop
-+000084d4 <[^>]*> nop
-+000084d8 <[^>]*> nop
-+000084dc <[^>]*> nop
-+000084e0 <[^>]*> nop
-+000084e4 <[^>]*> nop
-+000084e8 <[^>]*> nop
-+000084ec <[^>]*> nop
-+000084f0 <[^>]*> nop
-+000084f4 <[^>]*> nop
-+000084f8 <[^>]*> nop
-+000084fc <[^>]*> nop
-+00008500 <[^>]*> nop
-+00008504 <[^>]*> nop
-+00008508 <[^>]*> nop
-+0000850c <[^>]*> nop
-+00008510 <[^>]*> nop
-+00008514 <[^>]*> nop
-+00008518 <[^>]*> nop
-+0000851c <[^>]*> nop
-+00008520 <[^>]*> nop
-+00008524 <[^>]*> nop
-+00008528 <[^>]*> nop
-+0000852c <[^>]*> nop
-+00008530 <[^>]*> nop
-+00008534 <[^>]*> nop
-+00008538 <[^>]*> nop
-+0000853c <[^>]*> nop
-+00008540 <[^>]*> nop
-+00008544 <[^>]*> nop
-+00008548 <[^>]*> nop
-+0000854c <[^>]*> nop
-+00008550 <[^>]*> nop
-+00008554 <[^>]*> nop
-+00008558 <[^>]*> nop
-+0000855c <[^>]*> nop
-+00008560 <[^>]*> nop
-+00008564 <[^>]*> nop
-+00008568 <[^>]*> nop
-+0000856c <[^>]*> nop
-+00008570 <[^>]*> nop
-+00008574 <[^>]*> nop
-+00008578 <[^>]*> nop
-+0000857c <[^>]*> nop
-+00008580 <[^>]*> nop
-+00008584 <[^>]*> nop
-+00008588 <[^>]*> nop
-+0000858c <[^>]*> nop
-+00008590 <[^>]*> nop
-+00008594 <[^>]*> nop
-+00008598 <[^>]*> nop
-+0000859c <[^>]*> nop
-+000085a0 <[^>]*> nop
-+000085a4 <[^>]*> nop
-+000085a8 <[^>]*> nop
-+000085ac <[^>]*> nop
-+000085b0 <[^>]*> nop
-+000085b4 <[^>]*> nop
-+000085b8 <[^>]*> nop
-+000085bc <[^>]*> nop
-+000085c0 <[^>]*> nop
-+000085c4 <[^>]*> nop
-+000085c8 <[^>]*> nop
-+000085cc <[^>]*> nop
-+000085d0 <[^>]*> nop
-+000085d4 <[^>]*> nop
-+000085d8 <[^>]*> nop
-+000085dc <[^>]*> nop
-+000085e0 <[^>]*> nop
-+000085e4 <[^>]*> nop
-+000085e8 <[^>]*> nop
-+000085ec <[^>]*> nop
-+000085f0 <[^>]*> nop
-+000085f4 <[^>]*> nop
-+000085f8 <[^>]*> nop
-+000085fc <[^>]*> nop
-+00008600 <[^>]*> nop
-+00008604 <[^>]*> nop
-+00008608 <[^>]*> nop
-+0000860c <[^>]*> nop
-+00008610 <[^>]*> nop
-+00008614 <[^>]*> nop
-+00008618 <[^>]*> nop
-+0000861c <[^>]*> nop
-+00008620 <[^>]*> nop
-+00008624 <[^>]*> nop
-+00008628 <[^>]*> nop
-+0000862c <[^>]*> nop
-+00008630 <[^>]*> nop
-+00008634 <[^>]*> nop
-+00008638 <[^>]*> nop
-+0000863c <[^>]*> nop
-+00008640 <[^>]*> nop
-+00008644 <[^>]*> nop
-+00008648 <[^>]*> nop
-+0000864c <[^>]*> nop
-+00008650 <[^>]*> nop
-+00008654 <[^>]*> nop
-+00008658 <[^>]*> nop
-+0000865c <[^>]*> nop
-+00008660 <[^>]*> nop
-+00008664 <[^>]*> nop
-+00008668 <[^>]*> nop
-+0000866c <[^>]*> nop
-+00008670 <[^>]*> nop
-+00008674 <[^>]*> nop
-+00008678 <[^>]*> nop
-+0000867c <[^>]*> nop
-+00008680 <[^>]*> nop
-+00008684 <[^>]*> nop
-+00008688 <[^>]*> nop
-+0000868c <[^>]*> nop
-+00008690 <[^>]*> nop
-+00008694 <[^>]*> nop
-+00008698 <[^>]*> nop
-+0000869c <[^>]*> nop
-+000086a0 <[^>]*> nop
-+000086a4 <[^>]*> nop
-+000086a8 <[^>]*> nop
-+000086ac <[^>]*> nop
-+000086b0 <[^>]*> nop
-+000086b4 <[^>]*> nop
-+000086b8 <[^>]*> nop
-+000086bc <[^>]*> nop
-+000086c0 <[^>]*> nop
-+000086c4 <[^>]*> nop
-+000086c8 <[^>]*> nop
-+000086cc <[^>]*> nop
-+000086d0 <[^>]*> nop
-+000086d4 <[^>]*> nop
-+000086d8 <[^>]*> nop
-+000086dc <[^>]*> nop
-+000086e0 <[^>]*> nop
-+000086e4 <[^>]*> nop
-+000086e8 <[^>]*> nop
-+000086ec <[^>]*> nop
-+000086f0 <[^>]*> nop
-+000086f4 <[^>]*> nop
-+000086f8 <[^>]*> nop
-+000086fc <[^>]*> nop
-+00008700 <[^>]*> nop
-+00008704 <[^>]*> nop
-+00008708 <[^>]*> nop
-+0000870c <[^>]*> nop
-+00008710 <[^>]*> nop
-+00008714 <[^>]*> nop
-+00008718 <[^>]*> nop
-+0000871c <[^>]*> nop
-+00008720 <[^>]*> nop
-+00008724 <[^>]*> nop
-+00008728 <[^>]*> nop
-+0000872c <[^>]*> nop
-+00008730 <[^>]*> nop
-+00008734 <[^>]*> nop
-+00008738 <[^>]*> nop
-+0000873c <[^>]*> nop
-+00008740 <[^>]*> nop
-+00008744 <[^>]*> nop
-+00008748 <[^>]*> nop
-+0000874c <[^>]*> nop
-+00008750 <[^>]*> nop
-+00008754 <[^>]*> nop
-+00008758 <[^>]*> nop
-+0000875c <[^>]*> nop
-+00008760 <[^>]*> nop
-+00008764 <[^>]*> nop
-+00008768 <[^>]*> nop
-+0000876c <[^>]*> nop
-+00008770 <[^>]*> nop
-+00008774 <[^>]*> nop
-+00008778 <[^>]*> nop
-+0000877c <[^>]*> nop
-+00008780 <[^>]*> nop
-+00008784 <[^>]*> nop
-+00008788 <[^>]*> nop
-+0000878c <[^>]*> nop
-+00008790 <[^>]*> nop
-+00008794 <[^>]*> nop
-+00008798 <[^>]*> nop
-+0000879c <[^>]*> nop
-+000087a0 <[^>]*> nop
-+000087a4 <[^>]*> nop
-+000087a8 <[^>]*> nop
-+000087ac <[^>]*> nop
-+000087b0 <[^>]*> nop
-+000087b4 <[^>]*> nop
-+000087b8 <[^>]*> nop
-+000087bc <[^>]*> nop
-+000087c0 <[^>]*> nop
-+000087c4 <[^>]*> nop
-+000087c8 <[^>]*> nop
-+000087cc <[^>]*> nop
-+000087d0 <[^>]*> nop
-+000087d4 <[^>]*> nop
-+000087d8 <[^>]*> nop
-+000087dc <[^>]*> nop
-+000087e0 <[^>]*> nop
-+000087e4 <[^>]*> nop
-+000087e8 <[^>]*> nop
-+000087ec <[^>]*> nop
-+000087f0 <[^>]*> nop
-+000087f4 <[^>]*> nop
-+000087f8 <[^>]*> nop
-+000087fc <[^>]*> nop
-+00008800 <[^>]*> nop
-+00008804 <[^>]*> nop
-+00008808 <[^>]*> nop
-+0000880c <[^>]*> nop
-+00008810 <[^>]*> nop
-+00008814 <[^>]*> nop
-+00008818 <[^>]*> nop
-+0000881c <[^>]*> nop
-+00008820 <[^>]*> nop
-+00008824 <[^>]*> nop
-+00008828 <[^>]*> nop
-+0000882c <[^>]*> nop
-+00008830 <[^>]*> nop
-+00008834 <[^>]*> nop
-+00008838 <[^>]*> nop
-+0000883c <[^>]*> nop
-+00008840 <[^>]*> nop
-+00008844 <[^>]*> nop
-+00008848 <[^>]*> nop
-+0000884c <[^>]*> nop
-+00008850 <[^>]*> nop
-+00008854 <[^>]*> nop
-+00008858 <[^>]*> nop
-+0000885c <[^>]*> nop
-+00008860 <[^>]*> nop
-+00008864 <[^>]*> nop
-+00008868 <[^>]*> nop
-+0000886c <[^>]*> nop
-+00008870 <[^>]*> nop
-+00008874 <[^>]*> nop
-+00008878 <[^>]*> nop
-+0000887c <[^>]*> nop
-+00008880 <[^>]*> nop
-+00008884 <[^>]*> nop
-+00008888 <[^>]*> nop
-+0000888c <[^>]*> nop
-+00008890 <[^>]*> nop
-+00008894 <[^>]*> nop
-+00008898 <[^>]*> nop
-+0000889c <[^>]*> nop
-+000088a0 <[^>]*> nop
-+000088a4 <[^>]*> nop
-+000088a8 <[^>]*> nop
-+000088ac <[^>]*> nop
-+000088b0 <[^>]*> nop
-+000088b4 <[^>]*> nop
-+000088b8 <[^>]*> nop
-+000088bc <[^>]*> nop
-+000088c0 <[^>]*> nop
-+000088c4 <[^>]*> nop
-+000088c8 <[^>]*> nop
-+000088cc <[^>]*> nop
-+000088d0 <[^>]*> nop
-+000088d4 <[^>]*> nop
-+000088d8 <[^>]*> nop
-+000088dc <[^>]*> nop
-+000088e0 <[^>]*> nop
-+000088e4 <[^>]*> nop
-+000088e8 <[^>]*> nop
-+000088ec <[^>]*> nop
-+000088f0 <[^>]*> nop
-+000088f4 <[^>]*> nop
-+000088f8 <[^>]*> nop
-+000088fc <[^>]*> nop
-+00008900 <[^>]*> nop
-+00008904 <[^>]*> nop
-+00008908 <[^>]*> nop
-+0000890c <[^>]*> nop
-+00008910 <[^>]*> nop
-+00008914 <[^>]*> nop
-+00008918 <[^>]*> nop
-+0000891c <[^>]*> nop
-+00008920 <[^>]*> nop
-+00008924 <[^>]*> nop
-+00008928 <[^>]*> nop
-+0000892c <[^>]*> nop
-+00008930 <[^>]*> nop
-+00008934 <[^>]*> nop
-+00008938 <[^>]*> nop
-+0000893c <[^>]*> nop
-+00008940 <[^>]*> nop
-+00008944 <[^>]*> nop
-+00008948 <[^>]*> nop
-+0000894c <[^>]*> nop
-+00008950 <[^>]*> nop
-+00008954 <[^>]*> nop
-+00008958 <[^>]*> nop
-+0000895c <[^>]*> nop
-+00008960 <[^>]*> nop
-+00008964 <[^>]*> nop
-+00008968 <[^>]*> nop
-+0000896c <[^>]*> nop
-+00008970 <[^>]*> nop
-+00008974 <[^>]*> nop
-+00008978 <[^>]*> nop
-+0000897c <[^>]*> nop
-+00008980 <[^>]*> nop
-+00008984 <[^>]*> nop
-+00008988 <[^>]*> nop
-+0000898c <[^>]*> nop
-+00008990 <[^>]*> nop
-+00008994 <[^>]*> nop
-+00008998 <[^>]*> nop
-+0000899c <[^>]*> nop
-+000089a0 <[^>]*> nop
-+000089a4 <[^>]*> nop
-+000089a8 <[^>]*> nop
-+000089ac <[^>]*> nop
-+000089b0 <[^>]*> nop
-+000089b4 <[^>]*> nop
-+000089b8 <[^>]*> nop
-+000089bc <[^>]*> nop
-+000089c0 <[^>]*> nop
-+000089c4 <[^>]*> nop
-+000089c8 <[^>]*> nop
-+000089cc <[^>]*> nop
-+000089d0 <[^>]*> nop
-+000089d4 <[^>]*> nop
-+000089d8 <[^>]*> nop
-+000089dc <[^>]*> nop
-+000089e0 <[^>]*> nop
-+000089e4 <[^>]*> nop
-+000089e8 <[^>]*> nop
-+000089ec <[^>]*> nop
-+000089f0 <[^>]*> nop
-+000089f4 <[^>]*> nop
-+000089f8 <[^>]*> nop
-+000089fc <[^>]*> nop
-+00008a00 <[^>]*> nop
-+00008a04 <[^>]*> nop
-+00008a08 <[^>]*> nop
-+00008a0c <[^>]*> nop
-+00008a10 <[^>]*> nop
-+00008a14 <[^>]*> nop
-+00008a18 <[^>]*> nop
-+00008a1c <[^>]*> nop
-+00008a20 <[^>]*> nop
-+00008a24 <[^>]*> nop
-+00008a28 <[^>]*> nop
-+00008a2c <[^>]*> nop
-+00008a30 <[^>]*> nop
-+00008a34 <[^>]*> nop
-+00008a38 <[^>]*> nop
-+00008a3c <[^>]*> nop
-+00008a40 <[^>]*> nop
-+00008a44 <[^>]*> nop
-+00008a48 <[^>]*> nop
-+00008a4c <[^>]*> nop
-+00008a50 <[^>]*> nop
-+00008a54 <[^>]*> nop
-+00008a58 <[^>]*> nop
-+00008a5c <[^>]*> nop
-+00008a60 <[^>]*> nop
-+00008a64 <[^>]*> nop
-+00008a68 <[^>]*> nop
-+00008a6c <[^>]*> nop
-+00008a70 <[^>]*> nop
-+00008a74 <[^>]*> nop
-+00008a78 <[^>]*> nop
-+00008a7c <[^>]*> nop
-+00008a80 <[^>]*> nop
-+00008a84 <[^>]*> nop
-+00008a88 <[^>]*> nop
-+00008a8c <[^>]*> nop
-+00008a90 <[^>]*> nop
-+00008a94 <[^>]*> nop
-+00008a98 <[^>]*> nop
-+00008a9c <[^>]*> nop
-+00008aa0 <[^>]*> nop
-+00008aa4 <[^>]*> nop
-+00008aa8 <[^>]*> nop
-+00008aac <[^>]*> nop
-+00008ab0 <[^>]*> nop
-+00008ab4 <[^>]*> nop
-+00008ab8 <[^>]*> nop
-+00008abc <[^>]*> nop
-+00008ac0 <[^>]*> nop
-+00008ac4 <[^>]*> nop
-+00008ac8 <[^>]*> nop
-+00008acc <[^>]*> nop
-+00008ad0 <[^>]*> nop
-+00008ad4 <[^>]*> nop
-+00008ad8 <[^>]*> nop
-+00008adc <[^>]*> nop
-+00008ae0 <[^>]*> nop
-+00008ae4 <[^>]*> nop
-+00008ae8 <[^>]*> nop
-+00008aec <[^>]*> nop
-+00008af0 <[^>]*> nop
-+00008af4 <[^>]*> nop
-+00008af8 <[^>]*> nop
-+00008afc <[^>]*> nop
-+00008b00 <[^>]*> nop
-+00008b04 <[^>]*> nop
-+00008b08 <[^>]*> nop
-+00008b0c <[^>]*> nop
-+00008b10 <[^>]*> nop
-+00008b14 <[^>]*> nop
-+00008b18 <[^>]*> nop
-+00008b1c <[^>]*> nop
-+00008b20 <[^>]*> nop
-+00008b24 <[^>]*> nop
-+00008b28 <[^>]*> nop
-+00008b2c <[^>]*> nop
-+00008b30 <[^>]*> nop
-+00008b34 <[^>]*> nop
-+00008b38 <[^>]*> nop
-+00008b3c <[^>]*> nop
-+00008b40 <[^>]*> nop
-+00008b44 <[^>]*> nop
-+00008b48 <[^>]*> nop
-+00008b4c <[^>]*> nop
-+00008b50 <[^>]*> nop
-+00008b54 <[^>]*> nop
-+00008b58 <[^>]*> nop
-+00008b5c <[^>]*> nop
-+00008b60 <[^>]*> nop
-+00008b64 <[^>]*> nop
-+00008b68 <[^>]*> nop
-+00008b6c <[^>]*> nop
-+00008b70 <[^>]*> nop
-+00008b74 <[^>]*> nop
-+00008b78 <[^>]*> nop
-+00008b7c <[^>]*> nop
-+00008b80 <[^>]*> nop
-+00008b84 <[^>]*> nop
-+00008b88 <[^>]*> nop
-+00008b8c <[^>]*> nop
-+00008b90 <[^>]*> nop
-+00008b94 <[^>]*> nop
-+00008b98 <[^>]*> nop
-+00008b9c <[^>]*> nop
-+00008ba0 <[^>]*> nop
-+00008ba4 <[^>]*> nop
-+00008ba8 <[^>]*> nop
-+00008bac <[^>]*> nop
-+00008bb0 <[^>]*> nop
-+00008bb4 <[^>]*> nop
-+00008bb8 <[^>]*> nop
-+00008bbc <[^>]*> nop
-+00008bc0 <[^>]*> nop
-+00008bc4 <[^>]*> nop
-+00008bc8 <[^>]*> nop
-+00008bcc <[^>]*> nop
-+00008bd0 <[^>]*> nop
-+00008bd4 <[^>]*> nop
-+00008bd8 <[^>]*> nop
-+00008bdc <[^>]*> nop
-+00008be0 <[^>]*> nop
-+00008be4 <[^>]*> nop
-+00008be8 <[^>]*> nop
-+00008bec <[^>]*> nop
-+00008bf0 <[^>]*> nop
-+00008bf4 <[^>]*> nop
-+00008bf8 <[^>]*> nop
-+00008bfc <[^>]*> nop
-+00008c00 <[^>]*> nop
-+00008c04 <[^>]*> nop
-+00008c08 <[^>]*> nop
-+00008c0c <[^>]*> nop
-+00008c10 <[^>]*> nop
-+00008c14 <[^>]*> nop
-+00008c18 <[^>]*> nop
-+00008c1c <[^>]*> nop
-+00008c20 <[^>]*> nop
-+00008c24 <[^>]*> nop
-+00008c28 <[^>]*> nop
-+00008c2c <[^>]*> nop
-+00008c30 <[^>]*> nop
-+00008c34 <[^>]*> nop
-+00008c38 <[^>]*> nop
-+00008c3c <[^>]*> nop
-+00008c40 <[^>]*> nop
-+00008c44 <[^>]*> nop
-+00008c48 <[^>]*> nop
-+00008c4c <[^>]*> nop
-+00008c50 <[^>]*> nop
-+00008c54 <[^>]*> nop
-+00008c58 <[^>]*> nop
-+00008c5c <[^>]*> nop
-+00008c60 <[^>]*> nop
-+00008c64 <[^>]*> nop
-+00008c68 <[^>]*> nop
-+00008c6c <[^>]*> nop
-+00008c70 <[^>]*> nop
-+00008c74 <[^>]*> nop
-+00008c78 <[^>]*> nop
-+00008c7c <[^>]*> nop
-+00008c80 <[^>]*> nop
-+00008c84 <[^>]*> nop
-+00008c88 <[^>]*> nop
-+00008c8c <[^>]*> nop
-+00008c90 <[^>]*> nop
-+00008c94 <[^>]*> nop
-+00008c98 <[^>]*> nop
-+00008c9c <[^>]*> nop
-+00008ca0 <[^>]*> nop
-+00008ca4 <[^>]*> nop
-+00008ca8 <[^>]*> nop
-+00008cac <[^>]*> nop
-+00008cb0 <[^>]*> nop
-+00008cb4 <[^>]*> nop
-+00008cb8 <[^>]*> nop
-+00008cbc <[^>]*> nop
-+00008cc0 <[^>]*> nop
-+00008cc4 <[^>]*> nop
-+00008cc8 <[^>]*> nop
-+00008ccc <[^>]*> nop
-+00008cd0 <[^>]*> nop
-+00008cd4 <[^>]*> nop
-+00008cd8 <[^>]*> nop
-+00008cdc <[^>]*> nop
-+00008ce0 <[^>]*> nop
-+00008ce4 <[^>]*> nop
-+00008ce8 <[^>]*> nop
-+00008cec <[^>]*> nop
-+00008cf0 <[^>]*> nop
-+00008cf4 <[^>]*> nop
-+00008cf8 <[^>]*> nop
-+00008cfc <[^>]*> nop
-+00008d00 <[^>]*> nop
-+00008d04 <[^>]*> nop
-+00008d08 <[^>]*> nop
-+00008d0c <[^>]*> nop
-+00008d10 <[^>]*> nop
-+00008d14 <[^>]*> nop
-+00008d18 <[^>]*> nop
-+00008d1c <[^>]*> nop
-+00008d20 <[^>]*> nop
-+00008d24 <[^>]*> nop
-+00008d28 <[^>]*> nop
-+00008d2c <[^>]*> nop
-+00008d30 <[^>]*> nop
-+00008d34 <[^>]*> nop
-+00008d38 <[^>]*> nop
-+00008d3c <[^>]*> nop
-+00008d40 <[^>]*> nop
-+00008d44 <[^>]*> nop
-+00008d48 <[^>]*> nop
-+00008d4c <[^>]*> nop
-+00008d50 <[^>]*> nop
-+00008d54 <[^>]*> nop
-+00008d58 <[^>]*> nop
-+00008d5c <[^>]*> nop
-+00008d60 <[^>]*> nop
-+00008d64 <[^>]*> nop
-+00008d68 <[^>]*> nop
-+00008d6c <[^>]*> nop
-+00008d70 <[^>]*> nop
-+00008d74 <[^>]*> nop
-+00008d78 <[^>]*> nop
-+00008d7c <[^>]*> nop
-+00008d80 <[^>]*> nop
-+00008d84 <[^>]*> nop
-+00008d88 <[^>]*> nop
-+00008d8c <[^>]*> nop
-+00008d90 <[^>]*> nop
-+00008d94 <[^>]*> nop
-+00008d98 <[^>]*> nop
-+00008d9c <[^>]*> nop
-+00008da0 <[^>]*> nop
-+00008da4 <[^>]*> nop
-+00008da8 <[^>]*> nop
-+00008dac <[^>]*> nop
-+00008db0 <[^>]*> nop
-+00008db4 <[^>]*> nop
-+00008db8 <[^>]*> nop
-+00008dbc <[^>]*> nop
-+00008dc0 <[^>]*> nop
-+00008dc4 <[^>]*> nop
-+00008dc8 <[^>]*> nop
-+00008dcc <[^>]*> nop
-+00008dd0 <[^>]*> nop
-+00008dd4 <[^>]*> nop
-+00008dd8 <[^>]*> nop
-+00008ddc <[^>]*> nop
-+00008de0 <[^>]*> nop
-+00008de4 <[^>]*> nop
-+00008de8 <[^>]*> nop
-+00008dec <[^>]*> nop
-+00008df0 <[^>]*> nop
-+00008df4 <[^>]*> nop
-+00008df8 <[^>]*> nop
-+00008dfc <[^>]*> nop
-+00008e00 <[^>]*> nop
-+00008e04 <[^>]*> nop
-+00008e08 <[^>]*> nop
-+00008e0c <[^>]*> nop
-+00008e10 <[^>]*> nop
-+00008e14 <[^>]*> nop
-+00008e18 <[^>]*> nop
-+00008e1c <[^>]*> nop
-+00008e20 <[^>]*> nop
-+00008e24 <[^>]*> nop
-+00008e28 <[^>]*> nop
-+00008e2c <[^>]*> nop
-+00008e30 <[^>]*> nop
-+00008e34 <[^>]*> nop
-+00008e38 <[^>]*> nop
-+00008e3c <[^>]*> nop
-+00008e40 <[^>]*> nop
-+00008e44 <[^>]*> nop
-+00008e48 <[^>]*> nop
-+00008e4c <[^>]*> nop
-+00008e50 <[^>]*> nop
-+00008e54 <[^>]*> nop
-+00008e58 <[^>]*> nop
-+00008e5c <[^>]*> nop
-+00008e60 <[^>]*> nop
-+00008e64 <[^>]*> nop
-+00008e68 <[^>]*> nop
-+00008e6c <[^>]*> nop
-+00008e70 <[^>]*> nop
-+00008e74 <[^>]*> nop
-+00008e78 <[^>]*> nop
-+00008e7c <[^>]*> nop
-+00008e80 <[^>]*> nop
-+00008e84 <[^>]*> nop
-+00008e88 <[^>]*> nop
-+00008e8c <[^>]*> nop
-+00008e90 <[^>]*> nop
-+00008e94 <[^>]*> nop
-+00008e98 <[^>]*> nop
-+00008e9c <[^>]*> nop
-+00008ea0 <[^>]*> nop
-+00008ea4 <[^>]*> nop
-+00008ea8 <[^>]*> nop
-+00008eac <[^>]*> nop
-+00008eb0 <[^>]*> nop
-+00008eb4 <[^>]*> nop
-+00008eb8 <[^>]*> nop
-+00008ebc <[^>]*> nop
-+00008ec0 <[^>]*> nop
-+00008ec4 <[^>]*> nop
-+00008ec8 <[^>]*> nop
-+00008ecc <[^>]*> nop
-+00008ed0 <[^>]*> nop
-+00008ed4 <[^>]*> nop
-+00008ed8 <[^>]*> nop
-+00008edc <[^>]*> nop
-+00008ee0 <[^>]*> nop
-+00008ee4 <[^>]*> nop
-+00008ee8 <[^>]*> nop
-+00008eec <[^>]*> nop
-+00008ef0 <[^>]*> nop
-+00008ef4 <[^>]*> nop
-+00008ef8 <[^>]*> nop
-+00008efc <[^>]*> nop
-+00008f00 <[^>]*> nop
-+00008f04 <[^>]*> nop
-+00008f08 <[^>]*> nop
-+00008f0c <[^>]*> nop
-+00008f10 <[^>]*> nop
-+00008f14 <[^>]*> nop
-+00008f18 <[^>]*> nop
-+00008f1c <[^>]*> nop
-+00008f20 <[^>]*> nop
-+00008f24 <[^>]*> nop
-+00008f28 <[^>]*> nop
-+00008f2c <[^>]*> nop
-+00008f30 <[^>]*> nop
-+00008f34 <[^>]*> nop
-+00008f38 <[^>]*> nop
-+00008f3c <[^>]*> nop
-+00008f40 <[^>]*> nop
-+00008f44 <[^>]*> nop
-+00008f48 <[^>]*> nop
-+00008f4c <[^>]*> nop
-+00008f50 <[^>]*> nop
-+00008f54 <[^>]*> nop
-+00008f58 <[^>]*> nop
-+00008f5c <[^>]*> nop
-+00008f60 <[^>]*> nop
-+00008f64 <[^>]*> nop
-+00008f68 <[^>]*> nop
-+00008f6c <[^>]*> nop
-+00008f70 <[^>]*> nop
-+00008f74 <[^>]*> nop
-+00008f78 <[^>]*> nop
-+00008f7c <[^>]*> nop
-+00008f80 <[^>]*> nop
-+00008f84 <[^>]*> nop
-+00008f88 <[^>]*> nop
-+00008f8c <[^>]*> nop
-+00008f90 <[^>]*> nop
-+00008f94 <[^>]*> nop
-+00008f98 <[^>]*> nop
-+00008f9c <[^>]*> nop
-+00008fa0 <[^>]*> nop
-+00008fa4 <[^>]*> nop
-+00008fa8 <[^>]*> nop
-+00008fac <[^>]*> nop
-+00008fb0 <[^>]*> nop
-+00008fb4 <[^>]*> nop
-+00008fb8 <[^>]*> nop
-+00008fbc <[^>]*> nop
-+00008fc0 <[^>]*> nop
-+00008fc4 <[^>]*> nop
-+00008fc8 <[^>]*> nop
-+00008fcc <[^>]*> nop
-+00008fd0 <[^>]*> nop
-+00008fd4 <[^>]*> nop
-+00008fd8 <[^>]*> nop
-+00008fdc <[^>]*> nop
-+00008fe0 <[^>]*> nop
-+00008fe4 <[^>]*> nop
-+00008fe8 <[^>]*> nop
-+00008fec <[^>]*> nop
-+00008ff0 <[^>]*> nop
-+00008ff4 <[^>]*> nop
-+00008ff8 <[^>]*> nop
-+00008ffc <[^>]*> nop
-+00009000 <[^>]*> nop
-+00009004 <[^>]*> nop
-+00009008 <[^>]*> nop
-+0000900c <[^>]*> nop
-+00009010 <[^>]*> nop
-+00009014 <[^>]*> nop
-+00009018 <[^>]*> nop
-+0000901c <[^>]*> nop
-+00009020 <[^>]*> nop
-+00009024 <[^>]*> nop
-+00009028 <[^>]*> nop
-+0000902c <[^>]*> nop
-+00009030 <[^>]*> nop
-+00009034 <[^>]*> nop
-+00009038 <[^>]*> nop
-+0000903c <[^>]*> nop
-+00009040 <[^>]*> nop
-+00009044 <[^>]*> nop
-+00009048 <[^>]*> nop
-+0000904c <[^>]*> nop
-+00009050 <[^>]*> nop
-+00009054 <[^>]*> nop
-+00009058 <[^>]*> nop
-+0000905c <[^>]*> nop
-+00009060 <[^>]*> nop
-+00009064 <[^>]*> nop
-+00009068 <[^>]*> nop
-+0000906c <[^>]*> nop
-+00009070 <[^>]*> nop
-+00009074 <[^>]*> nop
-+00009078 <[^>]*> nop
-+0000907c <[^>]*> nop
-+00009080 <[^>]*> nop
-+00009084 <[^>]*> nop
-+00009088 <[^>]*> nop
-+0000908c <[^>]*> nop
-+00009090 <[^>]*> nop
-+00009094 <[^>]*> nop
-+00009098 <[^>]*> nop
-+0000909c <[^>]*> nop
-+000090a0 <[^>]*> nop
-+000090a4 <[^>]*> nop
-+000090a8 <[^>]*> nop
-+000090ac <[^>]*> nop
-+000090b0 <[^>]*> nop
-+000090b4 <[^>]*> nop
-+000090b8 <[^>]*> nop
-+000090bc <[^>]*> nop
-+000090c0 <[^>]*> nop
-+000090c4 <[^>]*> nop
-+000090c8 <[^>]*> nop
-+000090cc <[^>]*> nop
-+000090d0 <[^>]*> nop
-+000090d4 <[^>]*> nop
-+000090d8 <[^>]*> nop
-+000090dc <[^>]*> nop
-+000090e0 <[^>]*> nop
-+000090e4 <[^>]*> nop
-+000090e8 <[^>]*> nop
-+000090ec <[^>]*> nop
-+000090f0 <[^>]*> nop
-+000090f4 <[^>]*> nop
-+000090f8 <[^>]*> nop
-+000090fc <[^>]*> nop
-+00009100 <[^>]*> nop
-+00009104 <[^>]*> nop
-+00009108 <[^>]*> nop
-+0000910c <[^>]*> nop
-+00009110 <[^>]*> nop
-+00009114 <[^>]*> nop
-+00009118 <[^>]*> nop
-+0000911c <[^>]*> nop
-+00009120 <[^>]*> nop
-+00009124 <[^>]*> nop
-+00009128 <[^>]*> nop
-+0000912c <[^>]*> nop
-+00009130 <[^>]*> nop
-+00009134 <[^>]*> nop
-+00009138 <[^>]*> nop
-+0000913c <[^>]*> nop
-+00009140 <[^>]*> nop
-+00009144 <[^>]*> nop
-+00009148 <[^>]*> nop
-+0000914c <[^>]*> nop
-+00009150 <[^>]*> nop
-+00009154 <[^>]*> nop
-+00009158 <[^>]*> nop
-+0000915c <[^>]*> nop
-+00009160 <[^>]*> nop
-+00009164 <[^>]*> nop
-+00009168 <[^>]*> nop
-+0000916c <[^>]*> nop
-+00009170 <[^>]*> nop
-+00009174 <[^>]*> nop
-+00009178 <[^>]*> nop
-+0000917c <[^>]*> nop
-+00009180 <[^>]*> nop
-+00009184 <[^>]*> nop
-+00009188 <[^>]*> nop
-+0000918c <[^>]*> nop
-+00009190 <[^>]*> nop
-+00009194 <[^>]*> nop
-+00009198 <[^>]*> nop
-+0000919c <[^>]*> nop
-+000091a0 <[^>]*> nop
-+000091a4 <[^>]*> nop
-+000091a8 <[^>]*> nop
-+000091ac <[^>]*> nop
-+000091b0 <[^>]*> nop
-+000091b4 <[^>]*> nop
-+000091b8 <[^>]*> nop
-+000091bc <[^>]*> nop
-+000091c0 <[^>]*> nop
-+000091c4 <[^>]*> nop
-+000091c8 <[^>]*> nop
-+000091cc <[^>]*> nop
-+000091d0 <[^>]*> nop
-+000091d4 <[^>]*> nop
-+000091d8 <[^>]*> nop
-+000091dc <[^>]*> nop
-+000091e0 <[^>]*> nop
-+000091e4 <[^>]*> nop
-+000091e8 <[^>]*> nop
-+000091ec <[^>]*> nop
-+000091f0 <[^>]*> nop
-+000091f4 <[^>]*> nop
-+000091f8 <[^>]*> nop
-+000091fc <[^>]*> nop
-+00009200 <[^>]*> nop
-+00009204 <[^>]*> nop
-+00009208 <[^>]*> nop
-+0000920c <[^>]*> nop
-+00009210 <[^>]*> nop
-+00009214 <[^>]*> nop
-+00009218 <[^>]*> nop
-+0000921c <[^>]*> nop
-+00009220 <[^>]*> nop
-+00009224 <[^>]*> nop
-+00009228 <[^>]*> nop
-+0000922c <[^>]*> nop
-+00009230 <[^>]*> nop
-+00009234 <[^>]*> nop
-+00009238 <[^>]*> nop
-+0000923c <[^>]*> nop
-+00009240 <[^>]*> nop
-+00009244 <[^>]*> nop
-+00009248 <[^>]*> nop
-+0000924c <[^>]*> nop
-+00009250 <[^>]*> nop
-+00009254 <[^>]*> nop
-+00009258 <[^>]*> nop
-+0000925c <[^>]*> nop
-+00009260 <[^>]*> nop
-+00009264 <[^>]*> nop
-+00009268 <[^>]*> nop
-+0000926c <[^>]*> nop
-+00009270 <[^>]*> nop
-+00009274 <[^>]*> nop
-+00009278 <[^>]*> nop
-+0000927c <[^>]*> nop
-+00009280 <[^>]*> nop
-+00009284 <[^>]*> nop
-+00009288 <[^>]*> nop
-+0000928c <[^>]*> nop
-+00009290 <[^>]*> nop
-+00009294 <[^>]*> nop
-+00009298 <[^>]*> nop
-+0000929c <[^>]*> nop
-+000092a0 <[^>]*> nop
-+000092a4 <[^>]*> nop
-+000092a8 <[^>]*> nop
-+000092ac <[^>]*> nop
-+000092b0 <[^>]*> nop
-+000092b4 <[^>]*> nop
-+000092b8 <[^>]*> nop
-+000092bc <[^>]*> nop
-+000092c0 <[^>]*> nop
-+000092c4 <[^>]*> nop
-+000092c8 <[^>]*> nop
-+000092cc <[^>]*> nop
-+000092d0 <[^>]*> nop
-+000092d4 <[^>]*> nop
-+000092d8 <[^>]*> nop
-+000092dc <[^>]*> nop
-+000092e0 <[^>]*> nop
-+000092e4 <[^>]*> nop
-+000092e8 <[^>]*> nop
-+000092ec <[^>]*> nop
-+000092f0 <[^>]*> nop
-+000092f4 <[^>]*> nop
-+000092f8 <[^>]*> nop
-+000092fc <[^>]*> nop
-+00009300 <[^>]*> nop
-+00009304 <[^>]*> nop
-+00009308 <[^>]*> nop
-+0000930c <[^>]*> nop
-+00009310 <[^>]*> nop
-+00009314 <[^>]*> nop
-+00009318 <[^>]*> nop
-+0000931c <[^>]*> nop
-+00009320 <[^>]*> nop
-+00009324 <[^>]*> nop
-+00009328 <[^>]*> nop
-+0000932c <[^>]*> nop
-+00009330 <[^>]*> nop
-+00009334 <[^>]*> nop
-+00009338 <[^>]*> nop
-+0000933c <[^>]*> nop
-+00009340 <[^>]*> nop
-+00009344 <[^>]*> nop
-+00009348 <[^>]*> nop
-+0000934c <[^>]*> nop
-+00009350 <[^>]*> nop
-+00009354 <[^>]*> nop
-+00009358 <[^>]*> nop
-+0000935c <[^>]*> nop
-+00009360 <[^>]*> nop
-+00009364 <[^>]*> nop
-+00009368 <[^>]*> nop
-+0000936c <[^>]*> nop
-+00009370 <[^>]*> nop
-+00009374 <[^>]*> nop
-+00009378 <[^>]*> nop
-+0000937c <[^>]*> nop
-+00009380 <[^>]*> nop
-+00009384 <[^>]*> nop
-+00009388 <[^>]*> nop
-+0000938c <[^>]*> nop
-+00009390 <[^>]*> nop
-+00009394 <[^>]*> nop
-+00009398 <[^>]*> nop
-+0000939c <[^>]*> nop
-+000093a0 <[^>]*> nop
-+000093a4 <[^>]*> nop
-+000093a8 <[^>]*> nop
-+000093ac <[^>]*> nop
-+000093b0 <[^>]*> nop
-+000093b4 <[^>]*> nop
-+000093b8 <[^>]*> nop
-+000093bc <[^>]*> nop
-+000093c0 <[^>]*> nop
-+000093c4 <[^>]*> nop
-+000093c8 <[^>]*> nop
-+000093cc <[^>]*> nop
-+000093d0 <[^>]*> nop
-+000093d4 <[^>]*> nop
-+000093d8 <[^>]*> nop
-+000093dc <[^>]*> nop
-+000093e0 <[^>]*> nop
-+000093e4 <[^>]*> nop
-+000093e8 <[^>]*> nop
-+000093ec <[^>]*> nop
-+000093f0 <[^>]*> nop
-+000093f4 <[^>]*> nop
-+000093f8 <[^>]*> nop
-+000093fc <[^>]*> nop
-+00009400 <[^>]*> nop
-+00009404 <[^>]*> nop
-+00009408 <[^>]*> nop
-+0000940c <[^>]*> nop
-+00009410 <[^>]*> nop
-+00009414 <[^>]*> nop
-+00009418 <[^>]*> nop
-+0000941c <[^>]*> nop
-+00009420 <[^>]*> nop
-+00009424 <[^>]*> nop
-+00009428 <[^>]*> nop
-+0000942c <[^>]*> nop
-+00009430 <[^>]*> nop
-+00009434 <[^>]*> nop
-+00009438 <[^>]*> nop
-+0000943c <[^>]*> nop
-+00009440 <[^>]*> nop
-+00009444 <[^>]*> nop
-+00009448 <[^>]*> nop
-+0000944c <[^>]*> nop
-+00009450 <[^>]*> nop
-+00009454 <[^>]*> nop
-+00009458 <[^>]*> nop
-+0000945c <[^>]*> nop
-+00009460 <[^>]*> nop
-+00009464 <[^>]*> nop
-+00009468 <[^>]*> nop
-+0000946c <[^>]*> nop
-+00009470 <[^>]*> nop
-+00009474 <[^>]*> nop
-+00009478 <[^>]*> nop
-+0000947c <[^>]*> nop
-+00009480 <[^>]*> nop
-+00009484 <[^>]*> nop
-+00009488 <[^>]*> nop
-+0000948c <[^>]*> nop
-+00009490 <[^>]*> nop
-+00009494 <[^>]*> nop
-+00009498 <[^>]*> nop
-+0000949c <[^>]*> nop
-+000094a0 <[^>]*> nop
-+000094a4 <[^>]*> nop
-+000094a8 <[^>]*> nop
-+000094ac <[^>]*> nop
-+000094b0 <[^>]*> nop
-+000094b4 <[^>]*> nop
-+000094b8 <[^>]*> nop
-+000094bc <[^>]*> nop
-+000094c0 <[^>]*> nop
-+000094c4 <[^>]*> nop
-+000094c8 <[^>]*> nop
-+000094cc <[^>]*> nop
-+000094d0 <[^>]*> nop
-+000094d4 <[^>]*> nop
-+000094d8 <[^>]*> nop
-+000094dc <[^>]*> nop
-+000094e0 <[^>]*> nop
-+000094e4 <[^>]*> nop
-+000094e8 <[^>]*> nop
-+000094ec <[^>]*> nop
-+000094f0 <[^>]*> nop
-+000094f4 <[^>]*> nop
-+000094f8 <[^>]*> nop
-+000094fc <[^>]*> nop
-+00009500 <[^>]*> nop
-+00009504 <[^>]*> nop
-+00009508 <[^>]*> nop
-+0000950c <[^>]*> nop
-+00009510 <[^>]*> nop
-+00009514 <[^>]*> nop
-+00009518 <[^>]*> nop
-+0000951c <[^>]*> nop
-+00009520 <[^>]*> nop
-+00009524 <[^>]*> nop
-+00009528 <[^>]*> nop
-+0000952c <[^>]*> nop
-+00009530 <[^>]*> nop
-+00009534 <[^>]*> nop
-+00009538 <[^>]*> nop
-+0000953c <[^>]*> nop
-+00009540 <[^>]*> nop
-+00009544 <[^>]*> nop
-+00009548 <[^>]*> nop
-+0000954c <[^>]*> nop
-+00009550 <[^>]*> nop
-+00009554 <[^>]*> nop
-+00009558 <[^>]*> nop
-+0000955c <[^>]*> nop
-+00009560 <[^>]*> nop
-+00009564 <[^>]*> nop
-+00009568 <[^>]*> nop
-+0000956c <[^>]*> nop
-+00009570 <[^>]*> nop
-+00009574 <[^>]*> nop
-+00009578 <[^>]*> nop
-+0000957c <[^>]*> nop
-+00009580 <[^>]*> nop
-+00009584 <[^>]*> nop
-+00009588 <[^>]*> nop
-+0000958c <[^>]*> nop
-+00009590 <[^>]*> nop
-+00009594 <[^>]*> nop
-+00009598 <[^>]*> nop
-+0000959c <[^>]*> nop
-+000095a0 <[^>]*> nop
-+000095a4 <[^>]*> nop
-+000095a8 <[^>]*> nop
-+000095ac <[^>]*> nop
-+000095b0 <[^>]*> nop
-+000095b4 <[^>]*> nop
-+000095b8 <[^>]*> nop
-+000095bc <[^>]*> nop
-+000095c0 <[^>]*> nop
-+000095c4 <[^>]*> nop
-+000095c8 <[^>]*> nop
-+000095cc <[^>]*> nop
-+000095d0 <[^>]*> nop
-+000095d4 <[^>]*> nop
-+000095d8 <[^>]*> nop
-+000095dc <[^>]*> nop
-+000095e0 <[^>]*> nop
-+000095e4 <[^>]*> nop
-+000095e8 <[^>]*> nop
-+000095ec <[^>]*> nop
-+000095f0 <[^>]*> nop
-+000095f4 <[^>]*> nop
-+000095f8 <[^>]*> nop
-+000095fc <[^>]*> nop
-+00009600 <[^>]*> nop
-+00009604 <[^>]*> nop
-+00009608 <[^>]*> nop
-+0000960c <[^>]*> nop
-+00009610 <[^>]*> nop
-+00009614 <[^>]*> nop
-+00009618 <[^>]*> nop
-+0000961c <[^>]*> nop
-+00009620 <[^>]*> nop
-+00009624 <[^>]*> nop
-+00009628 <[^>]*> nop
-+0000962c <[^>]*> nop
-+00009630 <[^>]*> nop
-+00009634 <[^>]*> nop
-+00009638 <[^>]*> nop
-+0000963c <[^>]*> nop
-+00009640 <[^>]*> nop
-+00009644 <[^>]*> nop
-+00009648 <[^>]*> nop
-+0000964c <[^>]*> nop
-+00009650 <[^>]*> nop
-+00009654 <[^>]*> nop
-+00009658 <[^>]*> nop
-+0000965c <[^>]*> nop
-+00009660 <[^>]*> nop
-+00009664 <[^>]*> nop
-+00009668 <[^>]*> nop
-+0000966c <[^>]*> nop
-+00009670 <[^>]*> nop
-+00009674 <[^>]*> nop
-+00009678 <[^>]*> nop
-+0000967c <[^>]*> nop
-+00009680 <[^>]*> nop
-+00009684 <[^>]*> nop
-+00009688 <[^>]*> nop
-+0000968c <[^>]*> nop
-+00009690 <[^>]*> nop
-+00009694 <[^>]*> nop
-+00009698 <[^>]*> nop
-+0000969c <[^>]*> nop
-+000096a0 <[^>]*> nop
-+000096a4 <[^>]*> nop
-+000096a8 <[^>]*> nop
-+000096ac <[^>]*> nop
-+000096b0 <[^>]*> nop
-+000096b4 <[^>]*> nop
-+000096b8 <[^>]*> nop
-+000096bc <[^>]*> nop
-+000096c0 <[^>]*> nop
-+000096c4 <[^>]*> nop
-+000096c8 <[^>]*> nop
-+000096cc <[^>]*> nop
-+000096d0 <[^>]*> nop
-+000096d4 <[^>]*> nop
-+000096d8 <[^>]*> nop
-+000096dc <[^>]*> nop
-+000096e0 <[^>]*> nop
-+000096e4 <[^>]*> nop
-+000096e8 <[^>]*> nop
-+000096ec <[^>]*> nop
-+000096f0 <[^>]*> nop
-+000096f4 <[^>]*> nop
-+000096f8 <[^>]*> nop
-+000096fc <[^>]*> nop
-+00009700 <[^>]*> nop
-+00009704 <[^>]*> nop
-+00009708 <[^>]*> nop
-+0000970c <[^>]*> nop
-+00009710 <[^>]*> nop
-+00009714 <[^>]*> nop
-+00009718 <[^>]*> nop
-+0000971c <[^>]*> nop
-+00009720 <[^>]*> nop
-+00009724 <[^>]*> nop
-+00009728 <[^>]*> nop
-+0000972c <[^>]*> nop
-+00009730 <[^>]*> nop
-+00009734 <[^>]*> nop
-+00009738 <[^>]*> nop
-+0000973c <[^>]*> nop
-+00009740 <[^>]*> nop
-+00009744 <[^>]*> nop
-+00009748 <[^>]*> nop
-+0000974c <[^>]*> nop
-+00009750 <[^>]*> nop
-+00009754 <[^>]*> nop
-+00009758 <[^>]*> nop
-+0000975c <[^>]*> nop
-+00009760 <[^>]*> nop
-+00009764 <[^>]*> nop
-+00009768 <[^>]*> nop
-+0000976c <[^>]*> nop
-+00009770 <[^>]*> nop
-+00009774 <[^>]*> nop
-+00009778 <[^>]*> nop
-+0000977c <[^>]*> nop
-+00009780 <[^>]*> nop
-+00009784 <[^>]*> nop
-+00009788 <[^>]*> nop
-+0000978c <[^>]*> nop
-+00009790 <[^>]*> nop
-+00009794 <[^>]*> nop
-+00009798 <[^>]*> nop
-+0000979c <[^>]*> nop
-+000097a0 <[^>]*> nop
-+000097a4 <[^>]*> nop
-+000097a8 <[^>]*> nop
-+000097ac <[^>]*> nop
-+000097b0 <[^>]*> nop
-+000097b4 <[^>]*> nop
-+000097b8 <[^>]*> nop
-+000097bc <[^>]*> nop
-+000097c0 <[^>]*> nop
-+000097c4 <[^>]*> nop
-+000097c8 <[^>]*> nop
-+000097cc <[^>]*> nop
-+000097d0 <[^>]*> nop
-+000097d4 <[^>]*> nop
-+000097d8 <[^>]*> nop
-+000097dc <[^>]*> nop
-+000097e0 <[^>]*> nop
-+000097e4 <[^>]*> nop
-+000097e8 <[^>]*> nop
-+000097ec <[^>]*> nop
-+000097f0 <[^>]*> nop
-+000097f4 <[^>]*> nop
-+000097f8 <[^>]*> nop
-+000097fc <[^>]*> nop
-+00009800 <[^>]*> nop
-+00009804 <[^>]*> nop
-+00009808 <[^>]*> nop
-+0000980c <[^>]*> nop
-+00009810 <[^>]*> nop
-+00009814 <[^>]*> nop
-+00009818 <[^>]*> nop
-+0000981c <[^>]*> nop
-+00009820 <[^>]*> nop
-+00009824 <[^>]*> nop
-+00009828 <[^>]*> nop
-+0000982c <[^>]*> nop
-+00009830 <[^>]*> nop
-+00009834 <[^>]*> nop
-+00009838 <[^>]*> nop
-+0000983c <[^>]*> nop
-+00009840 <[^>]*> nop
-+00009844 <[^>]*> nop
-+00009848 <[^>]*> nop
-+0000984c <[^>]*> nop
-+00009850 <[^>]*> nop
-+00009854 <[^>]*> nop
-+00009858 <[^>]*> nop
-+0000985c <[^>]*> nop
-+00009860 <[^>]*> nop
-+00009864 <[^>]*> nop
-+00009868 <[^>]*> nop
-+0000986c <[^>]*> nop
-+00009870 <[^>]*> nop
-+00009874 <[^>]*> nop
-+00009878 <[^>]*> nop
-+0000987c <[^>]*> nop
-+00009880 <[^>]*> nop
-+00009884 <[^>]*> nop
-+00009888 <[^>]*> nop
-+0000988c <[^>]*> nop
-+00009890 <[^>]*> nop
-+00009894 <[^>]*> nop
-+00009898 <[^>]*> nop
-+0000989c <[^>]*> nop
-+000098a0 <[^>]*> nop
-+000098a4 <[^>]*> nop
-+000098a8 <[^>]*> nop
-+000098ac <[^>]*> nop
-+000098b0 <[^>]*> nop
-+000098b4 <[^>]*> nop
-+000098b8 <[^>]*> nop
-+000098bc <[^>]*> nop
-+000098c0 <[^>]*> nop
-+000098c4 <[^>]*> nop
-+000098c8 <[^>]*> nop
-+000098cc <[^>]*> nop
-+000098d0 <[^>]*> nop
-+000098d4 <[^>]*> nop
-+000098d8 <[^>]*> nop
-+000098dc <[^>]*> nop
-+000098e0 <[^>]*> nop
-+000098e4 <[^>]*> nop
-+000098e8 <[^>]*> nop
-+000098ec <[^>]*> nop
-+000098f0 <[^>]*> nop
-+000098f4 <[^>]*> nop
-+000098f8 <[^>]*> nop
-+000098fc <[^>]*> nop
-+00009900 <[^>]*> nop
-+00009904 <[^>]*> nop
-+00009908 <[^>]*> nop
-+0000990c <[^>]*> nop
-+00009910 <[^>]*> nop
-+00009914 <[^>]*> nop
-+00009918 <[^>]*> nop
-+0000991c <[^>]*> nop
-+00009920 <[^>]*> nop
-+00009924 <[^>]*> nop
-+00009928 <[^>]*> nop
-+0000992c <[^>]*> nop
-+00009930 <[^>]*> nop
-+00009934 <[^>]*> nop
-+00009938 <[^>]*> nop
-+0000993c <[^>]*> nop
-+00009940 <[^>]*> nop
-+00009944 <[^>]*> nop
-+00009948 <[^>]*> nop
-+0000994c <[^>]*> nop
-+00009950 <[^>]*> nop
-+00009954 <[^>]*> nop
-+00009958 <[^>]*> nop
-+0000995c <[^>]*> nop
-+00009960 <[^>]*> nop
-+00009964 <[^>]*> nop
-+00009968 <[^>]*> nop
-+0000996c <[^>]*> nop
-+00009970 <[^>]*> nop
-+00009974 <[^>]*> nop
-+00009978 <[^>]*> nop
-+0000997c <[^>]*> nop
-+00009980 <[^>]*> nop
-+00009984 <[^>]*> nop
-+00009988 <[^>]*> nop
-+0000998c <[^>]*> nop
-+00009990 <[^>]*> nop
-+00009994 <[^>]*> nop
-+00009998 <[^>]*> nop
-+0000999c <[^>]*> nop
-+000099a0 <[^>]*> nop
-+000099a4 <[^>]*> nop
-+000099a8 <[^>]*> nop
-+000099ac <[^>]*> nop
-+000099b0 <[^>]*> nop
-+000099b4 <[^>]*> nop
-+000099b8 <[^>]*> nop
-+000099bc <[^>]*> nop
-+000099c0 <[^>]*> nop
-+000099c4 <[^>]*> nop
-+000099c8 <[^>]*> nop
-+000099cc <[^>]*> nop
-+000099d0 <[^>]*> nop
-+000099d4 <[^>]*> nop
-+000099d8 <[^>]*> nop
-+000099dc <[^>]*> nop
-+000099e0 <[^>]*> nop
-+000099e4 <[^>]*> nop
-+000099e8 <[^>]*> nop
-+000099ec <[^>]*> nop
-+000099f0 <[^>]*> nop
-+000099f4 <[^>]*> nop
-+000099f8 <[^>]*> nop
-+000099fc <[^>]*> nop
-+00009a00 <[^>]*> nop
-+00009a04 <[^>]*> nop
-+00009a08 <[^>]*> nop
-+00009a0c <[^>]*> nop
-+00009a10 <[^>]*> nop
-+00009a14 <[^>]*> nop
-+00009a18 <[^>]*> nop
-+00009a1c <[^>]*> nop
-+00009a20 <[^>]*> nop
-+00009a24 <[^>]*> nop
-+00009a28 <[^>]*> nop
-+00009a2c <[^>]*> nop
-+00009a30 <[^>]*> nop
-+00009a34 <[^>]*> nop
-+00009a38 <[^>]*> nop
-+00009a3c <[^>]*> nop
-+00009a40 <[^>]*> nop
-+00009a44 <[^>]*> nop
-+00009a48 <[^>]*> nop
-+00009a4c <[^>]*> nop
-+00009a50 <[^>]*> nop
-+00009a54 <[^>]*> nop
-+00009a58 <[^>]*> nop
-+00009a5c <[^>]*> nop
-+00009a60 <[^>]*> nop
-+00009a64 <[^>]*> nop
-+00009a68 <[^>]*> nop
-+00009a6c <[^>]*> nop
-+00009a70 <[^>]*> nop
-+00009a74 <[^>]*> nop
-+00009a78 <[^>]*> nop
-+00009a7c <[^>]*> nop
-+00009a80 <[^>]*> nop
-+00009a84 <[^>]*> nop
-+00009a88 <[^>]*> nop
-+00009a8c <[^>]*> nop
-+00009a90 <[^>]*> nop
-+00009a94 <[^>]*> nop
-+00009a98 <[^>]*> nop
-+00009a9c <[^>]*> nop
-+00009aa0 <[^>]*> nop
-+00009aa4 <[^>]*> nop
-+00009aa8 <[^>]*> nop
-+00009aac <[^>]*> nop
-+00009ab0 <[^>]*> nop
-+00009ab4 <[^>]*> nop
-+00009ab8 <[^>]*> nop
-+00009abc <[^>]*> nop
-+00009ac0 <[^>]*> nop
-+00009ac4 <[^>]*> nop
-+00009ac8 <[^>]*> nop
-+00009acc <[^>]*> nop
-+00009ad0 <[^>]*> nop
-+00009ad4 <[^>]*> nop
-+00009ad8 <[^>]*> nop
-+00009adc <[^>]*> nop
-+00009ae0 <[^>]*> nop
-+00009ae4 <[^>]*> nop
-+00009ae8 <[^>]*> nop
-+00009aec <[^>]*> nop
-+00009af0 <[^>]*> nop
-+00009af4 <[^>]*> nop
-+00009af8 <[^>]*> nop
-+00009afc <[^>]*> nop
-+00009b00 <[^>]*> nop
-+00009b04 <[^>]*> nop
-+00009b08 <[^>]*> nop
-+00009b0c <[^>]*> nop
-+00009b10 <[^>]*> nop
-+00009b14 <[^>]*> nop
-+00009b18 <[^>]*> nop
-+00009b1c <[^>]*> nop
-+00009b20 <[^>]*> nop
-+00009b24 <[^>]*> nop
-+00009b28 <[^>]*> nop
-+00009b2c <[^>]*> nop
-+00009b30 <[^>]*> nop
-+00009b34 <[^>]*> nop
-+00009b38 <[^>]*> nop
-+00009b3c <[^>]*> nop
-+00009b40 <[^>]*> nop
-+00009b44 <[^>]*> nop
-+00009b48 <[^>]*> nop
-+00009b4c <[^>]*> nop
-+00009b50 <[^>]*> nop
-+00009b54 <[^>]*> nop
-+00009b58 <[^>]*> nop
-+00009b5c <[^>]*> nop
-+00009b60 <[^>]*> nop
-+00009b64 <[^>]*> nop
-+00009b68 <[^>]*> nop
-+00009b6c <[^>]*> nop
-+00009b70 <[^>]*> nop
-+00009b74 <[^>]*> nop
-+00009b78 <[^>]*> nop
-+00009b7c <[^>]*> nop
-+00009b80 <[^>]*> nop
-+00009b84 <[^>]*> nop
-+00009b88 <[^>]*> nop
-+00009b8c <[^>]*> nop
-+00009b90 <[^>]*> nop
-+00009b94 <[^>]*> nop
-+00009b98 <[^>]*> nop
-+00009b9c <[^>]*> nop
-+00009ba0 <[^>]*> nop
-+00009ba4 <[^>]*> nop
-+00009ba8 <[^>]*> nop
-+00009bac <[^>]*> nop
-+00009bb0 <[^>]*> nop
-+00009bb4 <[^>]*> nop
-+00009bb8 <[^>]*> nop
-+00009bbc <[^>]*> nop
-+00009bc0 <[^>]*> nop
-+00009bc4 <[^>]*> nop
-+00009bc8 <[^>]*> nop
-+00009bcc <[^>]*> nop
-+00009bd0 <[^>]*> nop
-+00009bd4 <[^>]*> nop
-+00009bd8 <[^>]*> nop
-+00009bdc <[^>]*> nop
-+00009be0 <[^>]*> nop
-+00009be4 <[^>]*> nop
-+00009be8 <[^>]*> nop
-+00009bec <[^>]*> nop
-+00009bf0 <[^>]*> nop
-+00009bf4 <[^>]*> nop
-+00009bf8 <[^>]*> nop
-+00009bfc <[^>]*> nop
-+00009c00 <[^>]*> nop
-+00009c04 <[^>]*> nop
-+00009c08 <[^>]*> nop
-+00009c0c <[^>]*> nop
-+00009c10 <[^>]*> nop
-+00009c14 <[^>]*> nop
-+00009c18 <[^>]*> nop
-+00009c1c <[^>]*> nop
-+00009c20 <[^>]*> nop
-+00009c24 <[^>]*> nop
-+00009c28 <[^>]*> nop
-+00009c2c <[^>]*> nop
-+00009c30 <[^>]*> nop
-+00009c34 <[^>]*> nop
-+00009c38 <[^>]*> nop
-+00009c3c <[^>]*> nop
-+00009c40 <[^>]*> nop
-+00009c44 <[^>]*> nop
-+00009c48 <[^>]*> nop
-+00009c4c <[^>]*> nop
-+00009c50 <[^>]*> nop
-+00009c54 <[^>]*> nop
-+00009c58 <[^>]*> nop
-+00009c5c <[^>]*> nop
-+00009c60 <[^>]*> nop
-+00009c64 <[^>]*> nop
-+00009c68 <[^>]*> nop
-+00009c6c <[^>]*> nop
-+00009c70 <[^>]*> nop
-+00009c74 <[^>]*> nop
-+00009c78 <[^>]*> nop
-+00009c7c <[^>]*> nop
-+00009c80 <[^>]*> nop
-+00009c84 <[^>]*> nop
-+00009c88 <[^>]*> nop
-+00009c8c <[^>]*> nop
-+00009c90 <[^>]*> nop
-+00009c94 <[^>]*> nop
-+00009c98 <[^>]*> nop
-+00009c9c <[^>]*> nop
-+00009ca0 <[^>]*> nop
-+00009ca4 <[^>]*> nop
-+00009ca8 <[^>]*> nop
-+00009cac <[^>]*> nop
-+00009cb0 <[^>]*> nop
-+00009cb4 <[^>]*> nop
-+00009cb8 <[^>]*> nop
-+00009cbc <[^>]*> nop
-+00009cc0 <[^>]*> nop
-+00009cc4 <[^>]*> nop
-+00009cc8 <[^>]*> nop
-+00009ccc <[^>]*> nop
-+00009cd0 <[^>]*> nop
-+00009cd4 <[^>]*> nop
-+00009cd8 <[^>]*> nop
-+00009cdc <[^>]*> nop
-+00009ce0 <[^>]*> nop
-+00009ce4 <[^>]*> nop
-+00009ce8 <[^>]*> nop
-+00009cec <[^>]*> nop
-+00009cf0 <[^>]*> nop
-+00009cf4 <[^>]*> nop
-+00009cf8 <[^>]*> nop
-+00009cfc <[^>]*> nop
-+00009d00 <[^>]*> nop
-+00009d04 <[^>]*> nop
-+00009d08 <[^>]*> nop
-+00009d0c <[^>]*> nop
-+00009d10 <[^>]*> nop
-+00009d14 <[^>]*> nop
-+00009d18 <[^>]*> nop
-+00009d1c <[^>]*> nop
-+00009d20 <[^>]*> nop
-+00009d24 <[^>]*> nop
-+00009d28 <[^>]*> nop
-+00009d2c <[^>]*> nop
-+00009d30 <[^>]*> nop
-+00009d34 <[^>]*> nop
-+00009d38 <[^>]*> nop
-+00009d3c <[^>]*> nop
-+00009d40 <[^>]*> nop
-+00009d44 <[^>]*> nop
-+00009d48 <[^>]*> nop
-+00009d4c <[^>]*> nop
-+00009d50 <[^>]*> nop
-+00009d54 <[^>]*> nop
-+00009d58 <[^>]*> nop
-+00009d5c <[^>]*> nop
-+00009d60 <[^>]*> nop
-+00009d64 <[^>]*> nop
-+00009d68 <[^>]*> nop
-+00009d6c <[^>]*> nop
-+00009d70 <[^>]*> nop
-+00009d74 <[^>]*> nop
-+00009d78 <[^>]*> nop
-+00009d7c <[^>]*> nop
-+00009d80 <[^>]*> nop
-+00009d84 <[^>]*> nop
-+00009d88 <[^>]*> nop
-+00009d8c <[^>]*> nop
-+00009d90 <[^>]*> nop
-+00009d94 <[^>]*> nop
-+00009d98 <[^>]*> nop
-+00009d9c <[^>]*> nop
-+00009da0 <[^>]*> nop
-+00009da4 <[^>]*> nop
-+00009da8 <[^>]*> nop
-+00009dac <[^>]*> nop
-+00009db0 <[^>]*> nop
-+00009db4 <[^>]*> nop
-+00009db8 <[^>]*> nop
-+00009dbc <[^>]*> nop
-+00009dc0 <[^>]*> nop
-+00009dc4 <[^>]*> nop
-+00009dc8 <[^>]*> nop
-+00009dcc <[^>]*> nop
-+00009dd0 <[^>]*> nop
-+00009dd4 <[^>]*> nop
-+00009dd8 <[^>]*> nop
-+00009ddc <[^>]*> nop
-+00009de0 <[^>]*> nop
-+00009de4 <[^>]*> nop
-+00009de8 <[^>]*> nop
-+00009dec <[^>]*> nop
-+00009df0 <[^>]*> nop
-+00009df4 <[^>]*> nop
-+00009df8 <[^>]*> nop
-+00009dfc <[^>]*> nop
-+00009e00 <[^>]*> nop
-+00009e04 <[^>]*> nop
-+00009e08 <[^>]*> nop
-+00009e0c <[^>]*> nop
-+00009e10 <[^>]*> nop
-+00009e14 <[^>]*> nop
-+00009e18 <[^>]*> nop
-+00009e1c <[^>]*> nop
-+00009e20 <[^>]*> nop
-+00009e24 <[^>]*> nop
-+00009e28 <[^>]*> nop
-+00009e2c <[^>]*> nop
-+00009e30 <[^>]*> nop
-+00009e34 <[^>]*> nop
-+00009e38 <[^>]*> nop
-+00009e3c <[^>]*> nop
-+00009e40 <[^>]*> nop
-+00009e44 <[^>]*> nop
-+00009e48 <[^>]*> nop
-+00009e4c <[^>]*> nop
-+00009e50 <[^>]*> nop
-+00009e54 <[^>]*> nop
-+00009e58 <[^>]*> nop
-+00009e5c <[^>]*> nop
-+00009e60 <[^>]*> nop
-+00009e64 <[^>]*> nop
-+00009e68 <[^>]*> nop
-+00009e6c <[^>]*> nop
-+00009e70 <[^>]*> nop
-+00009e74 <[^>]*> nop
-+00009e78 <[^>]*> nop
-+00009e7c <[^>]*> nop
-+00009e80 <[^>]*> nop
-+00009e84 <[^>]*> nop
-+00009e88 <[^>]*> nop
-+00009e8c <[^>]*> nop
-+00009e90 <[^>]*> nop
-+00009e94 <[^>]*> nop
-+00009e98 <[^>]*> nop
-+00009e9c <[^>]*> nop
-+00009ea0 <[^>]*> nop
-+00009ea4 <[^>]*> nop
-+00009ea8 <[^>]*> nop
-+00009eac <[^>]*> nop
-+00009eb0 <[^>]*> nop
-+00009eb4 <[^>]*> nop
-+00009eb8 <[^>]*> nop
-+00009ebc <[^>]*> nop
-+00009ec0 <[^>]*> nop
-+00009ec4 <[^>]*> nop
-+00009ec8 <[^>]*> nop
-+00009ecc <[^>]*> nop
-+00009ed0 <[^>]*> nop
-+00009ed4 <[^>]*> nop
-+00009ed8 <[^>]*> nop
-+00009edc <[^>]*> nop
-+00009ee0 <[^>]*> nop
-+00009ee4 <[^>]*> nop
-+00009ee8 <[^>]*> nop
-+00009eec <[^>]*> nop
-+00009ef0 <[^>]*> nop
-+00009ef4 <[^>]*> nop
-+00009ef8 <[^>]*> nop
-+00009efc <[^>]*> nop
-+00009f00 <[^>]*> nop
-+00009f04 <[^>]*> nop
-+00009f08 <[^>]*> nop
-+00009f0c <[^>]*> nop
-+00009f10 <[^>]*> nop
-+00009f14 <[^>]*> nop
-+00009f18 <[^>]*> nop
-+00009f1c <[^>]*> nop
-+00009f20 <[^>]*> nop
-+00009f24 <[^>]*> nop
-+00009f28 <[^>]*> nop
-+00009f2c <[^>]*> nop
-+00009f30 <[^>]*> nop
-+00009f34 <[^>]*> nop
-+00009f38 <[^>]*> nop
-+00009f3c <[^>]*> nop
-+00009f40 <[^>]*> nop
-+00009f44 <[^>]*> nop
-+00009f48 <[^>]*> nop
-+00009f4c <[^>]*> nop
-+00009f50 <[^>]*> nop
-+00009f54 <[^>]*> nop
-+00009f58 <[^>]*> nop
-+00009f5c <[^>]*> nop
-+00009f60 <[^>]*> nop
-+00009f64 <[^>]*> nop
-+00009f68 <[^>]*> nop
-+00009f6c <[^>]*> nop
-+00009f70 <[^>]*> nop
-+00009f74 <[^>]*> nop
-+00009f78 <[^>]*> nop
-+00009f7c <[^>]*> nop
-+00009f80 <[^>]*> nop
-+00009f84 <[^>]*> nop
-+00009f88 <[^>]*> nop
-+00009f8c <[^>]*> nop
-+00009f90 <[^>]*> nop
-+00009f94 <[^>]*> nop
-+00009f98 <[^>]*> nop
-+00009f9c <[^>]*> nop
-+00009fa0 <[^>]*> nop
-+00009fa4 <[^>]*> nop
-+00009fa8 <[^>]*> nop
-+00009fac <[^>]*> nop
-+00009fb0 <[^>]*> nop
-+00009fb4 <[^>]*> nop
-+00009fb8 <[^>]*> nop
-+00009fbc <[^>]*> nop
-+00009fc0 <[^>]*> nop
-+00009fc4 <[^>]*> nop
-+00009fc8 <[^>]*> nop
-+00009fcc <[^>]*> nop
-+00009fd0 <[^>]*> nop
-+00009fd4 <[^>]*> nop
-+00009fd8 <[^>]*> nop
-+00009fdc <[^>]*> nop
-+00009fe0 <[^>]*> nop
-+00009fe4 <[^>]*> nop
-+00009fe8 <[^>]*> nop
-+00009fec <[^>]*> nop
-+00009ff0 <[^>]*> nop
-+00009ff4 <[^>]*> nop
-+00009ff8 <[^>]*> nop
-+00009ffc <[^>]*> nop
-+0000a000 <[^>]*> nop
-+0000a004 <[^>]*> nop
-+0000a008 <[^>]*> nop
-+0000a00c <[^>]*> nop
-+0000a010 <[^>]*> nop
-+0000a014 <[^>]*> nop
-+0000a018 <[^>]*> nop
-+0000a01c <[^>]*> nop
-+0000a020 <[^>]*> nop
-+0000a024 <[^>]*> nop
-+0000a028 <[^>]*> nop
-+0000a02c <[^>]*> nop
-+0000a030 <[^>]*> nop
-+0000a034 <[^>]*> nop
-+0000a038 <[^>]*> nop
-+0000a03c <[^>]*> nop
-+0000a040 <[^>]*> nop
-+0000a044 <[^>]*> nop
-+0000a048 <[^>]*> nop
-+0000a04c <[^>]*> nop
-+0000a050 <[^>]*> nop
-+0000a054 <[^>]*> nop
-+0000a058 <[^>]*> nop
-+0000a05c <[^>]*> nop
-+0000a060 <[^>]*> nop
-+0000a064 <[^>]*> nop
-+0000a068 <[^>]*> nop
-+0000a06c <[^>]*> nop
-+0000a070 <[^>]*> nop
-+0000a074 <[^>]*> nop
-+0000a078 <[^>]*> nop
-+0000a07c <[^>]*> nop
-+0000a080 <[^>]*> nop
-+0000a084 <[^>]*> nop
-+0000a088 <[^>]*> nop
-+0000a08c <[^>]*> nop
-+0000a090 <[^>]*> nop
-+0000a094 <[^>]*> nop
-+0000a098 <[^>]*> nop
-+0000a09c <[^>]*> nop
-+0000a0a0 <[^>]*> nop
-+0000a0a4 <[^>]*> nop
-+0000a0a8 <[^>]*> nop
-+0000a0ac <[^>]*> nop
-+0000a0b0 <[^>]*> nop
-+0000a0b4 <[^>]*> nop
-+0000a0b8 <[^>]*> nop
-+0000a0bc <[^>]*> nop
-+0000a0c0 <[^>]*> nop
-+0000a0c4 <[^>]*> nop
-+0000a0c8 <[^>]*> nop
-+0000a0cc <[^>]*> nop
-+0000a0d0 <[^>]*> nop
-+0000a0d4 <[^>]*> nop
-+0000a0d8 <[^>]*> nop
-+0000a0dc <[^>]*> nop
-+0000a0e0 <[^>]*> nop
-+0000a0e4 <[^>]*> nop
-+0000a0e8 <[^>]*> nop
-+0000a0ec <[^>]*> nop
-+0000a0f0 <[^>]*> nop
-+0000a0f4 <[^>]*> nop
-+0000a0f8 <[^>]*> nop
-+0000a0fc <[^>]*> nop
-+0000a100 <[^>]*> nop
-+0000a104 <[^>]*> nop
-+0000a108 <[^>]*> nop
-+0000a10c <[^>]*> nop
-+0000a110 <[^>]*> nop
-+0000a114 <[^>]*> nop
-+0000a118 <[^>]*> nop
-+0000a11c <[^>]*> nop
-+0000a120 <[^>]*> nop
-+0000a124 <[^>]*> nop
-+0000a128 <[^>]*> nop
-+0000a12c <[^>]*> nop
-+0000a130 <[^>]*> nop
-+0000a134 <[^>]*> nop
-+0000a138 <[^>]*> nop
-+0000a13c <[^>]*> nop
-+0000a140 <[^>]*> nop
-+0000a144 <[^>]*> nop
-+0000a148 <[^>]*> nop
-+0000a14c <[^>]*> nop
-+0000a150 <[^>]*> nop
-+0000a154 <[^>]*> nop
-+0000a158 <[^>]*> nop
-+0000a15c <[^>]*> nop
-+0000a160 <[^>]*> nop
-+0000a164 <[^>]*> nop
-+0000a168 <[^>]*> nop
-+0000a16c <[^>]*> nop
-+0000a170 <[^>]*> nop
-+0000a174 <[^>]*> nop
-+0000a178 <[^>]*> nop
-+0000a17c <[^>]*> nop
-+0000a180 <[^>]*> nop
-+0000a184 <[^>]*> nop
-+0000a188 <[^>]*> nop
-+0000a18c <[^>]*> nop
-+0000a190 <[^>]*> nop
-+0000a194 <[^>]*> nop
-+0000a198 <[^>]*> nop
-+0000a19c <[^>]*> nop
-+0000a1a0 <[^>]*> nop
-+0000a1a4 <[^>]*> nop
-+0000a1a8 <[^>]*> nop
-+0000a1ac <[^>]*> nop
-+0000a1b0 <[^>]*> nop
-+0000a1b4 <[^>]*> nop
-+0000a1b8 <[^>]*> nop
-+0000a1bc <[^>]*> nop
-+0000a1c0 <[^>]*> nop
-+0000a1c4 <[^>]*> nop
-+0000a1c8 <[^>]*> nop
-+0000a1cc <[^>]*> nop
-+0000a1d0 <[^>]*> nop
-+0000a1d4 <[^>]*> nop
-+0000a1d8 <[^>]*> nop
-+0000a1dc <[^>]*> nop
-+0000a1e0 <[^>]*> nop
-+0000a1e4 <[^>]*> nop
-+0000a1e8 <[^>]*> nop
-+0000a1ec <[^>]*> nop
-+0000a1f0 <[^>]*> nop
-+0000a1f4 <[^>]*> nop
-+0000a1f8 <[^>]*> nop
-+0000a1fc <[^>]*> nop
-+0000a200 <[^>]*> nop
-+0000a204 <[^>]*> nop
-+0000a208 <[^>]*> nop
-+0000a20c <[^>]*> nop
-+0000a210 <[^>]*> nop
-+0000a214 <[^>]*> nop
-+0000a218 <[^>]*> nop
-+0000a21c <[^>]*> nop
-+0000a220 <[^>]*> nop
-+0000a224 <[^>]*> nop
-+0000a228 <[^>]*> nop
-+0000a22c <[^>]*> nop
-+0000a230 <[^>]*> nop
-+0000a234 <[^>]*> nop
-+0000a238 <[^>]*> nop
-+0000a23c <[^>]*> nop
-+0000a240 <[^>]*> nop
-+0000a244 <[^>]*> nop
-+0000a248 <[^>]*> nop
-+0000a24c <[^>]*> nop
-+0000a250 <[^>]*> nop
-+0000a254 <[^>]*> nop
-+0000a258 <[^>]*> nop
-+0000a25c <[^>]*> nop
-+0000a260 <[^>]*> nop
-+0000a264 <[^>]*> nop
-+0000a268 <[^>]*> nop
-+0000a26c <[^>]*> nop
-+0000a270 <[^>]*> nop
-+0000a274 <[^>]*> nop
-+0000a278 <[^>]*> nop
-+0000a27c <[^>]*> nop
-+0000a280 <[^>]*> nop
-+0000a284 <[^>]*> nop
-+0000a288 <[^>]*> nop
-+0000a28c <[^>]*> nop
-+0000a290 <[^>]*> nop
-+0000a294 <[^>]*> nop
-+0000a298 <[^>]*> nop
-+0000a29c <[^>]*> nop
-+0000a2a0 <[^>]*> nop
-+0000a2a4 <[^>]*> nop
-+0000a2a8 <[^>]*> nop
-+0000a2ac <[^>]*> nop
-+0000a2b0 <[^>]*> nop
-+0000a2b4 <[^>]*> nop
-+0000a2b8 <[^>]*> nop
-+0000a2bc <[^>]*> nop
-+0000a2c0 <[^>]*> nop
-+0000a2c4 <[^>]*> nop
-+0000a2c8 <[^>]*> nop
-+0000a2cc <[^>]*> nop
-+0000a2d0 <[^>]*> nop
-+0000a2d4 <[^>]*> nop
-+0000a2d8 <[^>]*> nop
-+0000a2dc <[^>]*> nop
-+0000a2e0 <[^>]*> nop
-+0000a2e4 <[^>]*> nop
-+0000a2e8 <[^>]*> nop
-+0000a2ec <[^>]*> nop
-+0000a2f0 <[^>]*> nop
-+0000a2f4 <[^>]*> nop
-+0000a2f8 <[^>]*> nop
-+0000a2fc <[^>]*> nop
-+0000a300 <[^>]*> nop
-+0000a304 <[^>]*> nop
-+0000a308 <[^>]*> nop
-+0000a30c <[^>]*> nop
-+0000a310 <[^>]*> nop
-+0000a314 <[^>]*> nop
-+0000a318 <[^>]*> nop
-+0000a31c <[^>]*> nop
-+0000a320 <[^>]*> nop
-+0000a324 <[^>]*> nop
-+0000a328 <[^>]*> nop
-+0000a32c <[^>]*> nop
-+0000a330 <[^>]*> nop
-+0000a334 <[^>]*> nop
-+0000a338 <[^>]*> nop
-+0000a33c <[^>]*> nop
-+0000a340 <[^>]*> nop
-+0000a344 <[^>]*> nop
-+0000a348 <[^>]*> nop
-+0000a34c <[^>]*> nop
-+0000a350 <[^>]*> nop
-+0000a354 <[^>]*> nop
-+0000a358 <[^>]*> nop
-+0000a35c <[^>]*> nop
-+0000a360 <[^>]*> nop
-+0000a364 <[^>]*> nop
-+0000a368 <[^>]*> nop
-+0000a36c <[^>]*> nop
-+0000a370 <[^>]*> nop
-+0000a374 <[^>]*> nop
-+0000a378 <[^>]*> nop
-+0000a37c <[^>]*> nop
-+0000a380 <[^>]*> nop
-+0000a384 <[^>]*> nop
-+0000a388 <[^>]*> nop
-+0000a38c <[^>]*> nop
-+0000a390 <[^>]*> nop
-+0000a394 <[^>]*> nop
-+0000a398 <[^>]*> nop
-+0000a39c <[^>]*> nop
-+0000a3a0 <[^>]*> nop
-+0000a3a4 <[^>]*> nop
-+0000a3a8 <[^>]*> nop
-+0000a3ac <[^>]*> nop
-+0000a3b0 <[^>]*> nop
-+0000a3b4 <[^>]*> nop
-+0000a3b8 <[^>]*> nop
-+0000a3bc <[^>]*> nop
-+0000a3c0 <[^>]*> nop
-+0000a3c4 <[^>]*> nop
-+0000a3c8 <[^>]*> nop
-+0000a3cc <[^>]*> nop
-+0000a3d0 <[^>]*> nop
-+0000a3d4 <[^>]*> nop
-+0000a3d8 <[^>]*> nop
-+0000a3dc <[^>]*> nop
-+0000a3e0 <[^>]*> nop
-+0000a3e4 <[^>]*> nop
-+0000a3e8 <[^>]*> nop
-+0000a3ec <[^>]*> nop
-+0000a3f0 <[^>]*> nop
-+0000a3f4 <[^>]*> nop
-+0000a3f8 <[^>]*> nop
-+0000a3fc <[^>]*> nop
-+0000a400 <[^>]*> nop
-+0000a404 <[^>]*> nop
-+0000a408 <[^>]*> nop
-+0000a40c <[^>]*> nop
-+0000a410 <[^>]*> nop
-+0000a414 <[^>]*> nop
-+0000a418 <[^>]*> nop
-+0000a41c <[^>]*> nop
-+0000a420 <[^>]*> nop
-+0000a424 <[^>]*> nop
-+0000a428 <[^>]*> nop
-+0000a42c <[^>]*> nop
-+0000a430 <[^>]*> nop
-+0000a434 <[^>]*> nop
-+0000a438 <[^>]*> nop
-+0000a43c <[^>]*> nop
-+0000a440 <[^>]*> nop
-+0000a444 <[^>]*> nop
-+0000a448 <[^>]*> nop
-+0000a44c <[^>]*> nop
-+0000a450 <[^>]*> nop
-+0000a454 <[^>]*> nop
-+0000a458 <[^>]*> nop
-+0000a45c <[^>]*> nop
-+0000a460 <[^>]*> nop
-+0000a464 <[^>]*> nop
-+0000a468 <[^>]*> nop
-+0000a46c <[^>]*> nop
-+0000a470 <[^>]*> nop
-+0000a474 <[^>]*> nop
-+0000a478 <[^>]*> nop
-+0000a47c <[^>]*> nop
-+0000a480 <[^>]*> nop
-+0000a484 <[^>]*> nop
-+0000a488 <[^>]*> nop
-+0000a48c <[^>]*> nop
-+0000a490 <[^>]*> nop
-+0000a494 <[^>]*> nop
-+0000a498 <[^>]*> nop
-+0000a49c <[^>]*> nop
-+0000a4a0 <[^>]*> nop
-+0000a4a4 <[^>]*> nop
-+0000a4a8 <[^>]*> nop
-+0000a4ac <[^>]*> nop
-+0000a4b0 <[^>]*> nop
-+0000a4b4 <[^>]*> nop
-+0000a4b8 <[^>]*> nop
-+0000a4bc <[^>]*> nop
-+0000a4c0 <[^>]*> nop
-+0000a4c4 <[^>]*> nop
-+0000a4c8 <[^>]*> nop
-+0000a4cc <[^>]*> nop
-+0000a4d0 <[^>]*> nop
-+0000a4d4 <[^>]*> nop
-+0000a4d8 <[^>]*> nop
-+0000a4dc <[^>]*> nop
-+0000a4e0 <[^>]*> nop
-+0000a4e4 <[^>]*> nop
-+0000a4e8 <[^>]*> nop
-+0000a4ec <[^>]*> nop
-+0000a4f0 <[^>]*> nop
-+0000a4f4 <[^>]*> nop
-+0000a4f8 <[^>]*> nop
-+0000a4fc <[^>]*> nop
-+0000a500 <[^>]*> nop
-+0000a504 <[^>]*> nop
-+0000a508 <[^>]*> nop
-+0000a50c <[^>]*> nop
-+0000a510 <[^>]*> nop
-+0000a514 <[^>]*> nop
-+0000a518 <[^>]*> nop
-+0000a51c <[^>]*> nop
-+0000a520 <[^>]*> nop
-+0000a524 <[^>]*> nop
-+0000a528 <[^>]*> nop
-+0000a52c <[^>]*> nop
-+0000a530 <[^>]*> nop
-+0000a534 <[^>]*> nop
-+0000a538 <[^>]*> nop
-+0000a53c <[^>]*> nop
-+0000a540 <[^>]*> nop
-+0000a544 <[^>]*> nop
-+0000a548 <[^>]*> nop
-+0000a54c <[^>]*> nop
-+0000a550 <[^>]*> nop
-+0000a554 <[^>]*> nop
-+0000a558 <[^>]*> nop
-+0000a55c <[^>]*> nop
-+0000a560 <[^>]*> nop
-+0000a564 <[^>]*> nop
-+0000a568 <[^>]*> nop
-+0000a56c <[^>]*> nop
-+0000a570 <[^>]*> nop
-+0000a574 <[^>]*> nop
-+0000a578 <[^>]*> nop
-+0000a57c <[^>]*> nop
-+0000a580 <[^>]*> nop
-+0000a584 <[^>]*> nop
-+0000a588 <[^>]*> nop
-+0000a58c <[^>]*> nop
-+0000a590 <[^>]*> nop
-+0000a594 <[^>]*> nop
-+0000a598 <[^>]*> nop
-+0000a59c <[^>]*> nop
-+0000a5a0 <[^>]*> nop
-+0000a5a4 <[^>]*> nop
-+0000a5a8 <[^>]*> nop
-+0000a5ac <[^>]*> nop
-+0000a5b0 <[^>]*> nop
-+0000a5b4 <[^>]*> nop
-+0000a5b8 <[^>]*> nop
-+0000a5bc <[^>]*> nop
-+0000a5c0 <[^>]*> nop
-+0000a5c4 <[^>]*> nop
-+0000a5c8 <[^>]*> nop
-+0000a5cc <[^>]*> nop
-+0000a5d0 <[^>]*> nop
-+0000a5d4 <[^>]*> nop
-+0000a5d8 <[^>]*> nop
-+0000a5dc <[^>]*> nop
-+0000a5e0 <[^>]*> nop
-+0000a5e4 <[^>]*> nop
-+0000a5e8 <[^>]*> nop
-+0000a5ec <[^>]*> nop
-+0000a5f0 <[^>]*> nop
-+0000a5f4 <[^>]*> nop
-+0000a5f8 <[^>]*> nop
-+0000a5fc <[^>]*> nop
-+0000a600 <[^>]*> nop
-+0000a604 <[^>]*> nop
-+0000a608 <[^>]*> nop
-+0000a60c <[^>]*> nop
-+0000a610 <[^>]*> nop
-+0000a614 <[^>]*> nop
-+0000a618 <[^>]*> nop
-+0000a61c <[^>]*> nop
-+0000a620 <[^>]*> nop
-+0000a624 <[^>]*> nop
-+0000a628 <[^>]*> nop
-+0000a62c <[^>]*> nop
-+0000a630 <[^>]*> nop
-+0000a634 <[^>]*> nop
-+0000a638 <[^>]*> nop
-+0000a63c <[^>]*> nop
-+0000a640 <[^>]*> nop
-+0000a644 <[^>]*> nop
-+0000a648 <[^>]*> nop
-+0000a64c <[^>]*> nop
-+0000a650 <[^>]*> nop
-+0000a654 <[^>]*> nop
-+0000a658 <[^>]*> nop
-+0000a65c <[^>]*> nop
-+0000a660 <[^>]*> nop
-+0000a664 <[^>]*> nop
-+0000a668 <[^>]*> nop
-+0000a66c <[^>]*> nop
-+0000a670 <[^>]*> nop
-+0000a674 <[^>]*> nop
-+0000a678 <[^>]*> nop
-+0000a67c <[^>]*> nop
-+0000a680 <[^>]*> nop
-+0000a684 <[^>]*> nop
-+0000a688 <[^>]*> nop
-+0000a68c <[^>]*> nop
-+0000a690 <[^>]*> nop
-+0000a694 <[^>]*> nop
-+0000a698 <[^>]*> nop
-+0000a69c <[^>]*> nop
-+0000a6a0 <[^>]*> nop
-+0000a6a4 <[^>]*> nop
-+0000a6a8 <[^>]*> nop
-+0000a6ac <[^>]*> nop
-+0000a6b0 <[^>]*> nop
-+0000a6b4 <[^>]*> nop
-+0000a6b8 <[^>]*> nop
-+0000a6bc <[^>]*> nop
-+0000a6c0 <[^>]*> nop
-+0000a6c4 <[^>]*> nop
-+0000a6c8 <[^>]*> nop
-+0000a6cc <[^>]*> nop
-+0000a6d0 <[^>]*> nop
-+0000a6d4 <[^>]*> nop
-+0000a6d8 <[^>]*> nop
-+0000a6dc <[^>]*> nop
-+0000a6e0 <[^>]*> nop
-+0000a6e4 <[^>]*> nop
-+0000a6e8 <[^>]*> nop
-+0000a6ec <[^>]*> nop
-+0000a6f0 <[^>]*> nop
-+0000a6f4 <[^>]*> nop
-+0000a6f8 <[^>]*> nop
-+0000a6fc <[^>]*> nop
-+0000a700 <[^>]*> nop
-+0000a704 <[^>]*> nop
-+0000a708 <[^>]*> nop
-+0000a70c <[^>]*> nop
-+0000a710 <[^>]*> nop
-+0000a714 <[^>]*> nop
-+0000a718 <[^>]*> nop
-+0000a71c <[^>]*> nop
-+0000a720 <[^>]*> nop
-+0000a724 <[^>]*> nop
-+0000a728 <[^>]*> nop
-+0000a72c <[^>]*> nop
-+0000a730 <[^>]*> nop
-+0000a734 <[^>]*> nop
-+0000a738 <[^>]*> nop
-+0000a73c <[^>]*> nop
-+0000a740 <[^>]*> nop
-+0000a744 <[^>]*> nop
-+0000a748 <[^>]*> nop
-+0000a74c <[^>]*> nop
-+0000a750 <[^>]*> nop
-+0000a754 <[^>]*> nop
-+0000a758 <[^>]*> nop
-+0000a75c <[^>]*> nop
-+0000a760 <[^>]*> nop
-+0000a764 <[^>]*> nop
-+0000a768 <[^>]*> nop
-+0000a76c <[^>]*> nop
-+0000a770 <[^>]*> nop
-+0000a774 <[^>]*> nop
-+0000a778 <[^>]*> nop
-+0000a77c <[^>]*> nop
-+0000a780 <[^>]*> nop
-+0000a784 <[^>]*> nop
-+0000a788 <[^>]*> nop
-+0000a78c <[^>]*> nop
-+0000a790 <[^>]*> nop
-+0000a794 <[^>]*> nop
-+0000a798 <[^>]*> nop
-+0000a79c <[^>]*> nop
-+0000a7a0 <[^>]*> nop
-+0000a7a4 <[^>]*> nop
-+0000a7a8 <[^>]*> nop
-+0000a7ac <[^>]*> nop
-+0000a7b0 <[^>]*> nop
-+0000a7b4 <[^>]*> nop
-+0000a7b8 <[^>]*> nop
-+0000a7bc <[^>]*> nop
-+0000a7c0 <[^>]*> nop
-+0000a7c4 <[^>]*> nop
-+0000a7c8 <[^>]*> nop
-+0000a7cc <[^>]*> nop
-+0000a7d0 <[^>]*> nop
-+0000a7d4 <[^>]*> nop
-+0000a7d8 <[^>]*> nop
-+0000a7dc <[^>]*> nop
-+0000a7e0 <[^>]*> nop
-+0000a7e4 <[^>]*> nop
-+0000a7e8 <[^>]*> nop
-+0000a7ec <[^>]*> nop
-+0000a7f0 <[^>]*> nop
-+0000a7f4 <[^>]*> nop
-+0000a7f8 <[^>]*> nop
-+0000a7fc <[^>]*> nop
-+0000a800 <[^>]*> nop
-+0000a804 <[^>]*> nop
-+0000a808 <[^>]*> nop
-+0000a80c <[^>]*> nop
-+0000a810 <[^>]*> nop
-+0000a814 <[^>]*> nop
-+0000a818 <[^>]*> nop
-+0000a81c <[^>]*> nop
-+0000a820 <[^>]*> nop
-+0000a824 <[^>]*> nop
-+0000a828 <[^>]*> nop
-+0000a82c <[^>]*> nop
-+0000a830 <[^>]*> nop
-+0000a834 <[^>]*> nop
-+0000a838 <[^>]*> nop
-+0000a83c <[^>]*> nop
-+0000a840 <[^>]*> nop
-+0000a844 <[^>]*> nop
-+0000a848 <[^>]*> nop
-+0000a84c <[^>]*> nop
-+0000a850 <[^>]*> nop
-+0000a854 <[^>]*> nop
-+0000a858 <[^>]*> nop
-+0000a85c <[^>]*> nop
-+0000a860 <[^>]*> nop
-+0000a864 <[^>]*> nop
-+0000a868 <[^>]*> nop
-+0000a86c <[^>]*> nop
-+0000a870 <[^>]*> nop
-+0000a874 <[^>]*> nop
-+0000a878 <[^>]*> nop
-+0000a87c <[^>]*> nop
-+0000a880 <[^>]*> nop
-+0000a884 <[^>]*> nop
-+0000a888 <[^>]*> nop
-+0000a88c <[^>]*> nop
-+0000a890 <[^>]*> nop
-+0000a894 <[^>]*> nop
-+0000a898 <[^>]*> nop
-+0000a89c <[^>]*> nop
-+0000a8a0 <[^>]*> nop
-+0000a8a4 <[^>]*> nop
-+0000a8a8 <[^>]*> nop
-+0000a8ac <[^>]*> nop
-+0000a8b0 <[^>]*> nop
-+0000a8b4 <[^>]*> nop
-+0000a8b8 <[^>]*> nop
-+0000a8bc <[^>]*> nop
-+0000a8c0 <[^>]*> nop
-+0000a8c4 <[^>]*> nop
-+0000a8c8 <[^>]*> nop
-+0000a8cc <[^>]*> nop
-+0000a8d0 <[^>]*> nop
-+0000a8d4 <[^>]*> nop
-+0000a8d8 <[^>]*> nop
-+0000a8dc <[^>]*> nop
-+0000a8e0 <[^>]*> nop
-+0000a8e4 <[^>]*> nop
-+0000a8e8 <[^>]*> nop
-+0000a8ec <[^>]*> nop
-+0000a8f0 <[^>]*> nop
-+0000a8f4 <[^>]*> nop
-+0000a8f8 <[^>]*> nop
-+0000a8fc <[^>]*> nop
-+0000a900 <[^>]*> nop
-+0000a904 <[^>]*> nop
-+0000a908 <[^>]*> nop
-+0000a90c <[^>]*> nop
-+0000a910 <[^>]*> nop
-+0000a914 <[^>]*> nop
-+0000a918 <[^>]*> nop
-+0000a91c <[^>]*> nop
-+0000a920 <[^>]*> nop
-+0000a924 <[^>]*> nop
-+0000a928 <[^>]*> nop
-+0000a92c <[^>]*> nop
-+0000a930 <[^>]*> nop
-+0000a934 <[^>]*> nop
-+0000a938 <[^>]*> nop
-+0000a93c <[^>]*> nop
-+0000a940 <[^>]*> nop
-+0000a944 <[^>]*> nop
-+0000a948 <[^>]*> nop
-+0000a94c <[^>]*> nop
-+0000a950 <[^>]*> nop
-+0000a954 <[^>]*> nop
-+0000a958 <[^>]*> nop
-+0000a95c <[^>]*> nop
-+0000a960 <[^>]*> nop
-+0000a964 <[^>]*> nop
-+0000a968 <[^>]*> nop
-+0000a96c <[^>]*> nop
-+0000a970 <[^>]*> nop
-+0000a974 <[^>]*> nop
-+0000a978 <[^>]*> nop
-+0000a97c <[^>]*> nop
-+0000a980 <[^>]*> nop
-+0000a984 <[^>]*> nop
-+0000a988 <[^>]*> nop
-+0000a98c <[^>]*> nop
-+0000a990 <[^>]*> nop
-+0000a994 <[^>]*> nop
-+0000a998 <[^>]*> nop
-+0000a99c <[^>]*> nop
-+0000a9a0 <[^>]*> nop
-+0000a9a4 <[^>]*> nop
-+0000a9a8 <[^>]*> nop
-+0000a9ac <[^>]*> nop
-+0000a9b0 <[^>]*> nop
-+0000a9b4 <[^>]*> nop
-+0000a9b8 <[^>]*> nop
-+0000a9bc <[^>]*> nop
-+0000a9c0 <[^>]*> nop
-+0000a9c4 <[^>]*> nop
-+0000a9c8 <[^>]*> nop
-+0000a9cc <[^>]*> nop
-+0000a9d0 <[^>]*> nop
-+0000a9d4 <[^>]*> nop
-+0000a9d8 <[^>]*> nop
-+0000a9dc <[^>]*> nop
-+0000a9e0 <[^>]*> nop
-+0000a9e4 <[^>]*> nop
-+0000a9e8 <[^>]*> nop
-+0000a9ec <[^>]*> nop
-+0000a9f0 <[^>]*> nop
-+0000a9f4 <[^>]*> nop
-+0000a9f8 <[^>]*> nop
-+0000a9fc <[^>]*> nop
-+0000aa00 <[^>]*> nop
-+0000aa04 <[^>]*> nop
-+0000aa08 <[^>]*> nop
-+0000aa0c <[^>]*> nop
-+0000aa10 <[^>]*> nop
-+0000aa14 <[^>]*> nop
-+0000aa18 <[^>]*> nop
-+0000aa1c <[^>]*> nop
-+0000aa20 <[^>]*> nop
-+0000aa24 <[^>]*> nop
-+0000aa28 <[^>]*> nop
-+0000aa2c <[^>]*> nop
-+0000aa30 <[^>]*> nop
-+0000aa34 <[^>]*> nop
-+0000aa38 <[^>]*> nop
-+0000aa3c <[^>]*> nop
-+0000aa40 <[^>]*> nop
-+0000aa44 <[^>]*> nop
-+0000aa48 <[^>]*> nop
-+0000aa4c <[^>]*> nop
-+0000aa50 <[^>]*> nop
-+0000aa54 <[^>]*> nop
-+0000aa58 <[^>]*> nop
-+0000aa5c <[^>]*> nop
-+0000aa60 <[^>]*> nop
-+0000aa64 <[^>]*> nop
-+0000aa68 <[^>]*> nop
-+0000aa6c <[^>]*> nop
-+0000aa70 <[^>]*> nop
-+0000aa74 <[^>]*> nop
-+0000aa78 <[^>]*> nop
-+0000aa7c <[^>]*> nop
-+0000aa80 <[^>]*> nop
-+0000aa84 <[^>]*> nop
-+0000aa88 <[^>]*> nop
-+0000aa8c <[^>]*> nop
-+0000aa90 <[^>]*> nop
-+0000aa94 <[^>]*> nop
-+0000aa98 <[^>]*> nop
-+0000aa9c <[^>]*> nop
-+0000aaa0 <[^>]*> nop
-+0000aaa4 <[^>]*> nop
-+0000aaa8 <[^>]*> nop
-+0000aaac <[^>]*> nop
-+0000aab0 <[^>]*> nop
-+0000aab4 <[^>]*> nop
-+0000aab8 <[^>]*> nop
-+0000aabc <[^>]*> nop
-+0000aac0 <[^>]*> nop
-+0000aac4 <[^>]*> nop
-+0000aac8 <[^>]*> nop
-+0000aacc <[^>]*> nop
-+0000aad0 <[^>]*> nop
-+0000aad4 <[^>]*> nop
-+0000aad8 <[^>]*> nop
-+0000aadc <[^>]*> nop
-+0000aae0 <[^>]*> nop
-+0000aae4 <[^>]*> nop
-+0000aae8 <[^>]*> nop
-+0000aaec <[^>]*> nop
-+0000aaf0 <[^>]*> nop
-+0000aaf4 <[^>]*> nop
-+0000aaf8 <[^>]*> nop
-+0000aafc <[^>]*> nop
-+0000ab00 <[^>]*> nop
-+0000ab04 <[^>]*> nop
-+0000ab08 <[^>]*> nop
-+0000ab0c <[^>]*> nop
-+0000ab10 <[^>]*> nop
-+0000ab14 <[^>]*> nop
-+0000ab18 <[^>]*> nop
-+0000ab1c <[^>]*> nop
-+0000ab20 <[^>]*> nop
-+0000ab24 <[^>]*> nop
-+0000ab28 <[^>]*> nop
-+0000ab2c <[^>]*> nop
-+0000ab30 <[^>]*> nop
-+0000ab34 <[^>]*> nop
-+0000ab38 <[^>]*> nop
-+0000ab3c <[^>]*> nop
-+0000ab40 <[^>]*> nop
-+0000ab44 <[^>]*> nop
-+0000ab48 <[^>]*> nop
-+0000ab4c <[^>]*> nop
-+0000ab50 <[^>]*> nop
-+0000ab54 <[^>]*> nop
-+0000ab58 <[^>]*> nop
-+0000ab5c <[^>]*> nop
-+0000ab60 <[^>]*> nop
-+0000ab64 <[^>]*> nop
-+0000ab68 <[^>]*> nop
-+0000ab6c <[^>]*> nop
-+0000ab70 <[^>]*> nop
-+0000ab74 <[^>]*> nop
-+0000ab78 <[^>]*> nop
-+0000ab7c <[^>]*> nop
-+0000ab80 <[^>]*> nop
-+0000ab84 <[^>]*> nop
-+0000ab88 <[^>]*> nop
-+0000ab8c <[^>]*> nop
-+0000ab90 <[^>]*> nop
-+0000ab94 <[^>]*> nop
-+0000ab98 <[^>]*> nop
-+0000ab9c <[^>]*> nop
-+0000aba0 <[^>]*> nop
-+0000aba4 <[^>]*> nop
-+0000aba8 <[^>]*> nop
-+0000abac <[^>]*> nop
-+0000abb0 <[^>]*> nop
-+0000abb4 <[^>]*> nop
-+0000abb8 <[^>]*> nop
-+0000abbc <[^>]*> nop
-+0000abc0 <[^>]*> nop
-+0000abc4 <[^>]*> nop
-+0000abc8 <[^>]*> nop
-+0000abcc <[^>]*> nop
-+0000abd0 <[^>]*> nop
-+0000abd4 <[^>]*> nop
-+0000abd8 <[^>]*> nop
-+0000abdc <[^>]*> nop
-+0000abe0 <[^>]*> nop
-+0000abe4 <[^>]*> nop
-+0000abe8 <[^>]*> nop
-+0000abec <[^>]*> nop
-+0000abf0 <[^>]*> nop
-+0000abf4 <[^>]*> nop
-+0000abf8 <[^>]*> nop
-+0000abfc <[^>]*> nop
-+0000ac00 <[^>]*> nop
-+0000ac04 <[^>]*> nop
-+0000ac08 <[^>]*> nop
-+0000ac0c <[^>]*> nop
-+0000ac10 <[^>]*> nop
-+0000ac14 <[^>]*> nop
-+0000ac18 <[^>]*> nop
-+0000ac1c <[^>]*> nop
-+0000ac20 <[^>]*> nop
-+0000ac24 <[^>]*> nop
-+0000ac28 <[^>]*> nop
-+0000ac2c <[^>]*> nop
-+0000ac30 <[^>]*> nop
-+0000ac34 <[^>]*> nop
-+0000ac38 <[^>]*> nop
-+0000ac3c <[^>]*> nop
-+0000ac40 <[^>]*> nop
-+0000ac44 <[^>]*> nop
-+0000ac48 <[^>]*> nop
-+0000ac4c <[^>]*> nop
-+0000ac50 <[^>]*> nop
-+0000ac54 <[^>]*> nop
-+0000ac58 <[^>]*> nop
-+0000ac5c <[^>]*> nop
-+0000ac60 <[^>]*> nop
-+0000ac64 <[^>]*> nop
-+0000ac68 <[^>]*> nop
-+0000ac6c <[^>]*> nop
-+0000ac70 <[^>]*> nop
-+0000ac74 <[^>]*> nop
-+0000ac78 <[^>]*> nop
-+0000ac7c <[^>]*> nop
-+0000ac80 <[^>]*> nop
-+0000ac84 <[^>]*> nop
-+0000ac88 <[^>]*> nop
-+0000ac8c <[^>]*> nop
-+0000ac90 <[^>]*> nop
-+0000ac94 <[^>]*> nop
-+0000ac98 <[^>]*> nop
-+0000ac9c <[^>]*> nop
-+0000aca0 <[^>]*> nop
-+0000aca4 <[^>]*> nop
-+0000aca8 <[^>]*> nop
-+0000acac <[^>]*> nop
-+0000acb0 <[^>]*> nop
-+0000acb4 <[^>]*> nop
-+0000acb8 <[^>]*> nop
-+0000acbc <[^>]*> nop
-+0000acc0 <[^>]*> nop
-+0000acc4 <[^>]*> nop
-+0000acc8 <[^>]*> nop
-+0000accc <[^>]*> nop
-+0000acd0 <[^>]*> nop
-+0000acd4 <[^>]*> nop
-+0000acd8 <[^>]*> nop
-+0000acdc <[^>]*> nop
-+0000ace0 <[^>]*> nop
-+0000ace4 <[^>]*> nop
-+0000ace8 <[^>]*> nop
-+0000acec <[^>]*> nop
-+0000acf0 <[^>]*> nop
-+0000acf4 <[^>]*> nop
-+0000acf8 <[^>]*> nop
-+0000acfc <[^>]*> nop
-+0000ad00 <[^>]*> nop
-+0000ad04 <[^>]*> nop
-+0000ad08 <[^>]*> nop
-+0000ad0c <[^>]*> nop
-+0000ad10 <[^>]*> nop
-+0000ad14 <[^>]*> nop
-+0000ad18 <[^>]*> nop
-+0000ad1c <[^>]*> nop
-+0000ad20 <[^>]*> nop
-+0000ad24 <[^>]*> nop
-+0000ad28 <[^>]*> nop
-+0000ad2c <[^>]*> nop
-+0000ad30 <[^>]*> nop
-+0000ad34 <[^>]*> nop
-+0000ad38 <[^>]*> nop
-+0000ad3c <[^>]*> nop
-+0000ad40 <[^>]*> nop
-+0000ad44 <[^>]*> nop
-+0000ad48 <[^>]*> nop
-+0000ad4c <[^>]*> nop
-+0000ad50 <[^>]*> nop
-+0000ad54 <[^>]*> nop
-+0000ad58 <[^>]*> nop
-+0000ad5c <[^>]*> nop
-+0000ad60 <[^>]*> nop
-+0000ad64 <[^>]*> nop
-+0000ad68 <[^>]*> nop
-+0000ad6c <[^>]*> nop
-+0000ad70 <[^>]*> nop
-+0000ad74 <[^>]*> nop
-+0000ad78 <[^>]*> nop
-+0000ad7c <[^>]*> nop
-+0000ad80 <[^>]*> nop
-+0000ad84 <[^>]*> nop
-+0000ad88 <[^>]*> nop
-+0000ad8c <[^>]*> nop
-+0000ad90 <[^>]*> nop
-+0000ad94 <[^>]*> nop
-+0000ad98 <[^>]*> nop
-+0000ad9c <[^>]*> nop
-+0000ada0 <[^>]*> nop
-+0000ada4 <[^>]*> nop
-+0000ada8 <[^>]*> nop
-+0000adac <[^>]*> nop
-+0000adb0 <[^>]*> nop
-+0000adb4 <[^>]*> nop
-+0000adb8 <[^>]*> nop
-+0000adbc <[^>]*> nop
-+0000adc0 <[^>]*> nop
-+0000adc4 <[^>]*> nop
-+0000adc8 <[^>]*> nop
-+0000adcc <[^>]*> nop
-+0000add0 <[^>]*> nop
-+0000add4 <[^>]*> nop
-+0000add8 <[^>]*> nop
-+0000addc <[^>]*> nop
-+0000ade0 <[^>]*> nop
-+0000ade4 <[^>]*> nop
-+0000ade8 <[^>]*> nop
-+0000adec <[^>]*> nop
-+0000adf0 <[^>]*> nop
-+0000adf4 <[^>]*> nop
-+0000adf8 <[^>]*> nop
-+0000adfc <[^>]*> nop
-+0000ae00 <[^>]*> nop
-+0000ae04 <[^>]*> nop
-+0000ae08 <[^>]*> nop
-+0000ae0c <[^>]*> nop
-+0000ae10 <[^>]*> nop
-+0000ae14 <[^>]*> nop
-+0000ae18 <[^>]*> nop
-+0000ae1c <[^>]*> nop
-+0000ae20 <[^>]*> nop
-+0000ae24 <[^>]*> nop
-+0000ae28 <[^>]*> nop
-+0000ae2c <[^>]*> nop
-+0000ae30 <[^>]*> nop
-+0000ae34 <[^>]*> nop
-+0000ae38 <[^>]*> nop
-+0000ae3c <[^>]*> nop
-+0000ae40 <[^>]*> nop
-+0000ae44 <[^>]*> nop
-+0000ae48 <[^>]*> nop
-+0000ae4c <[^>]*> nop
-+0000ae50 <[^>]*> nop
-+0000ae54 <[^>]*> nop
-+0000ae58 <[^>]*> nop
-+0000ae5c <[^>]*> nop
-+0000ae60 <[^>]*> nop
-+0000ae64 <[^>]*> nop
-+0000ae68 <[^>]*> nop
-+0000ae6c <[^>]*> nop
-+0000ae70 <[^>]*> nop
-+0000ae74 <[^>]*> nop
-+0000ae78 <[^>]*> nop
-+0000ae7c <[^>]*> nop
-+0000ae80 <[^>]*> nop
-+0000ae84 <[^>]*> nop
-+0000ae88 <[^>]*> nop
-+0000ae8c <[^>]*> nop
-+0000ae90 <[^>]*> nop
-+0000ae94 <[^>]*> nop
-+0000ae98 <[^>]*> nop
-+0000ae9c <[^>]*> nop
-+0000aea0 <[^>]*> nop
-+0000aea4 <[^>]*> nop
-+0000aea8 <[^>]*> nop
-+0000aeac <[^>]*> nop
-+0000aeb0 <[^>]*> nop
-+0000aeb4 <[^>]*> nop
-+0000aeb8 <[^>]*> nop
-+0000aebc <[^>]*> nop
-+0000aec0 <[^>]*> nop
-+0000aec4 <[^>]*> nop
-+0000aec8 <[^>]*> nop
-+0000aecc <[^>]*> nop
-+0000aed0 <[^>]*> nop
-+0000aed4 <[^>]*> nop
-+0000aed8 <[^>]*> nop
-+0000aedc <[^>]*> nop
-+0000aee0 <[^>]*> nop
-+0000aee4 <[^>]*> nop
-+0000aee8 <[^>]*> nop
-+0000aeec <[^>]*> nop
-+0000aef0 <[^>]*> nop
-+0000aef4 <[^>]*> nop
-+0000aef8 <[^>]*> nop
-+0000aefc <[^>]*> nop
-+0000af00 <[^>]*> nop
-+0000af04 <[^>]*> nop
-+0000af08 <[^>]*> nop
-+0000af0c <[^>]*> nop
-+0000af10 <[^>]*> nop
-+0000af14 <[^>]*> nop
-+0000af18 <[^>]*> nop
-+0000af1c <[^>]*> nop
-+0000af20 <[^>]*> nop
-+0000af24 <[^>]*> nop
-+0000af28 <[^>]*> nop
-+0000af2c <[^>]*> nop
-+0000af30 <[^>]*> nop
-+0000af34 <[^>]*> nop
-+0000af38 <[^>]*> nop
-+0000af3c <[^>]*> nop
-+0000af40 <[^>]*> nop
-+0000af44 <[^>]*> nop
-+0000af48 <[^>]*> nop
-+0000af4c <[^>]*> nop
-+0000af50 <[^>]*> nop
-+0000af54 <[^>]*> nop
-+0000af58 <[^>]*> nop
-+0000af5c <[^>]*> nop
-+0000af60 <[^>]*> nop
-+0000af64 <[^>]*> nop
-+0000af68 <[^>]*> nop
-+0000af6c <[^>]*> nop
-+0000af70 <[^>]*> nop
-+0000af74 <[^>]*> nop
-+0000af78 <[^>]*> nop
-+0000af7c <[^>]*> nop
-+0000af80 <[^>]*> nop
-+0000af84 <[^>]*> nop
-+0000af88 <[^>]*> nop
-+0000af8c <[^>]*> nop
-+0000af90 <[^>]*> nop
-+0000af94 <[^>]*> nop
-+0000af98 <[^>]*> nop
-+0000af9c <[^>]*> nop
-+0000afa0 <[^>]*> nop
-+0000afa4 <[^>]*> nop
-+0000afa8 <[^>]*> nop
-+0000afac <[^>]*> nop
-+0000afb0 <[^>]*> nop
-+0000afb4 <[^>]*> nop
-+0000afb8 <[^>]*> nop
-+0000afbc <[^>]*> nop
-+0000afc0 <[^>]*> nop
-+0000afc4 <[^>]*> nop
-+0000afc8 <[^>]*> nop
-+0000afcc <[^>]*> nop
-+0000afd0 <[^>]*> nop
-+0000afd4 <[^>]*> nop
-+0000afd8 <[^>]*> nop
-+0000afdc <[^>]*> nop
-+0000afe0 <[^>]*> nop
-+0000afe4 <[^>]*> nop
-+0000afe8 <[^>]*> nop
-+0000afec <[^>]*> nop
-+0000aff0 <[^>]*> nop
-+0000aff4 <[^>]*> nop
-+0000aff8 <[^>]*> nop
-+0000affc <[^>]*> nop
-+0000b000 <[^>]*> nop
-+0000b004 <[^>]*> nop
-+0000b008 <[^>]*> nop
-+0000b00c <[^>]*> nop
-+0000b010 <[^>]*> nop
-+0000b014 <[^>]*> nop
-+0000b018 <[^>]*> nop
-+0000b01c <[^>]*> nop
-+0000b020 <[^>]*> nop
-+0000b024 <[^>]*> nop
-+0000b028 <[^>]*> nop
-+0000b02c <[^>]*> nop
-+0000b030 <[^>]*> nop
-+0000b034 <[^>]*> nop
-+0000b038 <[^>]*> nop
-+0000b03c <[^>]*> nop
-+0000b040 <[^>]*> nop
-+0000b044 <[^>]*> nop
-+0000b048 <[^>]*> nop
-+0000b04c <[^>]*> nop
-+0000b050 <[^>]*> nop
-+0000b054 <[^>]*> nop
-+0000b058 <[^>]*> nop
-+0000b05c <[^>]*> nop
-+0000b060 <[^>]*> nop
-+0000b064 <[^>]*> nop
-+0000b068 <[^>]*> nop
-+0000b06c <[^>]*> nop
-+0000b070 <[^>]*> nop
-+0000b074 <[^>]*> nop
-+0000b078 <[^>]*> nop
-+0000b07c <[^>]*> nop
-+0000b080 <[^>]*> nop
-+0000b084 <[^>]*> nop
-+0000b088 <[^>]*> nop
-+0000b08c <[^>]*> nop
-+0000b090 <[^>]*> nop
-+0000b094 <[^>]*> nop
-+0000b098 <[^>]*> nop
-+0000b09c <[^>]*> nop
-+0000b0a0 <[^>]*> nop
-+0000b0a4 <[^>]*> nop
-+0000b0a8 <[^>]*> nop
-+0000b0ac <[^>]*> nop
-+0000b0b0 <[^>]*> nop
-+0000b0b4 <[^>]*> nop
-+0000b0b8 <[^>]*> nop
-+0000b0bc <[^>]*> nop
-+0000b0c0 <[^>]*> nop
-+0000b0c4 <[^>]*> nop
-+0000b0c8 <[^>]*> nop
-+0000b0cc <[^>]*> nop
-+0000b0d0 <[^>]*> nop
-+0000b0d4 <[^>]*> nop
-+0000b0d8 <[^>]*> nop
-+0000b0dc <[^>]*> nop
-+0000b0e0 <[^>]*> nop
-+0000b0e4 <[^>]*> nop
-+0000b0e8 <[^>]*> nop
-+0000b0ec <[^>]*> nop
-+0000b0f0 <[^>]*> nop
-+0000b0f4 <[^>]*> nop
-+0000b0f8 <[^>]*> nop
-+0000b0fc <[^>]*> nop
-+0000b100 <[^>]*> nop
-+0000b104 <[^>]*> nop
-+0000b108 <[^>]*> nop
-+0000b10c <[^>]*> nop
-+0000b110 <[^>]*> nop
-+0000b114 <[^>]*> nop
-+0000b118 <[^>]*> nop
-+0000b11c <[^>]*> nop
-+0000b120 <[^>]*> nop
-+0000b124 <[^>]*> nop
-+0000b128 <[^>]*> nop
-+0000b12c <[^>]*> nop
-+0000b130 <[^>]*> nop
-+0000b134 <[^>]*> nop
-+0000b138 <[^>]*> nop
-+0000b13c <[^>]*> nop
-+0000b140 <[^>]*> nop
-+0000b144 <[^>]*> nop
-+0000b148 <[^>]*> nop
-+0000b14c <[^>]*> nop
-+0000b150 <[^>]*> nop
-+0000b154 <[^>]*> nop
-+0000b158 <[^>]*> nop
-+0000b15c <[^>]*> nop
-+0000b160 <[^>]*> nop
-+0000b164 <[^>]*> nop
-+0000b168 <[^>]*> nop
-+0000b16c <[^>]*> nop
-+0000b170 <[^>]*> nop
-+0000b174 <[^>]*> nop
-+0000b178 <[^>]*> nop
-+0000b17c <[^>]*> nop
-+0000b180 <[^>]*> nop
-+0000b184 <[^>]*> nop
-+0000b188 <[^>]*> nop
-+0000b18c <[^>]*> nop
-+0000b190 <[^>]*> nop
-+0000b194 <[^>]*> nop
-+0000b198 <[^>]*> nop
-+0000b19c <[^>]*> nop
-+0000b1a0 <[^>]*> nop
-+0000b1a4 <[^>]*> nop
-+0000b1a8 <[^>]*> nop
-+0000b1ac <[^>]*> nop
-+0000b1b0 <[^>]*> nop
-+0000b1b4 <[^>]*> nop
-+0000b1b8 <[^>]*> nop
-+0000b1bc <[^>]*> nop
-+0000b1c0 <[^>]*> nop
-+0000b1c4 <[^>]*> nop
-+0000b1c8 <[^>]*> nop
-+0000b1cc <[^>]*> nop
-+0000b1d0 <[^>]*> nop
-+0000b1d4 <[^>]*> nop
-+0000b1d8 <[^>]*> nop
-+0000b1dc <[^>]*> nop
-+0000b1e0 <[^>]*> nop
-+0000b1e4 <[^>]*> nop
-+0000b1e8 <[^>]*> nop
-+0000b1ec <[^>]*> nop
-+0000b1f0 <[^>]*> nop
-+0000b1f4 <[^>]*> nop
-+0000b1f8 <[^>]*> nop
-+0000b1fc <[^>]*> nop
-+0000b200 <[^>]*> nop
-+0000b204 <[^>]*> nop
-+0000b208 <[^>]*> nop
-+0000b20c <[^>]*> nop
-+0000b210 <[^>]*> nop
-+0000b214 <[^>]*> nop
-+0000b218 <[^>]*> nop
-+0000b21c <[^>]*> nop
-+0000b220 <[^>]*> nop
-+0000b224 <[^>]*> nop
-+0000b228 <[^>]*> nop
-+0000b22c <[^>]*> nop
-+0000b230 <[^>]*> nop
-+0000b234 <[^>]*> nop
-+0000b238 <[^>]*> nop
-+0000b23c <[^>]*> nop
-+0000b240 <[^>]*> nop
-+0000b244 <[^>]*> nop
-+0000b248 <[^>]*> nop
-+0000b24c <[^>]*> nop
-+0000b250 <[^>]*> nop
-+0000b254 <[^>]*> nop
-+0000b258 <[^>]*> nop
-+0000b25c <[^>]*> nop
-+0000b260 <[^>]*> nop
-+0000b264 <[^>]*> nop
-+0000b268 <[^>]*> nop
-+0000b26c <[^>]*> nop
-+0000b270 <[^>]*> nop
-+0000b274 <[^>]*> nop
-+0000b278 <[^>]*> nop
-+0000b27c <[^>]*> nop
-+0000b280 <[^>]*> nop
-+0000b284 <[^>]*> nop
-+0000b288 <[^>]*> nop
-+0000b28c <[^>]*> nop
-+0000b290 <[^>]*> nop
-+0000b294 <[^>]*> nop
-+0000b298 <[^>]*> nop
-+0000b29c <[^>]*> nop
-+0000b2a0 <[^>]*> nop
-+0000b2a4 <[^>]*> nop
-+0000b2a8 <[^>]*> nop
-+0000b2ac <[^>]*> nop
-+0000b2b0 <[^>]*> nop
-+0000b2b4 <[^>]*> nop
-+0000b2b8 <[^>]*> nop
-+0000b2bc <[^>]*> nop
-+0000b2c0 <[^>]*> nop
-+0000b2c4 <[^>]*> nop
-+0000b2c8 <[^>]*> nop
-+0000b2cc <[^>]*> nop
-+0000b2d0 <[^>]*> nop
-+0000b2d4 <[^>]*> nop
-+0000b2d8 <[^>]*> nop
-+0000b2dc <[^>]*> nop
-+0000b2e0 <[^>]*> nop
-+0000b2e4 <[^>]*> nop
-+0000b2e8 <[^>]*> nop
-+0000b2ec <[^>]*> nop
-+0000b2f0 <[^>]*> nop
-+0000b2f4 <[^>]*> nop
-+0000b2f8 <[^>]*> nop
-+0000b2fc <[^>]*> nop
-+0000b300 <[^>]*> nop
-+0000b304 <[^>]*> nop
-+0000b308 <[^>]*> nop
-+0000b30c <[^>]*> nop
-+0000b310 <[^>]*> nop
-+0000b314 <[^>]*> nop
-+0000b318 <[^>]*> nop
-+0000b31c <[^>]*> nop
-+0000b320 <[^>]*> nop
-+0000b324 <[^>]*> nop
-+0000b328 <[^>]*> nop
-+0000b32c <[^>]*> nop
-+0000b330 <[^>]*> nop
-+0000b334 <[^>]*> nop
-+0000b338 <[^>]*> nop
-+0000b33c <[^>]*> nop
-+0000b340 <[^>]*> nop
-+0000b344 <[^>]*> nop
-+0000b348 <[^>]*> nop
-+0000b34c <[^>]*> nop
-+0000b350 <[^>]*> nop
-+0000b354 <[^>]*> nop
-+0000b358 <[^>]*> nop
-+0000b35c <[^>]*> nop
-+0000b360 <[^>]*> nop
-+0000b364 <[^>]*> nop
-+0000b368 <[^>]*> nop
-+0000b36c <[^>]*> nop
-+0000b370 <[^>]*> nop
-+0000b374 <[^>]*> nop
-+0000b378 <[^>]*> nop
-+0000b37c <[^>]*> nop
-+0000b380 <[^>]*> nop
-+0000b384 <[^>]*> nop
-+0000b388 <[^>]*> nop
-+0000b38c <[^>]*> nop
-+0000b390 <[^>]*> nop
-+0000b394 <[^>]*> nop
-+0000b398 <[^>]*> nop
-+0000b39c <[^>]*> nop
-+0000b3a0 <[^>]*> nop
-+0000b3a4 <[^>]*> nop
-+0000b3a8 <[^>]*> nop
-+0000b3ac <[^>]*> nop
-+0000b3b0 <[^>]*> nop
-+0000b3b4 <[^>]*> nop
-+0000b3b8 <[^>]*> nop
-+0000b3bc <[^>]*> nop
-+0000b3c0 <[^>]*> nop
-+0000b3c4 <[^>]*> nop
-+0000b3c8 <[^>]*> nop
-+0000b3cc <[^>]*> nop
-+0000b3d0 <[^>]*> nop
-+0000b3d4 <[^>]*> nop
-+0000b3d8 <[^>]*> nop
-+0000b3dc <[^>]*> nop
-+0000b3e0 <[^>]*> nop
-+0000b3e4 <[^>]*> nop
-+0000b3e8 <[^>]*> nop
-+0000b3ec <[^>]*> nop
-+0000b3f0 <[^>]*> nop
-+0000b3f4 <[^>]*> nop
-+0000b3f8 <[^>]*> nop
-+0000b3fc <[^>]*> nop
-+0000b400 <[^>]*> nop
-+0000b404 <[^>]*> nop
-+0000b408 <[^>]*> nop
-+0000b40c <[^>]*> nop
-+0000b410 <[^>]*> nop
-+0000b414 <[^>]*> nop
-+0000b418 <[^>]*> nop
-+0000b41c <[^>]*> nop
-+0000b420 <[^>]*> nop
-+0000b424 <[^>]*> nop
-+0000b428 <[^>]*> nop
-+0000b42c <[^>]*> nop
-+0000b430 <[^>]*> nop
-+0000b434 <[^>]*> nop
-+0000b438 <[^>]*> nop
-+0000b43c <[^>]*> nop
-+0000b440 <[^>]*> nop
-+0000b444 <[^>]*> nop
-+0000b448 <[^>]*> nop
-+0000b44c <[^>]*> nop
-+0000b450 <[^>]*> nop
-+0000b454 <[^>]*> nop
-+0000b458 <[^>]*> nop
-+0000b45c <[^>]*> nop
-+0000b460 <[^>]*> nop
-+0000b464 <[^>]*> nop
-+0000b468 <[^>]*> nop
-+0000b46c <[^>]*> nop
-+0000b470 <[^>]*> nop
-+0000b474 <[^>]*> nop
-+0000b478 <[^>]*> nop
-+0000b47c <[^>]*> nop
-+0000b480 <[^>]*> nop
-+0000b484 <[^>]*> nop
-+0000b488 <[^>]*> nop
-+0000b48c <[^>]*> nop
-+0000b490 <[^>]*> nop
-+0000b494 <[^>]*> nop
-+0000b498 <[^>]*> nop
-+0000b49c <[^>]*> nop
-+0000b4a0 <[^>]*> nop
-+0000b4a4 <[^>]*> nop
-+0000b4a8 <[^>]*> nop
-+0000b4ac <[^>]*> nop
-+0000b4b0 <[^>]*> nop
-+0000b4b4 <[^>]*> nop
-+0000b4b8 <[^>]*> nop
-+0000b4bc <[^>]*> nop
-+0000b4c0 <[^>]*> nop
-+0000b4c4 <[^>]*> nop
-+0000b4c8 <[^>]*> nop
-+0000b4cc <[^>]*> nop
-+0000b4d0 <[^>]*> nop
-+0000b4d4 <[^>]*> nop
-+0000b4d8 <[^>]*> nop
-+0000b4dc <[^>]*> nop
-+0000b4e0 <[^>]*> nop
-+0000b4e4 <[^>]*> nop
-+0000b4e8 <[^>]*> nop
-+0000b4ec <[^>]*> nop
-+0000b4f0 <[^>]*> nop
-+0000b4f4 <[^>]*> nop
-+0000b4f8 <[^>]*> nop
-+0000b4fc <[^>]*> nop
-+0000b500 <[^>]*> nop
-+0000b504 <[^>]*> nop
-+0000b508 <[^>]*> nop
-+0000b50c <[^>]*> nop
-+0000b510 <[^>]*> nop
-+0000b514 <[^>]*> nop
-+0000b518 <[^>]*> nop
-+0000b51c <[^>]*> nop
-+0000b520 <[^>]*> nop
-+0000b524 <[^>]*> nop
-+0000b528 <[^>]*> nop
-+0000b52c <[^>]*> nop
-+0000b530 <[^>]*> nop
-+0000b534 <[^>]*> nop
-+0000b538 <[^>]*> nop
-+0000b53c <[^>]*> nop
-+0000b540 <[^>]*> nop
-+0000b544 <[^>]*> nop
-+0000b548 <[^>]*> nop
-+0000b54c <[^>]*> nop
-+0000b550 <[^>]*> nop
-+0000b554 <[^>]*> nop
-+0000b558 <[^>]*> nop
-+0000b55c <[^>]*> nop
-+0000b560 <[^>]*> nop
-+0000b564 <[^>]*> nop
-+0000b568 <[^>]*> nop
-+0000b56c <[^>]*> nop
-+0000b570 <[^>]*> nop
-+0000b574 <[^>]*> nop
-+0000b578 <[^>]*> nop
-+0000b57c <[^>]*> nop
-+0000b580 <[^>]*> nop
-+0000b584 <[^>]*> nop
-+0000b588 <[^>]*> nop
-+0000b58c <[^>]*> nop
-+0000b590 <[^>]*> nop
-+0000b594 <[^>]*> nop
-+0000b598 <[^>]*> nop
-+0000b59c <[^>]*> nop
-+0000b5a0 <[^>]*> nop
-+0000b5a4 <[^>]*> nop
-+0000b5a8 <[^>]*> nop
-+0000b5ac <[^>]*> nop
-+0000b5b0 <[^>]*> nop
-+0000b5b4 <[^>]*> nop
-+0000b5b8 <[^>]*> nop
-+0000b5bc <[^>]*> nop
-+0000b5c0 <[^>]*> nop
-+0000b5c4 <[^>]*> nop
-+0000b5c8 <[^>]*> nop
-+0000b5cc <[^>]*> nop
-+0000b5d0 <[^>]*> nop
-+0000b5d4 <[^>]*> nop
-+0000b5d8 <[^>]*> nop
-+0000b5dc <[^>]*> nop
-+0000b5e0 <[^>]*> nop
-+0000b5e4 <[^>]*> nop
-+0000b5e8 <[^>]*> nop
-+0000b5ec <[^>]*> nop
-+0000b5f0 <[^>]*> nop
-+0000b5f4 <[^>]*> nop
-+0000b5f8 <[^>]*> nop
-+0000b5fc <[^>]*> nop
-+0000b600 <[^>]*> nop
-+0000b604 <[^>]*> nop
-+0000b608 <[^>]*> nop
-+0000b60c <[^>]*> nop
-+0000b610 <[^>]*> nop
-+0000b614 <[^>]*> nop
-+0000b618 <[^>]*> nop
-+0000b61c <[^>]*> nop
-+0000b620 <[^>]*> nop
-+0000b624 <[^>]*> nop
-+0000b628 <[^>]*> nop
-+0000b62c <[^>]*> nop
-+0000b630 <[^>]*> nop
-+0000b634 <[^>]*> nop
-+0000b638 <[^>]*> nop
-+0000b63c <[^>]*> nop
-+0000b640 <[^>]*> nop
-+0000b644 <[^>]*> nop
-+0000b648 <[^>]*> nop
-+0000b64c <[^>]*> nop
-+0000b650 <[^>]*> nop
-+0000b654 <[^>]*> nop
-+0000b658 <[^>]*> nop
-+0000b65c <[^>]*> nop
-+0000b660 <[^>]*> nop
-+0000b664 <[^>]*> nop
-+0000b668 <[^>]*> nop
-+0000b66c <[^>]*> nop
-+0000b670 <[^>]*> nop
-+0000b674 <[^>]*> nop
-+0000b678 <[^>]*> nop
-+0000b67c <[^>]*> nop
-+0000b680 <[^>]*> nop
-+0000b684 <[^>]*> nop
-+0000b688 <[^>]*> nop
-+0000b68c <[^>]*> nop
-+0000b690 <[^>]*> nop
-+0000b694 <[^>]*> nop
-+0000b698 <[^>]*> nop
-+0000b69c <[^>]*> nop
-+0000b6a0 <[^>]*> nop
-+0000b6a4 <[^>]*> nop
-+0000b6a8 <[^>]*> nop
-+0000b6ac <[^>]*> nop
-+0000b6b0 <[^>]*> nop
-+0000b6b4 <[^>]*> nop
-+0000b6b8 <[^>]*> nop
-+0000b6bc <[^>]*> nop
-+0000b6c0 <[^>]*> nop
-+0000b6c4 <[^>]*> nop
-+0000b6c8 <[^>]*> nop
-+0000b6cc <[^>]*> nop
-+0000b6d0 <[^>]*> nop
-+0000b6d4 <[^>]*> nop
-+0000b6d8 <[^>]*> nop
-+0000b6dc <[^>]*> nop
-+0000b6e0 <[^>]*> nop
-+0000b6e4 <[^>]*> nop
-+0000b6e8 <[^>]*> nop
-+0000b6ec <[^>]*> nop
-+0000b6f0 <[^>]*> nop
-+0000b6f4 <[^>]*> nop
-+0000b6f8 <[^>]*> nop
-+0000b6fc <[^>]*> nop
-+0000b700 <[^>]*> nop
-+0000b704 <[^>]*> nop
-+0000b708 <[^>]*> nop
-+0000b70c <[^>]*> nop
-+0000b710 <[^>]*> nop
-+0000b714 <[^>]*> nop
-+0000b718 <[^>]*> nop
-+0000b71c <[^>]*> nop
-+0000b720 <[^>]*> nop
-+0000b724 <[^>]*> nop
-+0000b728 <[^>]*> nop
-+0000b72c <[^>]*> nop
-+0000b730 <[^>]*> nop
-+0000b734 <[^>]*> nop
-+0000b738 <[^>]*> nop
-+0000b73c <[^>]*> nop
-+0000b740 <[^>]*> nop
-+0000b744 <[^>]*> nop
-+0000b748 <[^>]*> nop
-+0000b74c <[^>]*> nop
-+0000b750 <[^>]*> nop
-+0000b754 <[^>]*> nop
-+0000b758 <[^>]*> nop
-+0000b75c <[^>]*> nop
-+0000b760 <[^>]*> nop
-+0000b764 <[^>]*> nop
-+0000b768 <[^>]*> nop
-+0000b76c <[^>]*> nop
-+0000b770 <[^>]*> nop
-+0000b774 <[^>]*> nop
-+0000b778 <[^>]*> nop
-+0000b77c <[^>]*> nop
-+0000b780 <[^>]*> nop
-+0000b784 <[^>]*> nop
-+0000b788 <[^>]*> nop
-+0000b78c <[^>]*> nop
-+0000b790 <[^>]*> nop
-+0000b794 <[^>]*> nop
-+0000b798 <[^>]*> nop
-+0000b79c <[^>]*> nop
-+0000b7a0 <[^>]*> nop
-+0000b7a4 <[^>]*> nop
-+0000b7a8 <[^>]*> nop
-+0000b7ac <[^>]*> nop
-+0000b7b0 <[^>]*> nop
-+0000b7b4 <[^>]*> nop
-+0000b7b8 <[^>]*> nop
-+0000b7bc <[^>]*> nop
-+0000b7c0 <[^>]*> nop
-+0000b7c4 <[^>]*> nop
-+0000b7c8 <[^>]*> nop
-+0000b7cc <[^>]*> nop
-+0000b7d0 <[^>]*> nop
-+0000b7d4 <[^>]*> nop
-+0000b7d8 <[^>]*> nop
-+0000b7dc <[^>]*> nop
-+0000b7e0 <[^>]*> nop
-+0000b7e4 <[^>]*> nop
-+0000b7e8 <[^>]*> nop
-+0000b7ec <[^>]*> nop
-+0000b7f0 <[^>]*> nop
-+0000b7f4 <[^>]*> nop
-+0000b7f8 <[^>]*> nop
-+0000b7fc <[^>]*> nop
-+0000b800 <[^>]*> nop
-+0000b804 <[^>]*> nop
-+0000b808 <[^>]*> nop
-+0000b80c <[^>]*> nop
-+0000b810 <[^>]*> nop
-+0000b814 <[^>]*> nop
-+0000b818 <[^>]*> nop
-+0000b81c <[^>]*> nop
-+0000b820 <[^>]*> nop
-+0000b824 <[^>]*> nop
-+0000b828 <[^>]*> nop
-+0000b82c <[^>]*> nop
-+0000b830 <[^>]*> nop
-+0000b834 <[^>]*> nop
-+0000b838 <[^>]*> nop
-+0000b83c <[^>]*> nop
-+0000b840 <[^>]*> nop
-+0000b844 <[^>]*> nop
-+0000b848 <[^>]*> nop
-+0000b84c <[^>]*> nop
-+0000b850 <[^>]*> nop
-+0000b854 <[^>]*> nop
-+0000b858 <[^>]*> nop
-+0000b85c <[^>]*> nop
-+0000b860 <[^>]*> nop
-+0000b864 <[^>]*> nop
-+0000b868 <[^>]*> nop
-+0000b86c <[^>]*> nop
-+0000b870 <[^>]*> nop
-+0000b874 <[^>]*> nop
-+0000b878 <[^>]*> nop
-+0000b87c <[^>]*> nop
-+0000b880 <[^>]*> nop
-+0000b884 <[^>]*> nop
-+0000b888 <[^>]*> nop
-+0000b88c <[^>]*> nop
-+0000b890 <[^>]*> nop
-+0000b894 <[^>]*> nop
-+0000b898 <[^>]*> nop
-+0000b89c <[^>]*> nop
-+0000b8a0 <[^>]*> nop
-+0000b8a4 <[^>]*> nop
-+0000b8a8 <[^>]*> nop
-+0000b8ac <[^>]*> nop
-+0000b8b0 <[^>]*> nop
-+0000b8b4 <[^>]*> nop
-+0000b8b8 <[^>]*> nop
-+0000b8bc <[^>]*> nop
-+0000b8c0 <[^>]*> nop
-+0000b8c4 <[^>]*> nop
-+0000b8c8 <[^>]*> nop
-+0000b8cc <[^>]*> nop
-+0000b8d0 <[^>]*> nop
-+0000b8d4 <[^>]*> nop
-+0000b8d8 <[^>]*> nop
-+0000b8dc <[^>]*> nop
-+0000b8e0 <[^>]*> nop
-+0000b8e4 <[^>]*> nop
-+0000b8e8 <[^>]*> nop
-+0000b8ec <[^>]*> nop
-+0000b8f0 <[^>]*> nop
-+0000b8f4 <[^>]*> nop
-+0000b8f8 <[^>]*> nop
-+0000b8fc <[^>]*> nop
-+0000b900 <[^>]*> nop
-+0000b904 <[^>]*> nop
-+0000b908 <[^>]*> nop
-+0000b90c <[^>]*> nop
-+0000b910 <[^>]*> nop
-+0000b914 <[^>]*> nop
-+0000b918 <[^>]*> nop
-+0000b91c <[^>]*> nop
-+0000b920 <[^>]*> nop
-+0000b924 <[^>]*> nop
-+0000b928 <[^>]*> nop
-+0000b92c <[^>]*> nop
-+0000b930 <[^>]*> nop
-+0000b934 <[^>]*> nop
-+0000b938 <[^>]*> nop
-+0000b93c <[^>]*> nop
-+0000b940 <[^>]*> nop
-+0000b944 <[^>]*> nop
-+0000b948 <[^>]*> nop
-+0000b94c <[^>]*> nop
-+0000b950 <[^>]*> nop
-+0000b954 <[^>]*> nop
-+0000b958 <[^>]*> nop
-+0000b95c <[^>]*> nop
-+0000b960 <[^>]*> nop
-+0000b964 <[^>]*> nop
-+0000b968 <[^>]*> nop
-+0000b96c <[^>]*> nop
-+0000b970 <[^>]*> nop
-+0000b974 <[^>]*> nop
-+0000b978 <[^>]*> nop
-+0000b97c <[^>]*> nop
-+0000b980 <[^>]*> nop
-+0000b984 <[^>]*> nop
-+0000b988 <[^>]*> nop
-+0000b98c <[^>]*> nop
-+0000b990 <[^>]*> nop
-+0000b994 <[^>]*> nop
-+0000b998 <[^>]*> nop
-+0000b99c <[^>]*> nop
-+0000b9a0 <[^>]*> nop
-+0000b9a4 <[^>]*> nop
-+0000b9a8 <[^>]*> nop
-+0000b9ac <[^>]*> nop
-+0000b9b0 <[^>]*> nop
-+0000b9b4 <[^>]*> nop
-+0000b9b8 <[^>]*> nop
-+0000b9bc <[^>]*> nop
-+0000b9c0 <[^>]*> nop
-+0000b9c4 <[^>]*> nop
-+0000b9c8 <[^>]*> nop
-+0000b9cc <[^>]*> nop
-+0000b9d0 <[^>]*> nop
-+0000b9d4 <[^>]*> nop
-+0000b9d8 <[^>]*> nop
-+0000b9dc <[^>]*> nop
-+0000b9e0 <[^>]*> nop
-+0000b9e4 <[^>]*> nop
-+0000b9e8 <[^>]*> nop
-+0000b9ec <[^>]*> nop
-+0000b9f0 <[^>]*> nop
-+0000b9f4 <[^>]*> nop
-+0000b9f8 <[^>]*> nop
-+0000b9fc <[^>]*> nop
-+0000ba00 <[^>]*> nop
-+0000ba04 <[^>]*> nop
-+0000ba08 <[^>]*> nop
-+0000ba0c <[^>]*> nop
-+0000ba10 <[^>]*> nop
-+0000ba14 <[^>]*> nop
-+0000ba18 <[^>]*> nop
-+0000ba1c <[^>]*> nop
-+0000ba20 <[^>]*> nop
-+0000ba24 <[^>]*> nop
-+0000ba28 <[^>]*> nop
-+0000ba2c <[^>]*> nop
-+0000ba30 <[^>]*> nop
-+0000ba34 <[^>]*> nop
-+0000ba38 <[^>]*> nop
-+0000ba3c <[^>]*> nop
-+0000ba40 <[^>]*> nop
-+0000ba44 <[^>]*> nop
-+0000ba48 <[^>]*> nop
-+0000ba4c <[^>]*> nop
-+0000ba50 <[^>]*> nop
-+0000ba54 <[^>]*> nop
-+0000ba58 <[^>]*> nop
-+0000ba5c <[^>]*> nop
-+0000ba60 <[^>]*> nop
-+0000ba64 <[^>]*> nop
-+0000ba68 <[^>]*> nop
-+0000ba6c <[^>]*> nop
-+0000ba70 <[^>]*> nop
-+0000ba74 <[^>]*> nop
-+0000ba78 <[^>]*> nop
-+0000ba7c <[^>]*> nop
-+0000ba80 <[^>]*> nop
-+0000ba84 <[^>]*> nop
-+0000ba88 <[^>]*> nop
-+0000ba8c <[^>]*> nop
-+0000ba90 <[^>]*> nop
-+0000ba94 <[^>]*> nop
-+0000ba98 <[^>]*> nop
-+0000ba9c <[^>]*> nop
-+0000baa0 <[^>]*> nop
-+0000baa4 <[^>]*> nop
-+0000baa8 <[^>]*> nop
-+0000baac <[^>]*> nop
-+0000bab0 <[^>]*> nop
-+0000bab4 <[^>]*> nop
-+0000bab8 <[^>]*> nop
-+0000babc <[^>]*> nop
-+0000bac0 <[^>]*> nop
-+0000bac4 <[^>]*> nop
-+0000bac8 <[^>]*> nop
-+0000bacc <[^>]*> nop
-+0000bad0 <[^>]*> nop
-+0000bad4 <[^>]*> nop
-+0000bad8 <[^>]*> nop
-+0000badc <[^>]*> nop
-+0000bae0 <[^>]*> nop
-+0000bae4 <[^>]*> nop
-+0000bae8 <[^>]*> nop
-+0000baec <[^>]*> nop
-+0000baf0 <[^>]*> nop
-+0000baf4 <[^>]*> nop
-+0000baf8 <[^>]*> nop
-+0000bafc <[^>]*> nop
-+0000bb00 <[^>]*> nop
-+0000bb04 <[^>]*> nop
-+0000bb08 <[^>]*> nop
-+0000bb0c <[^>]*> nop
-+0000bb10 <[^>]*> nop
-+0000bb14 <[^>]*> nop
-+0000bb18 <[^>]*> nop
-+0000bb1c <[^>]*> nop
-+0000bb20 <[^>]*> nop
-+0000bb24 <[^>]*> nop
-+0000bb28 <[^>]*> nop
-+0000bb2c <[^>]*> nop
-+0000bb30 <[^>]*> nop
-+0000bb34 <[^>]*> nop
-+0000bb38 <[^>]*> nop
-+0000bb3c <[^>]*> nop
-+0000bb40 <[^>]*> nop
-+0000bb44 <[^>]*> nop
-+0000bb48 <[^>]*> nop
-+0000bb4c <[^>]*> nop
-+0000bb50 <[^>]*> nop
-+0000bb54 <[^>]*> nop
-+0000bb58 <[^>]*> nop
-+0000bb5c <[^>]*> nop
-+0000bb60 <[^>]*> nop
-+0000bb64 <[^>]*> nop
-+0000bb68 <[^>]*> nop
-+0000bb6c <[^>]*> nop
-+0000bb70 <[^>]*> nop
-+0000bb74 <[^>]*> nop
-+0000bb78 <[^>]*> nop
-+0000bb7c <[^>]*> nop
-+0000bb80 <[^>]*> nop
-+0000bb84 <[^>]*> nop
-+0000bb88 <[^>]*> nop
-+0000bb8c <[^>]*> nop
-+0000bb90 <[^>]*> nop
-+0000bb94 <[^>]*> nop
-+0000bb98 <[^>]*> nop
-+0000bb9c <[^>]*> nop
-+0000bba0 <[^>]*> nop
-+0000bba4 <[^>]*> nop
-+0000bba8 <[^>]*> nop
-+0000bbac <[^>]*> nop
-+0000bbb0 <[^>]*> nop
-+0000bbb4 <[^>]*> nop
-+0000bbb8 <[^>]*> nop
-+0000bbbc <[^>]*> nop
-+0000bbc0 <[^>]*> nop
-+0000bbc4 <[^>]*> nop
-+0000bbc8 <[^>]*> nop
-+0000bbcc <[^>]*> nop
-+0000bbd0 <[^>]*> nop
-+0000bbd4 <[^>]*> nop
-+0000bbd8 <[^>]*> nop
-+0000bbdc <[^>]*> nop
-+0000bbe0 <[^>]*> nop
-+0000bbe4 <[^>]*> nop
-+0000bbe8 <[^>]*> nop
-+0000bbec <[^>]*> nop
-+0000bbf0 <[^>]*> nop
-+0000bbf4 <[^>]*> nop
-+0000bbf8 <[^>]*> nop
-+0000bbfc <[^>]*> nop
-+0000bc00 <[^>]*> nop
-+0000bc04 <[^>]*> nop
-+0000bc08 <[^>]*> nop
-+0000bc0c <[^>]*> nop
-+0000bc10 <[^>]*> nop
-+0000bc14 <[^>]*> nop
-+0000bc18 <[^>]*> nop
-+0000bc1c <[^>]*> nop
-+0000bc20 <[^>]*> nop
-+0000bc24 <[^>]*> nop
-+0000bc28 <[^>]*> nop
-+0000bc2c <[^>]*> nop
-+0000bc30 <[^>]*> nop
-+0000bc34 <[^>]*> nop
-+0000bc38 <[^>]*> nop
-+0000bc3c <[^>]*> nop
-+0000bc40 <[^>]*> nop
-+0000bc44 <[^>]*> nop
-+0000bc48 <[^>]*> nop
-+0000bc4c <[^>]*> nop
-+0000bc50 <[^>]*> nop
-+0000bc54 <[^>]*> nop
-+0000bc58 <[^>]*> nop
-+0000bc5c <[^>]*> nop
-+0000bc60 <[^>]*> nop
-+0000bc64 <[^>]*> nop
-+0000bc68 <[^>]*> nop
-+0000bc6c <[^>]*> nop
-+0000bc70 <[^>]*> nop
-+0000bc74 <[^>]*> nop
-+0000bc78 <[^>]*> nop
-+0000bc7c <[^>]*> nop
-+0000bc80 <[^>]*> nop
-+0000bc84 <[^>]*> nop
-+0000bc88 <[^>]*> nop
-+0000bc8c <[^>]*> nop
-+0000bc90 <[^>]*> nop
-+0000bc94 <[^>]*> nop
-+0000bc98 <[^>]*> nop
-+0000bc9c <[^>]*> nop
-+0000bca0 <[^>]*> nop
-+0000bca4 <[^>]*> nop
-+0000bca8 <[^>]*> nop
-+0000bcac <[^>]*> nop
-+0000bcb0 <[^>]*> nop
-+0000bcb4 <[^>]*> nop
-+0000bcb8 <[^>]*> nop
-+0000bcbc <[^>]*> nop
-+0000bcc0 <[^>]*> nop
-+0000bcc4 <[^>]*> nop
-+0000bcc8 <[^>]*> nop
-+0000bccc <[^>]*> nop
-+0000bcd0 <[^>]*> nop
-+0000bcd4 <[^>]*> nop
-+0000bcd8 <[^>]*> nop
-+0000bcdc <[^>]*> nop
-+0000bce0 <[^>]*> nop
-+0000bce4 <[^>]*> nop
-+0000bce8 <[^>]*> nop
-+0000bcec <[^>]*> nop
-+0000bcf0 <[^>]*> nop
-+0000bcf4 <[^>]*> nop
-+0000bcf8 <[^>]*> nop
-+0000bcfc <[^>]*> nop
-+0000bd00 <[^>]*> nop
-+0000bd04 <[^>]*> nop
-+0000bd08 <[^>]*> nop
-+0000bd0c <[^>]*> nop
-+0000bd10 <[^>]*> nop
-+0000bd14 <[^>]*> nop
-+0000bd18 <[^>]*> nop
-+0000bd1c <[^>]*> nop
-+0000bd20 <[^>]*> nop
-+0000bd24 <[^>]*> nop
-+0000bd28 <[^>]*> nop
-+0000bd2c <[^>]*> nop
-+0000bd30 <[^>]*> nop
-+0000bd34 <[^>]*> nop
-+0000bd38 <[^>]*> nop
-+0000bd3c <[^>]*> nop
-+0000bd40 <[^>]*> nop
-+0000bd44 <[^>]*> nop
-+0000bd48 <[^>]*> nop
-+0000bd4c <[^>]*> nop
-+0000bd50 <[^>]*> nop
-+0000bd54 <[^>]*> nop
-+0000bd58 <[^>]*> nop
-+0000bd5c <[^>]*> nop
-+0000bd60 <[^>]*> nop
-+0000bd64 <[^>]*> nop
-+0000bd68 <[^>]*> nop
-+0000bd6c <[^>]*> nop
-+0000bd70 <[^>]*> nop
-+0000bd74 <[^>]*> nop
-+0000bd78 <[^>]*> nop
-+0000bd7c <[^>]*> nop
-+0000bd80 <[^>]*> nop
-+0000bd84 <[^>]*> nop
-+0000bd88 <[^>]*> nop
-+0000bd8c <[^>]*> nop
-+0000bd90 <[^>]*> nop
-+0000bd94 <[^>]*> nop
-+0000bd98 <[^>]*> nop
-+0000bd9c <[^>]*> nop
-+0000bda0 <[^>]*> nop
-+0000bda4 <[^>]*> nop
-+0000bda8 <[^>]*> nop
-+0000bdac <[^>]*> nop
-+0000bdb0 <[^>]*> nop
-+0000bdb4 <[^>]*> nop
-+0000bdb8 <[^>]*> nop
-+0000bdbc <[^>]*> nop
-+0000bdc0 <[^>]*> nop
-+0000bdc4 <[^>]*> nop
-+0000bdc8 <[^>]*> nop
-+0000bdcc <[^>]*> nop
-+0000bdd0 <[^>]*> nop
-+0000bdd4 <[^>]*> nop
-+0000bdd8 <[^>]*> nop
-+0000bddc <[^>]*> nop
-+0000bde0 <[^>]*> nop
-+0000bde4 <[^>]*> nop
-+0000bde8 <[^>]*> nop
-+0000bdec <[^>]*> nop
-+0000bdf0 <[^>]*> nop
-+0000bdf4 <[^>]*> nop
-+0000bdf8 <[^>]*> nop
-+0000bdfc <[^>]*> nop
-+0000be00 <[^>]*> nop
-+0000be04 <[^>]*> nop
-+0000be08 <[^>]*> nop
-+0000be0c <[^>]*> nop
-+0000be10 <[^>]*> nop
-+0000be14 <[^>]*> nop
-+0000be18 <[^>]*> nop
-+0000be1c <[^>]*> nop
-+0000be20 <[^>]*> nop
-+0000be24 <[^>]*> nop
-+0000be28 <[^>]*> nop
-+0000be2c <[^>]*> nop
-+0000be30 <[^>]*> nop
-+0000be34 <[^>]*> nop
-+0000be38 <[^>]*> nop
-+0000be3c <[^>]*> nop
-+0000be40 <[^>]*> nop
-+0000be44 <[^>]*> nop
-+0000be48 <[^>]*> nop
-+0000be4c <[^>]*> nop
-+0000be50 <[^>]*> nop
-+0000be54 <[^>]*> nop
-+0000be58 <[^>]*> nop
-+0000be5c <[^>]*> nop
-+0000be60 <[^>]*> nop
-+0000be64 <[^>]*> nop
-+0000be68 <[^>]*> nop
-+0000be6c <[^>]*> nop
-+0000be70 <[^>]*> nop
-+0000be74 <[^>]*> nop
-+0000be78 <[^>]*> nop
-+0000be7c <[^>]*> nop
-+0000be80 <[^>]*> nop
-+0000be84 <[^>]*> nop
-+0000be88 <[^>]*> nop
-+0000be8c <[^>]*> nop
-+0000be90 <[^>]*> nop
-+0000be94 <[^>]*> nop
-+0000be98 <[^>]*> nop
-+0000be9c <[^>]*> nop
-+0000bea0 <[^>]*> nop
-+0000bea4 <[^>]*> nop
-+0000bea8 <[^>]*> nop
-+0000beac <[^>]*> nop
-+0000beb0 <[^>]*> nop
-+0000beb4 <[^>]*> nop
-+0000beb8 <[^>]*> nop
-+0000bebc <[^>]*> nop
-+0000bec0 <[^>]*> nop
-+0000bec4 <[^>]*> nop
-+0000bec8 <[^>]*> nop
-+0000becc <[^>]*> nop
-+0000bed0 <[^>]*> nop
-+0000bed4 <[^>]*> nop
-+0000bed8 <[^>]*> nop
-+0000bedc <[^>]*> nop
-+0000bee0 <[^>]*> nop
-+0000bee4 <[^>]*> nop
-+0000bee8 <[^>]*> nop
-+0000beec <[^>]*> nop
-+0000bef0 <[^>]*> nop
-+0000bef4 <[^>]*> nop
-+0000bef8 <[^>]*> nop
-+0000befc <[^>]*> nop
-+0000bf00 <[^>]*> nop
-+0000bf04 <[^>]*> nop
-+0000bf08 <[^>]*> nop
-+0000bf0c <[^>]*> nop
-+0000bf10 <[^>]*> nop
-+0000bf14 <[^>]*> nop
-+0000bf18 <[^>]*> nop
-+0000bf1c <[^>]*> nop
-+0000bf20 <[^>]*> nop
-+0000bf24 <[^>]*> nop
-+0000bf28 <[^>]*> nop
-+0000bf2c <[^>]*> nop
-+0000bf30 <[^>]*> nop
-+0000bf34 <[^>]*> nop
-+0000bf38 <[^>]*> nop
-+0000bf3c <[^>]*> nop
-+0000bf40 <[^>]*> nop
-+0000bf44 <[^>]*> nop
-+0000bf48 <[^>]*> nop
-+0000bf4c <[^>]*> nop
-+0000bf50 <[^>]*> nop
-+0000bf54 <[^>]*> nop
-+0000bf58 <[^>]*> nop
-+0000bf5c <[^>]*> nop
-+0000bf60 <[^>]*> nop
-+0000bf64 <[^>]*> nop
-+0000bf68 <[^>]*> nop
-+0000bf6c <[^>]*> nop
-+0000bf70 <[^>]*> nop
-+0000bf74 <[^>]*> nop
-+0000bf78 <[^>]*> nop
-+0000bf7c <[^>]*> nop
-+0000bf80 <[^>]*> nop
-+0000bf84 <[^>]*> nop
-+0000bf88 <[^>]*> nop
-+0000bf8c <[^>]*> nop
-+0000bf90 <[^>]*> nop
-+0000bf94 <[^>]*> nop
-+0000bf98 <[^>]*> nop
-+0000bf9c <[^>]*> nop
-+0000bfa0 <[^>]*> nop
-+0000bfa4 <[^>]*> nop
-+0000bfa8 <[^>]*> nop
-+0000bfac <[^>]*> nop
-+0000bfb0 <[^>]*> nop
-+0000bfb4 <[^>]*> nop
-+0000bfb8 <[^>]*> nop
-+0000bfbc <[^>]*> nop
-+0000bfc0 <[^>]*> nop
-+0000bfc4 <[^>]*> nop
-+0000bfc8 <[^>]*> nop
-+0000bfcc <[^>]*> nop
-+0000bfd0 <[^>]*> nop
-+0000bfd4 <[^>]*> nop
-+0000bfd8 <[^>]*> nop
-+0000bfdc <[^>]*> nop
-+0000bfe0 <[^>]*> nop
-+0000bfe4 <[^>]*> nop
-+0000bfe8 <[^>]*> nop
-+0000bfec <[^>]*> nop
-+0000bff0 <[^>]*> nop
-+0000bff4 <[^>]*> nop
-+0000bff8 <[^>]*> nop
-+0000bffc <[^>]*> nop
-+0000c000 <[^>]*> nop
-+0000c004 <[^>]*> nop
-+0000c008 <[^>]*> nop
-+0000c00c <[^>]*> nop
-+0000c010 <[^>]*> nop
-+0000c014 <[^>]*> nop
-+0000c018 <[^>]*> nop
-+0000c01c <[^>]*> nop
-+0000c020 <[^>]*> nop
-+0000c024 <[^>]*> nop
-+0000c028 <[^>]*> nop
-+0000c02c <[^>]*> nop
-+0000c030 <[^>]*> nop
-+0000c034 <[^>]*> nop
-+0000c038 <[^>]*> nop
-+0000c03c <[^>]*> nop
-+0000c040 <[^>]*> nop
-+0000c044 <[^>]*> nop
-+0000c048 <[^>]*> nop
-+0000c04c <[^>]*> nop
-+0000c050 <[^>]*> nop
-+0000c054 <[^>]*> nop
-+0000c058 <[^>]*> nop
-+0000c05c <[^>]*> nop
-+0000c060 <[^>]*> nop
-+0000c064 <[^>]*> nop
-+0000c068 <[^>]*> nop
-+0000c06c <[^>]*> nop
-+0000c070 <[^>]*> nop
-+0000c074 <[^>]*> nop
-+0000c078 <[^>]*> nop
-+0000c07c <[^>]*> nop
-+0000c080 <[^>]*> nop
-+0000c084 <[^>]*> nop
-+0000c088 <[^>]*> nop
-+0000c08c <[^>]*> nop
-+0000c090 <[^>]*> nop
-+0000c094 <[^>]*> nop
-+0000c098 <[^>]*> nop
-+0000c09c <[^>]*> nop
-+0000c0a0 <[^>]*> nop
-+0000c0a4 <[^>]*> nop
-+0000c0a8 <[^>]*> nop
-+0000c0ac <[^>]*> nop
-+0000c0b0 <[^>]*> nop
-+0000c0b4 <[^>]*> nop
-+0000c0b8 <[^>]*> nop
-+0000c0bc <[^>]*> nop
-+0000c0c0 <[^>]*> nop
-+0000c0c4 <[^>]*> nop
-+0000c0c8 <[^>]*> nop
-+0000c0cc <[^>]*> nop
-+0000c0d0 <[^>]*> nop
-+0000c0d4 <[^>]*> nop
-+0000c0d8 <[^>]*> nop
-+0000c0dc <[^>]*> nop
-+0000c0e0 <[^>]*> nop
-+0000c0e4 <[^>]*> nop
-+0000c0e8 <[^>]*> nop
-+0000c0ec <[^>]*> nop
-+0000c0f0 <[^>]*> nop
-+0000c0f4 <[^>]*> nop
-+0000c0f8 <[^>]*> nop
-+0000c0fc <[^>]*> nop
-+0000c100 <[^>]*> nop
-+0000c104 <[^>]*> nop
-+0000c108 <[^>]*> nop
-+0000c10c <[^>]*> nop
-+0000c110 <[^>]*> nop
-+0000c114 <[^>]*> nop
-+0000c118 <[^>]*> nop
-+0000c11c <[^>]*> nop
-+0000c120 <[^>]*> nop
-+0000c124 <[^>]*> nop
-+0000c128 <[^>]*> nop
-+0000c12c <[^>]*> nop
-+0000c130 <[^>]*> nop
-+0000c134 <[^>]*> nop
-+0000c138 <[^>]*> nop
-+0000c13c <[^>]*> nop
-+0000c140 <[^>]*> nop
-+0000c144 <[^>]*> nop
-+0000c148 <[^>]*> nop
-+0000c14c <[^>]*> nop
-+0000c150 <[^>]*> nop
-+0000c154 <[^>]*> nop
-+0000c158 <[^>]*> nop
-+0000c15c <[^>]*> nop
-+0000c160 <[^>]*> nop
-+0000c164 <[^>]*> nop
-+0000c168 <[^>]*> nop
-+0000c16c <[^>]*> nop
-+0000c170 <[^>]*> nop
-+0000c174 <[^>]*> nop
-+0000c178 <[^>]*> nop
-+0000c17c <[^>]*> nop
-+0000c180 <[^>]*> nop
-+0000c184 <[^>]*> nop
-+0000c188 <[^>]*> nop
-+0000c18c <[^>]*> nop
-+0000c190 <[^>]*> nop
-+0000c194 <[^>]*> nop
-+0000c198 <[^>]*> nop
-+0000c19c <[^>]*> nop
-+0000c1a0 <[^>]*> nop
-+0000c1a4 <[^>]*> nop
-+0000c1a8 <[^>]*> nop
-+0000c1ac <[^>]*> nop
-+0000c1b0 <[^>]*> nop
-+0000c1b4 <[^>]*> nop
-+0000c1b8 <[^>]*> nop
-+0000c1bc <[^>]*> nop
-+0000c1c0 <[^>]*> nop
-+0000c1c4 <[^>]*> nop
-+0000c1c8 <[^>]*> nop
-+0000c1cc <[^>]*> nop
-+0000c1d0 <[^>]*> nop
-+0000c1d4 <[^>]*> nop
-+0000c1d8 <[^>]*> nop
-+0000c1dc <[^>]*> nop
-+0000c1e0 <[^>]*> nop
-+0000c1e4 <[^>]*> nop
-+0000c1e8 <[^>]*> nop
-+0000c1ec <[^>]*> nop
-+0000c1f0 <[^>]*> nop
-+0000c1f4 <[^>]*> nop
-+0000c1f8 <[^>]*> nop
-+0000c1fc <[^>]*> nop
-+0000c200 <[^>]*> nop
-+0000c204 <[^>]*> nop
-+0000c208 <[^>]*> nop
-+0000c20c <[^>]*> nop
-+0000c210 <[^>]*> nop
-+0000c214 <[^>]*> nop
-+0000c218 <[^>]*> nop
-+0000c21c <[^>]*> nop
-+0000c220 <[^>]*> nop
-+0000c224 <[^>]*> nop
-+0000c228 <[^>]*> nop
-+0000c22c <[^>]*> nop
-+0000c230 <[^>]*> nop
-+0000c234 <[^>]*> nop
-+0000c238 <[^>]*> nop
-+0000c23c <[^>]*> nop
-+0000c240 <[^>]*> nop
-+0000c244 <[^>]*> nop
-+0000c248 <[^>]*> nop
-+0000c24c <[^>]*> nop
-+0000c250 <[^>]*> nop
-+0000c254 <[^>]*> nop
-+0000c258 <[^>]*> nop
-+0000c25c <[^>]*> nop
-+0000c260 <[^>]*> nop
-+0000c264 <[^>]*> nop
-+0000c268 <[^>]*> nop
-+0000c26c <[^>]*> nop
-+0000c270 <[^>]*> nop
-+0000c274 <[^>]*> nop
-+0000c278 <[^>]*> nop
-+0000c27c <[^>]*> nop
-+0000c280 <[^>]*> nop
-+0000c284 <[^>]*> nop
-+0000c288 <[^>]*> nop
-+0000c28c <[^>]*> nop
-+0000c290 <[^>]*> nop
-+0000c294 <[^>]*> nop
-+0000c298 <[^>]*> nop
-+0000c29c <[^>]*> nop
-+0000c2a0 <[^>]*> nop
-+0000c2a4 <[^>]*> nop
-+0000c2a8 <[^>]*> nop
-+0000c2ac <[^>]*> nop
-+0000c2b0 <[^>]*> nop
-+0000c2b4 <[^>]*> nop
-+0000c2b8 <[^>]*> nop
-+0000c2bc <[^>]*> nop
-+0000c2c0 <[^>]*> nop
-+0000c2c4 <[^>]*> nop
-+0000c2c8 <[^>]*> nop
-+0000c2cc <[^>]*> nop
-+0000c2d0 <[^>]*> nop
-+0000c2d4 <[^>]*> nop
-+0000c2d8 <[^>]*> nop
-+0000c2dc <[^>]*> nop
-+0000c2e0 <[^>]*> nop
-+0000c2e4 <[^>]*> nop
-+0000c2e8 <[^>]*> nop
-+0000c2ec <[^>]*> nop
-+0000c2f0 <[^>]*> nop
-+0000c2f4 <[^>]*> nop
-+0000c2f8 <[^>]*> nop
-+0000c2fc <[^>]*> nop
-+0000c300 <[^>]*> nop
-+0000c304 <[^>]*> nop
-+0000c308 <[^>]*> nop
-+0000c30c <[^>]*> nop
-+0000c310 <[^>]*> nop
-+0000c314 <[^>]*> nop
-+0000c318 <[^>]*> nop
-+0000c31c <[^>]*> nop
-+0000c320 <[^>]*> nop
-+0000c324 <[^>]*> nop
-+0000c328 <[^>]*> nop
-+0000c32c <[^>]*> nop
-+0000c330 <[^>]*> nop
-+0000c334 <[^>]*> nop
-+0000c338 <[^>]*> nop
-+0000c33c <[^>]*> nop
-+0000c340 <[^>]*> nop
-+0000c344 <[^>]*> nop
-+0000c348 <[^>]*> nop
-+0000c34c <[^>]*> nop
-+0000c350 <[^>]*> nop
-+0000c354 <[^>]*> nop
-+0000c358 <[^>]*> nop
-+0000c35c <[^>]*> nop
-+0000c360 <[^>]*> nop
-+0000c364 <[^>]*> nop
-+0000c368 <[^>]*> nop
-+0000c36c <[^>]*> nop
-+0000c370 <[^>]*> nop
-+0000c374 <[^>]*> nop
-+0000c378 <[^>]*> nop
-+0000c37c <[^>]*> nop
-+0000c380 <[^>]*> nop
-+0000c384 <[^>]*> nop
-+0000c388 <[^>]*> nop
-+0000c38c <[^>]*> nop
-+0000c390 <[^>]*> nop
-+0000c394 <[^>]*> nop
-+0000c398 <[^>]*> nop
-+0000c39c <[^>]*> nop
-+0000c3a0 <[^>]*> nop
-+0000c3a4 <[^>]*> nop
-+0000c3a8 <[^>]*> nop
-+0000c3ac <[^>]*> nop
-+0000c3b0 <[^>]*> nop
-+0000c3b4 <[^>]*> nop
-+0000c3b8 <[^>]*> nop
-+0000c3bc <[^>]*> nop
-+0000c3c0 <[^>]*> nop
-+0000c3c4 <[^>]*> nop
-+0000c3c8 <[^>]*> nop
-+0000c3cc <[^>]*> nop
-+0000c3d0 <[^>]*> nop
-+0000c3d4 <[^>]*> nop
-+0000c3d8 <[^>]*> nop
-+0000c3dc <[^>]*> nop
-+0000c3e0 <[^>]*> nop
-+0000c3e4 <[^>]*> nop
-+0000c3e8 <[^>]*> nop
-+0000c3ec <[^>]*> nop
-+0000c3f0 <[^>]*> nop
-+0000c3f4 <[^>]*> nop
-+0000c3f8 <[^>]*> nop
-+0000c3fc <[^>]*> nop
-+0000c400 <[^>]*> nop
-+0000c404 <[^>]*> nop
-+0000c408 <[^>]*> nop
-+0000c40c <[^>]*> nop
-+0000c410 <[^>]*> nop
-+0000c414 <[^>]*> nop
-+0000c418 <[^>]*> nop
-+0000c41c <[^>]*> nop
-+0000c420 <[^>]*> nop
-+0000c424 <[^>]*> nop
-+0000c428 <[^>]*> nop
-+0000c42c <[^>]*> nop
-+0000c430 <[^>]*> nop
-+0000c434 <[^>]*> nop
-+0000c438 <[^>]*> nop
-+0000c43c <[^>]*> nop
-+0000c440 <[^>]*> nop
-+0000c444 <[^>]*> nop
-+0000c448 <[^>]*> nop
-+0000c44c <[^>]*> nop
-+0000c450 <[^>]*> nop
-+0000c454 <[^>]*> nop
-+0000c458 <[^>]*> nop
-+0000c45c <[^>]*> nop
-+0000c460 <[^>]*> nop
-+0000c464 <[^>]*> nop
-+0000c468 <[^>]*> nop
-+0000c46c <[^>]*> nop
-+0000c470 <[^>]*> nop
-+0000c474 <[^>]*> nop
-+0000c478 <[^>]*> nop
-+0000c47c <[^>]*> nop
-+0000c480 <[^>]*> nop
-+0000c484 <[^>]*> nop
-+0000c488 <[^>]*> nop
-+0000c48c <[^>]*> nop
-+0000c490 <[^>]*> nop
-+0000c494 <[^>]*> nop
-+0000c498 <[^>]*> nop
-+0000c49c <[^>]*> nop
-+0000c4a0 <[^>]*> nop
-+0000c4a4 <[^>]*> nop
-+0000c4a8 <[^>]*> nop
-+0000c4ac <[^>]*> nop
-+0000c4b0 <[^>]*> nop
-+0000c4b4 <[^>]*> nop
-+0000c4b8 <[^>]*> nop
-+0000c4bc <[^>]*> nop
-+0000c4c0 <[^>]*> nop
-+0000c4c4 <[^>]*> nop
-+0000c4c8 <[^>]*> nop
-+0000c4cc <[^>]*> nop
-+0000c4d0 <[^>]*> nop
-+0000c4d4 <[^>]*> nop
-+0000c4d8 <[^>]*> nop
-+0000c4dc <[^>]*> nop
-+0000c4e0 <[^>]*> nop
-+0000c4e4 <[^>]*> nop
-+0000c4e8 <[^>]*> nop
-+0000c4ec <[^>]*> nop
-+0000c4f0 <[^>]*> nop
-+0000c4f4 <[^>]*> nop
-+0000c4f8 <[^>]*> nop
-+0000c4fc <[^>]*> nop
-+0000c500 <[^>]*> nop
-+0000c504 <[^>]*> nop
-+0000c508 <[^>]*> nop
-+0000c50c <[^>]*> nop
-+0000c510 <[^>]*> nop
-+0000c514 <[^>]*> nop
-+0000c518 <[^>]*> nop
-+0000c51c <[^>]*> nop
-+0000c520 <[^>]*> nop
-+0000c524 <[^>]*> nop
-+0000c528 <[^>]*> nop
-+0000c52c <[^>]*> nop
-+0000c530 <[^>]*> nop
-+0000c534 <[^>]*> nop
-+0000c538 <[^>]*> nop
-+0000c53c <[^>]*> nop
-+0000c540 <[^>]*> nop
-+0000c544 <[^>]*> nop
-+0000c548 <[^>]*> nop
-+0000c54c <[^>]*> nop
-+0000c550 <[^>]*> nop
-+0000c554 <[^>]*> nop
-+0000c558 <[^>]*> nop
-+0000c55c <[^>]*> nop
-+0000c560 <[^>]*> nop
-+0000c564 <[^>]*> nop
-+0000c568 <[^>]*> nop
-+0000c56c <[^>]*> nop
-+0000c570 <[^>]*> nop
-+0000c574 <[^>]*> nop
-+0000c578 <[^>]*> nop
-+0000c57c <[^>]*> nop
-+0000c580 <[^>]*> nop
-+0000c584 <[^>]*> nop
-+0000c588 <[^>]*> nop
-+0000c58c <[^>]*> nop
-+0000c590 <[^>]*> nop
-+0000c594 <[^>]*> nop
-+0000c598 <[^>]*> nop
-+0000c59c <[^>]*> nop
-+0000c5a0 <[^>]*> nop
-+0000c5a4 <[^>]*> nop
-+0000c5a8 <[^>]*> nop
-+0000c5ac <[^>]*> nop
-+0000c5b0 <[^>]*> nop
-+0000c5b4 <[^>]*> nop
-+0000c5b8 <[^>]*> nop
-+0000c5bc <[^>]*> nop
-+0000c5c0 <[^>]*> nop
-+0000c5c4 <[^>]*> nop
-+0000c5c8 <[^>]*> nop
-+0000c5cc <[^>]*> nop
-+0000c5d0 <[^>]*> nop
-+0000c5d4 <[^>]*> nop
-+0000c5d8 <[^>]*> nop
-+0000c5dc <[^>]*> nop
-+0000c5e0 <[^>]*> nop
-+0000c5e4 <[^>]*> nop
-+0000c5e8 <[^>]*> nop
-+0000c5ec <[^>]*> nop
-+0000c5f0 <[^>]*> nop
-+0000c5f4 <[^>]*> nop
-+0000c5f8 <[^>]*> nop
-+0000c5fc <[^>]*> nop
-+0000c600 <[^>]*> nop
-+0000c604 <[^>]*> nop
-+0000c608 <[^>]*> nop
-+0000c60c <[^>]*> nop
-+0000c610 <[^>]*> nop
-+0000c614 <[^>]*> nop
-+0000c618 <[^>]*> nop
-+0000c61c <[^>]*> nop
-+0000c620 <[^>]*> nop
-+0000c624 <[^>]*> nop
-+0000c628 <[^>]*> nop
-+0000c62c <[^>]*> nop
-+0000c630 <[^>]*> nop
-+0000c634 <[^>]*> nop
-+0000c638 <[^>]*> nop
-+0000c63c <[^>]*> nop
-+0000c640 <[^>]*> nop
-+0000c644 <[^>]*> nop
-+0000c648 <[^>]*> nop
-+0000c64c <[^>]*> nop
-+0000c650 <[^>]*> nop
-+0000c654 <[^>]*> nop
-+0000c658 <[^>]*> nop
-+0000c65c <[^>]*> nop
-+0000c660 <[^>]*> nop
-+0000c664 <[^>]*> nop
-+0000c668 <[^>]*> nop
-+0000c66c <[^>]*> nop
-+0000c670 <[^>]*> nop
-+0000c674 <[^>]*> nop
-+0000c678 <[^>]*> nop
-+0000c67c <[^>]*> nop
-+0000c680 <[^>]*> nop
-+0000c684 <[^>]*> nop
-+0000c688 <[^>]*> nop
-+0000c68c <[^>]*> nop
-+0000c690 <[^>]*> nop
-+0000c694 <[^>]*> nop
-+0000c698 <[^>]*> nop
-+0000c69c <[^>]*> nop
-+0000c6a0 <[^>]*> nop
-+0000c6a4 <[^>]*> nop
-+0000c6a8 <[^>]*> nop
-+0000c6ac <[^>]*> nop
-+0000c6b0 <[^>]*> nop
-+0000c6b4 <[^>]*> nop
-+0000c6b8 <[^>]*> nop
-+0000c6bc <[^>]*> nop
-+0000c6c0 <[^>]*> nop
-+0000c6c4 <[^>]*> nop
-+0000c6c8 <[^>]*> nop
-+0000c6cc <[^>]*> nop
-+0000c6d0 <[^>]*> nop
-+0000c6d4 <[^>]*> nop
-+0000c6d8 <[^>]*> nop
-+0000c6dc <[^>]*> nop
-+0000c6e0 <[^>]*> nop
-+0000c6e4 <[^>]*> nop
-+0000c6e8 <[^>]*> nop
-+0000c6ec <[^>]*> nop
-+0000c6f0 <[^>]*> nop
-+0000c6f4 <[^>]*> nop
-+0000c6f8 <[^>]*> nop
-+0000c6fc <[^>]*> nop
-+0000c700 <[^>]*> nop
-+0000c704 <[^>]*> nop
-+0000c708 <[^>]*> nop
-+0000c70c <[^>]*> nop
-+0000c710 <[^>]*> nop
-+0000c714 <[^>]*> nop
-+0000c718 <[^>]*> nop
-+0000c71c <[^>]*> nop
-+0000c720 <[^>]*> nop
-+0000c724 <[^>]*> nop
-+0000c728 <[^>]*> nop
-+0000c72c <[^>]*> nop
-+0000c730 <[^>]*> nop
-+0000c734 <[^>]*> nop
-+0000c738 <[^>]*> nop
-+0000c73c <[^>]*> nop
-+0000c740 <[^>]*> nop
-+0000c744 <[^>]*> nop
-+0000c748 <[^>]*> nop
-+0000c74c <[^>]*> nop
-+0000c750 <[^>]*> nop
-+0000c754 <[^>]*> nop
-+0000c758 <[^>]*> nop
-+0000c75c <[^>]*> nop
-+0000c760 <[^>]*> nop
-+0000c764 <[^>]*> nop
-+0000c768 <[^>]*> nop
-+0000c76c <[^>]*> nop
-+0000c770 <[^>]*> nop
-+0000c774 <[^>]*> nop
-+0000c778 <[^>]*> nop
-+0000c77c <[^>]*> nop
-+0000c780 <[^>]*> nop
-+0000c784 <[^>]*> nop
-+0000c788 <[^>]*> nop
-+0000c78c <[^>]*> nop
-+0000c790 <[^>]*> nop
-+0000c794 <[^>]*> nop
-+0000c798 <[^>]*> nop
-+0000c79c <[^>]*> nop
-+0000c7a0 <[^>]*> nop
-+0000c7a4 <[^>]*> nop
-+0000c7a8 <[^>]*> nop
-+0000c7ac <[^>]*> nop
-+0000c7b0 <[^>]*> nop
-+0000c7b4 <[^>]*> nop
-+0000c7b8 <[^>]*> nop
-+0000c7bc <[^>]*> nop
-+0000c7c0 <[^>]*> nop
-+0000c7c4 <[^>]*> nop
-+0000c7c8 <[^>]*> nop
-+0000c7cc <[^>]*> nop
-+0000c7d0 <[^>]*> nop
-+0000c7d4 <[^>]*> nop
-+0000c7d8 <[^>]*> nop
-+0000c7dc <[^>]*> nop
-+0000c7e0 <[^>]*> nop
-+0000c7e4 <[^>]*> nop
-+0000c7e8 <[^>]*> nop
-+0000c7ec <[^>]*> nop
-+0000c7f0 <[^>]*> nop
-+0000c7f4 <[^>]*> nop
-+0000c7f8 <[^>]*> nop
-+0000c7fc <[^>]*> nop
-+0000c800 <[^>]*> nop
-+0000c804 <[^>]*> nop
-+0000c808 <[^>]*> nop
-+0000c80c <[^>]*> nop
-+0000c810 <[^>]*> nop
-+0000c814 <[^>]*> nop
-+0000c818 <[^>]*> nop
-+0000c81c <[^>]*> nop
-+0000c820 <[^>]*> nop
-+0000c824 <[^>]*> nop
-+0000c828 <[^>]*> nop
-+0000c82c <[^>]*> nop
-+0000c830 <[^>]*> nop
-+0000c834 <[^>]*> nop
-+0000c838 <[^>]*> nop
-+0000c83c <[^>]*> nop
-+0000c840 <[^>]*> nop
-+0000c844 <[^>]*> nop
-+0000c848 <[^>]*> nop
-+0000c84c <[^>]*> nop
-+0000c850 <[^>]*> nop
-+0000c854 <[^>]*> nop
-+0000c858 <[^>]*> nop
-+0000c85c <[^>]*> nop
-+0000c860 <[^>]*> nop
-+0000c864 <[^>]*> nop
-+0000c868 <[^>]*> nop
-+0000c86c <[^>]*> nop
-+0000c870 <[^>]*> nop
-+0000c874 <[^>]*> nop
-+0000c878 <[^>]*> nop
-+0000c87c <[^>]*> nop
-+0000c880 <[^>]*> nop
-+0000c884 <[^>]*> nop
-+0000c888 <[^>]*> nop
-+0000c88c <[^>]*> nop
-+0000c890 <[^>]*> nop
-+0000c894 <[^>]*> nop
-+0000c898 <[^>]*> nop
-+0000c89c <[^>]*> nop
-+0000c8a0 <[^>]*> nop
-+0000c8a4 <[^>]*> nop
-+0000c8a8 <[^>]*> nop
-+0000c8ac <[^>]*> nop
-+0000c8b0 <[^>]*> nop
-+0000c8b4 <[^>]*> nop
-+0000c8b8 <[^>]*> nop
-+0000c8bc <[^>]*> nop
-+0000c8c0 <[^>]*> nop
-+0000c8c4 <[^>]*> nop
-+0000c8c8 <[^>]*> nop
-+0000c8cc <[^>]*> nop
-+0000c8d0 <[^>]*> nop
-+0000c8d4 <[^>]*> nop
-+0000c8d8 <[^>]*> nop
-+0000c8dc <[^>]*> nop
-+0000c8e0 <[^>]*> nop
-+0000c8e4 <[^>]*> nop
-+0000c8e8 <[^>]*> nop
-+0000c8ec <[^>]*> nop
-+0000c8f0 <[^>]*> nop
-+0000c8f4 <[^>]*> nop
-+0000c8f8 <[^>]*> nop
-+0000c8fc <[^>]*> nop
-+0000c900 <[^>]*> nop
-+0000c904 <[^>]*> nop
-+0000c908 <[^>]*> nop
-+0000c90c <[^>]*> nop
-+0000c910 <[^>]*> nop
-+0000c914 <[^>]*> nop
-+0000c918 <[^>]*> nop
-+0000c91c <[^>]*> nop
-+0000c920 <[^>]*> nop
-+0000c924 <[^>]*> nop
-+0000c928 <[^>]*> nop
-+0000c92c <[^>]*> nop
-+0000c930 <[^>]*> nop
-+0000c934 <[^>]*> nop
-+0000c938 <[^>]*> nop
-+0000c93c <[^>]*> nop
-+0000c940 <[^>]*> nop
-+0000c944 <[^>]*> nop
-+0000c948 <[^>]*> nop
-+0000c94c <[^>]*> nop
-+0000c950 <[^>]*> nop
-+0000c954 <[^>]*> nop
-+0000c958 <[^>]*> nop
-+0000c95c <[^>]*> nop
-+0000c960 <[^>]*> nop
-+0000c964 <[^>]*> nop
-+0000c968 <[^>]*> nop
-+0000c96c <[^>]*> nop
-+0000c970 <[^>]*> nop
-+0000c974 <[^>]*> nop
-+0000c978 <[^>]*> nop
-+0000c97c <[^>]*> nop
-+0000c980 <[^>]*> nop
-+0000c984 <[^>]*> nop
-+0000c988 <[^>]*> nop
-+0000c98c <[^>]*> nop
-+0000c990 <[^>]*> nop
-+0000c994 <[^>]*> nop
-+0000c998 <[^>]*> nop
-+0000c99c <[^>]*> nop
-+0000c9a0 <[^>]*> nop
-+0000c9a4 <[^>]*> nop
-+0000c9a8 <[^>]*> nop
-+0000c9ac <[^>]*> nop
-+0000c9b0 <[^>]*> nop
-+0000c9b4 <[^>]*> nop
-+0000c9b8 <[^>]*> nop
-+0000c9bc <[^>]*> nop
-+0000c9c0 <[^>]*> nop
-+0000c9c4 <[^>]*> nop
-+0000c9c8 <[^>]*> nop
-+0000c9cc <[^>]*> nop
-+0000c9d0 <[^>]*> nop
-+0000c9d4 <[^>]*> nop
-+0000c9d8 <[^>]*> nop
-+0000c9dc <[^>]*> nop
-+0000c9e0 <[^>]*> nop
-+0000c9e4 <[^>]*> nop
-+0000c9e8 <[^>]*> nop
-+0000c9ec <[^>]*> nop
-+0000c9f0 <[^>]*> nop
-+0000c9f4 <[^>]*> nop
-+0000c9f8 <[^>]*> nop
-+0000c9fc <[^>]*> nop
-+0000ca00 <[^>]*> nop
-+0000ca04 <[^>]*> nop
-+0000ca08 <[^>]*> nop
-+0000ca0c <[^>]*> nop
-+0000ca10 <[^>]*> nop
-+0000ca14 <[^>]*> nop
-+0000ca18 <[^>]*> nop
-+0000ca1c <[^>]*> nop
-+0000ca20 <[^>]*> nop
-+0000ca24 <[^>]*> nop
-+0000ca28 <[^>]*> nop
-+0000ca2c <[^>]*> nop
-+0000ca30 <[^>]*> nop
-+0000ca34 <[^>]*> nop
-+0000ca38 <[^>]*> nop
-+0000ca3c <[^>]*> nop
-+0000ca40 <[^>]*> nop
-+0000ca44 <[^>]*> nop
-+0000ca48 <[^>]*> nop
-+0000ca4c <[^>]*> nop
-+0000ca50 <[^>]*> nop
-+0000ca54 <[^>]*> nop
-+0000ca58 <[^>]*> nop
-+0000ca5c <[^>]*> nop
-+0000ca60 <[^>]*> nop
-+0000ca64 <[^>]*> nop
-+0000ca68 <[^>]*> nop
-+0000ca6c <[^>]*> nop
-+0000ca70 <[^>]*> nop
-+0000ca74 <[^>]*> nop
-+0000ca78 <[^>]*> nop
-+0000ca7c <[^>]*> nop
-+0000ca80 <[^>]*> nop
-+0000ca84 <[^>]*> nop
-+0000ca88 <[^>]*> nop
-+0000ca8c <[^>]*> nop
-+0000ca90 <[^>]*> nop
-+0000ca94 <[^>]*> nop
-+0000ca98 <[^>]*> nop
-+0000ca9c <[^>]*> nop
-+0000caa0 <[^>]*> nop
-+0000caa4 <[^>]*> nop
-+0000caa8 <[^>]*> nop
-+0000caac <[^>]*> nop
-+0000cab0 <[^>]*> nop
-+0000cab4 <[^>]*> nop
-+0000cab8 <[^>]*> nop
-+0000cabc <[^>]*> nop
-+0000cac0 <[^>]*> nop
-+0000cac4 <[^>]*> nop
-+0000cac8 <[^>]*> nop
-+0000cacc <[^>]*> nop
-+0000cad0 <[^>]*> nop
-+0000cad4 <[^>]*> nop
-+0000cad8 <[^>]*> nop
-+0000cadc <[^>]*> nop
-+0000cae0 <[^>]*> nop
-+0000cae4 <[^>]*> nop
-+0000cae8 <[^>]*> nop
-+0000caec <[^>]*> nop
-+0000caf0 <[^>]*> nop
-+0000caf4 <[^>]*> nop
-+0000caf8 <[^>]*> nop
-+0000cafc <[^>]*> nop
-+0000cb00 <[^>]*> nop
-+0000cb04 <[^>]*> nop
-+0000cb08 <[^>]*> nop
-+0000cb0c <[^>]*> nop
-+0000cb10 <[^>]*> nop
-+0000cb14 <[^>]*> nop
-+0000cb18 <[^>]*> nop
-+0000cb1c <[^>]*> nop
-+0000cb20 <[^>]*> nop
-+0000cb24 <[^>]*> nop
-+0000cb28 <[^>]*> nop
-+0000cb2c <[^>]*> nop
-+0000cb30 <[^>]*> nop
-+0000cb34 <[^>]*> nop
-+0000cb38 <[^>]*> nop
-+0000cb3c <[^>]*> nop
-+0000cb40 <[^>]*> nop
-+0000cb44 <[^>]*> nop
-+0000cb48 <[^>]*> nop
-+0000cb4c <[^>]*> nop
-+0000cb50 <[^>]*> nop
-+0000cb54 <[^>]*> nop
-+0000cb58 <[^>]*> nop
-+0000cb5c <[^>]*> nop
-+0000cb60 <[^>]*> nop
-+0000cb64 <[^>]*> nop
-+0000cb68 <[^>]*> nop
-+0000cb6c <[^>]*> nop
-+0000cb70 <[^>]*> nop
-+0000cb74 <[^>]*> nop
-+0000cb78 <[^>]*> nop
-+0000cb7c <[^>]*> nop
-+0000cb80 <[^>]*> nop
-+0000cb84 <[^>]*> nop
-+0000cb88 <[^>]*> nop
-+0000cb8c <[^>]*> nop
-+0000cb90 <[^>]*> nop
-+0000cb94 <[^>]*> nop
-+0000cb98 <[^>]*> nop
-+0000cb9c <[^>]*> nop
-+0000cba0 <[^>]*> nop
-+0000cba4 <[^>]*> nop
-+0000cba8 <[^>]*> nop
-+0000cbac <[^>]*> nop
-+0000cbb0 <[^>]*> nop
-+0000cbb4 <[^>]*> nop
-+0000cbb8 <[^>]*> nop
-+0000cbbc <[^>]*> nop
-+0000cbc0 <[^>]*> nop
-+0000cbc4 <[^>]*> nop
-+0000cbc8 <[^>]*> nop
-+0000cbcc <[^>]*> nop
-+0000cbd0 <[^>]*> nop
-+0000cbd4 <[^>]*> nop
-+0000cbd8 <[^>]*> nop
-+0000cbdc <[^>]*> nop
-+0000cbe0 <[^>]*> nop
-+0000cbe4 <[^>]*> nop
-+0000cbe8 <[^>]*> nop
-+0000cbec <[^>]*> nop
-+0000cbf0 <[^>]*> nop
-+0000cbf4 <[^>]*> nop
-+0000cbf8 <[^>]*> nop
-+0000cbfc <[^>]*> nop
-+0000cc00 <[^>]*> nop
-+0000cc04 <[^>]*> nop
-+0000cc08 <[^>]*> nop
-+0000cc0c <[^>]*> nop
-+0000cc10 <[^>]*> nop
-+0000cc14 <[^>]*> nop
-+0000cc18 <[^>]*> nop
-+0000cc1c <[^>]*> nop
-+0000cc20 <[^>]*> nop
-+0000cc24 <[^>]*> nop
-+0000cc28 <[^>]*> nop
-+0000cc2c <[^>]*> nop
-+0000cc30 <[^>]*> nop
-+0000cc34 <[^>]*> nop
-+0000cc38 <[^>]*> nop
-+0000cc3c <[^>]*> nop
-+0000cc40 <[^>]*> nop
-+0000cc44 <[^>]*> nop
-+0000cc48 <[^>]*> nop
-+0000cc4c <[^>]*> nop
-+0000cc50 <[^>]*> nop
-+0000cc54 <[^>]*> nop
-+0000cc58 <[^>]*> nop
-+0000cc5c <[^>]*> nop
-+0000cc60 <[^>]*> nop
-+0000cc64 <[^>]*> nop
-+0000cc68 <[^>]*> nop
-+0000cc6c <[^>]*> nop
-+0000cc70 <[^>]*> nop
-+0000cc74 <[^>]*> nop
-+0000cc78 <[^>]*> nop
-+0000cc7c <[^>]*> nop
-+0000cc80 <[^>]*> nop
-+0000cc84 <[^>]*> nop
-+0000cc88 <[^>]*> nop
-+0000cc8c <[^>]*> nop
-+0000cc90 <[^>]*> nop
-+0000cc94 <[^>]*> nop
-+0000cc98 <[^>]*> nop
-+0000cc9c <[^>]*> nop
-+0000cca0 <[^>]*> nop
-+0000cca4 <[^>]*> nop
-+0000cca8 <[^>]*> nop
-+0000ccac <[^>]*> nop
-+0000ccb0 <[^>]*> nop
-+0000ccb4 <[^>]*> nop
-+0000ccb8 <[^>]*> nop
-+0000ccbc <[^>]*> nop
-+0000ccc0 <[^>]*> nop
-+0000ccc4 <[^>]*> nop
-+0000ccc8 <[^>]*> nop
-+0000cccc <[^>]*> nop
-+0000ccd0 <[^>]*> nop
-+0000ccd4 <[^>]*> nop
-+0000ccd8 <[^>]*> nop
-+0000ccdc <[^>]*> nop
-+0000cce0 <[^>]*> nop
-+0000cce4 <[^>]*> nop
-+0000cce8 <[^>]*> nop
-+0000ccec <[^>]*> nop
-+0000ccf0 <[^>]*> nop
-+0000ccf4 <[^>]*> nop
-+0000ccf8 <[^>]*> nop
-+0000ccfc <[^>]*> nop
-+0000cd00 <[^>]*> nop
-+0000cd04 <[^>]*> nop
-+0000cd08 <[^>]*> nop
-+0000cd0c <[^>]*> nop
-+0000cd10 <[^>]*> nop
-+0000cd14 <[^>]*> nop
-+0000cd18 <[^>]*> nop
-+0000cd1c <[^>]*> nop
-+0000cd20 <[^>]*> nop
-+0000cd24 <[^>]*> nop
-+0000cd28 <[^>]*> nop
-+0000cd2c <[^>]*> nop
-+0000cd30 <[^>]*> nop
-+0000cd34 <[^>]*> nop
-+0000cd38 <[^>]*> nop
-+0000cd3c <[^>]*> nop
-+0000cd40 <[^>]*> nop
-+0000cd44 <[^>]*> nop
-+0000cd48 <[^>]*> nop
-+0000cd4c <[^>]*> nop
-+0000cd50 <[^>]*> nop
-+0000cd54 <[^>]*> nop
-+0000cd58 <[^>]*> nop
-+0000cd5c <[^>]*> nop
-+0000cd60 <[^>]*> nop
-+0000cd64 <[^>]*> nop
-+0000cd68 <[^>]*> nop
-+0000cd6c <[^>]*> nop
-+0000cd70 <[^>]*> nop
-+0000cd74 <[^>]*> nop
-+0000cd78 <[^>]*> nop
-+0000cd7c <[^>]*> nop
-+0000cd80 <[^>]*> nop
-+0000cd84 <[^>]*> nop
-+0000cd88 <[^>]*> nop
-+0000cd8c <[^>]*> nop
-+0000cd90 <[^>]*> nop
-+0000cd94 <[^>]*> nop
-+0000cd98 <[^>]*> nop
-+0000cd9c <[^>]*> nop
-+0000cda0 <[^>]*> nop
-+0000cda4 <[^>]*> nop
-+0000cda8 <[^>]*> nop
-+0000cdac <[^>]*> nop
-+0000cdb0 <[^>]*> nop
-+0000cdb4 <[^>]*> nop
-+0000cdb8 <[^>]*> nop
-+0000cdbc <[^>]*> nop
-+0000cdc0 <[^>]*> nop
-+0000cdc4 <[^>]*> nop
-+0000cdc8 <[^>]*> nop
-+0000cdcc <[^>]*> nop
-+0000cdd0 <[^>]*> nop
-+0000cdd4 <[^>]*> nop
-+0000cdd8 <[^>]*> nop
-+0000cddc <[^>]*> nop
-+0000cde0 <[^>]*> nop
-+0000cde4 <[^>]*> nop
-+0000cde8 <[^>]*> nop
-+0000cdec <[^>]*> nop
-+0000cdf0 <[^>]*> nop
-+0000cdf4 <[^>]*> nop
-+0000cdf8 <[^>]*> nop
-+0000cdfc <[^>]*> nop
-+0000ce00 <[^>]*> nop
-+0000ce04 <[^>]*> nop
-+0000ce08 <[^>]*> nop
-+0000ce0c <[^>]*> nop
-+0000ce10 <[^>]*> nop
-+0000ce14 <[^>]*> nop
-+0000ce18 <[^>]*> nop
-+0000ce1c <[^>]*> nop
-+0000ce20 <[^>]*> nop
-+0000ce24 <[^>]*> nop
-+0000ce28 <[^>]*> nop
-+0000ce2c <[^>]*> nop
-+0000ce30 <[^>]*> nop
-+0000ce34 <[^>]*> nop
-+0000ce38 <[^>]*> nop
-+0000ce3c <[^>]*> nop
-+0000ce40 <[^>]*> nop
-+0000ce44 <[^>]*> nop
-+0000ce48 <[^>]*> nop
-+0000ce4c <[^>]*> nop
-+0000ce50 <[^>]*> nop
-+0000ce54 <[^>]*> nop
-+0000ce58 <[^>]*> nop
-+0000ce5c <[^>]*> nop
-+0000ce60 <[^>]*> nop
-+0000ce64 <[^>]*> nop
-+0000ce68 <[^>]*> nop
-+0000ce6c <[^>]*> nop
-+0000ce70 <[^>]*> nop
-+0000ce74 <[^>]*> nop
-+0000ce78 <[^>]*> nop
-+0000ce7c <[^>]*> nop
-+0000ce80 <[^>]*> nop
-+0000ce84 <[^>]*> nop
-+0000ce88 <[^>]*> nop
-+0000ce8c <[^>]*> nop
-+0000ce90 <[^>]*> nop
-+0000ce94 <[^>]*> nop
-+0000ce98 <[^>]*> nop
-+0000ce9c <[^>]*> nop
-+0000cea0 <[^>]*> nop
-+0000cea4 <[^>]*> nop
-+0000cea8 <[^>]*> nop
-+0000ceac <[^>]*> nop
-+0000ceb0 <[^>]*> nop
-+0000ceb4 <[^>]*> nop
-+0000ceb8 <[^>]*> nop
-+0000cebc <[^>]*> nop
-+0000cec0 <[^>]*> nop
-+0000cec4 <[^>]*> nop
-+0000cec8 <[^>]*> nop
-+0000cecc <[^>]*> nop
-+0000ced0 <[^>]*> nop
-+0000ced4 <[^>]*> nop
-+0000ced8 <[^>]*> nop
-+0000cedc <[^>]*> nop
-+0000cee0 <[^>]*> nop
-+0000cee4 <[^>]*> nop
-+0000cee8 <[^>]*> nop
-+0000ceec <[^>]*> nop
-+0000cef0 <[^>]*> nop
-+0000cef4 <[^>]*> nop
-+0000cef8 <[^>]*> nop
-+0000cefc <[^>]*> nop
-+0000cf00 <[^>]*> nop
-+0000cf04 <[^>]*> nop
-+0000cf08 <[^>]*> nop
-+0000cf0c <[^>]*> nop
-+0000cf10 <[^>]*> nop
-+0000cf14 <[^>]*> nop
-+0000cf18 <[^>]*> nop
-+0000cf1c <[^>]*> nop
-+0000cf20 <[^>]*> nop
-+0000cf24 <[^>]*> nop
-+0000cf28 <[^>]*> nop
-+0000cf2c <[^>]*> nop
-+0000cf30 <[^>]*> nop
-+0000cf34 <[^>]*> nop
-+0000cf38 <[^>]*> nop
-+0000cf3c <[^>]*> nop
-+0000cf40 <[^>]*> nop
-+0000cf44 <[^>]*> nop
-+0000cf48 <[^>]*> nop
-+0000cf4c <[^>]*> nop
-+0000cf50 <[^>]*> nop
-+0000cf54 <[^>]*> nop
-+0000cf58 <[^>]*> nop
-+0000cf5c <[^>]*> nop
-+0000cf60 <[^>]*> nop
-+0000cf64 <[^>]*> nop
-+0000cf68 <[^>]*> nop
-+0000cf6c <[^>]*> nop
-+0000cf70 <[^>]*> nop
-+0000cf74 <[^>]*> nop
-+0000cf78 <[^>]*> nop
-+0000cf7c <[^>]*> nop
-+0000cf80 <[^>]*> nop
-+0000cf84 <[^>]*> nop
-+0000cf88 <[^>]*> nop
-+0000cf8c <[^>]*> nop
-+0000cf90 <[^>]*> nop
-+0000cf94 <[^>]*> nop
-+0000cf98 <[^>]*> nop
-+0000cf9c <[^>]*> nop
-+0000cfa0 <[^>]*> nop
-+0000cfa4 <[^>]*> nop
-+0000cfa8 <[^>]*> nop
-+0000cfac <[^>]*> nop
-+0000cfb0 <[^>]*> nop
-+0000cfb4 <[^>]*> nop
-+0000cfb8 <[^>]*> nop
-+0000cfbc <[^>]*> nop
-+0000cfc0 <[^>]*> nop
-+0000cfc4 <[^>]*> nop
-+0000cfc8 <[^>]*> nop
-+0000cfcc <[^>]*> nop
-+0000cfd0 <[^>]*> nop
-+0000cfd4 <[^>]*> nop
-+0000cfd8 <[^>]*> nop
-+0000cfdc <[^>]*> nop
-+0000cfe0 <[^>]*> nop
-+0000cfe4 <[^>]*> nop
-+0000cfe8 <[^>]*> nop
-+0000cfec <[^>]*> nop
-+0000cff0 <[^>]*> nop
-+0000cff4 <[^>]*> nop
-+0000cff8 <[^>]*> nop
-+0000cffc <[^>]*> nop
-+0000d000 <[^>]*> nop
-+0000d004 <[^>]*> nop
-+0000d008 <[^>]*> nop
-+0000d00c <[^>]*> nop
-+0000d010 <[^>]*> nop
-+0000d014 <[^>]*> nop
-+0000d018 <[^>]*> nop
-+0000d01c <[^>]*> nop
-+0000d020 <[^>]*> nop
-+0000d024 <[^>]*> nop
-+0000d028 <[^>]*> nop
-+0000d02c <[^>]*> nop
-+0000d030 <[^>]*> nop
-+0000d034 <[^>]*> nop
-+0000d038 <[^>]*> nop
-+0000d03c <[^>]*> nop
-+0000d040 <[^>]*> nop
-+0000d044 <[^>]*> nop
-+0000d048 <[^>]*> nop
-+0000d04c <[^>]*> nop
-+0000d050 <[^>]*> nop
-+0000d054 <[^>]*> nop
-+0000d058 <[^>]*> nop
-+0000d05c <[^>]*> nop
-+0000d060 <[^>]*> nop
-+0000d064 <[^>]*> nop
-+0000d068 <[^>]*> nop
-+0000d06c <[^>]*> nop
-+0000d070 <[^>]*> nop
-+0000d074 <[^>]*> nop
-+0000d078 <[^>]*> nop
-+0000d07c <[^>]*> nop
-+0000d080 <[^>]*> nop
-+0000d084 <[^>]*> nop
-+0000d088 <[^>]*> nop
-+0000d08c <[^>]*> nop
-+0000d090 <[^>]*> nop
-+0000d094 <[^>]*> nop
-+0000d098 <[^>]*> nop
-+0000d09c <[^>]*> nop
-+0000d0a0 <[^>]*> nop
-+0000d0a4 <[^>]*> nop
-+0000d0a8 <[^>]*> nop
-+0000d0ac <[^>]*> nop
-+0000d0b0 <[^>]*> nop
-+0000d0b4 <[^>]*> nop
-+0000d0b8 <[^>]*> nop
-+0000d0bc <[^>]*> nop
-+0000d0c0 <[^>]*> nop
-+0000d0c4 <[^>]*> nop
-+0000d0c8 <[^>]*> nop
-+0000d0cc <[^>]*> nop
-+0000d0d0 <[^>]*> nop
-+0000d0d4 <[^>]*> nop
-+0000d0d8 <[^>]*> nop
-+0000d0dc <[^>]*> nop
-+0000d0e0 <[^>]*> nop
-+0000d0e4 <[^>]*> nop
-+0000d0e8 <[^>]*> nop
-+0000d0ec <[^>]*> nop
-+0000d0f0 <[^>]*> nop
-+0000d0f4 <[^>]*> nop
-+0000d0f8 <[^>]*> nop
-+0000d0fc <[^>]*> nop
-+0000d100 <[^>]*> nop
-+0000d104 <[^>]*> nop
-+0000d108 <[^>]*> nop
-+0000d10c <[^>]*> nop
-+0000d110 <[^>]*> nop
-+0000d114 <[^>]*> nop
-+0000d118 <[^>]*> nop
-+0000d11c <[^>]*> nop
-+0000d120 <[^>]*> nop
-+0000d124 <[^>]*> nop
-+0000d128 <[^>]*> nop
-+0000d12c <[^>]*> nop
-+0000d130 <[^>]*> nop
-+0000d134 <[^>]*> nop
-+0000d138 <[^>]*> nop
-+0000d13c <[^>]*> nop
-+0000d140 <[^>]*> nop
-+0000d144 <[^>]*> nop
-+0000d148 <[^>]*> nop
-+0000d14c <[^>]*> nop
-+0000d150 <[^>]*> nop
-+0000d154 <[^>]*> nop
-+0000d158 <[^>]*> nop
-+0000d15c <[^>]*> nop
-+0000d160 <[^>]*> nop
-+0000d164 <[^>]*> nop
-+0000d168 <[^>]*> nop
-+0000d16c <[^>]*> nop
-+0000d170 <[^>]*> nop
-+0000d174 <[^>]*> nop
-+0000d178 <[^>]*> nop
-+0000d17c <[^>]*> nop
-+0000d180 <[^>]*> nop
-+0000d184 <[^>]*> nop
-+0000d188 <[^>]*> nop
-+0000d18c <[^>]*> nop
-+0000d190 <[^>]*> nop
-+0000d194 <[^>]*> nop
-+0000d198 <[^>]*> nop
-+0000d19c <[^>]*> nop
-+0000d1a0 <[^>]*> nop
-+0000d1a4 <[^>]*> nop
-+0000d1a8 <[^>]*> nop
-+0000d1ac <[^>]*> nop
-+0000d1b0 <[^>]*> nop
-+0000d1b4 <[^>]*> nop
-+0000d1b8 <[^>]*> nop
-+0000d1bc <[^>]*> nop
-+0000d1c0 <[^>]*> nop
-+0000d1c4 <[^>]*> nop
-+0000d1c8 <[^>]*> nop
-+0000d1cc <[^>]*> nop
-+0000d1d0 <[^>]*> nop
-+0000d1d4 <[^>]*> nop
-+0000d1d8 <[^>]*> nop
-+0000d1dc <[^>]*> nop
-+0000d1e0 <[^>]*> nop
-+0000d1e4 <[^>]*> nop
-+0000d1e8 <[^>]*> nop
-+0000d1ec <[^>]*> nop
-+0000d1f0 <[^>]*> nop
-+0000d1f4 <[^>]*> nop
-+0000d1f8 <[^>]*> nop
-+0000d1fc <[^>]*> nop
-+0000d200 <[^>]*> nop
-+0000d204 <[^>]*> nop
-+0000d208 <[^>]*> nop
-+0000d20c <[^>]*> nop
-+0000d210 <[^>]*> nop
-+0000d214 <[^>]*> nop
-+0000d218 <[^>]*> nop
-+0000d21c <[^>]*> nop
-+0000d220 <[^>]*> nop
-+0000d224 <[^>]*> nop
-+0000d228 <[^>]*> nop
-+0000d22c <[^>]*> nop
-+0000d230 <[^>]*> nop
-+0000d234 <[^>]*> nop
-+0000d238 <[^>]*> nop
-+0000d23c <[^>]*> nop
-+0000d240 <[^>]*> nop
-+0000d244 <[^>]*> nop
-+0000d248 <[^>]*> nop
-+0000d24c <[^>]*> nop
-+0000d250 <[^>]*> nop
-+0000d254 <[^>]*> nop
-+0000d258 <[^>]*> nop
-+0000d25c <[^>]*> nop
-+0000d260 <[^>]*> nop
-+0000d264 <[^>]*> nop
-+0000d268 <[^>]*> nop
-+0000d26c <[^>]*> nop
-+0000d270 <[^>]*> nop
-+0000d274 <[^>]*> nop
-+0000d278 <[^>]*> nop
-+0000d27c <[^>]*> nop
-+0000d280 <[^>]*> nop
-+0000d284 <[^>]*> nop
-+0000d288 <[^>]*> nop
-+0000d28c <[^>]*> nop
-+0000d290 <[^>]*> nop
-+0000d294 <[^>]*> nop
-+0000d298 <[^>]*> nop
-+0000d29c <[^>]*> nop
-+0000d2a0 <[^>]*> nop
-+0000d2a4 <[^>]*> nop
-+0000d2a8 <[^>]*> nop
-+0000d2ac <[^>]*> nop
-+0000d2b0 <[^>]*> nop
-+0000d2b4 <[^>]*> nop
-+0000d2b8 <[^>]*> nop
-+0000d2bc <[^>]*> nop
-+0000d2c0 <[^>]*> nop
-+0000d2c4 <[^>]*> nop
-+0000d2c8 <[^>]*> nop
-+0000d2cc <[^>]*> nop
-+0000d2d0 <[^>]*> nop
-+0000d2d4 <[^>]*> nop
-+0000d2d8 <[^>]*> nop
-+0000d2dc <[^>]*> nop
-+0000d2e0 <[^>]*> nop
-+0000d2e4 <[^>]*> nop
-+0000d2e8 <[^>]*> nop
-+0000d2ec <[^>]*> nop
-+0000d2f0 <[^>]*> nop
-+0000d2f4 <[^>]*> nop
-+0000d2f8 <[^>]*> nop
-+0000d2fc <[^>]*> nop
-+0000d300 <[^>]*> nop
-+0000d304 <[^>]*> nop
-+0000d308 <[^>]*> nop
-+0000d30c <[^>]*> nop
-+0000d310 <[^>]*> nop
-+0000d314 <[^>]*> nop
-+0000d318 <[^>]*> nop
-+0000d31c <[^>]*> nop
-+0000d320 <[^>]*> nop
-+0000d324 <[^>]*> nop
-+0000d328 <[^>]*> nop
-+0000d32c <[^>]*> nop
-+0000d330 <[^>]*> nop
-+0000d334 <[^>]*> nop
-+0000d338 <[^>]*> nop
-+0000d33c <[^>]*> nop
-+0000d340 <[^>]*> nop
-+0000d344 <[^>]*> nop
-+0000d348 <[^>]*> nop
-+0000d34c <[^>]*> nop
-+0000d350 <[^>]*> nop
-+0000d354 <[^>]*> nop
-+0000d358 <[^>]*> nop
-+0000d35c <[^>]*> nop
-+0000d360 <[^>]*> nop
-+0000d364 <[^>]*> nop
-+0000d368 <[^>]*> nop
-+0000d36c <[^>]*> nop
-+0000d370 <[^>]*> nop
-+0000d374 <[^>]*> nop
-+0000d378 <[^>]*> nop
-+0000d37c <[^>]*> nop
-+0000d380 <[^>]*> nop
-+0000d384 <[^>]*> nop
-+0000d388 <[^>]*> nop
-+0000d38c <[^>]*> nop
-+0000d390 <[^>]*> nop
-+0000d394 <[^>]*> nop
-+0000d398 <[^>]*> nop
-+0000d39c <[^>]*> nop
-+0000d3a0 <[^>]*> nop
-+0000d3a4 <[^>]*> nop
-+0000d3a8 <[^>]*> nop
-+0000d3ac <[^>]*> nop
-+0000d3b0 <[^>]*> nop
-+0000d3b4 <[^>]*> nop
-+0000d3b8 <[^>]*> nop
-+0000d3bc <[^>]*> nop
-+0000d3c0 <[^>]*> nop
-+0000d3c4 <[^>]*> nop
-+0000d3c8 <[^>]*> nop
-+0000d3cc <[^>]*> nop
-+0000d3d0 <[^>]*> nop
-+0000d3d4 <[^>]*> nop
-+0000d3d8 <[^>]*> nop
-+0000d3dc <[^>]*> nop
-+0000d3e0 <[^>]*> nop
-+0000d3e4 <[^>]*> nop
-+0000d3e8 <[^>]*> nop
-+0000d3ec <[^>]*> nop
-+0000d3f0 <[^>]*> nop
-+0000d3f4 <[^>]*> nop
-+0000d3f8 <[^>]*> nop
-+0000d3fc <[^>]*> nop
-+0000d400 <[^>]*> nop
-+0000d404 <[^>]*> nop
-+0000d408 <[^>]*> nop
-+0000d40c <[^>]*> nop
-+0000d410 <[^>]*> nop
-+0000d414 <[^>]*> nop
-+0000d418 <[^>]*> nop
-+0000d41c <[^>]*> nop
-+0000d420 <[^>]*> nop
-+0000d424 <[^>]*> nop
-+0000d428 <[^>]*> nop
-+0000d42c <[^>]*> nop
-+0000d430 <[^>]*> nop
-+0000d434 <[^>]*> nop
-+0000d438 <[^>]*> nop
-+0000d43c <[^>]*> nop
-+0000d440 <[^>]*> nop
-+0000d444 <[^>]*> nop
-+0000d448 <[^>]*> nop
-+0000d44c <[^>]*> nop
-+0000d450 <[^>]*> nop
-+0000d454 <[^>]*> nop
-+0000d458 <[^>]*> nop
-+0000d45c <[^>]*> nop
-+0000d460 <[^>]*> nop
-+0000d464 <[^>]*> nop
-+0000d468 <[^>]*> nop
-+0000d46c <[^>]*> nop
-+0000d470 <[^>]*> nop
-+0000d474 <[^>]*> nop
-+0000d478 <[^>]*> nop
-+0000d47c <[^>]*> nop
-+0000d480 <[^>]*> nop
-+0000d484 <[^>]*> nop
-+0000d488 <[^>]*> nop
-+0000d48c <[^>]*> nop
-+0000d490 <[^>]*> nop
-+0000d494 <[^>]*> nop
-+0000d498 <[^>]*> nop
-+0000d49c <[^>]*> nop
-+0000d4a0 <[^>]*> nop
-+0000d4a4 <[^>]*> nop
-+0000d4a8 <[^>]*> nop
-+0000d4ac <[^>]*> nop
-+0000d4b0 <[^>]*> nop
-+0000d4b4 <[^>]*> nop
-+0000d4b8 <[^>]*> nop
-+0000d4bc <[^>]*> nop
-+0000d4c0 <[^>]*> nop
-+0000d4c4 <[^>]*> nop
-+0000d4c8 <[^>]*> nop
-+0000d4cc <[^>]*> nop
-+0000d4d0 <[^>]*> nop
-+0000d4d4 <[^>]*> nop
-+0000d4d8 <[^>]*> nop
-+0000d4dc <[^>]*> nop
-+0000d4e0 <[^>]*> nop
-+0000d4e4 <[^>]*> nop
-+0000d4e8 <[^>]*> nop
-+0000d4ec <[^>]*> nop
-+0000d4f0 <[^>]*> nop
-+0000d4f4 <[^>]*> nop
-+0000d4f8 <[^>]*> nop
-+0000d4fc <[^>]*> nop
-+0000d500 <[^>]*> nop
-+0000d504 <[^>]*> nop
-+0000d508 <[^>]*> nop
-+0000d50c <[^>]*> nop
-+0000d510 <[^>]*> nop
-+0000d514 <[^>]*> nop
-+0000d518 <[^>]*> nop
-+0000d51c <[^>]*> nop
-+0000d520 <[^>]*> nop
-+0000d524 <[^>]*> nop
-+0000d528 <[^>]*> nop
-+0000d52c <[^>]*> nop
-+0000d530 <[^>]*> nop
-+0000d534 <[^>]*> nop
-+0000d538 <[^>]*> nop
-+0000d53c <[^>]*> nop
-+0000d540 <[^>]*> nop
-+0000d544 <[^>]*> nop
-+0000d548 <[^>]*> nop
-+0000d54c <[^>]*> nop
-+0000d550 <[^>]*> nop
-+0000d554 <[^>]*> nop
-+0000d558 <[^>]*> nop
-+0000d55c <[^>]*> nop
-+0000d560 <[^>]*> nop
-+0000d564 <[^>]*> nop
-+0000d568 <[^>]*> nop
-+0000d56c <[^>]*> nop
-+0000d570 <[^>]*> nop
-+0000d574 <[^>]*> nop
-+0000d578 <[^>]*> nop
-+0000d57c <[^>]*> nop
-+0000d580 <[^>]*> nop
-+0000d584 <[^>]*> nop
-+0000d588 <[^>]*> nop
-+0000d58c <[^>]*> nop
-+0000d590 <[^>]*> nop
-+0000d594 <[^>]*> nop
-+0000d598 <[^>]*> nop
-+0000d59c <[^>]*> nop
-+0000d5a0 <[^>]*> nop
-+0000d5a4 <[^>]*> nop
-+0000d5a8 <[^>]*> nop
-+0000d5ac <[^>]*> nop
-+0000d5b0 <[^>]*> nop
-+0000d5b4 <[^>]*> nop
-+0000d5b8 <[^>]*> nop
-+0000d5bc <[^>]*> nop
-+0000d5c0 <[^>]*> nop
-+0000d5c4 <[^>]*> nop
-+0000d5c8 <[^>]*> nop
-+0000d5cc <[^>]*> nop
-+0000d5d0 <[^>]*> nop
-+0000d5d4 <[^>]*> nop
-+0000d5d8 <[^>]*> nop
-+0000d5dc <[^>]*> nop
-+0000d5e0 <[^>]*> nop
-+0000d5e4 <[^>]*> nop
-+0000d5e8 <[^>]*> nop
-+0000d5ec <[^>]*> nop
-+0000d5f0 <[^>]*> nop
-+0000d5f4 <[^>]*> nop
-+0000d5f8 <[^>]*> nop
-+0000d5fc <[^>]*> nop
-+0000d600 <[^>]*> nop
-+0000d604 <[^>]*> nop
-+0000d608 <[^>]*> nop
-+0000d60c <[^>]*> nop
-+0000d610 <[^>]*> nop
-+0000d614 <[^>]*> nop
-+0000d618 <[^>]*> nop
-+0000d61c <[^>]*> nop
-+0000d620 <[^>]*> nop
-+0000d624 <[^>]*> nop
-+0000d628 <[^>]*> nop
-+0000d62c <[^>]*> nop
-+0000d630 <[^>]*> nop
-+0000d634 <[^>]*> nop
-+0000d638 <[^>]*> nop
-+0000d63c <[^>]*> nop
-+0000d640 <[^>]*> nop
-+0000d644 <[^>]*> nop
-+0000d648 <[^>]*> nop
-+0000d64c <[^>]*> nop
-+0000d650 <[^>]*> nop
-+0000d654 <[^>]*> nop
-+0000d658 <[^>]*> nop
-+0000d65c <[^>]*> nop
-+0000d660 <[^>]*> nop
-+0000d664 <[^>]*> nop
-+0000d668 <[^>]*> nop
-+0000d66c <[^>]*> nop
-+0000d670 <[^>]*> nop
-+0000d674 <[^>]*> nop
-+0000d678 <[^>]*> nop
-+0000d67c <[^>]*> nop
-+0000d680 <[^>]*> nop
-+0000d684 <[^>]*> nop
-+0000d688 <[^>]*> nop
-+0000d68c <[^>]*> nop
-+0000d690 <[^>]*> nop
-+0000d694 <[^>]*> nop
-+0000d698 <[^>]*> nop
-+0000d69c <[^>]*> nop
-+0000d6a0 <[^>]*> nop
-+0000d6a4 <[^>]*> nop
-+0000d6a8 <[^>]*> nop
-+0000d6ac <[^>]*> nop
-+0000d6b0 <[^>]*> nop
-+0000d6b4 <[^>]*> nop
-+0000d6b8 <[^>]*> nop
-+0000d6bc <[^>]*> nop
-+0000d6c0 <[^>]*> nop
-+0000d6c4 <[^>]*> nop
-+0000d6c8 <[^>]*> nop
-+0000d6cc <[^>]*> nop
-+0000d6d0 <[^>]*> nop
-+0000d6d4 <[^>]*> nop
-+0000d6d8 <[^>]*> nop
-+0000d6dc <[^>]*> nop
-+0000d6e0 <[^>]*> nop
-+0000d6e4 <[^>]*> nop
-+0000d6e8 <[^>]*> nop
-+0000d6ec <[^>]*> nop
-+0000d6f0 <[^>]*> nop
-+0000d6f4 <[^>]*> nop
-+0000d6f8 <[^>]*> nop
-+0000d6fc <[^>]*> nop
-+0000d700 <[^>]*> nop
-+0000d704 <[^>]*> nop
-+0000d708 <[^>]*> nop
-+0000d70c <[^>]*> nop
-+0000d710 <[^>]*> nop
-+0000d714 <[^>]*> nop
-+0000d718 <[^>]*> nop
-+0000d71c <[^>]*> nop
-+0000d720 <[^>]*> nop
-+0000d724 <[^>]*> nop
-+0000d728 <[^>]*> nop
-+0000d72c <[^>]*> nop
-+0000d730 <[^>]*> nop
-+0000d734 <[^>]*> nop
-+0000d738 <[^>]*> nop
-+0000d73c <[^>]*> nop
-+0000d740 <[^>]*> nop
-+0000d744 <[^>]*> nop
-+0000d748 <[^>]*> nop
-+0000d74c <[^>]*> nop
-+0000d750 <[^>]*> nop
-+0000d754 <[^>]*> nop
-+0000d758 <[^>]*> nop
-+0000d75c <[^>]*> nop
-+0000d760 <[^>]*> nop
-+0000d764 <[^>]*> nop
-+0000d768 <[^>]*> nop
-+0000d76c <[^>]*> nop
-+0000d770 <[^>]*> nop
-+0000d774 <[^>]*> nop
-+0000d778 <[^>]*> nop
-+0000d77c <[^>]*> nop
-+0000d780 <[^>]*> nop
-+0000d784 <[^>]*> nop
-+0000d788 <[^>]*> nop
-+0000d78c <[^>]*> nop
-+0000d790 <[^>]*> nop
-+0000d794 <[^>]*> nop
-+0000d798 <[^>]*> nop
-+0000d79c <[^>]*> nop
-+0000d7a0 <[^>]*> nop
-+0000d7a4 <[^>]*> nop
-+0000d7a8 <[^>]*> nop
-+0000d7ac <[^>]*> nop
-+0000d7b0 <[^>]*> nop
-+0000d7b4 <[^>]*> nop
-+0000d7b8 <[^>]*> nop
-+0000d7bc <[^>]*> nop
-+0000d7c0 <[^>]*> nop
-+0000d7c4 <[^>]*> nop
-+0000d7c8 <[^>]*> nop
-+0000d7cc <[^>]*> nop
-+0000d7d0 <[^>]*> nop
-+0000d7d4 <[^>]*> nop
-+0000d7d8 <[^>]*> nop
-+0000d7dc <[^>]*> nop
-+0000d7e0 <[^>]*> nop
-+0000d7e4 <[^>]*> nop
-+0000d7e8 <[^>]*> nop
-+0000d7ec <[^>]*> nop
-+0000d7f0 <[^>]*> nop
-+0000d7f4 <[^>]*> nop
-+0000d7f8 <[^>]*> nop
-+0000d7fc <[^>]*> nop
-+0000d800 <[^>]*> nop
-+0000d804 <[^>]*> nop
-+0000d808 <[^>]*> nop
-+0000d80c <[^>]*> nop
-+0000d810 <[^>]*> nop
-+0000d814 <[^>]*> nop
-+0000d818 <[^>]*> nop
-+0000d81c <[^>]*> nop
-+0000d820 <[^>]*> nop
-+0000d824 <[^>]*> nop
-+0000d828 <[^>]*> nop
-+0000d82c <[^>]*> nop
-+0000d830 <[^>]*> nop
-+0000d834 <[^>]*> nop
-+0000d838 <[^>]*> nop
-+0000d83c <[^>]*> nop
-+0000d840 <[^>]*> nop
-+0000d844 <[^>]*> nop
-+0000d848 <[^>]*> nop
-+0000d84c <[^>]*> nop
-+0000d850 <[^>]*> nop
-+0000d854 <[^>]*> nop
-+0000d858 <[^>]*> nop
-+0000d85c <[^>]*> nop
-+0000d860 <[^>]*> nop
-+0000d864 <[^>]*> nop
-+0000d868 <[^>]*> nop
-+0000d86c <[^>]*> nop
-+0000d870 <[^>]*> nop
-+0000d874 <[^>]*> nop
-+0000d878 <[^>]*> nop
-+0000d87c <[^>]*> nop
-+0000d880 <[^>]*> nop
-+0000d884 <[^>]*> nop
-+0000d888 <[^>]*> nop
-+0000d88c <[^>]*> nop
-+0000d890 <[^>]*> nop
-+0000d894 <[^>]*> nop
-+0000d898 <[^>]*> nop
-+0000d89c <[^>]*> nop
-+0000d8a0 <[^>]*> nop
-+0000d8a4 <[^>]*> nop
-+0000d8a8 <[^>]*> nop
-+0000d8ac <[^>]*> nop
-+0000d8b0 <[^>]*> nop
-+0000d8b4 <[^>]*> nop
-+0000d8b8 <[^>]*> nop
-+0000d8bc <[^>]*> nop
-+0000d8c0 <[^>]*> nop
-+0000d8c4 <[^>]*> nop
-+0000d8c8 <[^>]*> nop
-+0000d8cc <[^>]*> nop
-+0000d8d0 <[^>]*> nop
-+0000d8d4 <[^>]*> nop
-+0000d8d8 <[^>]*> nop
-+0000d8dc <[^>]*> nop
-+0000d8e0 <[^>]*> nop
-+0000d8e4 <[^>]*> nop
-+0000d8e8 <[^>]*> nop
-+0000d8ec <[^>]*> nop
-+0000d8f0 <[^>]*> nop
-+0000d8f4 <[^>]*> nop
-+0000d8f8 <[^>]*> nop
-+0000d8fc <[^>]*> nop
-+0000d900 <[^>]*> nop
-+0000d904 <[^>]*> nop
-+0000d908 <[^>]*> nop
-+0000d90c <[^>]*> nop
-+0000d910 <[^>]*> nop
-+0000d914 <[^>]*> nop
-+0000d918 <[^>]*> nop
-+0000d91c <[^>]*> nop
-+0000d920 <[^>]*> nop
-+0000d924 <[^>]*> nop
-+0000d928 <[^>]*> nop
-+0000d92c <[^>]*> nop
-+0000d930 <[^>]*> nop
-+0000d934 <[^>]*> nop
-+0000d938 <[^>]*> nop
-+0000d93c <[^>]*> nop
-+0000d940 <[^>]*> nop
-+0000d944 <[^>]*> nop
-+0000d948 <[^>]*> nop
-+0000d94c <[^>]*> nop
-+0000d950 <[^>]*> nop
-+0000d954 <[^>]*> nop
-+0000d958 <[^>]*> nop
-+0000d95c <[^>]*> nop
-+0000d960 <[^>]*> nop
-+0000d964 <[^>]*> nop
-+0000d968 <[^>]*> nop
-+0000d96c <[^>]*> nop
-+0000d970 <[^>]*> nop
-+0000d974 <[^>]*> nop
-+0000d978 <[^>]*> nop
-+0000d97c <[^>]*> nop
-+0000d980 <[^>]*> nop
-+0000d984 <[^>]*> nop
-+0000d988 <[^>]*> nop
-+0000d98c <[^>]*> nop
-+0000d990 <[^>]*> nop
-+0000d994 <[^>]*> nop
-+0000d998 <[^>]*> nop
-+0000d99c <[^>]*> nop
-+0000d9a0 <[^>]*> nop
-+0000d9a4 <[^>]*> nop
-+0000d9a8 <[^>]*> nop
-+0000d9ac <[^>]*> nop
-+0000d9b0 <[^>]*> nop
-+0000d9b4 <[^>]*> nop
-+0000d9b8 <[^>]*> nop
-+0000d9bc <[^>]*> nop
-+0000d9c0 <[^>]*> nop
-+0000d9c4 <[^>]*> nop
-+0000d9c8 <[^>]*> nop
-+0000d9cc <[^>]*> nop
-+0000d9d0 <[^>]*> nop
-+0000d9d4 <[^>]*> nop
-+0000d9d8 <[^>]*> nop
-+0000d9dc <[^>]*> nop
-+0000d9e0 <[^>]*> nop
-+0000d9e4 <[^>]*> nop
-+0000d9e8 <[^>]*> nop
-+0000d9ec <[^>]*> nop
-+0000d9f0 <[^>]*> nop
-+0000d9f4 <[^>]*> nop
-+0000d9f8 <[^>]*> nop
-+0000d9fc <[^>]*> nop
-+0000da00 <[^>]*> nop
-+0000da04 <[^>]*> nop
-+0000da08 <[^>]*> nop
-+0000da0c <[^>]*> nop
-+0000da10 <[^>]*> nop
-+0000da14 <[^>]*> nop
-+0000da18 <[^>]*> nop
-+0000da1c <[^>]*> nop
-+0000da20 <[^>]*> nop
-+0000da24 <[^>]*> nop
-+0000da28 <[^>]*> nop
-+0000da2c <[^>]*> nop
-+0000da30 <[^>]*> nop
-+0000da34 <[^>]*> nop
-+0000da38 <[^>]*> nop
-+0000da3c <[^>]*> nop
-+0000da40 <[^>]*> nop
-+0000da44 <[^>]*> nop
-+0000da48 <[^>]*> nop
-+0000da4c <[^>]*> nop
-+0000da50 <[^>]*> nop
-+0000da54 <[^>]*> nop
-+0000da58 <[^>]*> nop
-+0000da5c <[^>]*> nop
-+0000da60 <[^>]*> nop
-+0000da64 <[^>]*> nop
-+0000da68 <[^>]*> nop
-+0000da6c <[^>]*> nop
-+0000da70 <[^>]*> nop
-+0000da74 <[^>]*> nop
-+0000da78 <[^>]*> nop
-+0000da7c <[^>]*> nop
-+0000da80 <[^>]*> nop
-+0000da84 <[^>]*> nop
-+0000da88 <[^>]*> nop
-+0000da8c <[^>]*> nop
-+0000da90 <[^>]*> nop
-+0000da94 <[^>]*> nop
-+0000da98 <[^>]*> nop
-+0000da9c <[^>]*> nop
-+0000daa0 <[^>]*> nop
-+0000daa4 <[^>]*> nop
-+0000daa8 <[^>]*> nop
-+0000daac <[^>]*> nop
-+0000dab0 <[^>]*> nop
-+0000dab4 <[^>]*> nop
-+0000dab8 <[^>]*> nop
-+0000dabc <[^>]*> nop
-+0000dac0 <[^>]*> nop
-+0000dac4 <[^>]*> nop
-+0000dac8 <[^>]*> nop
-+0000dacc <[^>]*> nop
-+0000dad0 <[^>]*> nop
-+0000dad4 <[^>]*> nop
-+0000dad8 <[^>]*> nop
-+0000dadc <[^>]*> nop
-+0000dae0 <[^>]*> nop
-+0000dae4 <[^>]*> nop
-+0000dae8 <[^>]*> nop
-+0000daec <[^>]*> nop
-+0000daf0 <[^>]*> nop
-+0000daf4 <[^>]*> nop
-+0000daf8 <[^>]*> nop
-+0000dafc <[^>]*> nop
-+0000db00 <[^>]*> nop
-+0000db04 <[^>]*> nop
-+0000db08 <[^>]*> nop
-+0000db0c <[^>]*> nop
-+0000db10 <[^>]*> nop
-+0000db14 <[^>]*> nop
-+0000db18 <[^>]*> nop
-+0000db1c <[^>]*> nop
-+0000db20 <[^>]*> nop
-+0000db24 <[^>]*> nop
-+0000db28 <[^>]*> nop
-+0000db2c <[^>]*> nop
-+0000db30 <[^>]*> nop
-+0000db34 <[^>]*> nop
-+0000db38 <[^>]*> nop
-+0000db3c <[^>]*> nop
-+0000db40 <[^>]*> nop
-+0000db44 <[^>]*> nop
-+0000db48 <[^>]*> nop
-+0000db4c <[^>]*> nop
-+0000db50 <[^>]*> nop
-+0000db54 <[^>]*> nop
-+0000db58 <[^>]*> nop
-+0000db5c <[^>]*> nop
-+0000db60 <[^>]*> nop
-+0000db64 <[^>]*> nop
-+0000db68 <[^>]*> nop
-+0000db6c <[^>]*> nop
-+0000db70 <[^>]*> nop
-+0000db74 <[^>]*> nop
-+0000db78 <[^>]*> nop
-+0000db7c <[^>]*> nop
-+0000db80 <[^>]*> nop
-+0000db84 <[^>]*> nop
-+0000db88 <[^>]*> nop
-+0000db8c <[^>]*> nop
-+0000db90 <[^>]*> nop
-+0000db94 <[^>]*> nop
-+0000db98 <[^>]*> nop
-+0000db9c <[^>]*> nop
-+0000dba0 <[^>]*> nop
-+0000dba4 <[^>]*> nop
-+0000dba8 <[^>]*> nop
-+0000dbac <[^>]*> nop
-+0000dbb0 <[^>]*> nop
-+0000dbb4 <[^>]*> nop
-+0000dbb8 <[^>]*> nop
-+0000dbbc <[^>]*> nop
-+0000dbc0 <[^>]*> nop
-+0000dbc4 <[^>]*> nop
-+0000dbc8 <[^>]*> nop
-+0000dbcc <[^>]*> nop
-+0000dbd0 <[^>]*> nop
-+0000dbd4 <[^>]*> nop
-+0000dbd8 <[^>]*> nop
-+0000dbdc <[^>]*> nop
-+0000dbe0 <[^>]*> nop
-+0000dbe4 <[^>]*> nop
-+0000dbe8 <[^>]*> nop
-+0000dbec <[^>]*> nop
-+0000dbf0 <[^>]*> nop
-+0000dbf4 <[^>]*> nop
-+0000dbf8 <[^>]*> nop
-+0000dbfc <[^>]*> nop
-+0000dc00 <[^>]*> nop
-+0000dc04 <[^>]*> nop
-+0000dc08 <[^>]*> nop
-+0000dc0c <[^>]*> nop
-+0000dc10 <[^>]*> nop
-+0000dc14 <[^>]*> nop
-+0000dc18 <[^>]*> nop
-+0000dc1c <[^>]*> nop
-+0000dc20 <[^>]*> nop
-+0000dc24 <[^>]*> nop
-+0000dc28 <[^>]*> nop
-+0000dc2c <[^>]*> nop
-+0000dc30 <[^>]*> nop
-+0000dc34 <[^>]*> nop
-+0000dc38 <[^>]*> nop
-+0000dc3c <[^>]*> nop
-+0000dc40 <[^>]*> nop
-+0000dc44 <[^>]*> nop
-+0000dc48 <[^>]*> nop
-+0000dc4c <[^>]*> nop
-+0000dc50 <[^>]*> nop
-+0000dc54 <[^>]*> nop
-+0000dc58 <[^>]*> nop
-+0000dc5c <[^>]*> nop
-+0000dc60 <[^>]*> nop
-+0000dc64 <[^>]*> nop
-+0000dc68 <[^>]*> nop
-+0000dc6c <[^>]*> nop
-+0000dc70 <[^>]*> nop
-+0000dc74 <[^>]*> nop
-+0000dc78 <[^>]*> nop
-+0000dc7c <[^>]*> nop
-+0000dc80 <[^>]*> nop
-+0000dc84 <[^>]*> nop
-+0000dc88 <[^>]*> nop
-+0000dc8c <[^>]*> nop
-+0000dc90 <[^>]*> nop
-+0000dc94 <[^>]*> nop
-+0000dc98 <[^>]*> nop
-+0000dc9c <[^>]*> nop
-+0000dca0 <[^>]*> nop
-+0000dca4 <[^>]*> nop
-+0000dca8 <[^>]*> nop
-+0000dcac <[^>]*> nop
-+0000dcb0 <[^>]*> nop
-+0000dcb4 <[^>]*> nop
-+0000dcb8 <[^>]*> nop
-+0000dcbc <[^>]*> nop
-+0000dcc0 <[^>]*> nop
-+0000dcc4 <[^>]*> nop
-+0000dcc8 <[^>]*> nop
-+0000dccc <[^>]*> nop
-+0000dcd0 <[^>]*> nop
-+0000dcd4 <[^>]*> nop
-+0000dcd8 <[^>]*> nop
-+0000dcdc <[^>]*> nop
-+0000dce0 <[^>]*> nop
-+0000dce4 <[^>]*> nop
-+0000dce8 <[^>]*> nop
-+0000dcec <[^>]*> nop
-+0000dcf0 <[^>]*> nop
-+0000dcf4 <[^>]*> nop
-+0000dcf8 <[^>]*> nop
-+0000dcfc <[^>]*> nop
-+0000dd00 <[^>]*> nop
-+0000dd04 <[^>]*> nop
-+0000dd08 <[^>]*> nop
-+0000dd0c <[^>]*> nop
-+0000dd10 <[^>]*> nop
-+0000dd14 <[^>]*> nop
-+0000dd18 <[^>]*> nop
-+0000dd1c <[^>]*> nop
-+0000dd20 <[^>]*> nop
-+0000dd24 <[^>]*> nop
-+0000dd28 <[^>]*> nop
-+0000dd2c <[^>]*> nop
-+0000dd30 <[^>]*> nop
-+0000dd34 <[^>]*> nop
-+0000dd38 <[^>]*> nop
-+0000dd3c <[^>]*> nop
-+0000dd40 <[^>]*> nop
-+0000dd44 <[^>]*> nop
-+0000dd48 <[^>]*> nop
-+0000dd4c <[^>]*> nop
-+0000dd50 <[^>]*> nop
-+0000dd54 <[^>]*> nop
-+0000dd58 <[^>]*> nop
-+0000dd5c <[^>]*> nop
-+0000dd60 <[^>]*> nop
-+0000dd64 <[^>]*> nop
-+0000dd68 <[^>]*> nop
-+0000dd6c <[^>]*> nop
-+0000dd70 <[^>]*> nop
-+0000dd74 <[^>]*> nop
-+0000dd78 <[^>]*> nop
-+0000dd7c <[^>]*> nop
-+0000dd80 <[^>]*> nop
-+0000dd84 <[^>]*> nop
-+0000dd88 <[^>]*> nop
-+0000dd8c <[^>]*> nop
-+0000dd90 <[^>]*> nop
-+0000dd94 <[^>]*> nop
-+0000dd98 <[^>]*> nop
-+0000dd9c <[^>]*> nop
-+0000dda0 <[^>]*> nop
-+0000dda4 <[^>]*> nop
-+0000dda8 <[^>]*> nop
-+0000ddac <[^>]*> nop
-+0000ddb0 <[^>]*> nop
-+0000ddb4 <[^>]*> nop
-+0000ddb8 <[^>]*> nop
-+0000ddbc <[^>]*> nop
-+0000ddc0 <[^>]*> nop
-+0000ddc4 <[^>]*> nop
-+0000ddc8 <[^>]*> nop
-+0000ddcc <[^>]*> nop
-+0000ddd0 <[^>]*> nop
-+0000ddd4 <[^>]*> nop
-+0000ddd8 <[^>]*> nop
-+0000dddc <[^>]*> nop
-+0000dde0 <[^>]*> nop
-+0000dde4 <[^>]*> nop
-+0000dde8 <[^>]*> nop
-+0000ddec <[^>]*> nop
-+0000ddf0 <[^>]*> nop
-+0000ddf4 <[^>]*> nop
-+0000ddf8 <[^>]*> nop
-+0000ddfc <[^>]*> nop
-+0000de00 <[^>]*> nop
-+0000de04 <[^>]*> nop
-+0000de08 <[^>]*> nop
-+0000de0c <[^>]*> nop
-+0000de10 <[^>]*> nop
-+0000de14 <[^>]*> nop
-+0000de18 <[^>]*> nop
-+0000de1c <[^>]*> nop
-+0000de20 <[^>]*> nop
-+0000de24 <[^>]*> nop
-+0000de28 <[^>]*> nop
-+0000de2c <[^>]*> nop
-+0000de30 <[^>]*> nop
-+0000de34 <[^>]*> nop
-+0000de38 <[^>]*> nop
-+0000de3c <[^>]*> nop
-+0000de40 <[^>]*> nop
-+0000de44 <[^>]*> nop
-+0000de48 <[^>]*> nop
-+0000de4c <[^>]*> nop
-+0000de50 <[^>]*> nop
-+0000de54 <[^>]*> nop
-+0000de58 <[^>]*> nop
-+0000de5c <[^>]*> nop
-+0000de60 <[^>]*> nop
-+0000de64 <[^>]*> nop
-+0000de68 <[^>]*> nop
-+0000de6c <[^>]*> nop
-+0000de70 <[^>]*> nop
-+0000de74 <[^>]*> nop
-+0000de78 <[^>]*> nop
-+0000de7c <[^>]*> nop
-+0000de80 <[^>]*> nop
-+0000de84 <[^>]*> nop
-+0000de88 <[^>]*> nop
-+0000de8c <[^>]*> nop
-+0000de90 <[^>]*> nop
-+0000de94 <[^>]*> nop
-+0000de98 <[^>]*> nop
-+0000de9c <[^>]*> nop
-+0000dea0 <[^>]*> nop
-+0000dea4 <[^>]*> nop
-+0000dea8 <[^>]*> nop
-+0000deac <[^>]*> nop
-+0000deb0 <[^>]*> nop
-+0000deb4 <[^>]*> nop
-+0000deb8 <[^>]*> nop
-+0000debc <[^>]*> nop
-+0000dec0 <[^>]*> nop
-+0000dec4 <[^>]*> nop
-+0000dec8 <[^>]*> nop
-+0000decc <[^>]*> nop
-+0000ded0 <[^>]*> nop
-+0000ded4 <[^>]*> nop
-+0000ded8 <[^>]*> nop
-+0000dedc <[^>]*> nop
-+0000dee0 <[^>]*> nop
-+0000dee4 <[^>]*> nop
-+0000dee8 <[^>]*> nop
-+0000deec <[^>]*> nop
-+0000def0 <[^>]*> nop
-+0000def4 <[^>]*> nop
-+0000def8 <[^>]*> nop
-+0000defc <[^>]*> nop
-+0000df00 <[^>]*> nop
-+0000df04 <[^>]*> nop
-+0000df08 <[^>]*> nop
-+0000df0c <[^>]*> nop
-+0000df10 <[^>]*> nop
-+0000df14 <[^>]*> nop
-+0000df18 <[^>]*> nop
-+0000df1c <[^>]*> nop
-+0000df20 <[^>]*> nop
-+0000df24 <[^>]*> nop
-+0000df28 <[^>]*> nop
-+0000df2c <[^>]*> nop
-+0000df30 <[^>]*> nop
-+0000df34 <[^>]*> nop
-+0000df38 <[^>]*> nop
-+0000df3c <[^>]*> nop
-+0000df40 <[^>]*> nop
-+0000df44 <[^>]*> nop
-+0000df48 <[^>]*> nop
-+0000df4c <[^>]*> nop
-+0000df50 <[^>]*> nop
-+0000df54 <[^>]*> nop
-+0000df58 <[^>]*> nop
-+0000df5c <[^>]*> nop
-+0000df60 <[^>]*> nop
-+0000df64 <[^>]*> nop
-+0000df68 <[^>]*> nop
-+0000df6c <[^>]*> nop
-+0000df70 <[^>]*> nop
-+0000df74 <[^>]*> nop
-+0000df78 <[^>]*> nop
-+0000df7c <[^>]*> nop
-+0000df80 <[^>]*> nop
-+0000df84 <[^>]*> nop
-+0000df88 <[^>]*> nop
-+0000df8c <[^>]*> nop
-+0000df90 <[^>]*> nop
-+0000df94 <[^>]*> nop
-+0000df98 <[^>]*> nop
-+0000df9c <[^>]*> nop
-+0000dfa0 <[^>]*> nop
-+0000dfa4 <[^>]*> nop
-+0000dfa8 <[^>]*> nop
-+0000dfac <[^>]*> nop
-+0000dfb0 <[^>]*> nop
-+0000dfb4 <[^>]*> nop
-+0000dfb8 <[^>]*> nop
-+0000dfbc <[^>]*> nop
-+0000dfc0 <[^>]*> nop
-+0000dfc4 <[^>]*> nop
-+0000dfc8 <[^>]*> nop
-+0000dfcc <[^>]*> nop
-+0000dfd0 <[^>]*> nop
-+0000dfd4 <[^>]*> nop
-+0000dfd8 <[^>]*> nop
-+0000dfdc <[^>]*> nop
-+0000dfe0 <[^>]*> nop
-+0000dfe4 <[^>]*> nop
-+0000dfe8 <[^>]*> nop
-+0000dfec <[^>]*> nop
-+0000dff0 <[^>]*> nop
-+0000dff4 <[^>]*> nop
-+0000dff8 <[^>]*> nop
-+0000dffc <[^>]*> nop
-+0000e000 <[^>]*> nop
-+0000e004 <[^>]*> nop
-+0000e008 <[^>]*> nop
-+0000e00c <[^>]*> nop
-+0000e010 <[^>]*> nop
-+0000e014 <[^>]*> nop
-+0000e018 <[^>]*> nop
-+0000e01c <[^>]*> nop
-+0000e020 <[^>]*> nop
-+0000e024 <[^>]*> nop
-+0000e028 <[^>]*> nop
-+0000e02c <[^>]*> nop
-+0000e030 <[^>]*> nop
-+0000e034 <[^>]*> nop
-+0000e038 <[^>]*> nop
-+0000e03c <[^>]*> nop
-+0000e040 <[^>]*> nop
-+0000e044 <[^>]*> nop
-+0000e048 <[^>]*> nop
-+0000e04c <[^>]*> nop
-+0000e050 <[^>]*> nop
-+0000e054 <[^>]*> nop
-+0000e058 <[^>]*> nop
-+0000e05c <[^>]*> nop
-+0000e060 <[^>]*> nop
-+0000e064 <[^>]*> nop
-+0000e068 <[^>]*> nop
-+0000e06c <[^>]*> nop
-+0000e070 <[^>]*> nop
-+0000e074 <[^>]*> nop
-+0000e078 <[^>]*> nop
-+0000e07c <[^>]*> nop
-+0000e080 <[^>]*> nop
-+0000e084 <[^>]*> nop
-+0000e088 <[^>]*> nop
-+0000e08c <[^>]*> nop
-+0000e090 <[^>]*> nop
-+0000e094 <[^>]*> nop
-+0000e098 <[^>]*> nop
-+0000e09c <[^>]*> nop
-+0000e0a0 <[^>]*> nop
-+0000e0a4 <[^>]*> nop
-+0000e0a8 <[^>]*> nop
-+0000e0ac <[^>]*> nop
-+0000e0b0 <[^>]*> nop
-+0000e0b4 <[^>]*> nop
-+0000e0b8 <[^>]*> nop
-+0000e0bc <[^>]*> nop
-+0000e0c0 <[^>]*> nop
-+0000e0c4 <[^>]*> nop
-+0000e0c8 <[^>]*> nop
-+0000e0cc <[^>]*> nop
-+0000e0d0 <[^>]*> nop
-+0000e0d4 <[^>]*> nop
-+0000e0d8 <[^>]*> nop
-+0000e0dc <[^>]*> nop
-+0000e0e0 <[^>]*> nop
-+0000e0e4 <[^>]*> nop
-+0000e0e8 <[^>]*> nop
-+0000e0ec <[^>]*> nop
-+0000e0f0 <[^>]*> nop
-+0000e0f4 <[^>]*> nop
-+0000e0f8 <[^>]*> nop
-+0000e0fc <[^>]*> nop
-+0000e100 <[^>]*> nop
-+0000e104 <[^>]*> nop
-+0000e108 <[^>]*> nop
-+0000e10c <[^>]*> nop
-+0000e110 <[^>]*> nop
-+0000e114 <[^>]*> nop
-+0000e118 <[^>]*> nop
-+0000e11c <[^>]*> nop
-+0000e120 <[^>]*> nop
-+0000e124 <[^>]*> nop
-+0000e128 <[^>]*> nop
-+0000e12c <[^>]*> nop
-+0000e130 <[^>]*> nop
-+0000e134 <[^>]*> nop
-+0000e138 <[^>]*> nop
-+0000e13c <[^>]*> nop
-+0000e140 <[^>]*> nop
-+0000e144 <[^>]*> nop
-+0000e148 <[^>]*> nop
-+0000e14c <[^>]*> nop
-+0000e150 <[^>]*> nop
-+0000e154 <[^>]*> nop
-+0000e158 <[^>]*> nop
-+0000e15c <[^>]*> nop
-+0000e160 <[^>]*> nop
-+0000e164 <[^>]*> nop
-+0000e168 <[^>]*> nop
-+0000e16c <[^>]*> nop
-+0000e170 <[^>]*> nop
-+0000e174 <[^>]*> nop
-+0000e178 <[^>]*> nop
-+0000e17c <[^>]*> nop
-+0000e180 <[^>]*> nop
-+0000e184 <[^>]*> nop
-+0000e188 <[^>]*> nop
-+0000e18c <[^>]*> nop
-+0000e190 <[^>]*> nop
-+0000e194 <[^>]*> nop
-+0000e198 <[^>]*> nop
-+0000e19c <[^>]*> nop
-+0000e1a0 <[^>]*> nop
-+0000e1a4 <[^>]*> nop
-+0000e1a8 <[^>]*> nop
-+0000e1ac <[^>]*> nop
-+0000e1b0 <[^>]*> nop
-+0000e1b4 <[^>]*> nop
-+0000e1b8 <[^>]*> nop
-+0000e1bc <[^>]*> nop
-+0000e1c0 <[^>]*> nop
-+0000e1c4 <[^>]*> nop
-+0000e1c8 <[^>]*> nop
-+0000e1cc <[^>]*> nop
-+0000e1d0 <[^>]*> nop
-+0000e1d4 <[^>]*> nop
-+0000e1d8 <[^>]*> nop
-+0000e1dc <[^>]*> nop
-+0000e1e0 <[^>]*> nop
-+0000e1e4 <[^>]*> nop
-+0000e1e8 <[^>]*> nop
-+0000e1ec <[^>]*> nop
-+0000e1f0 <[^>]*> nop
-+0000e1f4 <[^>]*> nop
-+0000e1f8 <[^>]*> nop
-+0000e1fc <[^>]*> nop
-+0000e200 <[^>]*> nop
-+0000e204 <[^>]*> nop
-+0000e208 <[^>]*> nop
-+0000e20c <[^>]*> nop
-+0000e210 <[^>]*> nop
-+0000e214 <[^>]*> nop
-+0000e218 <[^>]*> nop
-+0000e21c <[^>]*> nop
-+0000e220 <[^>]*> nop
-+0000e224 <[^>]*> nop
-+0000e228 <[^>]*> nop
-+0000e22c <[^>]*> nop
-+0000e230 <[^>]*> nop
-+0000e234 <[^>]*> nop
-+0000e238 <[^>]*> nop
-+0000e23c <[^>]*> nop
-+0000e240 <[^>]*> nop
-+0000e244 <[^>]*> nop
-+0000e248 <[^>]*> nop
-+0000e24c <[^>]*> nop
-+0000e250 <[^>]*> nop
-+0000e254 <[^>]*> nop
-+0000e258 <[^>]*> nop
-+0000e25c <[^>]*> nop
-+0000e260 <[^>]*> nop
-+0000e264 <[^>]*> nop
-+0000e268 <[^>]*> nop
-+0000e26c <[^>]*> nop
-+0000e270 <[^>]*> nop
-+0000e274 <[^>]*> nop
-+0000e278 <[^>]*> nop
-+0000e27c <[^>]*> nop
-+0000e280 <[^>]*> nop
-+0000e284 <[^>]*> nop
-+0000e288 <[^>]*> nop
-+0000e28c <[^>]*> nop
-+0000e290 <[^>]*> nop
-+0000e294 <[^>]*> nop
-+0000e298 <[^>]*> nop
-+0000e29c <[^>]*> nop
-+0000e2a0 <[^>]*> nop
-+0000e2a4 <[^>]*> nop
-+0000e2a8 <[^>]*> nop
-+0000e2ac <[^>]*> nop
-+0000e2b0 <[^>]*> nop
-+0000e2b4 <[^>]*> nop
-+0000e2b8 <[^>]*> nop
-+0000e2bc <[^>]*> nop
-+0000e2c0 <[^>]*> nop
-+0000e2c4 <[^>]*> nop
-+0000e2c8 <[^>]*> nop
-+0000e2cc <[^>]*> nop
-+0000e2d0 <[^>]*> nop
-+0000e2d4 <[^>]*> nop
-+0000e2d8 <[^>]*> nop
-+0000e2dc <[^>]*> nop
-+0000e2e0 <[^>]*> nop
-+0000e2e4 <[^>]*> nop
-+0000e2e8 <[^>]*> nop
-+0000e2ec <[^>]*> nop
-+0000e2f0 <[^>]*> nop
-+0000e2f4 <[^>]*> nop
-+0000e2f8 <[^>]*> nop
-+0000e2fc <[^>]*> nop
-+0000e300 <[^>]*> nop
-+0000e304 <[^>]*> nop
-+0000e308 <[^>]*> nop
-+0000e30c <[^>]*> nop
-+0000e310 <[^>]*> nop
-+0000e314 <[^>]*> nop
-+0000e318 <[^>]*> nop
-+0000e31c <[^>]*> nop
-+0000e320 <[^>]*> nop
-+0000e324 <[^>]*> nop
-+0000e328 <[^>]*> nop
-+0000e32c <[^>]*> nop
-+0000e330 <[^>]*> nop
-+0000e334 <[^>]*> nop
-+0000e338 <[^>]*> nop
-+0000e33c <[^>]*> nop
-+0000e340 <[^>]*> nop
-+0000e344 <[^>]*> nop
-+0000e348 <[^>]*> nop
-+0000e34c <[^>]*> nop
-+0000e350 <[^>]*> nop
-+0000e354 <[^>]*> nop
-+0000e358 <[^>]*> nop
-+0000e35c <[^>]*> nop
-+0000e360 <[^>]*> nop
-+0000e364 <[^>]*> nop
-+0000e368 <[^>]*> nop
-+0000e36c <[^>]*> nop
-+0000e370 <[^>]*> nop
-+0000e374 <[^>]*> nop
-+0000e378 <[^>]*> nop
-+0000e37c <[^>]*> nop
-+0000e380 <[^>]*> nop
-+0000e384 <[^>]*> nop
-+0000e388 <[^>]*> nop
-+0000e38c <[^>]*> nop
-+0000e390 <[^>]*> nop
-+0000e394 <[^>]*> nop
-+0000e398 <[^>]*> nop
-+0000e39c <[^>]*> nop
-+0000e3a0 <[^>]*> nop
-+0000e3a4 <[^>]*> nop
-+0000e3a8 <[^>]*> nop
-+0000e3ac <[^>]*> nop
-+0000e3b0 <[^>]*> nop
-+0000e3b4 <[^>]*> nop
-+0000e3b8 <[^>]*> nop
-+0000e3bc <[^>]*> nop
-+0000e3c0 <[^>]*> nop
-+0000e3c4 <[^>]*> nop
-+0000e3c8 <[^>]*> nop
-+0000e3cc <[^>]*> nop
-+0000e3d0 <[^>]*> nop
-+0000e3d4 <[^>]*> nop
-+0000e3d8 <[^>]*> nop
-+0000e3dc <[^>]*> nop
-+0000e3e0 <[^>]*> nop
-+0000e3e4 <[^>]*> nop
-+0000e3e8 <[^>]*> nop
-+0000e3ec <[^>]*> nop
-+0000e3f0 <[^>]*> nop
-+0000e3f4 <[^>]*> nop
-+0000e3f8 <[^>]*> nop
-+0000e3fc <[^>]*> nop
-+0000e400 <[^>]*> nop
-+0000e404 <[^>]*> nop
-+0000e408 <[^>]*> nop
-+0000e40c <[^>]*> nop
-+0000e410 <[^>]*> nop
-+0000e414 <[^>]*> nop
-+0000e418 <[^>]*> nop
-+0000e41c <[^>]*> nop
-+0000e420 <[^>]*> nop
-+0000e424 <[^>]*> nop
-+0000e428 <[^>]*> nop
-+0000e42c <[^>]*> nop
-+0000e430 <[^>]*> nop
-+0000e434 <[^>]*> nop
-+0000e438 <[^>]*> nop
-+0000e43c <[^>]*> nop
-+0000e440 <[^>]*> nop
-+0000e444 <[^>]*> nop
-+0000e448 <[^>]*> nop
-+0000e44c <[^>]*> nop
-+0000e450 <[^>]*> nop
-+0000e454 <[^>]*> nop
-+0000e458 <[^>]*> nop
-+0000e45c <[^>]*> nop
-+0000e460 <[^>]*> nop
-+0000e464 <[^>]*> nop
-+0000e468 <[^>]*> nop
-+0000e46c <[^>]*> nop
-+0000e470 <[^>]*> nop
-+0000e474 <[^>]*> nop
-+0000e478 <[^>]*> nop
-+0000e47c <[^>]*> nop
-+0000e480 <[^>]*> nop
-+0000e484 <[^>]*> nop
-+0000e488 <[^>]*> nop
-+0000e48c <[^>]*> nop
-+0000e490 <[^>]*> nop
-+0000e494 <[^>]*> nop
-+0000e498 <[^>]*> nop
-+0000e49c <[^>]*> nop
-+0000e4a0 <[^>]*> nop
-+0000e4a4 <[^>]*> nop
-+0000e4a8 <[^>]*> nop
-+0000e4ac <[^>]*> nop
-+0000e4b0 <[^>]*> nop
-+0000e4b4 <[^>]*> nop
-+0000e4b8 <[^>]*> nop
-+0000e4bc <[^>]*> nop
-+0000e4c0 <[^>]*> nop
-+0000e4c4 <[^>]*> nop
-+0000e4c8 <[^>]*> nop
-+0000e4cc <[^>]*> nop
-+0000e4d0 <[^>]*> nop
-+0000e4d4 <[^>]*> nop
-+0000e4d8 <[^>]*> nop
-+0000e4dc <[^>]*> nop
-+0000e4e0 <[^>]*> nop
-+0000e4e4 <[^>]*> nop
-+0000e4e8 <[^>]*> nop
-+0000e4ec <[^>]*> nop
-+0000e4f0 <[^>]*> nop
-+0000e4f4 <[^>]*> nop
-+0000e4f8 <[^>]*> nop
-+0000e4fc <[^>]*> nop
-+0000e500 <[^>]*> nop
-+0000e504 <[^>]*> nop
-+0000e508 <[^>]*> nop
-+0000e50c <[^>]*> nop
-+0000e510 <[^>]*> nop
-+0000e514 <[^>]*> nop
-+0000e518 <[^>]*> nop
-+0000e51c <[^>]*> nop
-+0000e520 <[^>]*> nop
-+0000e524 <[^>]*> nop
-+0000e528 <[^>]*> nop
-+0000e52c <[^>]*> nop
-+0000e530 <[^>]*> nop
-+0000e534 <[^>]*> nop
-+0000e538 <[^>]*> nop
-+0000e53c <[^>]*> nop
-+0000e540 <[^>]*> nop
-+0000e544 <[^>]*> nop
-+0000e548 <[^>]*> nop
-+0000e54c <[^>]*> nop
-+0000e550 <[^>]*> nop
-+0000e554 <[^>]*> nop
-+0000e558 <[^>]*> nop
-+0000e55c <[^>]*> nop
-+0000e560 <[^>]*> nop
-+0000e564 <[^>]*> nop
-+0000e568 <[^>]*> nop
-+0000e56c <[^>]*> nop
-+0000e570 <[^>]*> nop
-+0000e574 <[^>]*> nop
-+0000e578 <[^>]*> nop
-+0000e57c <[^>]*> nop
-+0000e580 <[^>]*> nop
-+0000e584 <[^>]*> nop
-+0000e588 <[^>]*> nop
-+0000e58c <[^>]*> nop
-+0000e590 <[^>]*> nop
-+0000e594 <[^>]*> nop
-+0000e598 <[^>]*> nop
-+0000e59c <[^>]*> nop
-+0000e5a0 <[^>]*> nop
-+0000e5a4 <[^>]*> nop
-+0000e5a8 <[^>]*> nop
-+0000e5ac <[^>]*> nop
-+0000e5b0 <[^>]*> nop
-+0000e5b4 <[^>]*> nop
-+0000e5b8 <[^>]*> nop
-+0000e5bc <[^>]*> nop
-+0000e5c0 <[^>]*> nop
-+0000e5c4 <[^>]*> nop
-+0000e5c8 <[^>]*> nop
-+0000e5cc <[^>]*> nop
-+0000e5d0 <[^>]*> nop
-+0000e5d4 <[^>]*> nop
-+0000e5d8 <[^>]*> nop
-+0000e5dc <[^>]*> nop
-+0000e5e0 <[^>]*> nop
-+0000e5e4 <[^>]*> nop
-+0000e5e8 <[^>]*> nop
-+0000e5ec <[^>]*> nop
-+0000e5f0 <[^>]*> nop
-+0000e5f4 <[^>]*> nop
-+0000e5f8 <[^>]*> nop
-+0000e5fc <[^>]*> nop
-+0000e600 <[^>]*> nop
-+0000e604 <[^>]*> nop
-+0000e608 <[^>]*> nop
-+0000e60c <[^>]*> nop
-+0000e610 <[^>]*> nop
-+0000e614 <[^>]*> nop
-+0000e618 <[^>]*> nop
-+0000e61c <[^>]*> nop
-+0000e620 <[^>]*> nop
-+0000e624 <[^>]*> nop
-+0000e628 <[^>]*> nop
-+0000e62c <[^>]*> nop
-+0000e630 <[^>]*> nop
-+0000e634 <[^>]*> nop
-+0000e638 <[^>]*> nop
-+0000e63c <[^>]*> nop
-+0000e640 <[^>]*> nop
-+0000e644 <[^>]*> nop
-+0000e648 <[^>]*> nop
-+0000e64c <[^>]*> nop
-+0000e650 <[^>]*> nop
-+0000e654 <[^>]*> nop
-+0000e658 <[^>]*> nop
-+0000e65c <[^>]*> nop
-+0000e660 <[^>]*> nop
-+0000e664 <[^>]*> nop
-+0000e668 <[^>]*> nop
-+0000e66c <[^>]*> nop
-+0000e670 <[^>]*> nop
-+0000e674 <[^>]*> nop
-+0000e678 <[^>]*> nop
-+0000e67c <[^>]*> nop
-+0000e680 <[^>]*> nop
-+0000e684 <[^>]*> nop
-+0000e688 <[^>]*> nop
-+0000e68c <[^>]*> nop
-+0000e690 <[^>]*> nop
-+0000e694 <[^>]*> nop
-+0000e698 <[^>]*> nop
-+0000e69c <[^>]*> nop
-+0000e6a0 <[^>]*> nop
-+0000e6a4 <[^>]*> nop
-+0000e6a8 <[^>]*> nop
-+0000e6ac <[^>]*> nop
-+0000e6b0 <[^>]*> nop
-+0000e6b4 <[^>]*> nop
-+0000e6b8 <[^>]*> nop
-+0000e6bc <[^>]*> nop
-+0000e6c0 <[^>]*> nop
-+0000e6c4 <[^>]*> nop
-+0000e6c8 <[^>]*> nop
-+0000e6cc <[^>]*> nop
-+0000e6d0 <[^>]*> nop
-+0000e6d4 <[^>]*> nop
-+0000e6d8 <[^>]*> nop
-+0000e6dc <[^>]*> nop
-+0000e6e0 <[^>]*> nop
-+0000e6e4 <[^>]*> nop
-+0000e6e8 <[^>]*> nop
-+0000e6ec <[^>]*> nop
-+0000e6f0 <[^>]*> nop
-+0000e6f4 <[^>]*> nop
-+0000e6f8 <[^>]*> nop
-+0000e6fc <[^>]*> nop
-+0000e700 <[^>]*> nop
-+0000e704 <[^>]*> nop
-+0000e708 <[^>]*> nop
-+0000e70c <[^>]*> nop
-+0000e710 <[^>]*> nop
-+0000e714 <[^>]*> nop
-+0000e718 <[^>]*> nop
-+0000e71c <[^>]*> nop
-+0000e720 <[^>]*> nop
-+0000e724 <[^>]*> nop
-+0000e728 <[^>]*> nop
-+0000e72c <[^>]*> nop
-+0000e730 <[^>]*> nop
-+0000e734 <[^>]*> nop
-+0000e738 <[^>]*> nop
-+0000e73c <[^>]*> nop
-+0000e740 <[^>]*> nop
-+0000e744 <[^>]*> nop
-+0000e748 <[^>]*> nop
-+0000e74c <[^>]*> nop
-+0000e750 <[^>]*> nop
-+0000e754 <[^>]*> nop
-+0000e758 <[^>]*> nop
-+0000e75c <[^>]*> nop
-+0000e760 <[^>]*> nop
-+0000e764 <[^>]*> nop
-+0000e768 <[^>]*> nop
-+0000e76c <[^>]*> nop
-+0000e770 <[^>]*> nop
-+0000e774 <[^>]*> nop
-+0000e778 <[^>]*> nop
-+0000e77c <[^>]*> nop
-+0000e780 <[^>]*> nop
-+0000e784 <[^>]*> nop
-+0000e788 <[^>]*> nop
-+0000e78c <[^>]*> nop
-+0000e790 <[^>]*> nop
-+0000e794 <[^>]*> nop
-+0000e798 <[^>]*> nop
-+0000e79c <[^>]*> nop
-+0000e7a0 <[^>]*> nop
-+0000e7a4 <[^>]*> nop
-+0000e7a8 <[^>]*> nop
-+0000e7ac <[^>]*> nop
-+0000e7b0 <[^>]*> nop
-+0000e7b4 <[^>]*> nop
-+0000e7b8 <[^>]*> nop
-+0000e7bc <[^>]*> nop
-+0000e7c0 <[^>]*> nop
-+0000e7c4 <[^>]*> nop
-+0000e7c8 <[^>]*> nop
-+0000e7cc <[^>]*> nop
-+0000e7d0 <[^>]*> nop
-+0000e7d4 <[^>]*> nop
-+0000e7d8 <[^>]*> nop
-+0000e7dc <[^>]*> nop
-+0000e7e0 <[^>]*> nop
-+0000e7e4 <[^>]*> nop
-+0000e7e8 <[^>]*> nop
-+0000e7ec <[^>]*> nop
-+0000e7f0 <[^>]*> nop
-+0000e7f4 <[^>]*> nop
-+0000e7f8 <[^>]*> nop
-+0000e7fc <[^>]*> nop
-+0000e800 <[^>]*> nop
-+0000e804 <[^>]*> nop
-+0000e808 <[^>]*> nop
-+0000e80c <[^>]*> nop
-+0000e810 <[^>]*> nop
-+0000e814 <[^>]*> nop
-+0000e818 <[^>]*> nop
-+0000e81c <[^>]*> nop
-+0000e820 <[^>]*> nop
-+0000e824 <[^>]*> nop
-+0000e828 <[^>]*> nop
-+0000e82c <[^>]*> nop
-+0000e830 <[^>]*> nop
-+0000e834 <[^>]*> nop
-+0000e838 <[^>]*> nop
-+0000e83c <[^>]*> nop
-+0000e840 <[^>]*> nop
-+0000e844 <[^>]*> nop
-+0000e848 <[^>]*> nop
-+0000e84c <[^>]*> nop
-+0000e850 <[^>]*> nop
-+0000e854 <[^>]*> nop
-+0000e858 <[^>]*> nop
-+0000e85c <[^>]*> nop
-+0000e860 <[^>]*> nop
-+0000e864 <[^>]*> nop
-+0000e868 <[^>]*> nop
-+0000e86c <[^>]*> nop
-+0000e870 <[^>]*> nop
-+0000e874 <[^>]*> nop
-+0000e878 <[^>]*> nop
-+0000e87c <[^>]*> nop
-+0000e880 <[^>]*> nop
-+0000e884 <[^>]*> nop
-+0000e888 <[^>]*> nop
-+0000e88c <[^>]*> nop
-+0000e890 <[^>]*> nop
-+0000e894 <[^>]*> nop
-+0000e898 <[^>]*> nop
-+0000e89c <[^>]*> nop
-+0000e8a0 <[^>]*> nop
-+0000e8a4 <[^>]*> nop
-+0000e8a8 <[^>]*> nop
-+0000e8ac <[^>]*> nop
-+0000e8b0 <[^>]*> nop
-+0000e8b4 <[^>]*> nop
-+0000e8b8 <[^>]*> nop
-+0000e8bc <[^>]*> nop
-+0000e8c0 <[^>]*> nop
-+0000e8c4 <[^>]*> nop
-+0000e8c8 <[^>]*> nop
-+0000e8cc <[^>]*> nop
-+0000e8d0 <[^>]*> nop
-+0000e8d4 <[^>]*> nop
-+0000e8d8 <[^>]*> nop
-+0000e8dc <[^>]*> nop
-+0000e8e0 <[^>]*> nop
-+0000e8e4 <[^>]*> nop
-+0000e8e8 <[^>]*> nop
-+0000e8ec <[^>]*> nop
-+0000e8f0 <[^>]*> nop
-+0000e8f4 <[^>]*> nop
-+0000e8f8 <[^>]*> nop
-+0000e8fc <[^>]*> nop
-+0000e900 <[^>]*> nop
-+0000e904 <[^>]*> nop
-+0000e908 <[^>]*> nop
-+0000e90c <[^>]*> nop
-+0000e910 <[^>]*> nop
-+0000e914 <[^>]*> nop
-+0000e918 <[^>]*> nop
-+0000e91c <[^>]*> nop
-+0000e920 <[^>]*> nop
-+0000e924 <[^>]*> nop
-+0000e928 <[^>]*> nop
-+0000e92c <[^>]*> nop
-+0000e930 <[^>]*> nop
-+0000e934 <[^>]*> nop
-+0000e938 <[^>]*> nop
-+0000e93c <[^>]*> nop
-+0000e940 <[^>]*> nop
-+0000e944 <[^>]*> nop
-+0000e948 <[^>]*> nop
-+0000e94c <[^>]*> nop
-+0000e950 <[^>]*> nop
-+0000e954 <[^>]*> nop
-+0000e958 <[^>]*> nop
-+0000e95c <[^>]*> nop
-+0000e960 <[^>]*> nop
-+0000e964 <[^>]*> nop
-+0000e968 <[^>]*> nop
-+0000e96c <[^>]*> nop
-+0000e970 <[^>]*> nop
-+0000e974 <[^>]*> nop
-+0000e978 <[^>]*> nop
-+0000e97c <[^>]*> nop
-+0000e980 <[^>]*> nop
-+0000e984 <[^>]*> nop
-+0000e988 <[^>]*> nop
-+0000e98c <[^>]*> nop
-+0000e990 <[^>]*> nop
-+0000e994 <[^>]*> nop
-+0000e998 <[^>]*> nop
-+0000e99c <[^>]*> nop
-+0000e9a0 <[^>]*> nop
-+0000e9a4 <[^>]*> nop
-+0000e9a8 <[^>]*> nop
-+0000e9ac <[^>]*> nop
-+0000e9b0 <[^>]*> nop
-+0000e9b4 <[^>]*> nop
-+0000e9b8 <[^>]*> nop
-+0000e9bc <[^>]*> nop
-+0000e9c0 <[^>]*> nop
-+0000e9c4 <[^>]*> nop
-+0000e9c8 <[^>]*> nop
-+0000e9cc <[^>]*> nop
-+0000e9d0 <[^>]*> nop
-+0000e9d4 <[^>]*> nop
-+0000e9d8 <[^>]*> nop
-+0000e9dc <[^>]*> nop
-+0000e9e0 <[^>]*> nop
-+0000e9e4 <[^>]*> nop
-+0000e9e8 <[^>]*> nop
-+0000e9ec <[^>]*> nop
-+0000e9f0 <[^>]*> nop
-+0000e9f4 <[^>]*> nop
-+0000e9f8 <[^>]*> nop
-+0000e9fc <[^>]*> nop
-+0000ea00 <[^>]*> nop
-+0000ea04 <[^>]*> nop
-+0000ea08 <[^>]*> nop
-+0000ea0c <[^>]*> nop
-+0000ea10 <[^>]*> nop
-+0000ea14 <[^>]*> nop
-+0000ea18 <[^>]*> nop
-+0000ea1c <[^>]*> nop
-+0000ea20 <[^>]*> nop
-+0000ea24 <[^>]*> nop
-+0000ea28 <[^>]*> nop
-+0000ea2c <[^>]*> nop
-+0000ea30 <[^>]*> nop
-+0000ea34 <[^>]*> nop
-+0000ea38 <[^>]*> nop
-+0000ea3c <[^>]*> nop
-+0000ea40 <[^>]*> nop
-+0000ea44 <[^>]*> nop
-+0000ea48 <[^>]*> nop
-+0000ea4c <[^>]*> nop
-+0000ea50 <[^>]*> nop
-+0000ea54 <[^>]*> nop
-+0000ea58 <[^>]*> nop
-+0000ea5c <[^>]*> nop
-+0000ea60 <[^>]*> nop
-+0000ea64 <[^>]*> nop
-+0000ea68 <[^>]*> nop
-+0000ea6c <[^>]*> nop
-+0000ea70 <[^>]*> nop
-+0000ea74 <[^>]*> nop
-+0000ea78 <[^>]*> nop
-+0000ea7c <[^>]*> nop
-+0000ea80 <[^>]*> nop
-+0000ea84 <[^>]*> nop
-+0000ea88 <[^>]*> nop
-+0000ea8c <[^>]*> nop
-+0000ea90 <[^>]*> nop
-+0000ea94 <[^>]*> nop
-+0000ea98 <[^>]*> nop
-+0000ea9c <[^>]*> nop
-+0000eaa0 <[^>]*> nop
-+0000eaa4 <[^>]*> nop
-+0000eaa8 <[^>]*> nop
-+0000eaac <[^>]*> nop
-+0000eab0 <[^>]*> nop
-+0000eab4 <[^>]*> nop
-+0000eab8 <[^>]*> nop
-+0000eabc <[^>]*> nop
-+0000eac0 <[^>]*> nop
-+0000eac4 <[^>]*> nop
-+0000eac8 <[^>]*> nop
-+0000eacc <[^>]*> nop
-+0000ead0 <[^>]*> nop
-+0000ead4 <[^>]*> nop
-+0000ead8 <[^>]*> nop
-+0000eadc <[^>]*> nop
-+0000eae0 <[^>]*> nop
-+0000eae4 <[^>]*> nop
-+0000eae8 <[^>]*> nop
-+0000eaec <[^>]*> nop
-+0000eaf0 <[^>]*> nop
-+0000eaf4 <[^>]*> nop
-+0000eaf8 <[^>]*> nop
-+0000eafc <[^>]*> nop
-+0000eb00 <[^>]*> nop
-+0000eb04 <[^>]*> nop
-+0000eb08 <[^>]*> nop
-+0000eb0c <[^>]*> nop
-+0000eb10 <[^>]*> nop
-+0000eb14 <[^>]*> nop
-+0000eb18 <[^>]*> nop
-+0000eb1c <[^>]*> nop
-+0000eb20 <[^>]*> nop
-+0000eb24 <[^>]*> nop
-+0000eb28 <[^>]*> nop
-+0000eb2c <[^>]*> nop
-+0000eb30 <[^>]*> nop
-+0000eb34 <[^>]*> nop
-+0000eb38 <[^>]*> nop
-+0000eb3c <[^>]*> nop
-+0000eb40 <[^>]*> nop
-+0000eb44 <[^>]*> nop
-+0000eb48 <[^>]*> nop
-+0000eb4c <[^>]*> nop
-+0000eb50 <[^>]*> nop
-+0000eb54 <[^>]*> nop
-+0000eb58 <[^>]*> nop
-+0000eb5c <[^>]*> nop
-+0000eb60 <[^>]*> nop
-+0000eb64 <[^>]*> nop
-+0000eb68 <[^>]*> nop
-+0000eb6c <[^>]*> nop
-+0000eb70 <[^>]*> nop
-+0000eb74 <[^>]*> nop
-+0000eb78 <[^>]*> nop
-+0000eb7c <[^>]*> nop
-+0000eb80 <[^>]*> nop
-+0000eb84 <[^>]*> nop
-+0000eb88 <[^>]*> nop
-+0000eb8c <[^>]*> nop
-+0000eb90 <[^>]*> nop
-+0000eb94 <[^>]*> nop
-+0000eb98 <[^>]*> nop
-+0000eb9c <[^>]*> nop
-+0000eba0 <[^>]*> nop
-+0000eba4 <[^>]*> nop
-+0000eba8 <[^>]*> nop
-+0000ebac <[^>]*> nop
-+0000ebb0 <[^>]*> nop
-+0000ebb4 <[^>]*> nop
-+0000ebb8 <[^>]*> nop
-+0000ebbc <[^>]*> nop
-+0000ebc0 <[^>]*> nop
-+0000ebc4 <[^>]*> nop
-+0000ebc8 <[^>]*> nop
-+0000ebcc <[^>]*> nop
-+0000ebd0 <[^>]*> nop
-+0000ebd4 <[^>]*> nop
-+0000ebd8 <[^>]*> nop
-+0000ebdc <[^>]*> nop
-+0000ebe0 <[^>]*> nop
-+0000ebe4 <[^>]*> nop
-+0000ebe8 <[^>]*> nop
-+0000ebec <[^>]*> nop
-+0000ebf0 <[^>]*> nop
-+0000ebf4 <[^>]*> nop
-+0000ebf8 <[^>]*> nop
-+0000ebfc <[^>]*> nop
-+0000ec00 <[^>]*> nop
-+0000ec04 <[^>]*> nop
-+0000ec08 <[^>]*> nop
-+0000ec0c <[^>]*> nop
-+0000ec10 <[^>]*> nop
-+0000ec14 <[^>]*> nop
-+0000ec18 <[^>]*> nop
-+0000ec1c <[^>]*> nop
-+0000ec20 <[^>]*> nop
-+0000ec24 <[^>]*> nop
-+0000ec28 <[^>]*> nop
-+0000ec2c <[^>]*> nop
-+0000ec30 <[^>]*> nop
-+0000ec34 <[^>]*> nop
-+0000ec38 <[^>]*> nop
-+0000ec3c <[^>]*> nop
-+0000ec40 <[^>]*> nop
-+0000ec44 <[^>]*> nop
-+0000ec48 <[^>]*> nop
-+0000ec4c <[^>]*> nop
-+0000ec50 <[^>]*> nop
-+0000ec54 <[^>]*> nop
-+0000ec58 <[^>]*> nop
-+0000ec5c <[^>]*> nop
-+0000ec60 <[^>]*> nop
-+0000ec64 <[^>]*> nop
-+0000ec68 <[^>]*> nop
-+0000ec6c <[^>]*> nop
-+0000ec70 <[^>]*> nop
-+0000ec74 <[^>]*> nop
-+0000ec78 <[^>]*> nop
-+0000ec7c <[^>]*> nop
-+0000ec80 <[^>]*> nop
-+0000ec84 <[^>]*> nop
-+0000ec88 <[^>]*> nop
-+0000ec8c <[^>]*> nop
-+0000ec90 <[^>]*> nop
-+0000ec94 <[^>]*> nop
-+0000ec98 <[^>]*> nop
-+0000ec9c <[^>]*> nop
-+0000eca0 <[^>]*> nop
-+0000eca4 <[^>]*> nop
-+0000eca8 <[^>]*> nop
-+0000ecac <[^>]*> nop
-+0000ecb0 <[^>]*> nop
-+0000ecb4 <[^>]*> nop
-+0000ecb8 <[^>]*> nop
-+0000ecbc <[^>]*> nop
-+0000ecc0 <[^>]*> nop
-+0000ecc4 <[^>]*> nop
-+0000ecc8 <[^>]*> nop
-+0000eccc <[^>]*> nop
-+0000ecd0 <[^>]*> nop
-+0000ecd4 <[^>]*> nop
-+0000ecd8 <[^>]*> nop
-+0000ecdc <[^>]*> nop
-+0000ece0 <[^>]*> nop
-+0000ece4 <[^>]*> nop
-+0000ece8 <[^>]*> nop
-+0000ecec <[^>]*> nop
-+0000ecf0 <[^>]*> nop
-+0000ecf4 <[^>]*> nop
-+0000ecf8 <[^>]*> nop
-+0000ecfc <[^>]*> nop
-+0000ed00 <[^>]*> nop
-+0000ed04 <[^>]*> nop
-+0000ed08 <[^>]*> nop
-+0000ed0c <[^>]*> nop
-+0000ed10 <[^>]*> nop
-+0000ed14 <[^>]*> nop
-+0000ed18 <[^>]*> nop
-+0000ed1c <[^>]*> nop
-+0000ed20 <[^>]*> nop
-+0000ed24 <[^>]*> nop
-+0000ed28 <[^>]*> nop
-+0000ed2c <[^>]*> nop
-+0000ed30 <[^>]*> nop
-+0000ed34 <[^>]*> nop
-+0000ed38 <[^>]*> nop
-+0000ed3c <[^>]*> nop
-+0000ed40 <[^>]*> nop
-+0000ed44 <[^>]*> nop
-+0000ed48 <[^>]*> nop
-+0000ed4c <[^>]*> nop
-+0000ed50 <[^>]*> nop
-+0000ed54 <[^>]*> nop
-+0000ed58 <[^>]*> nop
-+0000ed5c <[^>]*> nop
-+0000ed60 <[^>]*> nop
-+0000ed64 <[^>]*> nop
-+0000ed68 <[^>]*> nop
-+0000ed6c <[^>]*> nop
-+0000ed70 <[^>]*> nop
-+0000ed74 <[^>]*> nop
-+0000ed78 <[^>]*> nop
-+0000ed7c <[^>]*> nop
-+0000ed80 <[^>]*> nop
-+0000ed84 <[^>]*> nop
-+0000ed88 <[^>]*> nop
-+0000ed8c <[^>]*> nop
-+0000ed90 <[^>]*> nop
-+0000ed94 <[^>]*> nop
-+0000ed98 <[^>]*> nop
-+0000ed9c <[^>]*> nop
-+0000eda0 <[^>]*> nop
-+0000eda4 <[^>]*> nop
-+0000eda8 <[^>]*> nop
-+0000edac <[^>]*> nop
-+0000edb0 <[^>]*> nop
-+0000edb4 <[^>]*> nop
-+0000edb8 <[^>]*> nop
-+0000edbc <[^>]*> nop
-+0000edc0 <[^>]*> nop
-+0000edc4 <[^>]*> nop
-+0000edc8 <[^>]*> nop
-+0000edcc <[^>]*> nop
-+0000edd0 <[^>]*> nop
-+0000edd4 <[^>]*> nop
-+0000edd8 <[^>]*> nop
-+0000eddc <[^>]*> nop
-+0000ede0 <[^>]*> nop
-+0000ede4 <[^>]*> nop
-+0000ede8 <[^>]*> nop
-+0000edec <[^>]*> nop
-+0000edf0 <[^>]*> nop
-+0000edf4 <[^>]*> nop
-+0000edf8 <[^>]*> nop
-+0000edfc <[^>]*> nop
-+0000ee00 <[^>]*> nop
-+0000ee04 <[^>]*> nop
-+0000ee08 <[^>]*> nop
-+0000ee0c <[^>]*> nop
-+0000ee10 <[^>]*> nop
-+0000ee14 <[^>]*> nop
-+0000ee18 <[^>]*> nop
-+0000ee1c <[^>]*> nop
-+0000ee20 <[^>]*> nop
-+0000ee24 <[^>]*> nop
-+0000ee28 <[^>]*> nop
-+0000ee2c <[^>]*> nop
-+0000ee30 <[^>]*> nop
-+0000ee34 <[^>]*> nop
-+0000ee38 <[^>]*> nop
-+0000ee3c <[^>]*> nop
-+0000ee40 <[^>]*> nop
-+0000ee44 <[^>]*> nop
-+0000ee48 <[^>]*> nop
-+0000ee4c <[^>]*> nop
-+0000ee50 <[^>]*> nop
-+0000ee54 <[^>]*> nop
-+0000ee58 <[^>]*> nop
-+0000ee5c <[^>]*> nop
-+0000ee60 <[^>]*> nop
-+0000ee64 <[^>]*> nop
-+0000ee68 <[^>]*> nop
-+0000ee6c <[^>]*> nop
-+0000ee70 <[^>]*> nop
-+0000ee74 <[^>]*> nop
-+0000ee78 <[^>]*> nop
-+0000ee7c <[^>]*> nop
-+0000ee80 <[^>]*> nop
-+0000ee84 <[^>]*> nop
-+0000ee88 <[^>]*> nop
-+0000ee8c <[^>]*> nop
-+0000ee90 <[^>]*> nop
-+0000ee94 <[^>]*> nop
-+0000ee98 <[^>]*> nop
-+0000ee9c <[^>]*> nop
-+0000eea0 <[^>]*> nop
-+0000eea4 <[^>]*> nop
-+0000eea8 <[^>]*> nop
-+0000eeac <[^>]*> nop
-+0000eeb0 <[^>]*> nop
-+0000eeb4 <[^>]*> nop
-+0000eeb8 <[^>]*> nop
-+0000eebc <[^>]*> nop
-+0000eec0 <[^>]*> nop
-+0000eec4 <[^>]*> nop
-+0000eec8 <[^>]*> nop
-+0000eecc <[^>]*> nop
-+0000eed0 <[^>]*> nop
-+0000eed4 <[^>]*> nop
-+0000eed8 <[^>]*> nop
-+0000eedc <[^>]*> nop
-+0000eee0 <[^>]*> nop
-+0000eee4 <[^>]*> nop
-+0000eee8 <[^>]*> nop
-+0000eeec <[^>]*> nop
-+0000eef0 <[^>]*> nop
-+0000eef4 <[^>]*> nop
-+0000eef8 <[^>]*> nop
-+0000eefc <[^>]*> nop
-+0000ef00 <[^>]*> nop
-+0000ef04 <[^>]*> nop
-+0000ef08 <[^>]*> nop
-+0000ef0c <[^>]*> nop
-+0000ef10 <[^>]*> nop
-+0000ef14 <[^>]*> nop
-+0000ef18 <[^>]*> nop
-+0000ef1c <[^>]*> nop
-+0000ef20 <[^>]*> nop
-+0000ef24 <[^>]*> nop
-+0000ef28 <[^>]*> nop
-+0000ef2c <[^>]*> nop
-+0000ef30 <[^>]*> nop
-+0000ef34 <[^>]*> nop
-+0000ef38 <[^>]*> nop
-+0000ef3c <[^>]*> nop
-+0000ef40 <[^>]*> nop
-+0000ef44 <[^>]*> nop
-+0000ef48 <[^>]*> nop
-+0000ef4c <[^>]*> nop
-+0000ef50 <[^>]*> nop
-+0000ef54 <[^>]*> nop
-+0000ef58 <[^>]*> nop
-+0000ef5c <[^>]*> nop
-+0000ef60 <[^>]*> nop
-+0000ef64 <[^>]*> nop
-+0000ef68 <[^>]*> nop
-+0000ef6c <[^>]*> nop
-+0000ef70 <[^>]*> nop
-+0000ef74 <[^>]*> nop
-+0000ef78 <[^>]*> nop
-+0000ef7c <[^>]*> nop
-+0000ef80 <[^>]*> nop
-+0000ef84 <[^>]*> nop
-+0000ef88 <[^>]*> nop
-+0000ef8c <[^>]*> nop
-+0000ef90 <[^>]*> nop
-+0000ef94 <[^>]*> nop
-+0000ef98 <[^>]*> nop
-+0000ef9c <[^>]*> nop
-+0000efa0 <[^>]*> nop
-+0000efa4 <[^>]*> nop
-+0000efa8 <[^>]*> nop
-+0000efac <[^>]*> nop
-+0000efb0 <[^>]*> nop
-+0000efb4 <[^>]*> nop
-+0000efb8 <[^>]*> nop
-+0000efbc <[^>]*> nop
-+0000efc0 <[^>]*> nop
-+0000efc4 <[^>]*> nop
-+0000efc8 <[^>]*> nop
-+0000efcc <[^>]*> nop
-+0000efd0 <[^>]*> nop
-+0000efd4 <[^>]*> nop
-+0000efd8 <[^>]*> nop
-+0000efdc <[^>]*> nop
-+0000efe0 <[^>]*> nop
-+0000efe4 <[^>]*> nop
-+0000efe8 <[^>]*> nop
-+0000efec <[^>]*> nop
-+0000eff0 <[^>]*> nop
-+0000eff4 <[^>]*> nop
-+0000eff8 <[^>]*> nop
-+0000effc <[^>]*> nop
-+0000f000 <[^>]*> nop
-+0000f004 <[^>]*> nop
-+0000f008 <[^>]*> nop
-+0000f00c <[^>]*> nop
-+0000f010 <[^>]*> nop
-+0000f014 <[^>]*> nop
-+0000f018 <[^>]*> nop
-+0000f01c <[^>]*> nop
-+0000f020 <[^>]*> nop
-+0000f024 <[^>]*> nop
-+0000f028 <[^>]*> nop
-+0000f02c <[^>]*> nop
-+0000f030 <[^>]*> nop
-+0000f034 <[^>]*> nop
-+0000f038 <[^>]*> nop
-+0000f03c <[^>]*> nop
-+0000f040 <[^>]*> nop
-+0000f044 <[^>]*> nop
-+0000f048 <[^>]*> nop
-+0000f04c <[^>]*> nop
-+0000f050 <[^>]*> nop
-+0000f054 <[^>]*> nop
-+0000f058 <[^>]*> nop
-+0000f05c <[^>]*> nop
-+0000f060 <[^>]*> nop
-+0000f064 <[^>]*> nop
-+0000f068 <[^>]*> nop
-+0000f06c <[^>]*> nop
-+0000f070 <[^>]*> nop
-+0000f074 <[^>]*> nop
-+0000f078 <[^>]*> nop
-+0000f07c <[^>]*> nop
-+0000f080 <[^>]*> nop
-+0000f084 <[^>]*> nop
-+0000f088 <[^>]*> nop
-+0000f08c <[^>]*> nop
-+0000f090 <[^>]*> nop
-+0000f094 <[^>]*> nop
-+0000f098 <[^>]*> nop
-+0000f09c <[^>]*> nop
-+0000f0a0 <[^>]*> nop
-+0000f0a4 <[^>]*> nop
-+0000f0a8 <[^>]*> nop
-+0000f0ac <[^>]*> nop
-+0000f0b0 <[^>]*> nop
-+0000f0b4 <[^>]*> nop
-+0000f0b8 <[^>]*> nop
-+0000f0bc <[^>]*> nop
-+0000f0c0 <[^>]*> nop
-+0000f0c4 <[^>]*> nop
-+0000f0c8 <[^>]*> nop
-+0000f0cc <[^>]*> nop
-+0000f0d0 <[^>]*> nop
-+0000f0d4 <[^>]*> nop
-+0000f0d8 <[^>]*> nop
-+0000f0dc <[^>]*> nop
-+0000f0e0 <[^>]*> nop
-+0000f0e4 <[^>]*> nop
-+0000f0e8 <[^>]*> nop
-+0000f0ec <[^>]*> nop
-+0000f0f0 <[^>]*> nop
-+0000f0f4 <[^>]*> nop
-+0000f0f8 <[^>]*> nop
-+0000f0fc <[^>]*> nop
-+0000f100 <[^>]*> nop
-+0000f104 <[^>]*> nop
-+0000f108 <[^>]*> nop
-+0000f10c <[^>]*> nop
-+0000f110 <[^>]*> nop
-+0000f114 <[^>]*> nop
-+0000f118 <[^>]*> nop
-+0000f11c <[^>]*> nop
-+0000f120 <[^>]*> nop
-+0000f124 <[^>]*> nop
-+0000f128 <[^>]*> nop
-+0000f12c <[^>]*> nop
-+0000f130 <[^>]*> nop
-+0000f134 <[^>]*> nop
-+0000f138 <[^>]*> nop
-+0000f13c <[^>]*> nop
-+0000f140 <[^>]*> nop
-+0000f144 <[^>]*> nop
-+0000f148 <[^>]*> nop
-+0000f14c <[^>]*> nop
-+0000f150 <[^>]*> nop
-+0000f154 <[^>]*> nop
-+0000f158 <[^>]*> nop
-+0000f15c <[^>]*> nop
-+0000f160 <[^>]*> nop
-+0000f164 <[^>]*> nop
-+0000f168 <[^>]*> nop
-+0000f16c <[^>]*> nop
-+0000f170 <[^>]*> nop
-+0000f174 <[^>]*> nop
-+0000f178 <[^>]*> nop
-+0000f17c <[^>]*> nop
-+0000f180 <[^>]*> nop
-+0000f184 <[^>]*> nop
-+0000f188 <[^>]*> nop
-+0000f18c <[^>]*> nop
-+0000f190 <[^>]*> nop
-+0000f194 <[^>]*> nop
-+0000f198 <[^>]*> nop
-+0000f19c <[^>]*> nop
-+0000f1a0 <[^>]*> nop
-+0000f1a4 <[^>]*> nop
-+0000f1a8 <[^>]*> nop
-+0000f1ac <[^>]*> nop
-+0000f1b0 <[^>]*> nop
-+0000f1b4 <[^>]*> nop
-+0000f1b8 <[^>]*> nop
-+0000f1bc <[^>]*> nop
-+0000f1c0 <[^>]*> nop
-+0000f1c4 <[^>]*> nop
-+0000f1c8 <[^>]*> nop
-+0000f1cc <[^>]*> nop
-+0000f1d0 <[^>]*> nop
-+0000f1d4 <[^>]*> nop
-+0000f1d8 <[^>]*> nop
-+0000f1dc <[^>]*> nop
-+0000f1e0 <[^>]*> nop
-+0000f1e4 <[^>]*> nop
-+0000f1e8 <[^>]*> nop
-+0000f1ec <[^>]*> nop
-+0000f1f0 <[^>]*> nop
-+0000f1f4 <[^>]*> nop
-+0000f1f8 <[^>]*> nop
-+0000f1fc <[^>]*> nop
-+0000f200 <[^>]*> nop
-+0000f204 <[^>]*> nop
-+0000f208 <[^>]*> nop
-+0000f20c <[^>]*> nop
-+0000f210 <[^>]*> nop
-+0000f214 <[^>]*> nop
-+0000f218 <[^>]*> nop
-+0000f21c <[^>]*> nop
-+0000f220 <[^>]*> nop
-+0000f224 <[^>]*> nop
-+0000f228 <[^>]*> nop
-+0000f22c <[^>]*> nop
-+0000f230 <[^>]*> nop
-+0000f234 <[^>]*> nop
-+0000f238 <[^>]*> nop
-+0000f23c <[^>]*> nop
-+0000f240 <[^>]*> nop
-+0000f244 <[^>]*> nop
-+0000f248 <[^>]*> nop
-+0000f24c <[^>]*> nop
-+0000f250 <[^>]*> nop
-+0000f254 <[^>]*> nop
-+0000f258 <[^>]*> nop
-+0000f25c <[^>]*> nop
-+0000f260 <[^>]*> nop
-+0000f264 <[^>]*> nop
-+0000f268 <[^>]*> nop
-+0000f26c <[^>]*> nop
-+0000f270 <[^>]*> nop
-+0000f274 <[^>]*> nop
-+0000f278 <[^>]*> nop
-+0000f27c <[^>]*> nop
-+0000f280 <[^>]*> nop
-+0000f284 <[^>]*> nop
-+0000f288 <[^>]*> nop
-+0000f28c <[^>]*> nop
-+0000f290 <[^>]*> nop
-+0000f294 <[^>]*> nop
-+0000f298 <[^>]*> nop
-+0000f29c <[^>]*> nop
-+0000f2a0 <[^>]*> nop
-+0000f2a4 <[^>]*> nop
-+0000f2a8 <[^>]*> nop
-+0000f2ac <[^>]*> nop
-+0000f2b0 <[^>]*> nop
-+0000f2b4 <[^>]*> nop
-+0000f2b8 <[^>]*> nop
-+0000f2bc <[^>]*> nop
-+0000f2c0 <[^>]*> nop
-+0000f2c4 <[^>]*> nop
-+0000f2c8 <[^>]*> nop
-+0000f2cc <[^>]*> nop
-+0000f2d0 <[^>]*> nop
-+0000f2d4 <[^>]*> nop
-+0000f2d8 <[^>]*> nop
-+0000f2dc <[^>]*> nop
-+0000f2e0 <[^>]*> nop
-+0000f2e4 <[^>]*> nop
-+0000f2e8 <[^>]*> nop
-+0000f2ec <[^>]*> nop
-+0000f2f0 <[^>]*> nop
-+0000f2f4 <[^>]*> nop
-+0000f2f8 <[^>]*> nop
-+0000f2fc <[^>]*> nop
-+0000f300 <[^>]*> nop
-+0000f304 <[^>]*> nop
-+0000f308 <[^>]*> nop
-+0000f30c <[^>]*> nop
-+0000f310 <[^>]*> nop
-+0000f314 <[^>]*> nop
-+0000f318 <[^>]*> nop
-+0000f31c <[^>]*> nop
-+0000f320 <[^>]*> nop
-+0000f324 <[^>]*> nop
-+0000f328 <[^>]*> nop
-+0000f32c <[^>]*> nop
-+0000f330 <[^>]*> nop
-+0000f334 <[^>]*> nop
-+0000f338 <[^>]*> nop
-+0000f33c <[^>]*> nop
-+0000f340 <[^>]*> nop
-+0000f344 <[^>]*> nop
-+0000f348 <[^>]*> nop
-+0000f34c <[^>]*> nop
-+0000f350 <[^>]*> nop
-+0000f354 <[^>]*> nop
-+0000f358 <[^>]*> nop
-+0000f35c <[^>]*> nop
-+0000f360 <[^>]*> nop
-+0000f364 <[^>]*> nop
-+0000f368 <[^>]*> nop
-+0000f36c <[^>]*> nop
-+0000f370 <[^>]*> nop
-+0000f374 <[^>]*> nop
-+0000f378 <[^>]*> nop
-+0000f37c <[^>]*> nop
-+0000f380 <[^>]*> nop
-+0000f384 <[^>]*> nop
-+0000f388 <[^>]*> nop
-+0000f38c <[^>]*> nop
-+0000f390 <[^>]*> nop
-+0000f394 <[^>]*> nop
-+0000f398 <[^>]*> nop
-+0000f39c <[^>]*> nop
-+0000f3a0 <[^>]*> nop
-+0000f3a4 <[^>]*> nop
-+0000f3a8 <[^>]*> nop
-+0000f3ac <[^>]*> nop
-+0000f3b0 <[^>]*> nop
-+0000f3b4 <[^>]*> nop
-+0000f3b8 <[^>]*> nop
-+0000f3bc <[^>]*> nop
-+0000f3c0 <[^>]*> nop
-+0000f3c4 <[^>]*> nop
-+0000f3c8 <[^>]*> nop
-+0000f3cc <[^>]*> nop
-+0000f3d0 <[^>]*> nop
-+0000f3d4 <[^>]*> nop
-+0000f3d8 <[^>]*> nop
-+0000f3dc <[^>]*> nop
-+0000f3e0 <[^>]*> nop
-+0000f3e4 <[^>]*> nop
-+0000f3e8 <[^>]*> nop
-+0000f3ec <[^>]*> nop
-+0000f3f0 <[^>]*> nop
-+0000f3f4 <[^>]*> nop
-+0000f3f8 <[^>]*> nop
-+0000f3fc <[^>]*> nop
-+0000f400 <[^>]*> nop
-+0000f404 <[^>]*> nop
-+0000f408 <[^>]*> nop
-+0000f40c <[^>]*> nop
-+0000f410 <[^>]*> nop
-+0000f414 <[^>]*> nop
-+0000f418 <[^>]*> nop
-+0000f41c <[^>]*> nop
-+0000f420 <[^>]*> nop
-+0000f424 <[^>]*> nop
-+0000f428 <[^>]*> nop
-+0000f42c <[^>]*> nop
-+0000f430 <[^>]*> nop
-+0000f434 <[^>]*> nop
-+0000f438 <[^>]*> nop
-+0000f43c <[^>]*> nop
-+0000f440 <[^>]*> nop
-+0000f444 <[^>]*> nop
-+0000f448 <[^>]*> nop
-+0000f44c <[^>]*> nop
-+0000f450 <[^>]*> nop
-+0000f454 <[^>]*> nop
-+0000f458 <[^>]*> nop
-+0000f45c <[^>]*> nop
-+0000f460 <[^>]*> nop
-+0000f464 <[^>]*> nop
-+0000f468 <[^>]*> nop
-+0000f46c <[^>]*> nop
-+0000f470 <[^>]*> nop
-+0000f474 <[^>]*> nop
-+0000f478 <[^>]*> nop
-+0000f47c <[^>]*> nop
-+0000f480 <[^>]*> nop
-+0000f484 <[^>]*> nop
-+0000f488 <[^>]*> nop
-+0000f48c <[^>]*> nop
-+0000f490 <[^>]*> nop
-+0000f494 <[^>]*> nop
-+0000f498 <[^>]*> nop
-+0000f49c <[^>]*> nop
-+0000f4a0 <[^>]*> nop
-+0000f4a4 <[^>]*> nop
-+0000f4a8 <[^>]*> nop
-+0000f4ac <[^>]*> nop
-+0000f4b0 <[^>]*> nop
-+0000f4b4 <[^>]*> nop
-+0000f4b8 <[^>]*> nop
-+0000f4bc <[^>]*> nop
-+0000f4c0 <[^>]*> nop
-+0000f4c4 <[^>]*> nop
-+0000f4c8 <[^>]*> nop
-+0000f4cc <[^>]*> nop
-+0000f4d0 <[^>]*> nop
-+0000f4d4 <[^>]*> nop
-+0000f4d8 <[^>]*> nop
-+0000f4dc <[^>]*> nop
-+0000f4e0 <[^>]*> nop
-+0000f4e4 <[^>]*> nop
-+0000f4e8 <[^>]*> nop
-+0000f4ec <[^>]*> nop
-+0000f4f0 <[^>]*> nop
-+0000f4f4 <[^>]*> nop
-+0000f4f8 <[^>]*> nop
-+0000f4fc <[^>]*> nop
-+0000f500 <[^>]*> nop
-+0000f504 <[^>]*> nop
-+0000f508 <[^>]*> nop
-+0000f50c <[^>]*> nop
-+0000f510 <[^>]*> nop
-+0000f514 <[^>]*> nop
-+0000f518 <[^>]*> nop
-+0000f51c <[^>]*> nop
-+0000f520 <[^>]*> nop
-+0000f524 <[^>]*> nop
-+0000f528 <[^>]*> nop
-+0000f52c <[^>]*> nop
-+0000f530 <[^>]*> nop
-+0000f534 <[^>]*> nop
-+0000f538 <[^>]*> nop
-+0000f53c <[^>]*> nop
-+0000f540 <[^>]*> nop
-+0000f544 <[^>]*> nop
-+0000f548 <[^>]*> nop
-+0000f54c <[^>]*> nop
-+0000f550 <[^>]*> nop
-+0000f554 <[^>]*> nop
-+0000f558 <[^>]*> nop
-+0000f55c <[^>]*> nop
-+0000f560 <[^>]*> nop
-+0000f564 <[^>]*> nop
-+0000f568 <[^>]*> nop
-+0000f56c <[^>]*> nop
-+0000f570 <[^>]*> nop
-+0000f574 <[^>]*> nop
-+0000f578 <[^>]*> nop
-+0000f57c <[^>]*> nop
-+0000f580 <[^>]*> nop
-+0000f584 <[^>]*> nop
-+0000f588 <[^>]*> nop
-+0000f58c <[^>]*> nop
-+0000f590 <[^>]*> nop
-+0000f594 <[^>]*> nop
-+0000f598 <[^>]*> nop
-+0000f59c <[^>]*> nop
-+0000f5a0 <[^>]*> nop
-+0000f5a4 <[^>]*> nop
-+0000f5a8 <[^>]*> nop
-+0000f5ac <[^>]*> nop
-+0000f5b0 <[^>]*> nop
-+0000f5b4 <[^>]*> nop
-+0000f5b8 <[^>]*> nop
-+0000f5bc <[^>]*> nop
-+0000f5c0 <[^>]*> nop
-+0000f5c4 <[^>]*> nop
-+0000f5c8 <[^>]*> nop
-+0000f5cc <[^>]*> nop
-+0000f5d0 <[^>]*> nop
-+0000f5d4 <[^>]*> nop
-+0000f5d8 <[^>]*> nop
-+0000f5dc <[^>]*> nop
-+0000f5e0 <[^>]*> nop
-+0000f5e4 <[^>]*> nop
-+0000f5e8 <[^>]*> nop
-+0000f5ec <[^>]*> nop
-+0000f5f0 <[^>]*> nop
-+0000f5f4 <[^>]*> nop
-+0000f5f8 <[^>]*> nop
-+0000f5fc <[^>]*> nop
-+0000f600 <[^>]*> nop
-+0000f604 <[^>]*> nop
-+0000f608 <[^>]*> nop
-+0000f60c <[^>]*> nop
-+0000f610 <[^>]*> nop
-+0000f614 <[^>]*> nop
-+0000f618 <[^>]*> nop
-+0000f61c <[^>]*> nop
-+0000f620 <[^>]*> nop
-+0000f624 <[^>]*> nop
-+0000f628 <[^>]*> nop
-+0000f62c <[^>]*> nop
-+0000f630 <[^>]*> nop
-+0000f634 <[^>]*> nop
-+0000f638 <[^>]*> nop
-+0000f63c <[^>]*> nop
-+0000f640 <[^>]*> nop
-+0000f644 <[^>]*> nop
-+0000f648 <[^>]*> nop
-+0000f64c <[^>]*> nop
-+0000f650 <[^>]*> nop
-+0000f654 <[^>]*> nop
-+0000f658 <[^>]*> nop
-+0000f65c <[^>]*> nop
-+0000f660 <[^>]*> nop
-+0000f664 <[^>]*> nop
-+0000f668 <[^>]*> nop
-+0000f66c <[^>]*> nop
-+0000f670 <[^>]*> nop
-+0000f674 <[^>]*> nop
-+0000f678 <[^>]*> nop
-+0000f67c <[^>]*> nop
-+0000f680 <[^>]*> nop
-+0000f684 <[^>]*> nop
-+0000f688 <[^>]*> nop
-+0000f68c <[^>]*> nop
-+0000f690 <[^>]*> nop
-+0000f694 <[^>]*> nop
-+0000f698 <[^>]*> nop
-+0000f69c <[^>]*> nop
-+0000f6a0 <[^>]*> nop
-+0000f6a4 <[^>]*> nop
-+0000f6a8 <[^>]*> nop
-+0000f6ac <[^>]*> nop
-+0000f6b0 <[^>]*> nop
-+0000f6b4 <[^>]*> nop
-+0000f6b8 <[^>]*> nop
-+0000f6bc <[^>]*> nop
-+0000f6c0 <[^>]*> nop
-+0000f6c4 <[^>]*> nop
-+0000f6c8 <[^>]*> nop
-+0000f6cc <[^>]*> nop
-+0000f6d0 <[^>]*> nop
-+0000f6d4 <[^>]*> nop
-+0000f6d8 <[^>]*> nop
-+0000f6dc <[^>]*> nop
-+0000f6e0 <[^>]*> nop
-+0000f6e4 <[^>]*> nop
-+0000f6e8 <[^>]*> nop
-+0000f6ec <[^>]*> nop
-+0000f6f0 <[^>]*> nop
-+0000f6f4 <[^>]*> nop
-+0000f6f8 <[^>]*> nop
-+0000f6fc <[^>]*> nop
-+0000f700 <[^>]*> nop
-+0000f704 <[^>]*> nop
-+0000f708 <[^>]*> nop
-+0000f70c <[^>]*> nop
-+0000f710 <[^>]*> nop
-+0000f714 <[^>]*> nop
-+0000f718 <[^>]*> nop
-+0000f71c <[^>]*> nop
-+0000f720 <[^>]*> nop
-+0000f724 <[^>]*> nop
-+0000f728 <[^>]*> nop
-+0000f72c <[^>]*> nop
-+0000f730 <[^>]*> nop
-+0000f734 <[^>]*> nop
-+0000f738 <[^>]*> nop
-+0000f73c <[^>]*> nop
-+0000f740 <[^>]*> nop
-+0000f744 <[^>]*> nop
-+0000f748 <[^>]*> nop
-+0000f74c <[^>]*> nop
-+0000f750 <[^>]*> nop
-+0000f754 <[^>]*> nop
-+0000f758 <[^>]*> nop
-+0000f75c <[^>]*> nop
-+0000f760 <[^>]*> nop
-+0000f764 <[^>]*> nop
-+0000f768 <[^>]*> nop
-+0000f76c <[^>]*> nop
-+0000f770 <[^>]*> nop
-+0000f774 <[^>]*> nop
-+0000f778 <[^>]*> nop
-+0000f77c <[^>]*> nop
-+0000f780 <[^>]*> nop
-+0000f784 <[^>]*> nop
-+0000f788 <[^>]*> nop
-+0000f78c <[^>]*> nop
-+0000f790 <[^>]*> nop
-+0000f794 <[^>]*> nop
-+0000f798 <[^>]*> nop
-+0000f79c <[^>]*> nop
-+0000f7a0 <[^>]*> nop
-+0000f7a4 <[^>]*> nop
-+0000f7a8 <[^>]*> nop
-+0000f7ac <[^>]*> nop
-+0000f7b0 <[^>]*> nop
-+0000f7b4 <[^>]*> nop
-+0000f7b8 <[^>]*> nop
-+0000f7bc <[^>]*> nop
-+0000f7c0 <[^>]*> nop
-+0000f7c4 <[^>]*> nop
-+0000f7c8 <[^>]*> nop
-+0000f7cc <[^>]*> nop
-+0000f7d0 <[^>]*> nop
-+0000f7d4 <[^>]*> nop
-+0000f7d8 <[^>]*> nop
-+0000f7dc <[^>]*> nop
-+0000f7e0 <[^>]*> nop
-+0000f7e4 <[^>]*> nop
-+0000f7e8 <[^>]*> nop
-+0000f7ec <[^>]*> nop
-+0000f7f0 <[^>]*> nop
-+0000f7f4 <[^>]*> nop
-+0000f7f8 <[^>]*> nop
-+0000f7fc <[^>]*> nop
-+0000f800 <[^>]*> nop
-+0000f804 <[^>]*> nop
-+0000f808 <[^>]*> nop
-+0000f80c <[^>]*> nop
-+0000f810 <[^>]*> nop
-+0000f814 <[^>]*> nop
-+0000f818 <[^>]*> nop
-+0000f81c <[^>]*> nop
-+0000f820 <[^>]*> nop
-+0000f824 <[^>]*> nop
-+0000f828 <[^>]*> nop
-+0000f82c <[^>]*> nop
-+0000f830 <[^>]*> nop
-+0000f834 <[^>]*> nop
-+0000f838 <[^>]*> nop
-+0000f83c <[^>]*> nop
-+0000f840 <[^>]*> nop
-+0000f844 <[^>]*> nop
-+0000f848 <[^>]*> nop
-+0000f84c <[^>]*> nop
-+0000f850 <[^>]*> nop
-+0000f854 <[^>]*> nop
-+0000f858 <[^>]*> nop
-+0000f85c <[^>]*> nop
-+0000f860 <[^>]*> nop
-+0000f864 <[^>]*> nop
-+0000f868 <[^>]*> nop
-+0000f86c <[^>]*> nop
-+0000f870 <[^>]*> nop
-+0000f874 <[^>]*> nop
-+0000f878 <[^>]*> nop
-+0000f87c <[^>]*> nop
-+0000f880 <[^>]*> nop
-+0000f884 <[^>]*> nop
-+0000f888 <[^>]*> nop
-+0000f88c <[^>]*> nop
-+0000f890 <[^>]*> nop
-+0000f894 <[^>]*> nop
-+0000f898 <[^>]*> nop
-+0000f89c <[^>]*> nop
-+0000f8a0 <[^>]*> nop
-+0000f8a4 <[^>]*> nop
-+0000f8a8 <[^>]*> nop
-+0000f8ac <[^>]*> nop
-+0000f8b0 <[^>]*> nop
-+0000f8b4 <[^>]*> nop
-+0000f8b8 <[^>]*> nop
-+0000f8bc <[^>]*> nop
-+0000f8c0 <[^>]*> nop
-+0000f8c4 <[^>]*> nop
-+0000f8c8 <[^>]*> nop
-+0000f8cc <[^>]*> nop
-+0000f8d0 <[^>]*> nop
-+0000f8d4 <[^>]*> nop
-+0000f8d8 <[^>]*> nop
-+0000f8dc <[^>]*> nop
-+0000f8e0 <[^>]*> nop
-+0000f8e4 <[^>]*> nop
-+0000f8e8 <[^>]*> nop
-+0000f8ec <[^>]*> nop
-+0000f8f0 <[^>]*> nop
-+0000f8f4 <[^>]*> nop
-+0000f8f8 <[^>]*> nop
-+0000f8fc <[^>]*> nop
-+0000f900 <[^>]*> nop
-+0000f904 <[^>]*> nop
-+0000f908 <[^>]*> nop
-+0000f90c <[^>]*> nop
-+0000f910 <[^>]*> nop
-+0000f914 <[^>]*> nop
-+0000f918 <[^>]*> nop
-+0000f91c <[^>]*> nop
-+0000f920 <[^>]*> nop
-+0000f924 <[^>]*> nop
-+0000f928 <[^>]*> nop
-+0000f92c <[^>]*> nop
-+0000f930 <[^>]*> nop
-+0000f934 <[^>]*> nop
-+0000f938 <[^>]*> nop
-+0000f93c <[^>]*> nop
-+0000f940 <[^>]*> nop
-+0000f944 <[^>]*> nop
-+0000f948 <[^>]*> nop
-+0000f94c <[^>]*> nop
-+0000f950 <[^>]*> nop
-+0000f954 <[^>]*> nop
-+0000f958 <[^>]*> nop
-+0000f95c <[^>]*> nop
-+0000f960 <[^>]*> nop
-+0000f964 <[^>]*> nop
-+0000f968 <[^>]*> nop
-+0000f96c <[^>]*> nop
-+0000f970 <[^>]*> nop
-+0000f974 <[^>]*> nop
-+0000f978 <[^>]*> nop
-+0000f97c <[^>]*> nop
-+0000f980 <[^>]*> nop
-+0000f984 <[^>]*> nop
-+0000f988 <[^>]*> nop
-+0000f98c <[^>]*> nop
-+0000f990 <[^>]*> nop
-+0000f994 <[^>]*> nop
-+0000f998 <[^>]*> nop
-+0000f99c <[^>]*> nop
-+0000f9a0 <[^>]*> nop
-+0000f9a4 <[^>]*> nop
-+0000f9a8 <[^>]*> nop
-+0000f9ac <[^>]*> nop
-+0000f9b0 <[^>]*> nop
-+0000f9b4 <[^>]*> nop
-+0000f9b8 <[^>]*> nop
-+0000f9bc <[^>]*> nop
-+0000f9c0 <[^>]*> nop
-+0000f9c4 <[^>]*> nop
-+0000f9c8 <[^>]*> nop
-+0000f9cc <[^>]*> nop
-+0000f9d0 <[^>]*> nop
-+0000f9d4 <[^>]*> nop
-+0000f9d8 <[^>]*> nop
-+0000f9dc <[^>]*> nop
-+0000f9e0 <[^>]*> nop
-+0000f9e4 <[^>]*> nop
-+0000f9e8 <[^>]*> nop
-+0000f9ec <[^>]*> nop
-+0000f9f0 <[^>]*> nop
-+0000f9f4 <[^>]*> nop
-+0000f9f8 <[^>]*> nop
-+0000f9fc <[^>]*> nop
-+0000fa00 <[^>]*> nop
-+0000fa04 <[^>]*> nop
-+0000fa08 <[^>]*> nop
-+0000fa0c <[^>]*> nop
-+0000fa10 <[^>]*> nop
-+0000fa14 <[^>]*> nop
-+0000fa18 <[^>]*> nop
-+0000fa1c <[^>]*> nop
-+0000fa20 <[^>]*> nop
-+0000fa24 <[^>]*> nop
-+0000fa28 <[^>]*> nop
-+0000fa2c <[^>]*> nop
-+0000fa30 <[^>]*> nop
-+0000fa34 <[^>]*> nop
-+0000fa38 <[^>]*> nop
-+0000fa3c <[^>]*> nop
-+0000fa40 <[^>]*> nop
-+0000fa44 <[^>]*> nop
-+0000fa48 <[^>]*> nop
-+0000fa4c <[^>]*> nop
-+0000fa50 <[^>]*> nop
-+0000fa54 <[^>]*> nop
-+0000fa58 <[^>]*> nop
-+0000fa5c <[^>]*> nop
-+0000fa60 <[^>]*> nop
-+0000fa64 <[^>]*> nop
-+0000fa68 <[^>]*> nop
-+0000fa6c <[^>]*> nop
-+0000fa70 <[^>]*> nop
-+0000fa74 <[^>]*> nop
-+0000fa78 <[^>]*> nop
-+0000fa7c <[^>]*> nop
-+0000fa80 <[^>]*> nop
-+0000fa84 <[^>]*> nop
-+0000fa88 <[^>]*> nop
-+0000fa8c <[^>]*> nop
-+0000fa90 <[^>]*> nop
-+0000fa94 <[^>]*> nop
-+0000fa98 <[^>]*> nop
-+0000fa9c <[^>]*> nop
-+0000faa0 <[^>]*> nop
-+0000faa4 <[^>]*> nop
-+0000faa8 <[^>]*> nop
-+0000faac <[^>]*> nop
-+0000fab0 <[^>]*> nop
-+0000fab4 <[^>]*> nop
-+0000fab8 <[^>]*> nop
-+0000fabc <[^>]*> nop
-+0000fac0 <[^>]*> nop
-+0000fac4 <[^>]*> nop
-+0000fac8 <[^>]*> nop
-+0000facc <[^>]*> nop
-+0000fad0 <[^>]*> nop
-+0000fad4 <[^>]*> nop
-+0000fad8 <[^>]*> nop
-+0000fadc <[^>]*> nop
-+0000fae0 <[^>]*> nop
-+0000fae4 <[^>]*> nop
-+0000fae8 <[^>]*> nop
-+0000faec <[^>]*> nop
-+0000faf0 <[^>]*> nop
-+0000faf4 <[^>]*> nop
-+0000faf8 <[^>]*> nop
-+0000fafc <[^>]*> nop
-+0000fb00 <[^>]*> nop
-+0000fb04 <[^>]*> nop
-+0000fb08 <[^>]*> nop
-+0000fb0c <[^>]*> nop
-+0000fb10 <[^>]*> nop
-+0000fb14 <[^>]*> nop
-+0000fb18 <[^>]*> nop
-+0000fb1c <[^>]*> nop
-+0000fb20 <[^>]*> nop
-+0000fb24 <[^>]*> nop
-+0000fb28 <[^>]*> nop
-+0000fb2c <[^>]*> nop
-+0000fb30 <[^>]*> nop
-+0000fb34 <[^>]*> nop
-+0000fb38 <[^>]*> nop
-+0000fb3c <[^>]*> nop
-+0000fb40 <[^>]*> nop
-+0000fb44 <[^>]*> nop
-+0000fb48 <[^>]*> nop
-+0000fb4c <[^>]*> nop
-+0000fb50 <[^>]*> nop
-+0000fb54 <[^>]*> nop
-+0000fb58 <[^>]*> nop
-+0000fb5c <[^>]*> nop
-+0000fb60 <[^>]*> nop
-+0000fb64 <[^>]*> nop
-+0000fb68 <[^>]*> nop
-+0000fb6c <[^>]*> nop
-+0000fb70 <[^>]*> nop
-+0000fb74 <[^>]*> nop
-+0000fb78 <[^>]*> nop
-+0000fb7c <[^>]*> nop
-+0000fb80 <[^>]*> nop
-+0000fb84 <[^>]*> nop
-+0000fb88 <[^>]*> nop
-+0000fb8c <[^>]*> nop
-+0000fb90 <[^>]*> nop
-+0000fb94 <[^>]*> nop
-+0000fb98 <[^>]*> nop
-+0000fb9c <[^>]*> nop
-+0000fba0 <[^>]*> nop
-+0000fba4 <[^>]*> nop
-+0000fba8 <[^>]*> nop
-+0000fbac <[^>]*> nop
-+0000fbb0 <[^>]*> nop
-+0000fbb4 <[^>]*> nop
-+0000fbb8 <[^>]*> nop
-+0000fbbc <[^>]*> nop
-+0000fbc0 <[^>]*> nop
-+0000fbc4 <[^>]*> nop
-+0000fbc8 <[^>]*> nop
-+0000fbcc <[^>]*> nop
-+0000fbd0 <[^>]*> nop
-+0000fbd4 <[^>]*> nop
-+0000fbd8 <[^>]*> nop
-+0000fbdc <[^>]*> nop
-+0000fbe0 <[^>]*> nop
-+0000fbe4 <[^>]*> nop
-+0000fbe8 <[^>]*> nop
-+0000fbec <[^>]*> nop
-+0000fbf0 <[^>]*> nop
-+0000fbf4 <[^>]*> nop
-+0000fbf8 <[^>]*> nop
-+0000fbfc <[^>]*> nop
-+0000fc00 <[^>]*> nop
-+0000fc04 <[^>]*> nop
-+0000fc08 <[^>]*> nop
-+0000fc0c <[^>]*> nop
-+0000fc10 <[^>]*> nop
-+0000fc14 <[^>]*> nop
-+0000fc18 <[^>]*> nop
-+0000fc1c <[^>]*> nop
-+0000fc20 <[^>]*> nop
-+0000fc24 <[^>]*> nop
-+0000fc28 <[^>]*> nop
-+0000fc2c <[^>]*> nop
-+0000fc30 <[^>]*> nop
-+0000fc34 <[^>]*> nop
-+0000fc38 <[^>]*> nop
-+0000fc3c <[^>]*> nop
-+0000fc40 <[^>]*> nop
-+0000fc44 <[^>]*> nop
-+0000fc48 <[^>]*> nop
-+0000fc4c <[^>]*> nop
-+0000fc50 <[^>]*> nop
-+0000fc54 <[^>]*> nop
-+0000fc58 <[^>]*> nop
-+0000fc5c <[^>]*> nop
-+0000fc60 <[^>]*> nop
-+0000fc64 <[^>]*> nop
-+0000fc68 <[^>]*> nop
-+0000fc6c <[^>]*> nop
-+0000fc70 <[^>]*> nop
-+0000fc74 <[^>]*> nop
-+0000fc78 <[^>]*> nop
-+0000fc7c <[^>]*> nop
-+0000fc80 <[^>]*> nop
-+0000fc84 <[^>]*> nop
-+0000fc88 <[^>]*> nop
-+0000fc8c <[^>]*> nop
-+0000fc90 <[^>]*> nop
-+0000fc94 <[^>]*> nop
-+0000fc98 <[^>]*> nop
-+0000fc9c <[^>]*> nop
-+0000fca0 <[^>]*> nop
-+0000fca4 <[^>]*> nop
-+0000fca8 <[^>]*> nop
-+0000fcac <[^>]*> nop
-+0000fcb0 <[^>]*> nop
-+0000fcb4 <[^>]*> nop
-+0000fcb8 <[^>]*> nop
-+0000fcbc <[^>]*> nop
-+0000fcc0 <[^>]*> nop
-+0000fcc4 <[^>]*> nop
-+0000fcc8 <[^>]*> nop
-+0000fccc <[^>]*> nop
-+0000fcd0 <[^>]*> nop
-+0000fcd4 <[^>]*> nop
-+0000fcd8 <[^>]*> nop
-+0000fcdc <[^>]*> nop
-+0000fce0 <[^>]*> nop
-+0000fce4 <[^>]*> nop
-+0000fce8 <[^>]*> nop
-+0000fcec <[^>]*> nop
-+0000fcf0 <[^>]*> nop
-+0000fcf4 <[^>]*> nop
-+0000fcf8 <[^>]*> nop
-+0000fcfc <[^>]*> nop
-+0000fd00 <[^>]*> nop
-+0000fd04 <[^>]*> nop
-+0000fd08 <[^>]*> nop
-+0000fd0c <[^>]*> nop
-+0000fd10 <[^>]*> nop
-+0000fd14 <[^>]*> nop
-+0000fd18 <[^>]*> nop
-+0000fd1c <[^>]*> nop
-+0000fd20 <[^>]*> nop
-+0000fd24 <[^>]*> nop
-+0000fd28 <[^>]*> nop
-+0000fd2c <[^>]*> nop
-+0000fd30 <[^>]*> nop
-+0000fd34 <[^>]*> nop
-+0000fd38 <[^>]*> nop
-+0000fd3c <[^>]*> nop
-+0000fd40 <[^>]*> nop
-+0000fd44 <[^>]*> nop
-+0000fd48 <[^>]*> nop
-+0000fd4c <[^>]*> nop
-+0000fd50 <[^>]*> nop
-+0000fd54 <[^>]*> nop
-+0000fd58 <[^>]*> nop
-+0000fd5c <[^>]*> nop
-+0000fd60 <[^>]*> nop
-+0000fd64 <[^>]*> nop
-+0000fd68 <[^>]*> nop
-+0000fd6c <[^>]*> nop
-+0000fd70 <[^>]*> nop
-+0000fd74 <[^>]*> nop
-+0000fd78 <[^>]*> nop
-+0000fd7c <[^>]*> nop
-+0000fd80 <[^>]*> nop
-+0000fd84 <[^>]*> nop
-+0000fd88 <[^>]*> nop
-+0000fd8c <[^>]*> nop
-+0000fd90 <[^>]*> nop
-+0000fd94 <[^>]*> nop
-+0000fd98 <[^>]*> nop
-+0000fd9c <[^>]*> nop
-+0000fda0 <[^>]*> nop
-+0000fda4 <[^>]*> nop
-+0000fda8 <[^>]*> nop
-+0000fdac <[^>]*> nop
-+0000fdb0 <[^>]*> nop
-+0000fdb4 <[^>]*> nop
-+0000fdb8 <[^>]*> nop
-+0000fdbc <[^>]*> nop
-+0000fdc0 <[^>]*> nop
-+0000fdc4 <[^>]*> nop
-+0000fdc8 <[^>]*> nop
-+0000fdcc <[^>]*> nop
-+0000fdd0 <[^>]*> nop
-+0000fdd4 <[^>]*> nop
-+0000fdd8 <[^>]*> nop
-+0000fddc <[^>]*> nop
-+0000fde0 <[^>]*> nop
-+0000fde4 <[^>]*> nop
-+0000fde8 <[^>]*> nop
-+0000fdec <[^>]*> nop
-+0000fdf0 <[^>]*> nop
-+0000fdf4 <[^>]*> nop
-+0000fdf8 <[^>]*> nop
-+0000fdfc <[^>]*> nop
-+0000fe00 <[^>]*> nop
-+0000fe04 <[^>]*> nop
-+0000fe08 <[^>]*> nop
-+0000fe0c <[^>]*> nop
-+0000fe10 <[^>]*> nop
-+0000fe14 <[^>]*> nop
-+0000fe18 <[^>]*> nop
-+0000fe1c <[^>]*> nop
-+0000fe20 <[^>]*> nop
-+0000fe24 <[^>]*> nop
-+0000fe28 <[^>]*> nop
-+0000fe2c <[^>]*> nop
-+0000fe30 <[^>]*> nop
-+0000fe34 <[^>]*> nop
-+0000fe38 <[^>]*> nop
-+0000fe3c <[^>]*> nop
-+0000fe40 <[^>]*> nop
-+0000fe44 <[^>]*> nop
-+0000fe48 <[^>]*> nop
-+0000fe4c <[^>]*> nop
-+0000fe50 <[^>]*> nop
-+0000fe54 <[^>]*> nop
-+0000fe58 <[^>]*> nop
-+0000fe5c <[^>]*> nop
-+0000fe60 <[^>]*> nop
-+0000fe64 <[^>]*> nop
-+0000fe68 <[^>]*> nop
-+0000fe6c <[^>]*> nop
-+0000fe70 <[^>]*> nop
-+0000fe74 <[^>]*> nop
-+0000fe78 <[^>]*> nop
-+0000fe7c <[^>]*> nop
-+0000fe80 <[^>]*> nop
-+0000fe84 <[^>]*> nop
-+0000fe88 <[^>]*> nop
-+0000fe8c <[^>]*> nop
-+0000fe90 <[^>]*> nop
-+0000fe94 <[^>]*> nop
-+0000fe98 <[^>]*> nop
-+0000fe9c <[^>]*> nop
-+0000fea0 <[^>]*> nop
-+0000fea4 <[^>]*> nop
-+0000fea8 <[^>]*> nop
-+0000feac <[^>]*> nop
-+0000feb0 <[^>]*> nop
-+0000feb4 <[^>]*> nop
-+0000feb8 <[^>]*> nop
-+0000febc <[^>]*> nop
-+0000fec0 <[^>]*> nop
-+0000fec4 <[^>]*> nop
-+0000fec8 <[^>]*> nop
-+0000fecc <[^>]*> nop
-+0000fed0 <[^>]*> nop
-+0000fed4 <[^>]*> nop
-+0000fed8 <[^>]*> nop
-+0000fedc <[^>]*> nop
-+0000fee0 <[^>]*> nop
-+0000fee4 <[^>]*> nop
-+0000fee8 <[^>]*> nop
-+0000feec <[^>]*> nop
-+0000fef0 <[^>]*> nop
-+0000fef4 <[^>]*> nop
-+0000fef8 <[^>]*> nop
-+0000fefc <[^>]*> nop
-+0000ff00 <[^>]*> nop
-+0000ff04 <[^>]*> nop
-+0000ff08 <[^>]*> nop
-+0000ff0c <[^>]*> nop
-+0000ff10 <[^>]*> nop
-+0000ff14 <[^>]*> nop
-+0000ff18 <[^>]*> nop
-+0000ff1c <[^>]*> nop
-+0000ff20 <[^>]*> nop
-+0000ff24 <[^>]*> nop
-+0000ff28 <[^>]*> nop
-+0000ff2c <[^>]*> nop
-+0000ff30 <[^>]*> nop
-+0000ff34 <[^>]*> nop
-+0000ff38 <[^>]*> nop
-+0000ff3c <[^>]*> nop
-+0000ff40 <[^>]*> nop
-+0000ff44 <[^>]*> nop
-+0000ff48 <[^>]*> nop
-+0000ff4c <[^>]*> nop
-+0000ff50 <[^>]*> nop
-+0000ff54 <[^>]*> nop
-+0000ff58 <[^>]*> nop
-+0000ff5c <[^>]*> nop
-+0000ff60 <[^>]*> nop
-+0000ff64 <[^>]*> nop
-+0000ff68 <[^>]*> nop
-+0000ff6c <[^>]*> nop
-+0000ff70 <[^>]*> nop
-+0000ff74 <[^>]*> nop
-+0000ff78 <[^>]*> nop
-+0000ff7c <[^>]*> nop
-+0000ff80 <[^>]*> nop
-+0000ff84 <[^>]*> nop
-+0000ff88 <[^>]*> nop
-+0000ff8c <[^>]*> nop
-+0000ff90 <[^>]*> nop
-+0000ff94 <[^>]*> nop
-+0000ff98 <[^>]*> nop
-+0000ff9c <[^>]*> nop
-+0000ffa0 <[^>]*> nop
-+0000ffa4 <[^>]*> nop
-+0000ffa8 <[^>]*> nop
-+0000ffac <[^>]*> nop
-+0000ffb0 <[^>]*> nop
-+0000ffb4 <[^>]*> nop
-+0000ffb8 <[^>]*> nop
-+0000ffbc <[^>]*> nop
-+0000ffc0 <[^>]*> nop
-+0000ffc4 <[^>]*> nop
-+0000ffc8 <[^>]*> nop
-+0000ffcc <[^>]*> nop
-+0000ffd0 <[^>]*> nop
-+0000ffd4 <[^>]*> nop
-+0000ffd8 <[^>]*> nop
-+0000ffdc <[^>]*> nop
-+0000ffe0 <[^>]*> nop
-+0000ffe4 <[^>]*> nop
-+0000ffe8 <[^>]*> nop
-+0000ffec <[^>]*> nop
-+0000fff0 <[^>]*> nop
-+0000fff4 <[^>]*> nop
-+0000fff8 <[^>]*> nop
-+0000fffc <[^>]*> nop
-+00010000 <[^>]*> br	00010018 <[^>]*>
-+00010004 <[^>]*> nop
-+00010008 <[^>]*> nop
-+0001000c <[^>]*> nop
-+00010010 <[^>]*> nop
-+00010014 <[^>]*> nop
-+00010018 <[^>]*> nop
-+	...
---- binutils-2.15/gas/testsuite/gas/nios2/relax_ujmp.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/relax_ujmp.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,37 @@
-+# relaxing unconditional jumps
-+
-+.globl text1
-+.section text1, "ax", @progbits
-+
-+	br on_border
-+	br out_of_range
-+	nop
-+	nop
-+
-+
-+.align 15
-+#	nop
-+#	nop
-+on_border:
-+	br in_range
-+	nop
-+	nop
-+	nop
-+out_of_range:
-+in_range:
-+	nop
-+	
-+.globl text2
-+.section text2, "ax", @progbits
-+
-+	br text1
-+	br out_of_range
-+	br sym
-+	nop
-+	nop
-+sym:
-+	nop
-+
-+	
-+
-+	
---- binutils-2.15/gas/testsuite/gas/nios2/reloc_symbols.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/reloc_symbols.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,21 @@
-+.text
-+# byte aligned
-+.align 0
-+.byte byte_sym
-+
-+# short aligned
-+.align 1
-+.short short_sym
-+
-+# word aligned
-+.align 2
-+.long  long_sym
-+
-+# now lets try some unaligned words and halfwords
-+.byte byte_sym
-+.2byte short_sym
-+.4byte  long_sym
-+
-+#.align 2
-+#nop
-+
---- binutils-2.15/gas/testsuite/gas/nios2/ret.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ret.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 ret
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> ret
-+
---- binutils-2.15/gas/testsuite/gas/nios2/ret.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/ret.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,5 @@
-+# Source file used to test the ret instructions
-+foo:
-+	ret
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/rol.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/rol.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,40 @@
-+#objdump: -dr --prefix-addresses -mmips:3000
-+#as: -march=r3000 -mtune=r3000
-+#name: MIPS R3000 rol
-+
-+# Test the rol and ror macros.
-+
-+.*: +file format .*mips.*
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> negu	at,a1
-+0+0004 <[^>]*> srlv	at,a0,at
-+0+0008 <[^>]*> sllv	a0,a0,a1
-+0+000c <[^>]*> or	a0,a0,at
-+0+0010 <[^>]*> negu	at,a2
-+0+0014 <[^>]*> srlv	at,a1,at
-+0+0018 <[^>]*> sllv	a0,a1,a2
-+0+001c <[^>]*> or	a0,a0,at
-+0+0020 <[^>]*> sll	at,a0,0x1
-+0+0024 <[^>]*> srl	a0,a0,0x1f
-+0+0028 <[^>]*> or	a0,a0,at
-+0+002c <[^>]*> sll	at,a1,0x1
-+0+0030 <[^>]*> srl	a0,a1,0x1f
-+0+0034 <[^>]*> or	a0,a0,at
-+0+0038 <[^>]*> srl	a0,a1,0x0
-+0+003c <[^>]*> negu	at,a1
-+0+0040 <[^>]*> sllv	at,a0,at
-+0+0044 <[^>]*> srlv	a0,a0,a1
-+0+0048 <[^>]*> or	a0,a0,at
-+0+004c <[^>]*> negu	at,a2
-+0+0050 <[^>]*> sllv	at,a1,at
-+0+0054 <[^>]*> srlv	a0,a1,a2
-+0+0058 <[^>]*> or	a0,a0,at
-+0+005c <[^>]*> srl	at,a0,0x1
-+0+0060 <[^>]*> sll	a0,a0,0x1f
-+0+0064 <[^>]*> or	a0,a0,at
-+0+0068 <[^>]*> srl	at,a1,0x1
-+0+006c <[^>]*> sll	a0,a1,0x1f
-+0+0070 <[^>]*> or	a0,a0,at
-+0+0074 <[^>]*> srl	a0,a1,0x0
-+	...
---- binutils-2.15/gas/testsuite/gas/nios2/rol.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/rol.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,15 @@
-+# Source file used to test the rol and ror macros.
-+
-+foo:
-+	rol	$4,$5
-+	rol	$4,$5,$6
-+	rol	$4,1
-+	rol	$4,$5,1
-+	rol	$4,$5,0
-+
-+	ror	$4,$5
-+	ror	$4,$5,$6
-+	ror	$4,1
-+	ror	$4,$5,1
-+	ror	$4,$5,0
-+	.space	8
---- binutils-2.15/gas/testsuite/gas/nios2/rotate.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/rotate.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,17 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 rotate
-+
-+# Test the and macro.
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> rol	r4,r4,r4
-+0+0004 <[^>]*> roli	r4,r4,31
-+0+0008 <[^>]*> ror	r4,r4,r4
-+0+000c <[^>]*> sll	r4,r4,r4
-+0+0010 <[^>]*> slli	r4,r4,24
-+0+0014 <[^>]*> sra	r4,r4,r4
-+0+0018 <[^>]*> srai	r4,r4,10
-+0+001c <[^>]*> srl	r4,r4,r4
-+0+0020 <[^>]*> srli	r4,r4,5
---- binutils-2.15/gas/testsuite/gas/nios2/rotate.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/rotate.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,13 @@
-+# test New Jersey rotate instructions
-+
-+.text
-+foo:
-+	rol	r4,r4,r4
-+	roli	r4,r4,31
-+	ror	r4,r4,r4
-+	sll	r4,r4,r4
-+	slli	r4,r4,24
-+	sra	r4,r4,r4
-+	srai	r4,r4,10
-+	srl	r4,r4,r4
-+	srli	r4,r4,5
---- binutils-2.15/gas/testsuite/gas/nios2/s16_symbol.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/s16_symbol.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,10 @@
-+.global some_sym
-+.global some_other_sym
-+.global min
-+.global max
-+
-+.set max, 0x7fff
-+.set min, -0x8000
-+.set some_sym, 0x1000
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/stb.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/stb.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,196 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 stb
-+
-+# Test the ld instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> stb	r4,0\(zero\)
-+0+0004 <[^>]*> stb	r4,4\(zero\)
-+0+0008 <[^>]*> stb	r4,32764\(zero\)
-+0+000c <[^>]*> stb	r4,-32768\(zero\)
-+0+0010 <[^>]*> stb	r4,0\(r5\)
-+0+0014 <[^>]*> stb	r4,4\(r5\)
-+0+0018 <[^>]*> stb	r4,32764\(r5\)
-+0+001c <[^>]*> stb	r4,-32768\(r5\)
-+0+0020 <[^>]*> stb	r4,0\(zero\)
-+[	]*20: R_NIOS2_S16	.data
-+0+0024 <[^>]*> stb	r4,0\(zero\)
-+[	]*24: R_NIOS2_S16	big_external_data_label
-+0+0028 <[^>]*> stb	r4,0\(zero\)
-+[	]*28: R_NIOS2_S16	small_external_data_label
-+0+002c <[^>]*> stb	r4,0\(zero\)
-+[	]*2c: R_NIOS2_S16	big_external_common
-+0+0030 <[^>]*> stb	r4,0\(zero\)
-+[	]*30: R_NIOS2_S16	small_external_common
-+0+0034 <[^>]*> stb	r4,0\(zero\)
-+[	]*34: R_NIOS2_S16	.bss
-+0+0038 <[^>]*> stb	r4,0\(zero\)
-+[	]*38: R_NIOS2_S16	.bss\+0x4000
-+0+003c <[^>]*> stb	r4,0\(zero\)
-+[	]*3c: R_NIOS2_S16	.data\+0x4
-+0+0040 <[^>]*> stb	r4,0\(zero\)
-+[	]*40: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0044 <[^>]*> stb	r4,0\(zero\)
-+[	]*44: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0048 <[^>]*> stb	r4,0\(zero\)
-+[	]*48: R_NIOS2_S16	big_external_common\+0x4
-+0+004c <[^>]*> stb	r4,0\(zero\)
-+[	]*4c: R_NIOS2_S16	small_external_common\+0x4
-+0+0050 <[^>]*> stb	r4,0\(zero\)
-+[	]*50: R_NIOS2_S16	.bss\+0x4
-+0+0054 <[^>]*> stb	r4,0\(zero\)
-+[	]*54: R_NIOS2_S16	.bss\+0x4004
-+0+0058 <[^>]*> stb	r4,0\(zero\)
-+[	]*58: R_NIOS2_S16	.data\+0xffff8000
-+0+005c <[^>]*> stb	r4,0\(zero\)
-+[	]*5c: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0060 <[^>]*> stb	r4,0\(zero\)
-+[	]*60: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0064 <[^>]*> stb	r4,0\(zero\)
-+[	]*64: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0068 <[^>]*> stb	r4,0\(zero\)
-+[	]*68: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+006c <[^>]*> stb	r4,0\(zero\)
-+[	]*6c: R_NIOS2_S16	.bss\+0xffff8000
-+0+0070 <[^>]*> stb	r4,0\(zero\)
-+[	]*70: R_NIOS2_S16	.bss\+0xffffc000
-+0+0074 <[^>]*> stb	r4,0\(zero\)
-+[	]*74: R_NIOS2_S16	.data\+0x10000
-+0+0078 <[^>]*> stb	r4,0\(r5\)
-+[	]*78: R_NIOS2_S16	.data
-+0+007c <[^>]*> stb	r4,0\(r5\)
-+[	]*7c: R_NIOS2_S16	big_external_data_label
-+0+0080 <[^>]*> stb	r4,0\(r5\)
-+[	]*80: R_NIOS2_S16	small_external_data_label
-+0+0084 <[^>]*> stb	r4,0\(r5\)
-+[	]*84: R_NIOS2_S16	big_external_common
-+0+0088 <[^>]*> stb	r4,0\(r5\)
-+[	]*88: R_NIOS2_S16	small_external_common
-+0+008c <[^>]*> stb	r4,0\(r5\)
-+[	]*8c: R_NIOS2_S16	.bss
-+0+0090 <[^>]*> stb	r4,0\(r5\)
-+[	]*90: R_NIOS2_S16	.bss\+0x4000
-+0+0094 <[^>]*> stb	r4,0\(r5\)
-+[	]*94: R_NIOS2_S16	.data\+0x4
-+0+0098 <[^>]*> stb	r4,0\(r5\)
-+[	]*98: R_NIOS2_S16	big_external_data_label\+0x4
-+0+009c <[^>]*> stb	r4,0\(r5\)
-+[	]*9c: R_NIOS2_S16	small_external_data_label\+0x4
-+0+00a0 <[^>]*> stb	r4,0\(r5\)
-+[	]*a0: R_NIOS2_S16	big_external_common\+0x4
-+0+00a4 <[^>]*> stb	r4,0\(r5\)
-+[	]*a4: R_NIOS2_S16	small_external_common\+0x4
-+0+00a8 <[^>]*> stb	r4,0\(r5\)
-+[	]*a8: R_NIOS2_S16	.bss\+0x4
-+0+00ac <[^>]*> stb	r4,0\(r5\)
-+[	]*ac: R_NIOS2_S16	.bss\+0x4004
-+0+00b0 <[^>]*> stb	r4,0\(r5\)
-+[	]*b0: R_NIOS2_S16	.data\+0xffff8000
-+0+00b4 <[^>]*> stb	r4,0\(r5\)
-+[	]*b4: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+00b8 <[^>]*> stb	r4,0\(r5\)
-+[	]*b8: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+00bc <[^>]*> stb	r4,0\(r5\)
-+[	]*bc: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+00c0 <[^>]*> stb	r4,0\(r5\)
-+[	]*c0: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+00c4 <[^>]*> stb	r4,0\(r5\)
-+[	]*c4: R_NIOS2_S16	.bss\+0xffff8000
-+0+00c8 <[^>]*> stb	r4,0\(r5\)
-+[	]*c8: R_NIOS2_S16	.bss\+0xffffc000
-+0+00cc <[^>]*> stbio	r4,0\(zero\)
-+0+00d0 <[^>]*> stbio	r4,4\(zero\)
-+0+00d4 <[^>]*> stbio	r4,32764\(zero\)
-+0+00d8 <[^>]*> stbio	r4,-32768\(zero\)
-+0+00dc <[^>]*> stbio	r4,0\(r5\)
-+0+00e0 <[^>]*> stbio	r4,4\(r5\)
-+0+00e4 <[^>]*> stbio	r4,32764\(r5\)
-+0+00e8 <[^>]*> stbio	r4,-32768\(r5\)
-+0+00ec <[^>]*> stbio	r4,0\(zero\)
-+[	]*ec: R_NIOS2_S16	.data
-+0+00f0 <[^>]*> stbio	r4,0\(zero\)
-+[	]*f0: R_NIOS2_S16	big_external_data_label
-+0+00f4 <[^>]*> stbio	r4,0\(zero\)
-+[	]*f4: R_NIOS2_S16	small_external_data_label
-+0+00f8 <[^>]*> stbio	r4,0\(zero\)
-+[	]*f8: R_NIOS2_S16	big_external_common
-+0+00fc <[^>]*> stbio	r4,0\(zero\)
-+[	]*fc: R_NIOS2_S16	small_external_common
-+0+0100 <[^>]*> stbio	r4,0\(zero\)
-+[	]*100: R_NIOS2_S16	.bss
-+0+0104 <[^>]*> stbio	r4,0\(zero\)
-+[	]*104: R_NIOS2_S16	.bss\+0x4000
-+0+0108 <[^>]*> stbio	r4,0\(zero\)
-+[	]*108: R_NIOS2_S16	.data\+0x4
-+0+010c <[^>]*> stbio	r4,0\(zero\)
-+[	]*10c: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0110 <[^>]*> stbio	r4,0\(zero\)
-+[	]*110: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0114 <[^>]*> stbio	r4,0\(zero\)
-+[	]*114: R_NIOS2_S16	big_external_common\+0x4
-+0+0118 <[^>]*> stbio	r4,0\(zero\)
-+[	]*118: R_NIOS2_S16	small_external_common\+0x4
-+0+011c <[^>]*> stbio	r4,0\(zero\)
-+[	]*11c: R_NIOS2_S16	.bss\+0x4
-+0+0120 <[^>]*> stbio	r4,0\(zero\)
-+[	]*120: R_NIOS2_S16	.bss\+0x4004
-+0+0124 <[^>]*> stbio	r4,0\(zero\)
-+[	]*124: R_NIOS2_S16	.data\+0xffff8000
-+0+0128 <[^>]*> stbio	r4,0\(zero\)
-+[	]*128: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+012c <[^>]*> stbio	r4,0\(zero\)
-+[	]*12c: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0130 <[^>]*> stbio	r4,0\(zero\)
-+[	]*130: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0134 <[^>]*> stbio	r4,0\(zero\)
-+[	]*134: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0138 <[^>]*> stbio	r4,0\(zero\)
-+[	]*138: R_NIOS2_S16	.bss\+0xffff8000
-+0+013c <[^>]*> stbio	r4,0\(zero\)
-+[	]*13c: R_NIOS2_S16	.bss\+0xffffc000
-+0+0140 <[^>]*> stbio	r4,0\(zero\)
-+[	]*140: R_NIOS2_S16	.data\+0x10000
-+0+0144 <[^>]*> stbio	r4,0\(r5\)
-+[	]*144: R_NIOS2_S16	.data
-+0+0148 <[^>]*> stbio	r4,0\(r5\)
-+[	]*148: R_NIOS2_S16	big_external_data_label
-+0+014c <[^>]*> stbio	r4,0\(r5\)
-+[	]*14c: R_NIOS2_S16	small_external_data_label
-+0+0150 <[^>]*> stbio	r4,0\(r5\)
-+[	]*150: R_NIOS2_S16	big_external_common
-+0+0154 <[^>]*> stbio	r4,0\(r5\)
-+[	]*154: R_NIOS2_S16	small_external_common
-+0+0158 <[^>]*> stbio	r4,0\(r5\)
-+[	]*158: R_NIOS2_S16	.bss
-+0+015c <[^>]*> stbio	r4,0\(r5\)
-+[	]*15c: R_NIOS2_S16	.bss\+0x4000
-+0+0160 <[^>]*> stbio	r4,0\(r5\)
-+[	]*160: R_NIOS2_S16	.data\+0x4
-+0+0164 <[^>]*> stbio	r4,0\(r5\)
-+[	]*164: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0168 <[^>]*> stbio	r4,0\(r5\)
-+[	]*168: R_NIOS2_S16	small_external_data_label\+0x4
-+0+016c <[^>]*> stbio	r4,0\(r5\)
-+[	]*16c: R_NIOS2_S16	big_external_common\+0x4
-+0+0170 <[^>]*> stbio	r4,0\(r5\)
-+[	]*170: R_NIOS2_S16	small_external_common\+0x4
-+0+0174 <[^>]*> stbio	r4,0\(r5\)
-+[	]*174: R_NIOS2_S16	.bss\+0x4
-+0+0178 <[^>]*> stbio	r4,0\(r5\)
-+[	]*178: R_NIOS2_S16	.bss\+0x4004
-+0+017c <[^>]*> stbio	r4,0\(r5\)
-+[	]*17c: R_NIOS2_S16	.data\+0xffff8000
-+0+0180 <[^>]*> stbio	r4,0\(r5\)
-+[	]*180: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0184 <[^>]*> stbio	r4,0\(r5\)
-+[	]*184: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0188 <[^>]*> stbio	r4,0\(r5\)
-+[	]*188: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+018c <[^>]*> stbio	r4,0\(r5\)
-+[	]*18c: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0190 <[^>]*> stbio	r4,0\(r5\)
-+[	]*190: R_NIOS2_S16	.bss\+0xffff8000
-+0+0194 <[^>]*> stbio	r4,0\(r5\)
-+[	]*194: R_NIOS2_S16	.bss\+0xffffc000
---- binutils-2.15/gas/testsuite/gas/nios2/stb.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/stb.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,117 @@
-+	.data
-+data_label:
-+	.extern big_external_data_label,0x4000
-+	.extern small_external_data_label,4
-+	.comm big_external_common,0x4000
-+	.comm small_external_common,4
-+	.lcomm big_local_common,0x4000
-+	.lcomm small_local_common,4
-+
-+# the small symbols should have space allocated in the sbss section
-+# but this is not yet supported in the assembler, so space is allocated
-+# in the .bss section and the relocations are not gp-relative. this will
-+# be updated when gp-relative relocations are added
-+	.text
-+	stb	r4,0(r0)
-+	stb	r4,4(r0)
-+	stb	r4,0x7ffc(r0)
-+	stb	r4,-0x8000(r0)
-+	stb	r4,0(r5)
-+	stb	r4,4(r5)
-+	stb	r4,0x7ffc(r5)
-+	stb	r4,-0x8000(r5)
-+	stb	r4,data_label(r0)
-+	stb	r4,big_external_data_label(r0)
-+	stb	r4,small_external_data_label(r0)
-+	stb	r4,big_external_common(r0)
-+	stb	r4,small_external_common(r0)
-+	stb	r4,big_local_common(r0)
-+	stb	r4,small_local_common(r0)
-+	stb	r4,data_label+4(r0)
-+	stb	r4,big_external_data_label+4(r0)
-+	stb	r4,small_external_data_label+4(r0)
-+	stb	r4,big_external_common+4(r0)
-+	stb	r4,small_external_common+4(r0)
-+	stb	r4,big_local_common+4(r0)
-+	stb	r4,small_local_common+4(r0)
-+	stb	r4,data_label-0x8000(r0)
-+	stb	r4,big_external_data_label-0x8000(r0)
-+	stb	r4,small_external_data_label-0x8000(r0)
-+	stb	r4,big_external_common-0x8000(r0)
-+	stb	r4,small_external_common-0x8000(r0)
-+	stb	r4,big_local_common-0x8000(r0)
-+	stb	r4,small_local_common-0x8000(r0)
-+	stb	r4,data_label+0x10000(r0)
-+	stb	r4,data_label(r5)
-+	stb	r4,big_external_data_label(r5)
-+	stb	r4,small_external_data_label(r5)
-+	stb	r4,big_external_common(r5)
-+	stb	r4,small_external_common(r5)
-+	stb	r4,big_local_common(r5)
-+	stb	r4,small_local_common(r5)
-+	stb	r4,data_label+4(r5)
-+	stb	r4,big_external_data_label+4(r5)
-+	stb	r4,small_external_data_label+4(r5)
-+	stb	r4,big_external_common+4(r5)
-+	stb	r4,small_external_common+4(r5)
-+	stb	r4,big_local_common+4(r5)
-+	stb	r4,small_local_common+4(r5)
-+	stb	r4,data_label-0x8000(r5)
-+	stb	r4,big_external_data_label-0x8000(r5)
-+	stb	r4,small_external_data_label-0x8000(r5)
-+	stb	r4,big_external_common-0x8000(r5)
-+	stb	r4,small_external_common-0x8000(r5)
-+	stb	r4,big_local_common-0x8000(r5)
-+	stb	r4,small_local_common-0x8000(r5)
-+	
-+	stbio	r4,0(r0)
-+	stbio	r4,4(r0)
-+	stbio	r4,0x7ffc(r0)
-+	stbio	r4,-0x8000(r0)
-+	stbio	r4,0(r5)
-+	stbio	r4,4(r5)
-+	stbio	r4,0x7ffc(r5)
-+	stbio	r4,-0x8000(r5)
-+	stbio	r4,data_label(r0)
-+	stbio	r4,big_external_data_label(r0)
-+	stbio	r4,small_external_data_label(r0)
-+	stbio	r4,big_external_common(r0)
-+	stbio	r4,small_external_common(r0)
-+	stbio	r4,big_local_common(r0)
-+	stbio	r4,small_local_common(r0)
-+	stbio	r4,data_label+4(r0)
-+	stbio	r4,big_external_data_label+4(r0)
-+	stbio	r4,small_external_data_label+4(r0)
-+	stbio	r4,big_external_common+4(r0)
-+	stbio	r4,small_external_common+4(r0)
-+	stbio	r4,big_local_common+4(r0)
-+	stbio	r4,small_local_common+4(r0)
-+	stbio	r4,data_label-0x8000(r0)
-+	stbio	r4,big_external_data_label-0x8000(r0)
-+	stbio	r4,small_external_data_label-0x8000(r0)
-+	stbio	r4,big_external_common-0x8000(r0)
-+	stbio	r4,small_external_common-0x8000(r0)
-+	stbio	r4,big_local_common-0x8000(r0)
-+	stbio	r4,small_local_common-0x8000(r0)
-+	stbio	r4,data_label+0x10000(r0)
-+	stbio	r4,data_label(r5)
-+	stbio	r4,big_external_data_label(r5)
-+	stbio	r4,small_external_data_label(r5)
-+	stbio	r4,big_external_common(r5)
-+	stbio	r4,small_external_common(r5)
-+	stbio	r4,big_local_common(r5)
-+	stbio	r4,small_local_common(r5)
-+	stbio	r4,data_label+4(r5)
-+	stbio	r4,big_external_data_label+4(r5)
-+	stbio	r4,small_external_data_label+4(r5)
-+	stbio	r4,big_external_common+4(r5)
-+	stbio	r4,small_external_common+4(r5)
-+	stbio	r4,big_local_common+4(r5)
-+	stbio	r4,small_local_common+4(r5)
-+	stbio	r4,data_label-0x8000(r5)
-+	stbio	r4,big_external_data_label-0x8000(r5)
-+	stbio	r4,small_external_data_label-0x8000(r5)
-+	stbio	r4,big_external_common-0x8000(r5)
-+	stbio	r4,small_external_common-0x8000(r5)
-+	stbio	r4,big_local_common-0x8000(r5)
-+	stbio	r4,small_local_common-0x8000(r5)
---- binutils-2.15/gas/testsuite/gas/nios2/sth.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/sth.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,196 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 sth
-+
-+# Test the ld instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> sth	r4,0\(zero\)
-+0+0004 <[^>]*> sth	r4,4\(zero\)
-+0+0008 <[^>]*> sth	r4,32764\(zero\)
-+0+000c <[^>]*> sth	r4,-32768\(zero\)
-+0+0010 <[^>]*> sth	r4,0\(r5\)
-+0+0014 <[^>]*> sth	r4,4\(r5\)
-+0+0018 <[^>]*> sth	r4,32764\(r5\)
-+0+001c <[^>]*> sth	r4,-32768\(r5\)
-+0+0020 <[^>]*> sth	r4,0\(zero\)
-+[	]*20: R_NIOS2_S16	.data
-+0+0024 <[^>]*> sth	r4,0\(zero\)
-+[	]*24: R_NIOS2_S16	big_external_data_label
-+0+0028 <[^>]*> sth	r4,0\(zero\)
-+[	]*28: R_NIOS2_S16	small_external_data_label
-+0+002c <[^>]*> sth	r4,0\(zero\)
-+[	]*2c: R_NIOS2_S16	big_external_common
-+0+0030 <[^>]*> sth	r4,0\(zero\)
-+[	]*30: R_NIOS2_S16	small_external_common
-+0+0034 <[^>]*> sth	r4,0\(zero\)
-+[	]*34: R_NIOS2_S16	.bss
-+0+0038 <[^>]*> sth	r4,0\(zero\)
-+[	]*38: R_NIOS2_S16	.bss\+0x4000
-+0+003c <[^>]*> sth	r4,0\(zero\)
-+[	]*3c: R_NIOS2_S16	.data\+0x4
-+0+0040 <[^>]*> sth	r4,0\(zero\)
-+[	]*40: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0044 <[^>]*> sth	r4,0\(zero\)
-+[	]*44: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0048 <[^>]*> sth	r4,0\(zero\)
-+[	]*48: R_NIOS2_S16	big_external_common\+0x4
-+0+004c <[^>]*> sth	r4,0\(zero\)
-+[	]*4c: R_NIOS2_S16	small_external_common\+0x4
-+0+0050 <[^>]*> sth	r4,0\(zero\)
-+[	]*50: R_NIOS2_S16	.bss\+0x4
-+0+0054 <[^>]*> sth	r4,0\(zero\)
-+[	]*54: R_NIOS2_S16	.bss\+0x4004
-+0+0058 <[^>]*> sth	r4,0\(zero\)
-+[	]*58: R_NIOS2_S16	.data\+0xffff8000
-+0+005c <[^>]*> sth	r4,0\(zero\)
-+[	]*5c: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0060 <[^>]*> sth	r4,0\(zero\)
-+[	]*60: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0064 <[^>]*> sth	r4,0\(zero\)
-+[	]*64: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0068 <[^>]*> sth	r4,0\(zero\)
-+[	]*68: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+006c <[^>]*> sth	r4,0\(zero\)
-+[	]*6c: R_NIOS2_S16	.bss\+0xffff8000
-+0+0070 <[^>]*> sth	r4,0\(zero\)
-+[	]*70: R_NIOS2_S16	.bss\+0xffffc000
-+0+0074 <[^>]*> sth	r4,0\(zero\)
-+[	]*74: R_NIOS2_S16	.data\+0x10000
-+0+0078 <[^>]*> sth	r4,0\(r5\)
-+[	]*78: R_NIOS2_S16	.data
-+0+007c <[^>]*> sth	r4,0\(r5\)
-+[	]*7c: R_NIOS2_S16	big_external_data_label
-+0+0080 <[^>]*> sth	r4,0\(r5\)
-+[	]*80: R_NIOS2_S16	small_external_data_label
-+0+0084 <[^>]*> sth	r4,0\(r5\)
-+[	]*84: R_NIOS2_S16	big_external_common
-+0+0088 <[^>]*> sth	r4,0\(r5\)
-+[	]*88: R_NIOS2_S16	small_external_common
-+0+008c <[^>]*> sth	r4,0\(r5\)
-+[	]*8c: R_NIOS2_S16	.bss
-+0+0090 <[^>]*> sth	r4,0\(r5\)
-+[	]*90: R_NIOS2_S16	.bss\+0x4000
-+0+0094 <[^>]*> sth	r4,0\(r5\)
-+[	]*94: R_NIOS2_S16	.data\+0x4
-+0+0098 <[^>]*> sth	r4,0\(r5\)
-+[	]*98: R_NIOS2_S16	big_external_data_label\+0x4
-+0+009c <[^>]*> sth	r4,0\(r5\)
-+[	]*9c: R_NIOS2_S16	small_external_data_label\+0x4
-+0+00a0 <[^>]*> sth	r4,0\(r5\)
-+[	]*a0: R_NIOS2_S16	big_external_common\+0x4
-+0+00a4 <[^>]*> sth	r4,0\(r5\)
-+[	]*a4: R_NIOS2_S16	small_external_common\+0x4
-+0+00a8 <[^>]*> sth	r4,0\(r5\)
-+[	]*a8: R_NIOS2_S16	.bss\+0x4
-+0+00ac <[^>]*> sth	r4,0\(r5\)
-+[	]*ac: R_NIOS2_S16	.bss\+0x4004
-+0+00b0 <[^>]*> sth	r4,0\(r5\)
-+[	]*b0: R_NIOS2_S16	.data\+0xffff8000
-+0+00b4 <[^>]*> sth	r4,0\(r5\)
-+[	]*b4: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+00b8 <[^>]*> sth	r4,0\(r5\)
-+[	]*b8: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+00bc <[^>]*> sth	r4,0\(r5\)
-+[	]*bc: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+00c0 <[^>]*> sth	r4,0\(r5\)
-+[	]*c0: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+00c4 <[^>]*> sth	r4,0\(r5\)
-+[	]*c4: R_NIOS2_S16	.bss\+0xffff8000
-+0+00c8 <[^>]*> sth	r4,0\(r5\)
-+[	]*c8: R_NIOS2_S16	.bss\+0xffffc000
-+0+00cc <[^>]*> sthio	r4,0\(zero\)
-+0+00d0 <[^>]*> sthio	r4,4\(zero\)
-+0+00d4 <[^>]*> sthio	r4,32764\(zero\)
-+0+00d8 <[^>]*> sthio	r4,-32768\(zero\)
-+0+00dc <[^>]*> sthio	r4,0\(r5\)
-+0+00e0 <[^>]*> sthio	r4,4\(r5\)
-+0+00e4 <[^>]*> sthio	r4,32764\(r5\)
-+0+00e8 <[^>]*> sthio	r4,-32768\(r5\)
-+0+00ec <[^>]*> sthio	r4,0\(zero\)
-+[	]*ec: R_NIOS2_S16	.data
-+0+00f0 <[^>]*> sthio	r4,0\(zero\)
-+[	]*f0: R_NIOS2_S16	big_external_data_label
-+0+00f4 <[^>]*> sthio	r4,0\(zero\)
-+[	]*f4: R_NIOS2_S16	small_external_data_label
-+0+00f8 <[^>]*> sthio	r4,0\(zero\)
-+[	]*f8: R_NIOS2_S16	big_external_common
-+0+00fc <[^>]*> sthio	r4,0\(zero\)
-+[	]*fc: R_NIOS2_S16	small_external_common
-+0+0100 <[^>]*> sthio	r4,0\(zero\)
-+[	]*100: R_NIOS2_S16	.bss
-+0+0104 <[^>]*> sthio	r4,0\(zero\)
-+[	]*104: R_NIOS2_S16	.bss\+0x4000
-+0+0108 <[^>]*> sthio	r4,0\(zero\)
-+[	]*108: R_NIOS2_S16	.data\+0x4
-+0+010c <[^>]*> sthio	r4,0\(zero\)
-+[	]*10c: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0110 <[^>]*> sthio	r4,0\(zero\)
-+[	]*110: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0114 <[^>]*> sthio	r4,0\(zero\)
-+[	]*114: R_NIOS2_S16	big_external_common\+0x4
-+0+0118 <[^>]*> sthio	r4,0\(zero\)
-+[	]*118: R_NIOS2_S16	small_external_common\+0x4
-+0+011c <[^>]*> sthio	r4,0\(zero\)
-+[	]*11c: R_NIOS2_S16	.bss\+0x4
-+0+0120 <[^>]*> sthio	r4,0\(zero\)
-+[	]*120: R_NIOS2_S16	.bss\+0x4004
-+0+0124 <[^>]*> sthio	r4,0\(zero\)
-+[	]*124: R_NIOS2_S16	.data\+0xffff8000
-+0+0128 <[^>]*> sthio	r4,0\(zero\)
-+[	]*128: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+012c <[^>]*> sthio	r4,0\(zero\)
-+[	]*12c: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0130 <[^>]*> sthio	r4,0\(zero\)
-+[	]*130: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0134 <[^>]*> sthio	r4,0\(zero\)
-+[	]*134: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0138 <[^>]*> sthio	r4,0\(zero\)
-+[	]*138: R_NIOS2_S16	.bss\+0xffff8000
-+0+013c <[^>]*> sthio	r4,0\(zero\)
-+[	]*13c: R_NIOS2_S16	.bss\+0xffffc000
-+0+0140 <[^>]*> sthio	r4,0\(zero\)
-+[	]*140: R_NIOS2_S16	.data\+0x10000
-+0+0144 <[^>]*> sthio	r4,0\(r5\)
-+[	]*144: R_NIOS2_S16	.data
-+0+0148 <[^>]*> sthio	r4,0\(r5\)
-+[	]*148: R_NIOS2_S16	big_external_data_label
-+0+014c <[^>]*> sthio	r4,0\(r5\)
-+[	]*14c: R_NIOS2_S16	small_external_data_label
-+0+0150 <[^>]*> sthio	r4,0\(r5\)
-+[	]*150: R_NIOS2_S16	big_external_common
-+0+0154 <[^>]*> sthio	r4,0\(r5\)
-+[	]*154: R_NIOS2_S16	small_external_common
-+0+0158 <[^>]*> sthio	r4,0\(r5\)
-+[	]*158: R_NIOS2_S16	.bss
-+0+015c <[^>]*> sthio	r4,0\(r5\)
-+[	]*15c: R_NIOS2_S16	.bss\+0x4000
-+0+0160 <[^>]*> sthio	r4,0\(r5\)
-+[	]*160: R_NIOS2_S16	.data\+0x4
-+0+0164 <[^>]*> sthio	r4,0\(r5\)
-+[	]*164: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0168 <[^>]*> sthio	r4,0\(r5\)
-+[	]*168: R_NIOS2_S16	small_external_data_label\+0x4
-+0+016c <[^>]*> sthio	r4,0\(r5\)
-+[	]*16c: R_NIOS2_S16	big_external_common\+0x4
-+0+0170 <[^>]*> sthio	r4,0\(r5\)
-+[	]*170: R_NIOS2_S16	small_external_common\+0x4
-+0+0174 <[^>]*> sthio	r4,0\(r5\)
-+[	]*174: R_NIOS2_S16	.bss\+0x4
-+0+0178 <[^>]*> sthio	r4,0\(r5\)
-+[	]*178: R_NIOS2_S16	.bss\+0x4004
-+0+017c <[^>]*> sthio	r4,0\(r5\)
-+[	]*17c: R_NIOS2_S16	.data\+0xffff8000
-+0+0180 <[^>]*> sthio	r4,0\(r5\)
-+[	]*180: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0184 <[^>]*> sthio	r4,0\(r5\)
-+[	]*184: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0188 <[^>]*> sthio	r4,0\(r5\)
-+[	]*188: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+018c <[^>]*> sthio	r4,0\(r5\)
-+[	]*18c: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0190 <[^>]*> sthio	r4,0\(r5\)
-+[	]*190: R_NIOS2_S16	.bss\+0xffff8000
-+0+0194 <[^>]*> sthio	r4,0\(r5\)
-+[	]*194: R_NIOS2_S16	.bss\+0xffffc000
---- binutils-2.15/gas/testsuite/gas/nios2/sth.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/sth.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,117 @@
-+	.data
-+data_label:
-+	.extern big_external_data_label,0x4000
-+	.extern small_external_data_label,4
-+	.comm big_external_common,0x4000
-+	.comm small_external_common,4
-+	.lcomm big_local_common,0x4000
-+	.lcomm small_local_common,4
-+
-+# the small symbols should have space allocated in the sbss section
-+# but this is not yet supported in the assembler, so space is allocated
-+# in the .bss section and the relocations are not gp-relative. this will
-+# be updated when gp-relative relocations are added
-+	.text
-+	sth	r4,0(r0)
-+	sth	r4,4(r0)
-+	sth	r4,0x7ffc(r0)
-+	sth	r4,-0x8000(r0)
-+	sth	r4,0(r5)
-+	sth	r4,4(r5)
-+	sth	r4,0x7ffc(r5)
-+	sth	r4,-0x8000(r5)
-+	sth	r4,data_label(r0)
-+	sth	r4,big_external_data_label(r0)
-+	sth	r4,small_external_data_label(r0)
-+	sth	r4,big_external_common(r0)
-+	sth	r4,small_external_common(r0)
-+	sth	r4,big_local_common(r0)
-+	sth	r4,small_local_common(r0)
-+	sth	r4,data_label+4(r0)
-+	sth	r4,big_external_data_label+4(r0)
-+	sth	r4,small_external_data_label+4(r0)
-+	sth	r4,big_external_common+4(r0)
-+	sth	r4,small_external_common+4(r0)
-+	sth	r4,big_local_common+4(r0)
-+	sth	r4,small_local_common+4(r0)
-+	sth	r4,data_label-0x8000(r0)
-+	sth	r4,big_external_data_label-0x8000(r0)
-+	sth	r4,small_external_data_label-0x8000(r0)
-+	sth	r4,big_external_common-0x8000(r0)
-+	sth	r4,small_external_common-0x8000(r0)
-+	sth	r4,big_local_common-0x8000(r0)
-+	sth	r4,small_local_common-0x8000(r0)
-+	sth	r4,data_label+0x10000(r0)
-+	sth	r4,data_label(r5)
-+	sth	r4,big_external_data_label(r5)
-+	sth	r4,small_external_data_label(r5)
-+	sth	r4,big_external_common(r5)
-+	sth	r4,small_external_common(r5)
-+	sth	r4,big_local_common(r5)
-+	sth	r4,small_local_common(r5)
-+	sth	r4,data_label+4(r5)
-+	sth	r4,big_external_data_label+4(r5)
-+	sth	r4,small_external_data_label+4(r5)
-+	sth	r4,big_external_common+4(r5)
-+	sth	r4,small_external_common+4(r5)
-+	sth	r4,big_local_common+4(r5)
-+	sth	r4,small_local_common+4(r5)
-+	sth	r4,data_label-0x8000(r5)
-+	sth	r4,big_external_data_label-0x8000(r5)
-+	sth	r4,small_external_data_label-0x8000(r5)
-+	sth	r4,big_external_common-0x8000(r5)
-+	sth	r4,small_external_common-0x8000(r5)
-+	sth	r4,big_local_common-0x8000(r5)
-+	sth	r4,small_local_common-0x8000(r5)
-+	
-+	sthio	r4,0(r0)
-+	sthio	r4,4(r0)
-+	sthio	r4,0x7ffc(r0)
-+	sthio	r4,-0x8000(r0)
-+	sthio	r4,0(r5)
-+	sthio	r4,4(r5)
-+	sthio	r4,0x7ffc(r5)
-+	sthio	r4,-0x8000(r5)
-+	sthio	r4,data_label(r0)
-+	sthio	r4,big_external_data_label(r0)
-+	sthio	r4,small_external_data_label(r0)
-+	sthio	r4,big_external_common(r0)
-+	sthio	r4,small_external_common(r0)
-+	sthio	r4,big_local_common(r0)
-+	sthio	r4,small_local_common(r0)
-+	sthio	r4,data_label+4(r0)
-+	sthio	r4,big_external_data_label+4(r0)
-+	sthio	r4,small_external_data_label+4(r0)
-+	sthio	r4,big_external_common+4(r0)
-+	sthio	r4,small_external_common+4(r0)
-+	sthio	r4,big_local_common+4(r0)
-+	sthio	r4,small_local_common+4(r0)
-+	sthio	r4,data_label-0x8000(r0)
-+	sthio	r4,big_external_data_label-0x8000(r0)
-+	sthio	r4,small_external_data_label-0x8000(r0)
-+	sthio	r4,big_external_common-0x8000(r0)
-+	sthio	r4,small_external_common-0x8000(r0)
-+	sthio	r4,big_local_common-0x8000(r0)
-+	sthio	r4,small_local_common-0x8000(r0)
-+	sthio	r4,data_label+0x10000(r0)
-+	sthio	r4,data_label(r5)
-+	sthio	r4,big_external_data_label(r5)
-+	sthio	r4,small_external_data_label(r5)
-+	sthio	r4,big_external_common(r5)
-+	sthio	r4,small_external_common(r5)
-+	sthio	r4,big_local_common(r5)
-+	sthio	r4,small_local_common(r5)
-+	sthio	r4,data_label+4(r5)
-+	sthio	r4,big_external_data_label+4(r5)
-+	sthio	r4,small_external_data_label+4(r5)
-+	sthio	r4,big_external_common+4(r5)
-+	sthio	r4,small_external_common+4(r5)
-+	sthio	r4,big_local_common+4(r5)
-+	sthio	r4,small_local_common+4(r5)
-+	sthio	r4,data_label-0x8000(r5)
-+	sthio	r4,big_external_data_label-0x8000(r5)
-+	sthio	r4,small_external_data_label-0x8000(r5)
-+	sthio	r4,big_external_common-0x8000(r5)
-+	sthio	r4,small_external_common-0x8000(r5)
-+	sthio	r4,big_local_common-0x8000(r5)
-+	sthio	r4,small_local_common-0x8000(r5)
---- binutils-2.15/gas/testsuite/gas/nios2/str2.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/str2.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,21 @@
-+	.section	.rodata.str1.1,"aMS",@progbits,1
-+.LC0:
-+	.string	"DHRYSTONE PROGRAM, 3'RD STRING"
-+.LC1:
-+	.string	"COMMON"
-+.LC2:
-+	.string	"DHRYSTONE PROGRAM, 4'TH STRING"
-+	
-+	 .section	.text
-+	 .align	3
-+	 .global	func2
-+	 .type	func2, @function
-+func2:
-+	#movhi	r2, %hiadj(.LC0)
-+	addi	r2, r2, .LC0
-+	#movhi	r3, %hiadj(.LC1)
-+	addi	r3, r3, .LC1
-+	#movhi	r4, %hiadj(.LC2)
-+	addi	r4, r4, .LC2
-+	.size	func2, .-func2
-+
---- binutils-2.15/gas/testsuite/gas/nios2/stw.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/stw.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,196 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 stw
-+
-+# Test the ld instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> stw	r4,0\(zero\)
-+0+0004 <[^>]*> stw	r4,4\(zero\)
-+0+0008 <[^>]*> stw	r4,32764\(zero\)
-+0+000c <[^>]*> stw	r4,-32768\(zero\)
-+0+0010 <[^>]*> stw	r4,0\(r5\)
-+0+0014 <[^>]*> stw	r4,4\(r5\)
-+0+0018 <[^>]*> stw	r4,32764\(r5\)
-+0+001c <[^>]*> stw	r4,-32768\(r5\)
-+0+0020 <[^>]*> stw	r4,0\(zero\)
-+[	]*20: R_NIOS2_S16	.data
-+0+0024 <[^>]*> stw	r4,0\(zero\)
-+[	]*24: R_NIOS2_S16	big_external_data_label
-+0+0028 <[^>]*> stw	r4,0\(zero\)
-+[	]*28: R_NIOS2_S16	small_external_data_label
-+0+002c <[^>]*> stw	r4,0\(zero\)
-+[	]*2c: R_NIOS2_S16	big_external_common
-+0+0030 <[^>]*> stw	r4,0\(zero\)
-+[	]*30: R_NIOS2_S16	small_external_common
-+0+0034 <[^>]*> stw	r4,0\(zero\)
-+[	]*34: R_NIOS2_S16	.bss
-+0+0038 <[^>]*> stw	r4,0\(zero\)
-+[	]*38: R_NIOS2_S16	.bss\+0x4000
-+0+003c <[^>]*> stw	r4,0\(zero\)
-+[	]*3c: R_NIOS2_S16	.data\+0x4
-+0+0040 <[^>]*> stw	r4,0\(zero\)
-+[	]*40: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0044 <[^>]*> stw	r4,0\(zero\)
-+[	]*44: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0048 <[^>]*> stw	r4,0\(zero\)
-+[	]*48: R_NIOS2_S16	big_external_common\+0x4
-+0+004c <[^>]*> stw	r4,0\(zero\)
-+[	]*4c: R_NIOS2_S16	small_external_common\+0x4
-+0+0050 <[^>]*> stw	r4,0\(zero\)
-+[	]*50: R_NIOS2_S16	.bss\+0x4
-+0+0054 <[^>]*> stw	r4,0\(zero\)
-+[	]*54: R_NIOS2_S16	.bss\+0x4004
-+0+0058 <[^>]*> stw	r4,0\(zero\)
-+[	]*58: R_NIOS2_S16	.data\+0xffff8000
-+0+005c <[^>]*> stw	r4,0\(zero\)
-+[	]*5c: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0060 <[^>]*> stw	r4,0\(zero\)
-+[	]*60: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0064 <[^>]*> stw	r4,0\(zero\)
-+[	]*64: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0068 <[^>]*> stw	r4,0\(zero\)
-+[	]*68: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+006c <[^>]*> stw	r4,0\(zero\)
-+[	]*6c: R_NIOS2_S16	.bss\+0xffff8000
-+0+0070 <[^>]*> stw	r4,0\(zero\)
-+[	]*70: R_NIOS2_S16	.bss\+0xffffc000
-+0+0074 <[^>]*> stw	r4,0\(zero\)
-+[	]*74: R_NIOS2_S16	.data\+0x10000
-+0+0078 <[^>]*> stw	r4,0\(r5\)
-+[	]*78: R_NIOS2_S16	.data
-+0+007c <[^>]*> stw	r4,0\(r5\)
-+[	]*7c: R_NIOS2_S16	big_external_data_label
-+0+0080 <[^>]*> stw	r4,0\(r5\)
-+[	]*80: R_NIOS2_S16	small_external_data_label
-+0+0084 <[^>]*> stw	r4,0\(r5\)
-+[	]*84: R_NIOS2_S16	big_external_common
-+0+0088 <[^>]*> stw	r4,0\(r5\)
-+[	]*88: R_NIOS2_S16	small_external_common
-+0+008c <[^>]*> stw	r4,0\(r5\)
-+[	]*8c: R_NIOS2_S16	.bss
-+0+0090 <[^>]*> stw	r4,0\(r5\)
-+[	]*90: R_NIOS2_S16	.bss\+0x4000
-+0+0094 <[^>]*> stw	r4,0\(r5\)
-+[	]*94: R_NIOS2_S16	.data\+0x4
-+0+0098 <[^>]*> stw	r4,0\(r5\)
-+[	]*98: R_NIOS2_S16	big_external_data_label\+0x4
-+0+009c <[^>]*> stw	r4,0\(r5\)
-+[	]*9c: R_NIOS2_S16	small_external_data_label\+0x4
-+0+00a0 <[^>]*> stw	r4,0\(r5\)
-+[	]*a0: R_NIOS2_S16	big_external_common\+0x4
-+0+00a4 <[^>]*> stw	r4,0\(r5\)
-+[	]*a4: R_NIOS2_S16	small_external_common\+0x4
-+0+00a8 <[^>]*> stw	r4,0\(r5\)
-+[	]*a8: R_NIOS2_S16	.bss\+0x4
-+0+00ac <[^>]*> stw	r4,0\(r5\)
-+[	]*ac: R_NIOS2_S16	.bss\+0x4004
-+0+00b0 <[^>]*> stw	r4,0\(r5\)
-+[	]*b0: R_NIOS2_S16	.data\+0xffff8000
-+0+00b4 <[^>]*> stw	r4,0\(r5\)
-+[	]*b4: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+00b8 <[^>]*> stw	r4,0\(r5\)
-+[	]*b8: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+00bc <[^>]*> stw	r4,0\(r5\)
-+[	]*bc: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+00c0 <[^>]*> stw	r4,0\(r5\)
-+[	]*c0: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+00c4 <[^>]*> stw	r4,0\(r5\)
-+[	]*c4: R_NIOS2_S16	.bss\+0xffff8000
-+0+00c8 <[^>]*> stw	r4,0\(r5\)
-+[	]*c8: R_NIOS2_S16	.bss\+0xffffc000
-+0+00cc <[^>]*> stwio	r4,0\(zero\)
-+0+00d0 <[^>]*> stwio	r4,4\(zero\)
-+0+00d4 <[^>]*> stwio	r4,32764\(zero\)
-+0+00d8 <[^>]*> stwio	r4,-32768\(zero\)
-+0+00dc <[^>]*> stwio	r4,0\(r5\)
-+0+00e0 <[^>]*> stwio	r4,4\(r5\)
-+0+00e4 <[^>]*> stwio	r4,32764\(r5\)
-+0+00e8 <[^>]*> stwio	r4,-32768\(r5\)
-+0+00ec <[^>]*> stwio	r4,0\(zero\)
-+[	]*ec: R_NIOS2_S16	.data
-+0+00f0 <[^>]*> stwio	r4,0\(zero\)
-+[	]*f0: R_NIOS2_S16	big_external_data_label
-+0+00f4 <[^>]*> stwio	r4,0\(zero\)
-+[	]*f4: R_NIOS2_S16	small_external_data_label
-+0+00f8 <[^>]*> stwio	r4,0\(zero\)
-+[	]*f8: R_NIOS2_S16	big_external_common
-+0+00fc <[^>]*> stwio	r4,0\(zero\)
-+[	]*fc: R_NIOS2_S16	small_external_common
-+0+0100 <[^>]*> stwio	r4,0\(zero\)
-+[	]*100: R_NIOS2_S16	.bss
-+0+0104 <[^>]*> stwio	r4,0\(zero\)
-+[	]*104: R_NIOS2_S16	.bss\+0x4000
-+0+0108 <[^>]*> stwio	r4,0\(zero\)
-+[	]*108: R_NIOS2_S16	.data\+0x4
-+0+010c <[^>]*> stwio	r4,0\(zero\)
-+[	]*10c: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0110 <[^>]*> stwio	r4,0\(zero\)
-+[	]*110: R_NIOS2_S16	small_external_data_label\+0x4
-+0+0114 <[^>]*> stwio	r4,0\(zero\)
-+[	]*114: R_NIOS2_S16	big_external_common\+0x4
-+0+0118 <[^>]*> stwio	r4,0\(zero\)
-+[	]*118: R_NIOS2_S16	small_external_common\+0x4
-+0+011c <[^>]*> stwio	r4,0\(zero\)
-+[	]*11c: R_NIOS2_S16	.bss\+0x4
-+0+0120 <[^>]*> stwio	r4,0\(zero\)
-+[	]*120: R_NIOS2_S16	.bss\+0x4004
-+0+0124 <[^>]*> stwio	r4,0\(zero\)
-+[	]*124: R_NIOS2_S16	.data\+0xffff8000
-+0+0128 <[^>]*> stwio	r4,0\(zero\)
-+[	]*128: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+012c <[^>]*> stwio	r4,0\(zero\)
-+[	]*12c: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0130 <[^>]*> stwio	r4,0\(zero\)
-+[	]*130: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+0134 <[^>]*> stwio	r4,0\(zero\)
-+[	]*134: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0138 <[^>]*> stwio	r4,0\(zero\)
-+[	]*138: R_NIOS2_S16	.bss\+0xffff8000
-+0+013c <[^>]*> stwio	r4,0\(zero\)
-+[	]*13c: R_NIOS2_S16	.bss\+0xffffc000
-+0+0140 <[^>]*> stwio	r4,0\(zero\)
-+[	]*140: R_NIOS2_S16	.data\+0x10000
-+0+0144 <[^>]*> stwio	r4,0\(r5\)
-+[	]*144: R_NIOS2_S16	.data
-+0+0148 <[^>]*> stwio	r4,0\(r5\)
-+[	]*148: R_NIOS2_S16	big_external_data_label
-+0+014c <[^>]*> stwio	r4,0\(r5\)
-+[	]*14c: R_NIOS2_S16	small_external_data_label
-+0+0150 <[^>]*> stwio	r4,0\(r5\)
-+[	]*150: R_NIOS2_S16	big_external_common
-+0+0154 <[^>]*> stwio	r4,0\(r5\)
-+[	]*154: R_NIOS2_S16	small_external_common
-+0+0158 <[^>]*> stwio	r4,0\(r5\)
-+[	]*158: R_NIOS2_S16	.bss
-+0+015c <[^>]*> stwio	r4,0\(r5\)
-+[	]*15c: R_NIOS2_S16	.bss\+0x4000
-+0+0160 <[^>]*> stwio	r4,0\(r5\)
-+[	]*160: R_NIOS2_S16	.data\+0x4
-+0+0164 <[^>]*> stwio	r4,0\(r5\)
-+[	]*164: R_NIOS2_S16	big_external_data_label\+0x4
-+0+0168 <[^>]*> stwio	r4,0\(r5\)
-+[	]*168: R_NIOS2_S16	small_external_data_label\+0x4
-+0+016c <[^>]*> stwio	r4,0\(r5\)
-+[	]*16c: R_NIOS2_S16	big_external_common\+0x4
-+0+0170 <[^>]*> stwio	r4,0\(r5\)
-+[	]*170: R_NIOS2_S16	small_external_common\+0x4
-+0+0174 <[^>]*> stwio	r4,0\(r5\)
-+[	]*174: R_NIOS2_S16	.bss\+0x4
-+0+0178 <[^>]*> stwio	r4,0\(r5\)
-+[	]*178: R_NIOS2_S16	.bss\+0x4004
-+0+017c <[^>]*> stwio	r4,0\(r5\)
-+[	]*17c: R_NIOS2_S16	.data\+0xffff8000
-+0+0180 <[^>]*> stwio	r4,0\(r5\)
-+[	]*180: R_NIOS2_S16	big_external_data_label\+0xffff8000
-+0+0184 <[^>]*> stwio	r4,0\(r5\)
-+[	]*184: R_NIOS2_S16	small_external_data_label\+0xffff8000
-+0+0188 <[^>]*> stwio	r4,0\(r5\)
-+[	]*188: R_NIOS2_S16	big_external_common\+0xffff8000
-+0+018c <[^>]*> stwio	r4,0\(r5\)
-+[	]*18c: R_NIOS2_S16	small_external_common\+0xffff8000
-+0+0190 <[^>]*> stwio	r4,0\(r5\)
-+[	]*190: R_NIOS2_S16	.bss\+0xffff8000
-+0+0194 <[^>]*> stwio	r4,0\(r5\)
-+[	]*194: R_NIOS2_S16	.bss\+0xffffc000
---- binutils-2.15/gas/testsuite/gas/nios2/stw.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/stw.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,117 @@
-+	.data
-+data_label:
-+	.extern big_external_data_label,0x4000
-+	.extern small_external_data_label,4
-+	.comm big_external_common,0x4000
-+	.comm small_external_common,4
-+	.lcomm big_local_common,0x4000
-+	.lcomm small_local_common,4
-+
-+# the small symbols should have space allocated in the sbss section
-+# but this is not yet supported in the assembler, so space is allocated
-+# in the .bss section and the relocations are not gp-relative. this will
-+# be updated when gp-relative relocations are added
-+	.text
-+	stw	r4,0(r0)
-+	stw	r4,4(r0)
-+	stw	r4,0x7ffc(r0)
-+	stw	r4,-0x8000(r0)
-+	stw	r4,0(r5)
-+	stw	r4,4(r5)
-+	stw	r4,0x7ffc(r5)
-+	stw	r4,-0x8000(r5)
-+	stw	r4,data_label(r0)
-+	stw	r4,big_external_data_label(r0)
-+	stw	r4,small_external_data_label(r0)
-+	stw	r4,big_external_common(r0)
-+	stw	r4,small_external_common(r0)
-+	stw	r4,big_local_common(r0)
-+	stw	r4,small_local_common(r0)
-+	stw	r4,data_label+4(r0)
-+	stw	r4,big_external_data_label+4(r0)
-+	stw	r4,small_external_data_label+4(r0)
-+	stw	r4,big_external_common+4(r0)
-+	stw	r4,small_external_common+4(r0)
-+	stw	r4,big_local_common+4(r0)
-+	stw	r4,small_local_common+4(r0)
-+	stw	r4,data_label-0x8000(r0)
-+	stw	r4,big_external_data_label-0x8000(r0)
-+	stw	r4,small_external_data_label-0x8000(r0)
-+	stw	r4,big_external_common-0x8000(r0)
-+	stw	r4,small_external_common-0x8000(r0)
-+	stw	r4,big_local_common-0x8000(r0)
-+	stw	r4,small_local_common-0x8000(r0)
-+	stw	r4,data_label+0x10000(r0)
-+	stw	r4,data_label(r5)
-+	stw	r4,big_external_data_label(r5)
-+	stw	r4,small_external_data_label(r5)
-+	stw	r4,big_external_common(r5)
-+	stw	r4,small_external_common(r5)
-+	stw	r4,big_local_common(r5)
-+	stw	r4,small_local_common(r5)
-+	stw	r4,data_label+4(r5)
-+	stw	r4,big_external_data_label+4(r5)
-+	stw	r4,small_external_data_label+4(r5)
-+	stw	r4,big_external_common+4(r5)
-+	stw	r4,small_external_common+4(r5)
-+	stw	r4,big_local_common+4(r5)
-+	stw	r4,small_local_common+4(r5)
-+	stw	r4,data_label-0x8000(r5)
-+	stw	r4,big_external_data_label-0x8000(r5)
-+	stw	r4,small_external_data_label-0x8000(r5)
-+	stw	r4,big_external_common-0x8000(r5)
-+	stw	r4,small_external_common-0x8000(r5)
-+	stw	r4,big_local_common-0x8000(r5)
-+	stw	r4,small_local_common-0x8000(r5)
-+	
-+	stwio	r4,0(r0)
-+	stwio	r4,4(r0)
-+	stwio	r4,0x7ffc(r0)
-+	stwio	r4,-0x8000(r0)
-+	stwio	r4,0(r5)
-+	stwio	r4,4(r5)
-+	stwio	r4,0x7ffc(r5)
-+	stwio	r4,-0x8000(r5)
-+	stwio	r4,data_label(r0)
-+	stwio	r4,big_external_data_label(r0)
-+	stwio	r4,small_external_data_label(r0)
-+	stwio	r4,big_external_common(r0)
-+	stwio	r4,small_external_common(r0)
-+	stwio	r4,big_local_common(r0)
-+	stwio	r4,small_local_common(r0)
-+	stwio	r4,data_label+4(r0)
-+	stwio	r4,big_external_data_label+4(r0)
-+	stwio	r4,small_external_data_label+4(r0)
-+	stwio	r4,big_external_common+4(r0)
-+	stwio	r4,small_external_common+4(r0)
-+	stwio	r4,big_local_common+4(r0)
-+	stwio	r4,small_local_common+4(r0)
-+	stwio	r4,data_label-0x8000(r0)
-+	stwio	r4,big_external_data_label-0x8000(r0)
-+	stwio	r4,small_external_data_label-0x8000(r0)
-+	stwio	r4,big_external_common-0x8000(r0)
-+	stwio	r4,small_external_common-0x8000(r0)
-+	stwio	r4,big_local_common-0x8000(r0)
-+	stwio	r4,small_local_common-0x8000(r0)
-+	stwio	r4,data_label+0x10000(r0)
-+	stwio	r4,data_label(r5)
-+	stwio	r4,big_external_data_label(r5)
-+	stwio	r4,small_external_data_label(r5)
-+	stwio	r4,big_external_common(r5)
-+	stwio	r4,small_external_common(r5)
-+	stwio	r4,big_local_common(r5)
-+	stwio	r4,small_local_common(r5)
-+	stwio	r4,data_label+4(r5)
-+	stwio	r4,big_external_data_label+4(r5)
-+	stwio	r4,small_external_data_label+4(r5)
-+	stwio	r4,big_external_common+4(r5)
-+	stwio	r4,small_external_common+4(r5)
-+	stwio	r4,big_local_common+4(r5)
-+	stwio	r4,small_local_common+4(r5)
-+	stwio	r4,data_label-0x8000(r5)
-+	stwio	r4,big_external_data_label-0x8000(r5)
-+	stwio	r4,small_external_data_label-0x8000(r5)
-+	stwio	r4,big_external_common-0x8000(r5)
-+	stwio	r4,small_external_common-0x8000(r5)
-+	stwio	r4,big_local_common-0x8000(r5)
-+	stwio	r4,small_local_common-0x8000(r5)
---- binutils-2.15/gas/testsuite/gas/nios2/sub.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/sub.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,10 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 sub
-+
-+# Test the add instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> sub	r4,r4,r4
-+
---- binutils-2.15/gas/testsuite/gas/nios2/sub.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/sub.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,4 @@
-+# Source file used to test the add and addi instructions.
-+	
-+foo:
-+	sub	r4,r4,r4
---- binutils-2.15/gas/testsuite/gas/nios2/sync.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/sync.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8 @@
-+#objdump: -dr --prefix-addresses 
-+#name: NIOS2 sync
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section \.text:
-+0+0000 <foo> sync
-+
---- binutils-2.15/gas/testsuite/gas/nios2/sync.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/sync.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,5 @@
-+# Source file used to test the sync instructions
-+foo:
-+	sync
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/trap.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/trap.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,7 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 trap
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> trap
---- binutils-2.15/gas/testsuite/gas/nios2/trap.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/trap.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,3 @@
-+# Source file used to test the ret instructions
-+foo:
-+	trap
---- binutils-2.15/gas/testsuite/gas/nios2/tret.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/tret.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 tret
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> eret
-+
---- binutils-2.15/gas/testsuite/gas/nios2/tret.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/tret.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,5 @@
-+# Source file used to test the ret instructions
-+foo:
-+	eret
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/u16_symbol.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/u16_symbol.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,9 @@
-+.global some_sym
-+.global min
-+.global max
-+
-+.set max, 0xffff
-+.set min, 0
-+.set some_sym, 0x1000
-+
-+
---- binutils-2.15/gas/testsuite/gas/nios2/warn_noat.l	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/warn_noat.l	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,5 @@
-+.*warn_noat.s: Assembler messages:
-+.*warn_noat.s:2: Warning: Register at \(r1\) can sometimes be corrupted by assembler optimizations.
-+Use .set noat to turn off those optimizations \(and this warning\).
-+.*warn_noat.s:8: Warning: Register at \(r1\) can sometimes be corrupted by assembler optimizations.
-+Use .set noat to turn off those optimizations \(and this warning\).
---- binutils-2.15/gas/testsuite/gas/nios2/warn_noat.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/warn_noat.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,8 @@
-+.set noat, 2 # This should not cause warning for at to be turned off
-+add at, r2, r2
-+.set noat  # this should turn the warnings off
-+add at, r2, r2
-+.set at, 3     # this should not turn the warnings on
-+add at, r2, r2
-+.set at      # this should turn the warnings on
-+add at, r2, r2
---- binutils-2.15/gas/testsuite/gas/nios2/warn_nobreak.l	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/warn_nobreak.l	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,9 @@
-+.*warn_nobreak.s: Assembler messages:
-+.*warn_nobreak.s:2: Warning: The debugger will corrupt ba \(r30\). If you don't need to debug this
-+code then use .set nobreak to turn off this warning.
-+.*warn_nobreak.s:3: Warning: The debugger will corrupt bt \(r25\). If you don't need to debug this
-+code then use .set nobreak to turn off this warning.
-+.*warn_nobreak.s:11: Warning: The debugger will corrupt ba \(r30\). If you don't need to debug this
-+code then use .set nobreak to turn off this warning.
-+.*warn_nobreak.s:12: Warning: The debugger will corrupt bt \(r25\). If you don't need to debug this
-+code then use .set nobreak to turn off this warning.
---- binutils-2.15/gas/testsuite/gas/nios2/warn_nobreak.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/warn_nobreak.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,12 @@
-+.set nobreak , 2 # This should not cause warning for ba, bt to be turned off
-+add ba, r2, r2
-+add bt, r2, r2
-+.set nobreak     # this should turn the warnings off
-+add ba, r3, r4
-+add bt, r3, r4
-+.set break, 3     # this should not turn the warnings on
-+add ba, r3, r4
-+add bt, r3, r4
-+.set break      # this should turn the warnings on
-+add ba, r3, r4
-+add bt, r3, r4
---- binutils-2.15/gas/testsuite/gas/nios2/xor.d	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/xor.d	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,11 @@
-+#objdump: -dr --prefix-addresses
-+#name: NIOS2 xor
-+
-+# Test the nor instruction
-+
-+.*: +file format elf32-littlenios2
-+
-+Disassembly of section .text:
-+0+0000 <[^>]*> xor	r6,r8,r10
-+0+0004 <[^>]*> xorhi	r6,r7,65535
-+0+0008 <[^>]*> xori	r6,r7,65535
---- binutils-2.15/gas/testsuite/gas/nios2/xor.s	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/gas/nios2/xor.s	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,7 @@
-+# Source file used to test the nor instruction
-+	
-+foo:
-+	xor	r6,r8,r10
-+	xorhi	r6,r7,0xffff
-+	xori	r6,r7,0xffff
-+
---- binutils-2.15/gas/testsuite/nios2_as_xfail.lst	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/gas/testsuite/nios2_as_xfail.lst	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,4 @@
-+FAIL: vtable inherit0
-+FAIL: vtable entry1
-+
-+
---- binutils-2.15/include/bfdlink.h	2004-05-17 21:36:06.000000000 +0200
-+++ binutils-2.15-nios2/include/bfdlink.h	2005-05-17 12:20:14.000000000 +0200
-@@ -688,4 +688,14 @@ struct bfd_elf_version_tree
-      struct bfd_elf_version_expr *prev, const char *sym);
- };
- 
-+/* NG - There seems to be no way of getting link_info from the linker into
-+ * bfd so that functions which aren't passed it can use it, and I need
-+ * it so that gprel relocations work properly when generating srecs. This isn't
-+ * right, but it works, and for the amount of work...*/
-+#define bfd_set_link_info _bfd_set_link_info
-+extern void _bfd_set_link_info (struct bfd_link_info *info);
-+
-+#define bfd_set_force_make_executable _bfd_set_force_make_executable
-+extern void _bfd_set_force_make_executable (bfd_boolean force);
-+
- #endif
---- binutils-2.15/include/dis-asm.h	2003-11-14 16:12:43.000000000 +0100
-+++ binutils-2.15-nios2/include/dis-asm.h	2005-05-17 12:20:14.000000000 +0200
-@@ -247,6 +247,7 @@ extern int print_insn_sh64		(bfd_vma, di
- extern int print_insn_sh64x_media	(bfd_vma, disassemble_info *);
- extern int print_insn_frv		(bfd_vma, disassemble_info *);
- extern int print_insn_iq2000		(bfd_vma, disassemble_info *);
-+extern int print_insn_nios2		(bfd_vma, disassemble_info *);
- 
- extern disassembler_ftype arc_get_disassembler (void *);
- extern disassembler_ftype cris_get_disassembler (bfd *);
---- binutils-2.15/include/elf/common.h	2004-01-29 03:41:18.000000000 +0100
-+++ binutils-2.15-nios2/include/elf/common.h	2005-05-17 12:20:14.000000000 +0200
-@@ -182,6 +182,8 @@
- #define EM_IP2K		101	/* Ubicom IP2022 micro controller */
- #define EM_MSP430	105	/* TI msp430 micro controller */
- 
-+#define EM_ALTERA_NIOS2	113 /* Altera Nios II soft-core processor */
-+
- /* If it is necessary to assign new unofficial EM_* values, please pick large
-    random numbers (0x8523, 0xa7f2, etc.) to minimize the chances of collision
-    with official or non-GNU unofficial values.
---- binutils-2.15/include/elf/nios2.h	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/include/elf/nios2.h	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,65 @@
-+/* Altera New Jersey ELF support for BFD
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+This file is part of BFD, the Binary File Descriptor library.
-+
-+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.  */
-+
-+/* This file holds definitions specific to the Altera New Jersey ELF ABI.  Note
-+   that most of this is not actually implemented by BFD.  */
-+
-+#ifndef _ELF_NIOS2_H
-+#define _ELF_NIOS2_H
-+
-+#include "elf/reloc-macros.h"
-+
-+/* the order of these numbers must match the order in
-+   the elf_nios2_howto_table_rel table for the lookup
-+   function to work properly */
-+
-+START_RELOC_NUMBERS (elf_nios2_reloc_type)
-+  RELOC_NUMBER (R_NIOS2_NONE,	  0)
-+  RELOC_NUMBER (R_NIOS2_S16,	  1)
-+  RELOC_NUMBER (R_NIOS2_U16,	  2)
-+  RELOC_NUMBER (R_NIOS2_PCREL16, 3)
-+  RELOC_NUMBER (R_NIOS2_CALL26,  4)
-+  RELOC_NUMBER (R_NIOS2_IMM5,	  5)
-+  RELOC_NUMBER (R_NIOS2_CACHE_OPX, 6)
-+  RELOC_NUMBER (R_NIOS2_IMM6,	  7)
-+  RELOC_NUMBER (R_NIOS2_IMM8,	  8)
-+  RELOC_NUMBER (R_NIOS2_HI16,	  9)
-+  RELOC_NUMBER (R_NIOS2_LO16,	  10)
-+  RELOC_NUMBER (R_NIOS2_HIADJ16, 11)
-+  RELOC_NUMBER (R_NIOS2_BFD_RELOC_32, 12)
-+  RELOC_NUMBER (R_NIOS2_BFD_RELOC_16, 13)
-+  RELOC_NUMBER (R_NIOS2_BFD_RELOC_8, 14)
-+  RELOC_NUMBER (R_NIOS2_GPREL, 15)
-+  RELOC_NUMBER (R_NIOS2_GNU_VTINHERIT, 16)
-+  RELOC_NUMBER (R_NIOS2_GNU_VTENTRY, 17)
-+  RELOC_NUMBER (R_NIOS2_UJMP, 18)
-+  RELOC_NUMBER (R_NIOS2_CJMP, 19)
-+  RELOC_NUMBER (R_NIOS2_CALLR, 20)
-+  RELOC_NUMBER (R_NIOS2_ALIGN, 21)
-+  RELOC_NUMBER (R_NIOS2_ILLEGAL, 22)
-+END_RELOC_NUMBERS (R_NIOS2_maxext)
-+
-+/* Processor specific section flags */
-+
-+/* This is used to mark gp-relative sections */
-+#define SHF_NIOS2_GPREL	0x10000000
-+
-+#endif //_ELF_NIOS2_H
---- binutils-2.15/include/opcode/nios2-isa.h	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/include/opcode/nios2-isa.h	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,1453 @@
-+/* This file is automatically generated by gen_isa.pl - do not edit */
-+
-+#ifndef _NIOS2_ISA_H_
-+#define _NIOS2_ISA_H_
-+
-+/* OP instruction opcode values (index is OP field) */
-+#define NUM_OP_INSTS 64
-+extern const char* op_names[NUM_OP_INSTS];
-+
-+/* OPX instruction opcode values (index is OPX field) */
-+#define NUM_OPX_INSTS 64
-+extern const char* opx_names[NUM_OPX_INSTS];
-+
-+/* Constants for instruction fields and ISA */
-+#define BRETADDR_REGNUM 30
-+#define BSTATUS_REG_LSB 2
-+#define BSTATUS_REG_MMU_LSB 0
-+#define BSTATUS_REG_MMU_MSB 2
-+#define BSTATUS_REG_MMU_SZ 3
-+#define BSTATUS_REG_MMU_MASK 0x7
-+#define BSTATUS_REG_NO_MMU_LSB 0
-+#define BSTATUS_REG_NO_MMU_MSB 0
-+#define BSTATUS_REG_NO_MMU_SZ 1
-+#define BSTATUS_REG_NO_MMU_MASK 0x1
-+#define BSTATUS_REG_REGNUM 2
-+#define BSTATUS_REG_SZ 3
-+#define BSTATUS_REG_MASK 0x7
-+#define COMPARE_OP_EQ 0x0
-+#define COMPARE_OP_GE 0x1
-+#define COMPARE_OP_LSB 3
-+#define COMPARE_OP_LT 0x2
-+#define COMPARE_OP_MSB 4
-+#define COMPARE_OP_NE 0x3
-+#define COMPARE_OP_SZ 2
-+#define COMPARE_OP_MASK 0x3
-+#define CPUID_REG_LSB 0
-+#define CPUID_REG_MSB 31
-+#define CPUID_REG_REGNUM 5
-+#define CPUID_REG_SZ 32
-+#define CPUID_REG_MASK 0xffffffff
-+#define DATAPATH_LOG2_SZ 5
-+#define DATAPATH_LOG2_MASK 0x1f
-+#define DATAPATH_LSB 0
-+#define DATAPATH_MSB 31
-+#define DATAPATH_SZ 32
-+#define DATAPATH_MASK 0xffffffff
-+#define EMPTY_HBREAK_IW 4040762
-+#define EMPTY_INTR_IW 3926074
-+#define EMPTY_NOP_IW 100410
-+#define EMPTY_RET_IW 4160759866
-+#define ERETADDR_REGNUM 29
-+#define ESTATUS_REG_LSB 0
-+#define ESTATUS_REG_MMU_LSB 0
-+#define ESTATUS_REG_MMU_MSB 2
-+#define ESTATUS_REG_MMU_SZ 3
-+#define ESTATUS_REG_MMU_MASK 0x7
-+#define ESTATUS_REG_MSB 2
-+#define ESTATUS_REG_NO_MMU_LSB 0
-+#define ESTATUS_REG_NO_MMU_MSB 0
-+#define ESTATUS_REG_NO_MMU_SZ 1
-+#define ESTATUS_REG_NO_MMU_MASK 0x1
-+#define ESTATUS_REG_REGNUM 1
-+#define ESTATUS_REG_SZ 3
-+#define ESTATUS_REG_MASK 0x7
-+#define FP_REGNUM 28
-+#define GP_REGNUM 26
-+#define IENABLE_REG_LSB 0
-+#define IENABLE_REG_MSB 31
-+#define IENABLE_REG_REGNUM 3
-+#define IENABLE_REG_SZ 32
-+#define IENABLE_REG_MASK 0xffffffff
-+#define IPENDING_REG_LSB 0
-+#define IPENDING_REG_MSB 31
-+#define IPENDING_REG_REGNUM 4
-+#define IPENDING_REG_SZ 32
-+#define IPENDING_REG_MASK 0xffffffff
-+#define IW_A_LSB 27
-+#define IW_A_MSB 31
-+#define IW_A_SZ 5
-+#define IW_A_MASK 0x1f
-+#define IW_B_LSB 22
-+#define IW_B_MSB 26
-+#define IW_B_SZ 5
-+#define IW_B_MASK 0x1f
-+#define IW_C_LSB 17
-+#define IW_C_MSB 21
-+#define IW_C_SZ 5
-+#define IW_C_MASK 0x1f
-+#define IW_CONTROL_REGNUM_BASE 0
-+#define IW_CONTROL_REGNUM_LSB 6
-+#define IW_CONTROL_REGNUM_MSB 9
-+#define IW_CONTROL_REGNUM_SZ 4
-+#define IW_CONTROL_REGNUM_MASK 0xf
-+#define IW_CUSTOM_N_LSB 6
-+#define IW_CUSTOM_N_MSB 13
-+#define IW_CUSTOM_N_SZ 8
-+#define IW_CUSTOM_N_MASK 0xff
-+#define IW_CUSTOM_READRA_LSB 16
-+#define IW_CUSTOM_READRA_MSB 16
-+#define IW_CUSTOM_READRA_SZ 1
-+#define IW_CUSTOM_READRA_MASK 0x1
-+#define IW_CUSTOM_READRB_LSB 15
-+#define IW_CUSTOM_READRB_MSB 15
-+#define IW_CUSTOM_READRB_SZ 1
-+#define IW_CUSTOM_READRB_MASK 0x1
-+#define IW_CUSTOM_WRITERC_LSB 14
-+#define IW_CUSTOM_WRITERC_MSB 14
-+#define IW_CUSTOM_WRITERC_SZ 1
-+#define IW_CUSTOM_WRITERC_MASK 0x1
-+#define IW_IMM16_LSB 6
-+#define IW_IMM16_MSB 21
-+#define IW_IMM16_SZ 16
-+#define IW_IMM16_MASK 0xffff
-+#define IW_IMM26_LSB 6
-+#define IW_IMM26_MSB 31
-+#define IW_IMM26_SZ 26
-+#define IW_IMM26_MASK 0x3ffffff
-+#define IW_MEMSZ_BYTE 0x0
-+#define IW_MEMSZ_HWORD 0x1
-+#define IW_MEMSZ_LSB 3
-+#define IW_MEMSZ_MSB 4
-+#define IW_MEMSZ_SZ 2
-+#define IW_MEMSZ_MASK 0x3
-+#define IW_MEMSZ_WORD 0x2
-+#define IW_MEMSZ_WORD_MSB 0x1
-+#define IW_OP_LSB 0
-+#define IW_OP_MSB 5
-+#define IW_OP_SZ 6
-+#define IW_OP_MASK 0x3f
-+#define IW_OPX_LSB 11
-+#define IW_OPX_MSB 16
-+#define IW_OPX_SZ 6
-+#define IW_OPX_MASK 0x3f
-+#define IW_SHIFT_IMM5_LSB 6
-+#define IW_SHIFT_IMM5_MSB 10
-+#define IW_SHIFT_IMM5_SZ 5
-+#define IW_SHIFT_IMM5_MASK 0x1f
-+#define IW_SZ 32
-+#define IW_MASK 0xffffffff
-+#define IW_TRAP_BREAK_IMM5_LSB 6
-+#define IW_TRAP_BREAK_IMM5_MSB 10
-+#define IW_TRAP_BREAK_IMM5_SZ 5
-+#define IW_TRAP_BREAK_IMM5_MASK 0x1f
-+#define JMP_CALLR_VS_RET_IS_RET 0
-+#define JMP_CALLR_VS_RET_OPX_BIT 3
-+#define LOGIC_OP_AND 0x1
-+#define LOGIC_OP_LSB 3
-+#define LOGIC_OP_MSB 4
-+#define LOGIC_OP_NOR 0x0
-+#define LOGIC_OP_OR 0x2
-+#define LOGIC_OP_SZ 2
-+#define LOGIC_OP_MASK 0x3
-+#define LOGIC_OP_XOR 0x3
-+#define MMU_ADDR_BYPASS_TLB 0x3
-+#define MMU_ADDR_BYPASS_TLB_CACHEABLE 0x0
-+#define MMU_ADDR_BYPASS_TLB_CACHEABLE_LSB 29
-+#define MMU_ADDR_BYPASS_TLB_CACHEABLE_MSB 29
-+#define MMU_ADDR_BYPASS_TLB_CACHEABLE_SZ 1
-+#define MMU_ADDR_BYPASS_TLB_CACHEABLE_MASK 0x1
-+#define MMU_ADDR_BYPASS_TLB_LSB 30
-+#define MMU_ADDR_BYPASS_TLB_MSB 31
-+#define MMU_ADDR_BYPASS_TLB_PADDR_LSB 0
-+#define MMU_ADDR_BYPASS_TLB_PADDR_MSB 28
-+#define MMU_ADDR_BYPASS_TLB_PADDR_SZ 29
-+#define MMU_ADDR_BYPASS_TLB_PADDR_MASK 0x1fffffff
-+#define MMU_ADDR_BYPASS_TLB_SZ 2
-+#define MMU_ADDR_BYPASS_TLB_MASK 0x3
-+#define MMU_ADDR_IO_REGION 0x7
-+#define MMU_ADDR_IO_REGION_LSB 29
-+#define MMU_ADDR_IO_REGION_MSB 31
-+#define MMU_ADDR_IO_REGION_SZ 3
-+#define MMU_ADDR_IO_REGION_MASK 0x7
-+#define MMU_ADDR_KERNEL_MMU_REGION 0x2
-+#define MMU_ADDR_KERNEL_MMU_REGION_LSB 30
-+#define MMU_ADDR_KERNEL_MMU_REGION_MSB 31
-+#define MMU_ADDR_KERNEL_MMU_REGION_SZ 2
-+#define MMU_ADDR_KERNEL_MMU_REGION_MASK 0x3
-+#define MMU_ADDR_KERNEL_REGION 0x6
-+#define MMU_ADDR_KERNEL_REGION_LSB 29
-+#define MMU_ADDR_KERNEL_REGION_MSB 31
-+#define MMU_ADDR_KERNEL_REGION_SZ 3
-+#define MMU_ADDR_KERNEL_REGION_MASK 0x7
-+#define MMU_ADDR_PAGE_OFFSET_LSB 0
-+#define MMU_ADDR_PAGE_OFFSET_MSB 11
-+#define MMU_ADDR_PAGE_OFFSET_SZ 12
-+#define MMU_ADDR_PAGE_OFFSET_MASK 0xfff
-+#define MMU_ADDR_PFN_LSB 12
-+#define MMU_ADDR_PFN_MSB 31
-+#define MMU_ADDR_PFN_SZ 20
-+#define MMU_ADDR_PFN_MASK 0xfffff
-+#define MMU_ADDR_USER_REGION 0x0
-+#define MMU_ADDR_USER_REGION_LSB 31
-+#define MMU_ADDR_USER_REGION_MSB 31
-+#define MMU_ADDR_USER_REGION_SZ 1
-+#define MMU_ADDR_USER_REGION_MASK 0x1
-+#define MMU_ADDR_VPN_LSB 12
-+#define MMU_ADDR_VPN_MSB 31
-+#define MMU_ADDR_VPN_SZ 20
-+#define MMU_ADDR_VPN_MASK 0xfffff
-+#define PERF_CNT_REG_CLR_LSB 1
-+#define PERF_CNT_REG_CLR_MSB 1
-+#define PERF_CNT_REG_CLR_SZ 1
-+#define PERF_CNT_REG_CLR_MASK 0x1
-+#define PERF_CNT_REG_EN_LSB 0
-+#define PERF_CNT_REG_EN_MSB 0
-+#define PERF_CNT_REG_EN_SZ 1
-+#define PERF_CNT_REG_EN_MASK 0x1
-+#define PERF_CNT_REG_LSB 0
-+#define PERF_CNT_REG_MSB 1
-+#define PERF_CNT_REG_REGNUM 7
-+#define PERF_CNT_REG_SZ 2
-+#define PERF_CNT_REG_MASK 0x3
-+#define PTEADDR_REG_LSB 0
-+#define PTEADDR_REG_MSB 31
-+#define PTEADDR_REG_PTBASE_LSB 22
-+#define PTEADDR_REG_PTBASE_MSB 31
-+#define PTEADDR_REG_PTBASE_SZ 10
-+#define PTEADDR_REG_PTBASE_MASK 0x3ff
-+#define PTEADDR_REG_REGNUM 8
-+#define PTEADDR_REG_RSV_LSB 0
-+#define PTEADDR_REG_RSV_MSB 1
-+#define PTEADDR_REG_RSV_SZ 2
-+#define PTEADDR_REG_RSV_MASK 0x3
-+#define PTEADDR_REG_SZ 32
-+#define PTEADDR_REG_MASK 0xffffffff
-+#define PTEADDR_REG_VPN_LSB 2
-+#define PTEADDR_REG_VPN_MSB 21
-+#define PTEADDR_REG_VPN_SZ 20
-+#define PTEADDR_REG_VPN_MASK 0xfffff
-+#define REGNUM_SZ 5
-+#define REGNUM_MASK 0x1f
-+#define RETADDR_REGNUM 31
-+#define RF_ADDR_SZ 5
-+#define RF_ADDR_MASK 0x1f
-+#define RF_NUM_REG 32
-+#define SIM_REG_LSB 0
-+#define SIM_REG_MSB 3
-+#define SIM_REG_REGNUM 6
-+#define SIM_REG_SHOW_DTLB_LSB 2
-+#define SIM_REG_SHOW_DTLB_MSB 2
-+#define SIM_REG_SHOW_DTLB_SZ 1
-+#define SIM_REG_SHOW_DTLB_MASK 0x1
-+#define SIM_REG_SHOW_ITLB_LSB 1
-+#define SIM_REG_SHOW_ITLB_MSB 1
-+#define SIM_REG_SHOW_ITLB_SZ 1
-+#define SIM_REG_SHOW_ITLB_MASK 0x1
-+#define SIM_REG_SHOW_MMU_REGS_LSB 3
-+#define SIM_REG_SHOW_MMU_REGS_MSB 3
-+#define SIM_REG_SHOW_MMU_REGS_SZ 1
-+#define SIM_REG_SHOW_MMU_REGS_MASK 0x1
-+#define SIM_REG_STOP_LSB 0
-+#define SIM_REG_STOP_MSB 0
-+#define SIM_REG_STOP_SZ 1
-+#define SIM_REG_STOP_MASK 0x1
-+#define SIM_REG_SZ 4
-+#define SIM_REG_MASK 0xf
-+#define SP_REGNUM 27
-+#define STATUS_REG_EH_LSB 2
-+#define STATUS_REG_EH_MSB 2
-+#define STATUS_REG_EH_SZ 1
-+#define STATUS_REG_EH_MASK 0x1
-+#define STATUS_REG_LSB 0
-+#define STATUS_REG_MMU_LSB 0
-+#define STATUS_REG_MMU_MSB 2
-+#define STATUS_REG_MMU_SZ 3
-+#define STATUS_REG_MMU_MASK 0x7
-+#define STATUS_REG_MSB 2
-+#define STATUS_REG_NO_MMU_LSB 0
-+#define STATUS_REG_NO_MMU_MSB 0
-+#define STATUS_REG_NO_MMU_SZ 1
-+#define STATUS_REG_NO_MMU_MASK 0x1
-+#define STATUS_REG_PIE_LSB 0
-+#define STATUS_REG_PIE_MSB 0
-+#define STATUS_REG_PIE_SZ 1
-+#define STATUS_REG_PIE_MASK 0x1
-+#define STATUS_REG_REGNUM 0
-+#define STATUS_REG_SZ 3
-+#define STATUS_REG_MASK 0x7
-+#define STATUS_REG_U_LSB 1
-+#define STATUS_REG_U_MSB 1
-+#define STATUS_REG_U_SZ 1
-+#define STATUS_REG_U_MASK 0x1
-+#define TLB_MAX_ENTRIES 1024
-+#define TLB_MAX_LINES 512
-+#define TLB_MAX_PID_SZ 14
-+#define TLB_MAX_PID_MASK 0x3fff
-+#define TLB_MAX_PTR_SZ 10
-+#define TLB_MAX_PTR_MASK 0x3ff
-+#define TLB_MAX_WAYS 8
-+#define TLB_MIN_PID_SZ 1
-+#define TLB_MIN_PID_MASK 0x1
-+#define TLB_MIN_PTR_SZ 7
-+#define TLB_MIN_PTR_MASK 0x7f
-+#define TLB_MIN_WAYS 2
-+#define TLBACC_REG_C_LSB 24
-+#define TLBACC_REG_C_MSB 24
-+#define TLBACC_REG_C_SZ 1
-+#define TLBACC_REG_C_MASK 0x1
-+#define TLBACC_REG_G_LSB 20
-+#define TLBACC_REG_G_MSB 20
-+#define TLBACC_REG_G_SZ 1
-+#define TLBACC_REG_G_MASK 0x1
-+#define TLBACC_REG_LSB 0
-+#define TLBACC_REG_MSB 24
-+#define TLBACC_REG_PFN_LSB 0
-+#define TLBACC_REG_PFN_MSB 19
-+#define TLBACC_REG_PFN_SZ 20
-+#define TLBACC_REG_PFN_MASK 0xfffff
-+#define TLBACC_REG_R_LSB 23
-+#define TLBACC_REG_R_MSB 23
-+#define TLBACC_REG_R_SZ 1
-+#define TLBACC_REG_R_MASK 0x1
-+#define TLBACC_REG_REGNUM 9
-+#define TLBACC_REG_SZ 25
-+#define TLBACC_REG_MASK 0x1ffffff
-+#define TLBACC_REG_W_LSB 22
-+#define TLBACC_REG_W_MSB 22
-+#define TLBACC_REG_W_SZ 1
-+#define TLBACC_REG_W_MASK 0x1
-+#define TLBACC_REG_X_LSB 21
-+#define TLBACC_REG_X_MSB 21
-+#define TLBACC_REG_X_SZ 1
-+#define TLBACC_REG_X_MASK 0x1
-+#define TLBMISC_REG_BAD_LSB 2
-+#define TLBMISC_REG_BAD_MSB 2
-+#define TLBMISC_REG_BAD_SZ 1
-+#define TLBMISC_REG_BAD_MASK 0x1
-+#define TLBMISC_REG_D_LSB 0
-+#define TLBMISC_REG_D_MSB 0
-+#define TLBMISC_REG_D_SZ 1
-+#define TLBMISC_REG_D_MASK 0x1
-+#define TLBMISC_REG_DBL_LSB 3
-+#define TLBMISC_REG_DBL_MSB 3
-+#define TLBMISC_REG_DBL_SZ 1
-+#define TLBMISC_REG_DBL_MASK 0x1
-+#define TLBMISC_REG_LSB 0
-+#define TLBMISC_REG_MSB 22
-+#define TLBMISC_REG_PERM_LSB 1
-+#define TLBMISC_REG_PERM_MSB 1
-+#define TLBMISC_REG_PERM_SZ 1
-+#define TLBMISC_REG_PERM_MASK 0x1
-+#define TLBMISC_REG_PID_LSB 4
-+#define TLBMISC_REG_PID_MSB 17
-+#define TLBMISC_REG_PID_SZ 14
-+#define TLBMISC_REG_PID_MASK 0x3fff
-+#define TLBMISC_REG_RD_LSB 23
-+#define TLBMISC_REG_RD_MSB 23
-+#define TLBMISC_REG_RD_SZ 1
-+#define TLBMISC_REG_RD_MASK 0x1
-+#define TLBMISC_REG_REGNUM 10
-+#define TLBMISC_REG_RSV_LSB 18
-+#define TLBMISC_REG_RSV_MSB 19
-+#define TLBMISC_REG_RSV_SZ 2
-+#define TLBMISC_REG_RSV_MASK 0x3
-+#define TLBMISC_REG_SZ 23
-+#define TLBMISC_REG_MASK 0x7fffff
-+#define TLBMISC_REG_WAY_LSB 20
-+#define TLBMISC_REG_WAY_MSB 22
-+#define TLBMISC_REG_WAY_SZ 3
-+#define TLBMISC_REG_WAY_MASK 0x7
-+
-+/* Macros to extract instruction fields */
-+#define GET_IW_A(Iw) \
-+    (((Iw) >> IW_A_LSB) & IW_A_MASK)
-+#define SET_IW_A(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_A_MASK << IW_A_LSB))) | \
-+         (((Val) & IW_A_MASK) << IW_A_LSB))
-+#define GET_IW_B(Iw) \
-+    (((Iw) >> IW_B_LSB) & IW_B_MASK)
-+#define SET_IW_B(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_B_MASK << IW_B_LSB))) | \
-+         (((Val) & IW_B_MASK) << IW_B_LSB))
-+#define GET_IW_C(Iw) \
-+    (((Iw) >> IW_C_LSB) & IW_C_MASK)
-+#define SET_IW_C(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_C_MASK << IW_C_LSB))) | \
-+         (((Val) & IW_C_MASK) << IW_C_LSB))
-+#define GET_IW_CONTROL_REGNUM(Iw) \
-+    (((Iw) >> IW_CONTROL_REGNUM_LSB) & IW_CONTROL_REGNUM_MASK)
-+#define SET_IW_CONTROL_REGNUM(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_CONTROL_REGNUM_MASK << IW_CONTROL_REGNUM_LSB))) | \
-+         (((Val) & IW_CONTROL_REGNUM_MASK) << IW_CONTROL_REGNUM_LSB))
-+#define GET_IW_CUSTOM_N(Iw) \
-+    (((Iw) >> IW_CUSTOM_N_LSB) & IW_CUSTOM_N_MASK)
-+#define SET_IW_CUSTOM_N(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_CUSTOM_N_MASK << IW_CUSTOM_N_LSB))) | \
-+         (((Val) & IW_CUSTOM_N_MASK) << IW_CUSTOM_N_LSB))
-+#define GET_IW_CUSTOM_READRA(Iw) \
-+    (((Iw) >> IW_CUSTOM_READRA_LSB) & IW_CUSTOM_READRA_MASK)
-+#define SET_IW_CUSTOM_READRA(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_CUSTOM_READRA_MASK << IW_CUSTOM_READRA_LSB))) | \
-+         (((Val) & IW_CUSTOM_READRA_MASK) << IW_CUSTOM_READRA_LSB))
-+#define GET_IW_CUSTOM_READRB(Iw) \
-+    (((Iw) >> IW_CUSTOM_READRB_LSB) & IW_CUSTOM_READRB_MASK)
-+#define SET_IW_CUSTOM_READRB(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_CUSTOM_READRB_MASK << IW_CUSTOM_READRB_LSB))) | \
-+         (((Val) & IW_CUSTOM_READRB_MASK) << IW_CUSTOM_READRB_LSB))
-+#define GET_IW_CUSTOM_WRITERC(Iw) \
-+    (((Iw) >> IW_CUSTOM_WRITERC_LSB) & IW_CUSTOM_WRITERC_MASK)
-+#define SET_IW_CUSTOM_WRITERC(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_CUSTOM_WRITERC_MASK << IW_CUSTOM_WRITERC_LSB))) | \
-+         (((Val) & IW_CUSTOM_WRITERC_MASK) << IW_CUSTOM_WRITERC_LSB))
-+#define GET_IW_IMM16(Iw) \
-+    (((Iw) >> IW_IMM16_LSB) & IW_IMM16_MASK)
-+#define SET_IW_IMM16(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_IMM16_MASK << IW_IMM16_LSB))) | \
-+         (((Val) & IW_IMM16_MASK) << IW_IMM16_LSB))
-+#define GET_IW_IMM26(Iw) \
-+    (((Iw) >> IW_IMM26_LSB) & IW_IMM26_MASK)
-+#define SET_IW_IMM26(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_IMM26_MASK << IW_IMM26_LSB))) | \
-+         (((Val) & IW_IMM26_MASK) << IW_IMM26_LSB))
-+#define GET_IW_MEMSZ(Iw) \
-+    (((Iw) >> IW_MEMSZ_LSB) & IW_MEMSZ_MASK)
-+#define SET_IW_MEMSZ(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_MEMSZ_MASK << IW_MEMSZ_LSB))) | \
-+         (((Val) & IW_MEMSZ_MASK) << IW_MEMSZ_LSB))
-+#define GET_IW_OP(Iw) \
-+    (((Iw) >> IW_OP_LSB) & IW_OP_MASK)
-+#define SET_IW_OP(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_OP_MASK << IW_OP_LSB))) | \
-+         (((Val) & IW_OP_MASK) << IW_OP_LSB))
-+#define GET_IW_OPX(Iw) \
-+    (((Iw) >> IW_OPX_LSB) & IW_OPX_MASK)
-+#define SET_IW_OPX(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_OPX_MASK << IW_OPX_LSB))) | \
-+         (((Val) & IW_OPX_MASK) << IW_OPX_LSB))
-+#define GET_IW_SHIFT_IMM5(Iw) \
-+    (((Iw) >> IW_SHIFT_IMM5_LSB) & IW_SHIFT_IMM5_MASK)
-+#define SET_IW_SHIFT_IMM5(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_SHIFT_IMM5_MASK << IW_SHIFT_IMM5_LSB))) | \
-+         (((Val) & IW_SHIFT_IMM5_MASK) << IW_SHIFT_IMM5_LSB))
-+#define GET_IW_TRAP_BREAK_IMM5(Iw) \
-+    (((Iw) >> IW_TRAP_BREAK_IMM5_LSB) & IW_TRAP_BREAK_IMM5_MASK)
-+#define SET_IW_TRAP_BREAK_IMM5(Iw, Val) \
-+    Iw = (((Iw) & (~(IW_TRAP_BREAK_IMM5_MASK << IW_TRAP_BREAK_IMM5_LSB))) | \
-+         (((Val) & IW_TRAP_BREAK_IMM5_MASK) << IW_TRAP_BREAK_IMM5_LSB))
-+
-+/* Macros to extract control register fields */
-+#define GET_BSTATUS_REG_MMU(Reg) \
-+    (((Reg) >> BSTATUS_REG_MMU_LSB) & BSTATUS_REG_MMU_MASK)
-+#define SET_BSTATUS_REG_MMU(Reg, Val) \
-+    Reg = (((Reg) & (~(BSTATUS_REG_MMU_MASK << BSTATUS_REG_MMU_LSB))) | \
-+         (((Val) & BSTATUS_REG_MMU_MASK) << BSTATUS_REG_MMU_LSB))
-+#define GET_BSTATUS_REG_NO_MMU(Reg) \
-+    (((Reg) >> BSTATUS_REG_NO_MMU_LSB) & BSTATUS_REG_NO_MMU_MASK)
-+#define SET_BSTATUS_REG_NO_MMU(Reg, Val) \
-+    Reg = (((Reg) & (~(BSTATUS_REG_NO_MMU_MASK << BSTATUS_REG_NO_MMU_LSB))) | \
-+         (((Val) & BSTATUS_REG_NO_MMU_MASK) << BSTATUS_REG_NO_MMU_LSB))
-+#define GET_ESTATUS_REG_MMU(Reg) \
-+    (((Reg) >> ESTATUS_REG_MMU_LSB) & ESTATUS_REG_MMU_MASK)
-+#define SET_ESTATUS_REG_MMU(Reg, Val) \
-+    Reg = (((Reg) & (~(ESTATUS_REG_MMU_MASK << ESTATUS_REG_MMU_LSB))) | \
-+         (((Val) & ESTATUS_REG_MMU_MASK) << ESTATUS_REG_MMU_LSB))
-+#define GET_ESTATUS_REG_NO_MMU(Reg) \
-+    (((Reg) >> ESTATUS_REG_NO_MMU_LSB) & ESTATUS_REG_NO_MMU_MASK)
-+#define SET_ESTATUS_REG_NO_MMU(Reg, Val) \
-+    Reg = (((Reg) & (~(ESTATUS_REG_NO_MMU_MASK << ESTATUS_REG_NO_MMU_LSB))) | \
-+         (((Val) & ESTATUS_REG_NO_MMU_MASK) << ESTATUS_REG_NO_MMU_LSB))
-+#define GET_PERF_CNT_REG_CLR(Reg) \
-+    (((Reg) >> PERF_CNT_REG_CLR_LSB) & PERF_CNT_REG_CLR_MASK)
-+#define SET_PERF_CNT_REG_CLR(Reg, Val) \
-+    Reg = (((Reg) & (~(PERF_CNT_REG_CLR_MASK << PERF_CNT_REG_CLR_LSB))) | \
-+         (((Val) & PERF_CNT_REG_CLR_MASK) << PERF_CNT_REG_CLR_LSB))
-+#define GET_PERF_CNT_REG_EN(Reg) \
-+    (((Reg) >> PERF_CNT_REG_EN_LSB) & PERF_CNT_REG_EN_MASK)
-+#define SET_PERF_CNT_REG_EN(Reg, Val) \
-+    Reg = (((Reg) & (~(PERF_CNT_REG_EN_MASK << PERF_CNT_REG_EN_LSB))) | \
-+         (((Val) & PERF_CNT_REG_EN_MASK) << PERF_CNT_REG_EN_LSB))
-+#define GET_PTEADDR_REG_PTBASE(Reg) \
-+    (((Reg) >> PTEADDR_REG_PTBASE_LSB) & PTEADDR_REG_PTBASE_MASK)
-+#define SET_PTEADDR_REG_PTBASE(Reg, Val) \
-+    Reg = (((Reg) & (~(PTEADDR_REG_PTBASE_MASK << PTEADDR_REG_PTBASE_LSB))) | \
-+         (((Val) & PTEADDR_REG_PTBASE_MASK) << PTEADDR_REG_PTBASE_LSB))
-+#define GET_PTEADDR_REG_RSV(Reg) \
-+    (((Reg) >> PTEADDR_REG_RSV_LSB) & PTEADDR_REG_RSV_MASK)
-+#define SET_PTEADDR_REG_RSV(Reg, Val) \
-+    Reg = (((Reg) & (~(PTEADDR_REG_RSV_MASK << PTEADDR_REG_RSV_LSB))) | \
-+         (((Val) & PTEADDR_REG_RSV_MASK) << PTEADDR_REG_RSV_LSB))
-+#define GET_PTEADDR_REG_VPN(Reg) \
-+    (((Reg) >> PTEADDR_REG_VPN_LSB) & PTEADDR_REG_VPN_MASK)
-+#define SET_PTEADDR_REG_VPN(Reg, Val) \
-+    Reg = (((Reg) & (~(PTEADDR_REG_VPN_MASK << PTEADDR_REG_VPN_LSB))) | \
-+         (((Val) & PTEADDR_REG_VPN_MASK) << PTEADDR_REG_VPN_LSB))
-+#define GET_SIM_REG_SHOW_DTLB(Reg) \
-+    (((Reg) >> SIM_REG_SHOW_DTLB_LSB) & SIM_REG_SHOW_DTLB_MASK)
-+#define SET_SIM_REG_SHOW_DTLB(Reg, Val) \
-+    Reg = (((Reg) & (~(SIM_REG_SHOW_DTLB_MASK << SIM_REG_SHOW_DTLB_LSB))) | \
-+         (((Val) & SIM_REG_SHOW_DTLB_MASK) << SIM_REG_SHOW_DTLB_LSB))
-+#define GET_SIM_REG_SHOW_ITLB(Reg) \
-+    (((Reg) >> SIM_REG_SHOW_ITLB_LSB) & SIM_REG_SHOW_ITLB_MASK)
-+#define SET_SIM_REG_SHOW_ITLB(Reg, Val) \
-+    Reg = (((Reg) & (~(SIM_REG_SHOW_ITLB_MASK << SIM_REG_SHOW_ITLB_LSB))) | \
-+         (((Val) & SIM_REG_SHOW_ITLB_MASK) << SIM_REG_SHOW_ITLB_LSB))
-+#define GET_SIM_REG_SHOW_MMU_REGS(Reg) \
-+    (((Reg) >> SIM_REG_SHOW_MMU_REGS_LSB) & SIM_REG_SHOW_MMU_REGS_MASK)
-+#define SET_SIM_REG_SHOW_MMU_REGS(Reg, Val) \
-+    Reg = (((Reg) & (~(SIM_REG_SHOW_MMU_REGS_MASK << SIM_REG_SHOW_MMU_REGS_LSB))) | \
-+         (((Val) & SIM_REG_SHOW_MMU_REGS_MASK) << SIM_REG_SHOW_MMU_REGS_LSB))
-+#define GET_SIM_REG_STOP(Reg) \
-+    (((Reg) >> SIM_REG_STOP_LSB) & SIM_REG_STOP_MASK)
-+#define SET_SIM_REG_STOP(Reg, Val) \
-+    Reg = (((Reg) & (~(SIM_REG_STOP_MASK << SIM_REG_STOP_LSB))) | \
-+         (((Val) & SIM_REG_STOP_MASK) << SIM_REG_STOP_LSB))
-+#define GET_STATUS_REG_EH(Reg) \
-+    (((Reg) >> STATUS_REG_EH_LSB) & STATUS_REG_EH_MASK)
-+#define SET_STATUS_REG_EH(Reg, Val) \
-+    Reg = (((Reg) & (~(STATUS_REG_EH_MASK << STATUS_REG_EH_LSB))) | \
-+         (((Val) & STATUS_REG_EH_MASK) << STATUS_REG_EH_LSB))
-+#define GET_STATUS_REG_MMU(Reg) \
-+    (((Reg) >> STATUS_REG_MMU_LSB) & STATUS_REG_MMU_MASK)
-+#define SET_STATUS_REG_MMU(Reg, Val) \
-+    Reg = (((Reg) & (~(STATUS_REG_MMU_MASK << STATUS_REG_MMU_LSB))) | \
-+         (((Val) & STATUS_REG_MMU_MASK) << STATUS_REG_MMU_LSB))
-+#define GET_STATUS_REG_NO_MMU(Reg) \
-+    (((Reg) >> STATUS_REG_NO_MMU_LSB) & STATUS_REG_NO_MMU_MASK)
-+#define SET_STATUS_REG_NO_MMU(Reg, Val) \
-+    Reg = (((Reg) & (~(STATUS_REG_NO_MMU_MASK << STATUS_REG_NO_MMU_LSB))) | \
-+         (((Val) & STATUS_REG_NO_MMU_MASK) << STATUS_REG_NO_MMU_LSB))
-+#define GET_STATUS_REG_PIE(Reg) \
-+    (((Reg) >> STATUS_REG_PIE_LSB) & STATUS_REG_PIE_MASK)
-+#define SET_STATUS_REG_PIE(Reg, Val) \
-+    Reg = (((Reg) & (~(STATUS_REG_PIE_MASK << STATUS_REG_PIE_LSB))) | \
-+         (((Val) & STATUS_REG_PIE_MASK) << STATUS_REG_PIE_LSB))
-+#define GET_STATUS_REG_U(Reg) \
-+    (((Reg) >> STATUS_REG_U_LSB) & STATUS_REG_U_MASK)
-+#define SET_STATUS_REG_U(Reg, Val) \
-+    Reg = (((Reg) & (~(STATUS_REG_U_MASK << STATUS_REG_U_LSB))) | \
-+         (((Val) & STATUS_REG_U_MASK) << STATUS_REG_U_LSB))
-+#define GET_TLBACC_REG_C(Reg) \
-+    (((Reg) >> TLBACC_REG_C_LSB) & TLBACC_REG_C_MASK)
-+#define SET_TLBACC_REG_C(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBACC_REG_C_MASK << TLBACC_REG_C_LSB))) | \
-+         (((Val) & TLBACC_REG_C_MASK) << TLBACC_REG_C_LSB))
-+#define GET_TLBACC_REG_G(Reg) \
-+    (((Reg) >> TLBACC_REG_G_LSB) & TLBACC_REG_G_MASK)
-+#define SET_TLBACC_REG_G(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBACC_REG_G_MASK << TLBACC_REG_G_LSB))) | \
-+         (((Val) & TLBACC_REG_G_MASK) << TLBACC_REG_G_LSB))
-+#define GET_TLBACC_REG_PFN(Reg) \
-+    (((Reg) >> TLBACC_REG_PFN_LSB) & TLBACC_REG_PFN_MASK)
-+#define SET_TLBACC_REG_PFN(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBACC_REG_PFN_MASK << TLBACC_REG_PFN_LSB))) | \
-+         (((Val) & TLBACC_REG_PFN_MASK) << TLBACC_REG_PFN_LSB))
-+#define GET_TLBACC_REG_R(Reg) \
-+    (((Reg) >> TLBACC_REG_R_LSB) & TLBACC_REG_R_MASK)
-+#define SET_TLBACC_REG_R(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBACC_REG_R_MASK << TLBACC_REG_R_LSB))) | \
-+         (((Val) & TLBACC_REG_R_MASK) << TLBACC_REG_R_LSB))
-+#define GET_TLBACC_REG_W(Reg) \
-+    (((Reg) >> TLBACC_REG_W_LSB) & TLBACC_REG_W_MASK)
-+#define SET_TLBACC_REG_W(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBACC_REG_W_MASK << TLBACC_REG_W_LSB))) | \
-+         (((Val) & TLBACC_REG_W_MASK) << TLBACC_REG_W_LSB))
-+#define GET_TLBACC_REG_X(Reg) \
-+    (((Reg) >> TLBACC_REG_X_LSB) & TLBACC_REG_X_MASK)
-+#define SET_TLBACC_REG_X(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBACC_REG_X_MASK << TLBACC_REG_X_LSB))) | \
-+         (((Val) & TLBACC_REG_X_MASK) << TLBACC_REG_X_LSB))
-+#define GET_TLBMISC_REG_BAD(Reg) \
-+    (((Reg) >> TLBMISC_REG_BAD_LSB) & TLBMISC_REG_BAD_MASK)
-+#define SET_TLBMISC_REG_BAD(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBMISC_REG_BAD_MASK << TLBMISC_REG_BAD_LSB))) | \
-+         (((Val) & TLBMISC_REG_BAD_MASK) << TLBMISC_REG_BAD_LSB))
-+#define GET_TLBMISC_REG_D(Reg) \
-+    (((Reg) >> TLBMISC_REG_D_LSB) & TLBMISC_REG_D_MASK)
-+#define SET_TLBMISC_REG_D(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBMISC_REG_D_MASK << TLBMISC_REG_D_LSB))) | \
-+         (((Val) & TLBMISC_REG_D_MASK) << TLBMISC_REG_D_LSB))
-+#define GET_TLBMISC_REG_DBL(Reg) \
-+    (((Reg) >> TLBMISC_REG_DBL_LSB) & TLBMISC_REG_DBL_MASK)
-+#define SET_TLBMISC_REG_DBL(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBMISC_REG_DBL_MASK << TLBMISC_REG_DBL_LSB))) | \
-+         (((Val) & TLBMISC_REG_DBL_MASK) << TLBMISC_REG_DBL_LSB))
-+#define GET_TLBMISC_REG_PERM(Reg) \
-+    (((Reg) >> TLBMISC_REG_PERM_LSB) & TLBMISC_REG_PERM_MASK)
-+#define SET_TLBMISC_REG_PERM(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBMISC_REG_PERM_MASK << TLBMISC_REG_PERM_LSB))) | \
-+         (((Val) & TLBMISC_REG_PERM_MASK) << TLBMISC_REG_PERM_LSB))
-+#define GET_TLBMISC_REG_PID(Reg) \
-+    (((Reg) >> TLBMISC_REG_PID_LSB) & TLBMISC_REG_PID_MASK)
-+#define SET_TLBMISC_REG_PID(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBMISC_REG_PID_MASK << TLBMISC_REG_PID_LSB))) | \
-+         (((Val) & TLBMISC_REG_PID_MASK) << TLBMISC_REG_PID_LSB))
-+#define GET_TLBMISC_REG_RD(Reg) \
-+    (((Reg) >> TLBMISC_REG_RD_LSB) & TLBMISC_REG_RD_MASK)
-+#define SET_TLBMISC_REG_RD(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBMISC_REG_RD_MASK << TLBMISC_REG_RD_LSB))) | \
-+         (((Val) & TLBMISC_REG_RD_MASK) << TLBMISC_REG_RD_LSB))
-+#define GET_TLBMISC_REG_RSV(Reg) \
-+    (((Reg) >> TLBMISC_REG_RSV_LSB) & TLBMISC_REG_RSV_MASK)
-+#define SET_TLBMISC_REG_RSV(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBMISC_REG_RSV_MASK << TLBMISC_REG_RSV_LSB))) | \
-+         (((Val) & TLBMISC_REG_RSV_MASK) << TLBMISC_REG_RSV_LSB))
-+#define GET_TLBMISC_REG_WAY(Reg) \
-+    (((Reg) >> TLBMISC_REG_WAY_LSB) & TLBMISC_REG_WAY_MASK)
-+#define SET_TLBMISC_REG_WAY(Reg, Val) \
-+    Reg = (((Reg) & (~(TLBMISC_REG_WAY_MASK << TLBMISC_REG_WAY_LSB))) | \
-+         (((Val) & TLBMISC_REG_WAY_MASK) << TLBMISC_REG_WAY_LSB))
-+
-+/* Macros to extract MMU fields */
-+#define GET_MMU_ADDR_BYPASS_TLB_CACHEABLE(Addr) \
-+    (((Addr) >> MMU_ADDR_BYPASS_TLB_CACHEABLE_LSB) & MMU_ADDR_BYPASS_TLB_CACHEABLE_MASK)
-+#define SET_MMU_ADDR_BYPASS_TLB_CACHEABLE(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_BYPASS_TLB_CACHEABLE_MASK << MMU_ADDR_BYPASS_TLB_CACHEABLE_LSB))) | \
-+         (((Val) & MMU_ADDR_BYPASS_TLB_CACHEABLE_MASK) << MMU_ADDR_BYPASS_TLB_CACHEABLE_LSB))
-+#define GET_MMU_ADDR_BYPASS_TLB(Addr) \
-+    (((Addr) >> MMU_ADDR_BYPASS_TLB_LSB) & MMU_ADDR_BYPASS_TLB_MASK)
-+#define SET_MMU_ADDR_BYPASS_TLB(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_BYPASS_TLB_MASK << MMU_ADDR_BYPASS_TLB_LSB))) | \
-+         (((Val) & MMU_ADDR_BYPASS_TLB_MASK) << MMU_ADDR_BYPASS_TLB_LSB))
-+#define GET_MMU_ADDR_BYPASS_TLB_PADDR(Addr) \
-+    (((Addr) >> MMU_ADDR_BYPASS_TLB_PADDR_LSB) & MMU_ADDR_BYPASS_TLB_PADDR_MASK)
-+#define SET_MMU_ADDR_BYPASS_TLB_PADDR(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_BYPASS_TLB_PADDR_MASK << MMU_ADDR_BYPASS_TLB_PADDR_LSB))) | \
-+         (((Val) & MMU_ADDR_BYPASS_TLB_PADDR_MASK) << MMU_ADDR_BYPASS_TLB_PADDR_LSB))
-+#define GET_MMU_ADDR_IO_REGION(Addr) \
-+    (((Addr) >> MMU_ADDR_IO_REGION_LSB) & MMU_ADDR_IO_REGION_MASK)
-+#define SET_MMU_ADDR_IO_REGION(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_IO_REGION_MASK << MMU_ADDR_IO_REGION_LSB))) | \
-+         (((Val) & MMU_ADDR_IO_REGION_MASK) << MMU_ADDR_IO_REGION_LSB))
-+#define GET_MMU_ADDR_KERNEL_MMU_REGION(Addr) \
-+    (((Addr) >> MMU_ADDR_KERNEL_MMU_REGION_LSB) & MMU_ADDR_KERNEL_MMU_REGION_MASK)
-+#define SET_MMU_ADDR_KERNEL_MMU_REGION(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_KERNEL_MMU_REGION_MASK << MMU_ADDR_KERNEL_MMU_REGION_LSB))) | \
-+         (((Val) & MMU_ADDR_KERNEL_MMU_REGION_MASK) << MMU_ADDR_KERNEL_MMU_REGION_LSB))
-+#define GET_MMU_ADDR_KERNEL_REGION(Addr) \
-+    (((Addr) >> MMU_ADDR_KERNEL_REGION_LSB) & MMU_ADDR_KERNEL_REGION_MASK)
-+#define SET_MMU_ADDR_KERNEL_REGION(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_KERNEL_REGION_MASK << MMU_ADDR_KERNEL_REGION_LSB))) | \
-+         (((Val) & MMU_ADDR_KERNEL_REGION_MASK) << MMU_ADDR_KERNEL_REGION_LSB))
-+#define GET_MMU_ADDR_PAGE_OFFSET(Addr) \
-+    (((Addr) >> MMU_ADDR_PAGE_OFFSET_LSB) & MMU_ADDR_PAGE_OFFSET_MASK)
-+#define SET_MMU_ADDR_PAGE_OFFSET(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_PAGE_OFFSET_MASK << MMU_ADDR_PAGE_OFFSET_LSB))) | \
-+         (((Val) & MMU_ADDR_PAGE_OFFSET_MASK) << MMU_ADDR_PAGE_OFFSET_LSB))
-+#define GET_MMU_ADDR_PFN(Addr) \
-+    (((Addr) >> MMU_ADDR_PFN_LSB) & MMU_ADDR_PFN_MASK)
-+#define SET_MMU_ADDR_PFN(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_PFN_MASK << MMU_ADDR_PFN_LSB))) | \
-+         (((Val) & MMU_ADDR_PFN_MASK) << MMU_ADDR_PFN_LSB))
-+#define GET_MMU_ADDR_USER_REGION(Addr) \
-+    (((Addr) >> MMU_ADDR_USER_REGION_LSB) & MMU_ADDR_USER_REGION_MASK)
-+#define SET_MMU_ADDR_USER_REGION(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_USER_REGION_MASK << MMU_ADDR_USER_REGION_LSB))) | \
-+         (((Val) & MMU_ADDR_USER_REGION_MASK) << MMU_ADDR_USER_REGION_LSB))
-+#define GET_MMU_ADDR_VPN(Addr) \
-+    (((Addr) >> MMU_ADDR_VPN_LSB) & MMU_ADDR_VPN_MASK)
-+#define SET_MMU_ADDR_VPN(Addr, Val) \
-+    Addr = (((Addr) & (~(MMU_ADDR_VPN_MASK << MMU_ADDR_VPN_LSB))) | \
-+         (((Val) & MMU_ADDR_VPN_MASK) << MMU_ADDR_VPN_LSB))
-+
-+/* OP instruction values */
-+#define OP_ADDI 4
-+#define OP_ANDHI 44
-+#define OP_ANDI 12
-+#define OP_BEQ 38
-+#define OP_BGE 14
-+#define OP_BGEU 46
-+#define OP_BLT 22
-+#define OP_BLTU 54
-+#define OP_BNE 30
-+#define OP_BR 6
-+#define OP_CALL 0
-+#define OP_CMPEQI 32
-+#define OP_CMPGEI 8
-+#define OP_CMPGEUI 40
-+#define OP_CMPLTI 16
-+#define OP_CMPLTUI 48
-+#define OP_CMPNEI 24
-+#define OP_CUSTOM 50
-+#define OP_FLUSHD 59
-+#define OP_INITD 51
-+#define OP_LDB 7
-+#define OP_LDBIO 39
-+#define OP_LDBU 3
-+#define OP_LDBUIO 35
-+#define OP_LDH 15
-+#define OP_LDHIO 47
-+#define OP_LDHU 11
-+#define OP_LDHUIO 43
-+#define OP_LDW 23
-+#define OP_LDWIO 55
-+#define OP_MULI 36
-+#define OP_OPX 58
-+#define OP_ORHI 52
-+#define OP_ORI 20
-+#define OP_STB 5
-+#define OP_STBIO 37
-+#define OP_STH 13
-+#define OP_STHIO 45
-+#define OP_STW 21
-+#define OP_STWIO 53
-+#define OP_XORHI 60
-+#define OP_XORI 28
-+
-+/* OPX instruction values */
-+#define OPX_ADD 49
-+#define OPX_AND 14
-+#define OPX_BREAK 52
-+#define OPX_BRET 9
-+#define OPX_CALLR 29
-+#define OPX_CMPEQ 32
-+#define OPX_CMPGE 8
-+#define OPX_CMPGEU 40
-+#define OPX_CMPLT 16
-+#define OPX_CMPLTU 48
-+#define OPX_CMPNE 24
-+#define OPX_DIV 37
-+#define OPX_DIVU 36
-+#define OPX_ERET 1
-+#define OPX_FLUSHI 12
-+#define OPX_FLUSHP 4
-+#define OPX_HBREAK 53
-+#define OPX_INITI 41
-+#define OPX_INTR 61
-+#define OPX_JMP 13
-+#define OPX_MUL 39
-+#define OPX_MULXSS 31
-+#define OPX_MULXSU 23
-+#define OPX_MULXUU 7
-+#define OPX_NEXTPC 28
-+#define OPX_NOR 6
-+#define OPX_OR 22
-+#define OPX_RDCTL 38
-+#define OPX_RET 5
-+#define OPX_ROL 3
-+#define OPX_ROLI 2
-+#define OPX_ROR 11
-+#define OPX_SLL 19
-+#define OPX_SLLI 18
-+#define OPX_SRA 59
-+#define OPX_SRAI 58
-+#define OPX_SRL 27
-+#define OPX_SRLI 26
-+#define OPX_SUB 57
-+#define OPX_SYNC 54
-+#define OPX_TRAP 45
-+#define OPX_WRCTL 46
-+#define OPX_XOR 30
-+
-+/* Macros to detect sub-opcode instructions */
-+#define IS_OPX_INST(Iw) (GET_IW_OP(Iw) == OP_OPX)
-+#define IS_CUSTOM_INST(Iw) (GET_IW_OP(Iw) == OP_CUSTOM)
-+
-+/* Instruction property macros */
-+#define IW_PROP_RESERVED_OP(Iw) (0)
-+
-+#define IW_PROP_RESERVED_OPX(Iw) (0)
-+
-+#define IW_PROP_RESERVED(Iw) (0)
-+
-+#define IW_PROP_FLUSH_PIPE(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_FLUSHP) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_BRET) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_JMP_INDIRECT_NON_TRAP(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_jmp_indirect_non_trap[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_jmp_indirect_non_trap[64];
-+
-+#define IW_PROP_JMP_INDIRECT(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_jmp_indirect[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_jmp_indirect[64];
-+
-+#define IW_PROP_JMP_DIRECT(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_CALL)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_MUL_LSW(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_MULI)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_MUL) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_MULX(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_mulx[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_mulx[64];
-+
-+#define IW_PROP_MUL(Iw) ( \
-+    (op_prop_mul[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_mul[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_mul[64];
-+extern unsigned char opx_prop_mul[64];
-+
-+#define IW_PROP_DIV_UNSIGNED(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_DIVU) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_DIV_SIGNED(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_DIV) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_DIV(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_DIVU) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_DIV) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_UNIMPLEMENTED(Iw) (0)
-+
-+#define IW_PROP_IMPLICIT_DST_RETADDR(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_CALL)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_IMPLICIT_DST_ERETADDR(Iw) (0)
-+
-+#define IW_PROP_EXCEPTION(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_TRAP) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_INTR) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_BREAK(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_BREAK) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_HBREAK) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_WR_CTL_REG(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_wr_ctl_reg[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_wr_ctl_reg[64];
-+
-+#define IW_PROP_UNCOND_CTI_NON_BR(Iw) ( \
-+    (op_prop_uncond_cti_non_br[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_uncond_cti_non_br[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_uncond_cti_non_br[64];
-+extern unsigned char opx_prop_uncond_cti_non_br[64];
-+
-+#define IW_PROP_RETADDR(Iw) ( \
-+    (op_prop_retaddr[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_retaddr[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_retaddr[64];
-+extern unsigned char opx_prop_retaddr[64];
-+
-+#define IW_PROP_SHIFT_LEFT(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_SLLI) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_SLL) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_SHIFT_LOGICAL(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_shift_logical[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_shift_logical[64];
-+
-+#define IW_PROP_ROT_LEFT(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_ROLI) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_ROL) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_SHIFT_ROT_LEFT(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_shift_rot_left[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_shift_rot_left[64];
-+
-+#define IW_PROP_SHIFT_RIGHT_LOGICAL(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_SRLI) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_SRL) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_SHIFT_RIGHT_ARITH(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_SRAI) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_SRA) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_SHIFT_RIGHT(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_shift_right[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_shift_right[64];
-+
-+#define IW_PROP_ROT_RIGHT(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_ROR) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_SHIFT_ROT_RIGHT(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_shift_rot_right[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_shift_rot_right[64];
-+
-+#define IW_PROP_SHIFT_ROT(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_shift_rot[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_shift_rot[64];
-+
-+#define IW_PROP_SHIFT_ROT_IMM(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_shift_rot_imm[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_shift_rot_imm[64];
-+
-+#define IW_PROP_ROTATE(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_rotate[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_rotate[64];
-+
-+#define IW_PROP_LOGIC_REG(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_logic_reg[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_logic_reg[64];
-+
-+#define IW_PROP_LOGIC_HI_IMM16(Iw) ( \
-+    (op_prop_logic_hi_imm16[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_logic_hi_imm16[64];
-+
-+#define IW_PROP_LOGIC_LO_IMM16(Iw) ( \
-+    (op_prop_logic_lo_imm16[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_logic_lo_imm16[64];
-+
-+#define IW_PROP_LOGIC_IMM16(Iw) ( \
-+    (op_prop_logic_imm16[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_logic_imm16[64];
-+
-+#define IW_PROP_LOGIC(Iw) ( \
-+    (op_prop_logic[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_logic[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_logic[64];
-+extern unsigned char opx_prop_logic[64];
-+
-+#define IW_PROP_UNSIGNED_LO_IMM16(Iw) ( \
-+    (op_prop_unsigned_lo_imm16[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_unsigned_lo_imm16[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_unsigned_lo_imm16[64];
-+extern unsigned char opx_prop_unsigned_lo_imm16[64];
-+
-+#define IW_PROP_ARITH_IMM16(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_ADDI)) || \
-+    ((GET_IW_OP((Iw)) == OP_MULI)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_CMP_IMM16_NO_CALL(Iw) ( \
-+    (op_prop_cmp_imm16_no_call[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_cmp_imm16_no_call[64];
-+
-+#define IW_PROP_CMP_IMM16_WITH_CALL(Iw) ( \
-+    (op_prop_cmp_imm16_with_call[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_cmp_imm16_with_call[64];
-+
-+#define IW_PROP_CMP_REG(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_cmp_reg[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_cmp_reg[64];
-+
-+#define IW_PROP_SRC_IMM16(Iw) ( \
-+    (op_prop_src_imm16[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_src_imm16[64];
-+
-+#define IW_PROP_SRC_IMM5(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_src_imm5[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_src_imm5[64];
-+
-+#define IW_PROP_CMP_WITH_LT(Iw) ( \
-+    (op_prop_cmp_with_lt[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_cmp_with_lt[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_cmp_with_lt[64];
-+extern unsigned char opx_prop_cmp_with_lt[64];
-+
-+#define IW_PROP_CMP_WITH_EQ(Iw) ( \
-+    (op_prop_cmp_with_eq[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_cmp_with_eq[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_cmp_with_eq[64];
-+extern unsigned char opx_prop_cmp_with_eq[64];
-+
-+#define IW_PROP_CMP_WITH_GE(Iw) ( \
-+    (op_prop_cmp_with_ge[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_cmp_with_ge[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_cmp_with_ge[64];
-+extern unsigned char opx_prop_cmp_with_ge[64];
-+
-+#define IW_PROP_CMP_WITH_NE(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_CMPNEI)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_CMPNE) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_CMP_ALU_SIGNED(Iw) ( \
-+    (op_prop_cmp_alu_signed[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_cmp_alu_signed[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_cmp_alu_signed[64];
-+extern unsigned char opx_prop_cmp_alu_signed[64];
-+
-+#define IW_PROP_CMP(Iw) ( \
-+    (op_prop_cmp[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_cmp[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_cmp[64];
-+extern unsigned char opx_prop_cmp[64];
-+
-+#define IW_PROP_BR_WITH_LT(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_BLT)) || \
-+    ((GET_IW_OP((Iw)) == OP_BLTU)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_BR_WITH_GE(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_BGE)) || \
-+    ((GET_IW_OP((Iw)) == OP_BGEU)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_BR_WITH_EQ(Iw) ( \
-+    (op_prop_br_with_eq[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_br_with_eq[64];
-+
-+#define IW_PROP_BR_WITH_NE(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_BNE)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_BR_ALU_SIGNED(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_BGE)) || \
-+    ((GET_IW_OP((Iw)) == OP_BLT)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_BR_COND(Iw) ( \
-+    (op_prop_br_cond[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_br_cond[64];
-+
-+#define IW_PROP_BR_UNCOND(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_BR)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_BR(Iw) ( \
-+    (op_prop_br[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_br[64];
-+
-+#define IW_PROP_ALU_SUB(Iw) ( \
-+    (op_prop_alu_sub[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_alu_sub[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_alu_sub[64];
-+extern unsigned char opx_prop_alu_sub[64];
-+
-+#define IW_PROP_FORCE_XOR(Iw) ( \
-+    (op_prop_force_xor[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_force_xor[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_force_xor[64];
-+extern unsigned char opx_prop_force_xor[64];
-+
-+#define IW_PROP_LOAD8(Iw) ( \
-+    (op_prop_load8[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_load8[64];
-+
-+#define IW_PROP_LOAD16(Iw) ( \
-+    (op_prop_load16[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_load16[64];
-+
-+#define IW_PROP_LOAD32(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_LDW)) || \
-+    ((GET_IW_OP((Iw)) == OP_LDWIO)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_LOAD_SIGNED(Iw) ( \
-+    (op_prop_load_signed[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_load_signed[64];
-+
-+#define IW_PROP_LOAD_UNSIGNED(Iw) ( \
-+    (op_prop_load_unsigned[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_load_unsigned[64];
-+
-+#define IW_PROP_LOAD(Iw) ( \
-+    (op_prop_load[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_load[64];
-+
-+#define IW_PROP_LOAD_INITD_FLUSHD(Iw) ( \
-+    (op_prop_load_initd_flushd[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_load_initd_flushd[64];
-+
-+#define IW_PROP_LOAD_NON_IO(Iw) ( \
-+    (op_prop_load_non_io[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_load_non_io[64];
-+
-+#define IW_PROP_STORE8(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_STB)) || \
-+    ((GET_IW_OP((Iw)) == OP_STBIO)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_STORE16(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_STH)) || \
-+    ((GET_IW_OP((Iw)) == OP_STHIO)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_STORE32(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_STW)) || \
-+    ((GET_IW_OP((Iw)) == OP_STWIO)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_STORE(Iw) ( \
-+    (op_prop_store[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_store[64];
-+
-+#define IW_PROP_STORE_NON_IO(Iw) ( \
-+    (op_prop_store_non_io[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_store_non_io[64];
-+
-+#define IW_PROP_MEM(Iw) ( \
-+    (op_prop_mem[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_mem[64];
-+
-+#define IW_PROP_INITD(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_INITD)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_FLUSHD(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_FLUSHD)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_INITD_FLUSHD(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_INITD)) || \
-+    ((GET_IW_OP((Iw)) == OP_FLUSHD)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_INITI_FLUSHI(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_INITI) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_FLUSHI) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_LOAD_IO(Iw) ( \
-+    (op_prop_load_io[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_load_io[64];
-+
-+#define IW_PROP_STORE_IO(Iw) ( \
-+    (op_prop_store_io[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_store_io[64];
-+
-+#define IW_PROP_MEM_IO(Iw) ( \
-+    (op_prop_mem_io[GET_IW_OP(Iw)]))
-+extern unsigned char op_prop_mem_io[64];
-+
-+#define IW_PROP_ARITH(Iw) ( \
-+    (op_prop_arith[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_arith[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_arith[64];
-+extern unsigned char opx_prop_arith[64];
-+
-+#define IW_PROP_A_NOT_SRC(Iw) ( \
-+  ( \
-+    ((GET_IW_OP((Iw)) == OP_CALL)) \
-+  ) \
-+  || (IS_CUSTOM_INST(Iw) && !GET_IW_CUSTOM_READRA(Iw)) \
-+)
-+
-+#define IW_PROP_B_NOT_SRC(Iw) ( \
-+    (op_prop_b_not_src[GET_IW_OP(Iw)]) \
-+  || (IS_CUSTOM_INST(Iw) && !GET_IW_CUSTOM_READRB(Iw)))
-+extern unsigned char op_prop_b_not_src[64];
-+
-+#define IW_PROP_IGNORE_DST(Iw) ( \
-+    (op_prop_ignore_dst[GET_IW_OP(Iw)]) \
-+  || (IS_CUSTOM_INST(Iw) && !GET_IW_CUSTOM_WRITERC(Iw)))
-+extern unsigned char op_prop_ignore_dst[64];
-+
-+#define IW_PROP_SRC2_IS_IMM(Iw) ( \
-+    (op_prop_src2_is_imm[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_src2_is_imm[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_src2_is_imm[64];
-+extern unsigned char opx_prop_src2_is_imm[64];
-+
-+#define IW_PROP_WRCTL_INST(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_WRCTL) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_RDCTL_INST(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_RDCTL) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_MUL_SRC1_SIGNED(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_MULXSS) && IS_OPX_INST(Iw)) || \
-+    ((GET_IW_OPX((Iw)) == OPX_MULXSU) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_MUL_SRC2_SIGNED(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_MULXSS) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_MUL_SHIFT_SRC1_SIGNED(Iw) ( \
-+    (IS_OPX_INST(Iw) && opx_prop_mul_shift_src1_signed[GET_IW_OPX(Iw)]))
-+extern unsigned char opx_prop_mul_shift_src1_signed[64];
-+
-+#define IW_PROP_MUL_SHIFT_SRC2_SIGNED(Iw) ( \
-+  ( \
-+    ((GET_IW_OPX((Iw)) == OPX_MULXSS) && IS_OPX_INST(Iw)) \
-+  ) \
-+ \
-+)
-+
-+#define IW_PROP_DONT_DISPLAY_DST_REG(Iw) ( \
-+    (op_prop_dont_display_dst_reg[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_dont_display_dst_reg[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_dont_display_dst_reg[64];
-+extern unsigned char opx_prop_dont_display_dst_reg[64];
-+
-+#define IW_PROP_DONT_DISPLAY_SRC1_REG(Iw) ( \
-+    (op_prop_dont_display_src1_reg[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_dont_display_src1_reg[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_dont_display_src1_reg[64];
-+extern unsigned char opx_prop_dont_display_src1_reg[64];
-+
-+#define IW_PROP_DONT_DISPLAY_SRC2_REG(Iw) ( \
-+    (op_prop_dont_display_src2_reg[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_dont_display_src2_reg[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_dont_display_src2_reg[64];
-+extern unsigned char opx_prop_dont_display_src2_reg[64];
-+
-+#define IW_PROP_SRC1_NO_X(Iw) ( \
-+    (op_prop_src1_no_x[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_src1_no_x[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_src1_no_x[64];
-+extern unsigned char opx_prop_src1_no_x[64];
-+
-+#define IW_PROP_SRC2_NO_X(Iw) ( \
-+    (op_prop_src2_no_x[GET_IW_OP(Iw)] || \
-+    (IS_OPX_INST(Iw) && opx_prop_src2_no_x[GET_IW_OPX(Iw)])))
-+extern unsigned char op_prop_src2_no_x[64];
-+extern unsigned char opx_prop_src2_no_x[64];
-+
-+/* Instruction information entry */
-+typedef struct {
-+     const char* name;     /* Assembly-language instruction name */
-+     int         instType; /* INST_TYPE_OP or INST_TYPE_OPX */
-+     unsigned    opcode;   /* Value of instruction word OP/OPX field */
-+} Nios2InstInfo;
-+
-+/* Instruction types */
-+#define INST_TYPE_OP  0
-+#define INST_TYPE_OPX 1
-+
-+/* Canonical instruction codes independent of encoding */
-+#define CALL_INST_CODE 0
-+#define LDBU_INST_CODE 1
-+#define ADDI_INST_CODE 2
-+#define STB_INST_CODE 3
-+#define BR_INST_CODE 4
-+#define LDB_INST_CODE 5
-+#define CMPGEI_INST_CODE 6
-+#define LDHU_INST_CODE 7
-+#define ANDI_INST_CODE 8
-+#define STH_INST_CODE 9
-+#define BGE_INST_CODE 10
-+#define LDH_INST_CODE 11
-+#define CMPLTI_INST_CODE 12
-+#define ORI_INST_CODE 13
-+#define STW_INST_CODE 14
-+#define BLT_INST_CODE 15
-+#define LDW_INST_CODE 16
-+#define CMPNEI_INST_CODE 17
-+#define XORI_INST_CODE 18
-+#define BNE_INST_CODE 19
-+#define CMPEQI_INST_CODE 20
-+#define LDBUIO_INST_CODE 21
-+#define MULI_INST_CODE 22
-+#define STBIO_INST_CODE 23
-+#define BEQ_INST_CODE 24
-+#define LDBIO_INST_CODE 25
-+#define CMPGEUI_INST_CODE 26
-+#define LDHUIO_INST_CODE 27
-+#define ANDHI_INST_CODE 28
-+#define STHIO_INST_CODE 29
-+#define BGEU_INST_CODE 30
-+#define LDHIO_INST_CODE 31
-+#define CMPLTUI_INST_CODE 32
-+#define CUSTOM_INST_CODE 33
-+#define INITD_INST_CODE 34
-+#define ORHI_INST_CODE 35
-+#define STWIO_INST_CODE 36
-+#define BLTU_INST_CODE 37
-+#define LDWIO_INST_CODE 38
-+#define FLUSHD_INST_CODE 39
-+#define XORHI_INST_CODE 40
-+#define ERET_INST_CODE 41
-+#define ROLI_INST_CODE 42
-+#define ROL_INST_CODE 43
-+#define FLUSHP_INST_CODE 44
-+#define RET_INST_CODE 45
-+#define NOR_INST_CODE 46
-+#define MULXUU_INST_CODE 47
-+#define CMPGE_INST_CODE 48
-+#define BRET_INST_CODE 49
-+#define ROR_INST_CODE 50
-+#define FLUSHI_INST_CODE 51
-+#define JMP_INST_CODE 52
-+#define AND_INST_CODE 53
-+#define CMPLT_INST_CODE 54
-+#define SLLI_INST_CODE 55
-+#define SLL_INST_CODE 56
-+#define OR_INST_CODE 57
-+#define MULXSU_INST_CODE 58
-+#define CMPNE_INST_CODE 59
-+#define SRLI_INST_CODE 60
-+#define SRL_INST_CODE 61
-+#define NEXTPC_INST_CODE 62
-+#define CALLR_INST_CODE 63
-+#define XOR_INST_CODE 64
-+#define MULXSS_INST_CODE 65
-+#define CMPEQ_INST_CODE 66
-+#define DIVU_INST_CODE 67
-+#define DIV_INST_CODE 68
-+#define RDCTL_INST_CODE 69
-+#define MUL_INST_CODE 70
-+#define CMPGEU_INST_CODE 71
-+#define INITI_INST_CODE 72
-+#define TRAP_INST_CODE 73
-+#define WRCTL_INST_CODE 74
-+#define CMPLTU_INST_CODE 75
-+#define ADD_INST_CODE 76
-+#define BREAK_INST_CODE 77
-+#define HBREAK_INST_CODE 78
-+#define SYNC_INST_CODE 79
-+#define SUB_INST_CODE 80
-+#define SRAI_INST_CODE 81
-+#define SRA_INST_CODE 82
-+#define INTR_INST_CODE 83
-+#define RSV_INST_CODE 84
-+#define NUM_NIOS2_INST_CODES 85
-+
-+extern Nios2InstInfo nios2InstInfo[NUM_NIOS2_INST_CODES];
-+
-+/* Returns the instruction code given the 32-bit instruction word */
-+#define GET_INST_CODE(Iw) \
-+         (IS_OPX_INST(Iw) ? opxToInstCode[GET_IW_OPX(Iw)] : opToInstCode[GET_IW_OP(Iw)])
-+extern int opToInstCode[64];
-+extern int opxToInstCode[64];
-+
-+//
-+// MMU Memory Region Macros
-+//
-+#define isMmuUserRegion(Vaddr)          \
-+    (GET_MMU_ADDR_USER_REGION(Vaddr) == MMU_ADDR_USER_REGION)
-+#define isMmuKernelMmuRegion(Vaddr)     \
-+    (GET_MMU_ADDR_KERNEL_MMU_REGION(Vaddr) == MMU_ADDR_KERNEL_MMU_REGION)
-+#define isMmuKernelRegion(Vaddr)        \
-+    (GET_MMU_ADDR_KERNEL_REGION(Vaddr) == MMU_ADDR_KERNEL_REGION)
-+#define isMmuIORegion(Vaddr)            \
-+    (GET_MMU_ADDR_IO_REGION(Vaddr) == MMU_ADDR_IO_REGION)
-+
-+// Does this virtual address bypass the TLB?
-+#define vaddrBypassTlb(Vaddr)                \
-+    (GET_MMU_ADDR_BYPASS_TLB(Vaddr) == MMU_ADDR_BYPASS_TLB)
-+
-+// If TLB is bypassed, is the address cacheable or uncachable.
-+#define vaddrBypassTlbCacheable(Vaddr)       \
-+    (GET_MMU_ADDR_BYPASS_TLB_CACHEABLE(Vaddr) == MMU_ADDR_BYPASS_TLB_CACHEABLE)
-+
-+// Compute physical address for regions that bypass the TLB.
-+// Just need to clear some top bits.
-+#define bypassTlbVaddrToPaddr(Vaddr)    \
-+    ((Vaddr) & (MMU_ADDR_BYPASS_TLB_PADDR_MASK << MMU_ADDR_BYPASS_TLB_PADDR_LSB))
-+
-+// Will the physical address fit in the Kernel/IO region virtual address space?
-+#define fitsInKernelRegion(Paddr)       \
-+    (GET_MMU_ADDR_KERNEL_REGION(Paddr) == 0)
-+#define fitsInIORegion(Paddr)           \
-+    (GET_MMU_ADDR_IO_REGION(Paddr) == 0)
-+
-+// Convert a physical address to a Kernel/IO region virtual address.
-+#define paddrToKernelRegionVaddr(Paddr) \
-+    ((Paddr) | (MMU_ADDR_KERNEL_REGION << MMU_ADDR_KERNEL_REGION_LSB))
-+#define paddrToIORegionVaddr(Paddr)     \
-+    ((Paddr) | (MMU_ADDR_IO_REGION << MMU_ADDR_IO_REGION_LSB))
-+
-+// Convert a virtual address to a Kernel/IO region virtual address.
-+// Uses bypassTlbVaddrToPaddr to clear top bits.
-+#define vaddrToKernelRegionVaddr(Vaddr) \
-+    paddrToKernelRegionVaddr(bypassTlbVaddrToPaddr(Vaddr))
-+#define vaddrToIORegionVaddr(Vaddr) \
-+    paddrToIORegionVaddr(bypassTlbVaddrToPaddr(Vaddr))
-+
-+// Convert between VPN/PFN and virtual/physical addresses.
-+#define vpnToVaddr(Vpn) ((Vpn) << MMU_ADDR_VPN_LSB)
-+#define pfnToPaddr(Pfn) ((Pfn) << MMU_ADDR_PFN_LSB)
-+#define vaddrToVpn(Vaddr) GET_MMU_ADDR_VPN(Vaddr)
-+#define paddrToPfn(Paddr) GET_MMU_ADDR_PFN(Paddr)
-+
-+
-+#endif /* _NIOS2_ISA_H_ */
---- binutils-2.15/include/opcode/nios2.h	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/include/opcode/nios2.h	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,357 @@
-+/* nios2.h.  Altera New Jersey opcode list for GAS, the GNU assembler.
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+This file is part of GDB, GAS, and the GNU binutils.
-+
-+GDB, GAS, and the GNU binutils are free software; you can redistribute
-+them and/or modify them under the terms of the GNU General Public
-+License as published by the Free Software Foundation; either version
-+1, or (at your option) any later version.
-+
-+GDB, GAS, and the GNU binutils are distributed in the hope that they
-+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 file; see the file COPYING.  If not, write to the Free
-+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-+
-+#ifndef _NIOS2_H_
-+#define _NIOS2_H_
-+
-+
-+/****************************************************************************
-+ * This file contains structures, bit masks and shift counts used
-+ * by the GNU toolchain to define the New Jersey instruction set and
-+ * access various opcode fields.
-+ ****************************************************************************/
-+
-+enum overflow_type
-+{
-+  call_target_overflow = 0,
-+  branch_target_overflow,
-+  address_offset_overflow,
-+  signed_immed16_overflow,
-+  unsigned_immed16_overflow,
-+  unsigned_immed5_overflow,
-+  custom_opcode_overflow,
-+  no_overflow
-+};
-+
-+/*---------------------------------------------------------------------------
-+   This structure holds information for a particular instruction
-+  ---------------------------------------------------------------------------*/
-+
-+/* match When assembling, this
-+     opcode is modified by the arguments to produce the actual opcode
-+     that is used.  If pinfo is INSN_MACRO, then this is 0.  */
-+
-+/* mask If pinfo is not INSN_MACRO, then this is a bit mask for the
-+     relevant portions of the opcode when disassembling.  If the
-+     actual opcode anded with the match field equals the opcode field,
-+     then we have found the correct instruction.  If pinfo is
-+     INSN_MACRO, then this field is the macro identifier.  */
-+
-+/* For a macro, this is INSN_MACRO.  Otherwise, it is a collection
-+     of bits describing the instruction, notably any relevant hazard
-+     information.  */
-+
-+struct nios2_opcode
-+{
-+  const char *name;		/* The name of the instruction.  */
-+  const char *args;		/* A string describing the arguments for this instruction.  */
-+  const char *args_test;	/* Like args, but with an extra argument for the expected opcode */
-+  unsigned long num_args;	/* the number of arguments the instruction takes */
-+  unsigned long match;		/* The basic opcode for the instruction. */
-+  unsigned long mask;		/* mask for the opcode field of the instruction */
-+  unsigned long pinfo;		/* is this a real instruction or instruction macro */
-+  enum overflow_type overflow_msg;	/* msg template used to generate informative message when fixup overflows */
-+};
-+
-+/* This value is used in the nios2_opcode.pinfo field to indicate that the instruction
-+   is a macro or pseudo-op. This requires special treatment by the assembler, and is
-+   used by the disassembler to determine whether to check for a nop */
-+#define NIOS2_INSN_MACRO 		0x80000000
-+#define NIOS2_INSN_MACRO_MOV	0x80000001
-+#define NIOS2_INSN_MACRO_MOVI	0x80000002
-+#define NIOS2_INSN_MACRO_MOVIA  0x80000004
-+
-+#define NIOS2_INSN_RELAXABLE	0x40000000
-+#define NIOS2_INSN_UBRANCH		0x00000010
-+#define NIOS2_INSN_CBRANCH		0x00000020
-+#define NIOS2_INSN_CALL			0x00000040
-+
-+#define NIOS2_INSN_ADDI			0x00000080
-+#define NIOS2_INSN_ANDI			0x00000100
-+#define NIOS2_INSN_ORI			0x00000200
-+#define NIOS2_INSN_XORI			0x00000400
-+
-+
-+
-+/* Associates a register name ($6) with a 5-bit index (eg 6) */
-+struct nios2_reg
-+{
-+  const char *name;
-+  const int index;
-+};
-+
-+
-+/* -------------------------------------------------------------------------
-+    Bitfield masks for New Jersey instructions
-+   -------------------------------------------------------------------------*/
-+
-+/* These are bit masks and shift counts to use to access the various
-+   fields of an instruction. */
-+
-+/* Macros for getting and setting an instruction field */
-+#define GET_INSN_FIELD(X, i)     ((i) & OP_MASK_##X) >> OP_SH_##X
-+#define SET_INSN_FIELD(X, i, j)  (i) = ((i) &~ (OP_MASK_##X)) | ((j) << OP_SH_##X)
-+
-+
-+/*
-+   We include the auto-generated file nios2-isa.h and define the mask
-+   and shifts below in terms of those in nios2-isa.h. This ensures
-+   that the binutils and hardware are always in sync
-+*/
-+
-+#include "nios2-isa.h"
-+
-+#define OP_MASK_OP              (IW_OP_MASK << IW_OP_LSB)
-+#define OP_SH_OP                IW_OP_LSB
-+
-+
-+/* Masks and shifts for I-type instructions */
-+
-+#define OP_MASK_IOP             (IW_OP_MASK << IW_OP_LSB)
-+#define OP_SH_IOP               IW_OP_LSB
-+
-+#define OP_MASK_IMM16   		(IW_IMM16_MASK << IW_IMM16_LSB)
-+#define OP_SH_IMM16             IW_IMM16_LSB
-+
-+#define OP_MASK_IRD             (IW_B_MASK << IW_B_LSB)	// the same as T for I-type
-+#define OP_SH_IRD               IW_B_LSB
-+
-+#define OP_MASK_IRT             (IW_B_MASK << IW_B_LSB)
-+#define OP_SH_IRT               IW_B_LSB
-+
-+#define OP_MASK_IRS             (IW_A_MASK << IW_A_LSB)
-+#define OP_SH_IRS               IW_A_LSB
-+
-+/* Masks and shifts for R-type instructions */
-+
-+#define OP_MASK_ROP             (IW_OP_MASK << IW_OP_LSB)
-+#define OP_SH_ROP               IW_OP_LSB
-+
-+#define OP_MASK_ROPX    		(IW_OPX_MASK << IW_OPX_LSB)
-+#define OP_SH_ROPX              IW_OPX_LSB
-+
-+#define OP_MASK_RRD             (IW_C_MASK << IW_C_LSB)
-+#define OP_SH_RRD               IW_C_LSB
-+
-+#define OP_MASK_RRT             (IW_B_MASK << IW_B_LSB)
-+#define OP_SH_RRT               IW_B_LSB
-+
-+#define OP_MASK_RRS             (IW_A_MASK << IW_A_LSB)
-+#define OP_SH_RRS               IW_A_LSB
-+
-+/* Masks and shifts for J-type instructions */
-+
-+#define OP_MASK_JOP             (IW_OP_MASK << IW_OP_LSB)
-+#define OP_SH_JOP               IW_OP_LSB
-+
-+#define OP_MASK_IMM26   		(IW_IMM26_MASK << IW_IMM26_LSB)
-+#define OP_SH_IMM26             IW_IMM26_LSB
-+
-+/* Masks and shifts for CTL instructions */
-+
-+#define OP_MASK_RCTL    0x000007c0
-+#define OP_SH_RCTL              6
-+
-+/* break instruction imm5 field */
-+#define OP_MASK_TRAP_IMM5 0x000007c0
-+#define OP_SH_TRAP_IMM5   6
-+
-+/* instruction imm5 field */
-+#define OP_MASK_IMM5    		(IW_SHIFT_IMM5_MASK << IW_SHIFT_IMM5_LSB)
-+#define OP_SH_IMM5              IW_SHIFT_IMM5_LSB
-+
-+/* cache operation fields (type j,i(s)) */
-+#define OP_MASK_CACHE_OPX       (IW_B_MASK << IW_B_LSB)
-+#define OP_SH_CACHE_OPX         IW_B_LSB
-+#define OP_MASK_CACHE_RRS       (IW_A_MASK << IW_A_LSB)
-+#define OP_SH_CACHE_RRS         IW_A_LSB
-+
-+/* custom instruction masks */
-+#define OP_MASK_CUSTOM_A		0x00010000
-+#define OP_SH_CUSTOM_A				16
-+
-+#define OP_MASK_CUSTOM_B		0x00008000
-+#define OP_SH_CUSTOM_B				15
-+
-+#define OP_MASK_CUSTOM_C		0x00004000
-+#define OP_SH_CUSTOM_C				14
-+
-+#define OP_MASK_CUSTOM_N		0x00003fc0
-+#define OP_SH_CUSTOM_N				6
-+#define OP_MAX_CUSTOM_N				255
-+
-+/*
-+       The following macros define the opcode matches for each
-+       instruction
-+       code & OP_MASK_INST == OP_MATCH_INST
-+ */
-+
-+/* OP instruction matches */
-+#define OP_MATCH_ADDI           OP_ADDI
-+#define OP_MATCH_ANDHI          OP_ANDHI
-+#define OP_MATCH_ANDI           OP_ANDI
-+#define OP_MATCH_BEQ            OP_BEQ
-+#define OP_MATCH_BGE            OP_BGE
-+#define OP_MATCH_BGEU           OP_BGEU
-+#define OP_MATCH_BLT            OP_BLT
-+#define OP_MATCH_BLTU           OP_BLTU
-+#define OP_MATCH_BNE            OP_BNE
-+#define OP_MATCH_BR             OP_BR
-+#define OP_MATCH_FLUSHD         OP_FLUSHD
-+#define OP_MATCH_INITD          OP_INITD
-+#define OP_MATCH_CALL           OP_CALL
-+#define OP_MATCH_CMPEQI         OP_CMPEQI
-+#define OP_MATCH_CMPGEI         OP_CMPGEI
-+#define OP_MATCH_CMPGEUI        OP_CMPGEUI
-+#define OP_MATCH_CMPLTI         OP_CMPLTI
-+#define OP_MATCH_CMPLTUI        OP_CMPLTUI
-+#define OP_MATCH_CMPNEI         OP_CMPNEI
-+#define OP_MATCH_LDB            OP_LDB
-+#define OP_MATCH_LDBIO          OP_LDBIO
-+#define OP_MATCH_LDBU           OP_LDBU
-+#define OP_MATCH_LDBUIO         OP_LDBUIO
-+#define OP_MATCH_LDH            OP_LDH
-+#define OP_MATCH_LDHIO          OP_LDHIO
-+#define OP_MATCH_LDHU           OP_LDHU
-+#define OP_MATCH_LDHUIO         OP_LDHUIO
-+#define OP_MATCH_LDW            OP_LDW
-+#define OP_MATCH_LDWIO          OP_LDWIO
-+#define OP_MATCH_MULI           OP_MULI
-+#define OP_MATCH_OPX            OP_OPX
-+#define OP_MATCH_ORHI           OP_ORHI
-+#define OP_MATCH_ORI            OP_ORI
-+#define OP_MATCH_STB            OP_STB
-+#define OP_MATCH_STBIO          OP_STBIO
-+#define OP_MATCH_STH            OP_STH
-+#define OP_MATCH_STHIO          OP_STHIO
-+#define OP_MATCH_STW            OP_STW
-+#define OP_MATCH_STWIO          OP_STWIO
-+#define OP_MATCH_CUSTOM         OP_CUSTOM
-+#define OP_MATCH_XORHI          OP_XORHI
-+#define OP_MATCH_XORI           OP_XORI
-+#define OP_MATCH_OPX            OP_OPX
-+
-+/* OPX instruction values */
-+#define OP_MATCH_ADD            ((OPX_ADD << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_AND            ((OPX_AND << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_BREAK          ((0x1e << 17) | (OPX_BREAK << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_BRET           ((0xf0000000) | (OPX_BRET << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_CALLR          ((0x1f << 17) | (OPX_CALLR << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_CMPEQ          ((OPX_CMPEQ << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_CMPGE          ((OPX_CMPGE << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_CMPGEU         ((OPX_CMPGEU << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_CMPLT          ((OPX_CMPLT << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_CMPLTU         ((OPX_CMPLTU << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_CMPNE          ((OPX_CMPNE << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_DIV            ((OPX_DIV << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_DIVU           ((OPX_DIVU << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_JMP            ((OPX_JMP << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_MUL            ((OPX_MUL << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_MULXSS         ((OPX_MULXSS << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_MULXSU         ((OPX_MULXSU << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_MULXUU         ((OPX_MULXUU << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_NEXTPC         ((OPX_NEXTPC << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_NOR            ((OPX_NOR << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_OR             ((OPX_OR << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_RDCTL          ((OPX_RDCTL << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_RET            ((0xf8000000) | (OPX_RET << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_ROL            ((OPX_ROL << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_ROLI           ((OPX_ROLI << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_ROR            ((OPX_ROR << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_SLL            ((OPX_SLL << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_SLLI           ((OPX_SLLI << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_SRA            ((OPX_SRA << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_SRAI           ((OPX_SRAI << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_SRL            ((OPX_SRL << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_SRLI           ((OPX_SRLI << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_SUB            ((OPX_SUB << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_SYNC           ((OPX_SYNC << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_TRAP           ((0x1d << 17) | (OPX_TRAP << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_ERET           ((0xe8000000) | (OPX_ERET << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_WRCTL          ((OPX_WRCTL << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_XOR            ((OPX_XOR << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_FLUSHI			((OPX_FLUSHI << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_FLUSHP			((OPX_FLUSHP << IW_OPX_LSB) | (OP_OPX))
-+#define OP_MATCH_INITI			((OPX_INITI << IW_OPX_LSB) | (OP_OPX))
-+
-+/*
-+       Some unusual op masks
-+*/
-+#define OP_MASK_BREAK           ((OP_MASK_RRS | OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX | OP_MASK_OP) & 0xfffff03f)
-+#define OP_MASK_CALLR           ((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX | OP_MASK_OP))
-+#define OP_MASK_JMP             ((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX | OP_MASK_OP))
-+#define OP_MASK_SYNC            ((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX | OP_MASK_OP))
-+#define OP_MASK_TRAP            ((OP_MASK_RRS | OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX | OP_MASK_OP) & 0xfffff83f)
-+#define OP_MASK_WRCTL           ((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX | OP_MASK_OP))	/*& 0xfffff83f */
-+#define OP_MASK_NEXTPC          ((OP_MASK_RRS | OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))
-+#define OP_MASK_FLUSHI          ((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX | OP_MASK_OP))
-+#define OP_MASK_INITI           ((OP_MASK_RRT | OP_MASK_RRD | OP_MASK_ROPX | OP_MASK_OP))
-+
-+#define OP_MASK_ROLI            ((OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))
-+#define OP_MASK_SLLI            ((OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))
-+#define OP_MASK_SRAI            ((OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))
-+#define OP_MASK_SRLI            ((OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))
-+#define OP_MASK_RDCTL           ((OP_MASK_RRS | OP_MASK_RRT | OP_MASK_ROPX | OP_MASK_OP))	/*& 0xfffff83f */
-+
-+#ifndef OP_MASK
-+#define OP_MASK                         0xffffffff
-+#endif
-+
-+/* These are the data structures we use to hold the instruction information */
-+
-+extern const struct nios2_opcode nios2_builtin_opcodes[];
-+extern const int bfd_nios2_num_builtin_opcodes;
-+extern struct nios2_opcode *nios2_opcodes;
-+extern int bfd_nios2_num_opcodes;
-+
-+/* These are the data structures used to hold the operand parsing information */
-+//extern const struct nios2_arg_parser nios2_arg_parsers[];
-+//extern struct nios2_arg_parser* nios2_arg_parsers;
-+//extern const int nios2_num_builtin_arg_parsers;
-+//extern int nios2_num_arg_parsers;
-+
-+/* These are the data structures used to hold the register information */
-+extern const struct nios2_reg nios2_builtin_regs[];
-+extern struct nios2_reg *nios2_regs;
-+extern const int nios2_num_builtin_regs;
-+extern int nios2_num_regs;
-+
-+/* Machine-independent macro for number of opcodes */
-+
-+#define NUMOPCODES bfd_nios2_num_opcodes
-+#define NUMREGISTERS nios2_num_regs;
-+
-+/* these are used in disassembly to get the correct register names */
-+#define NUMREGNAMES 32
-+#define NUMCTLREGNAMES 32
-+#define CTLREGBASE     42
-+#define COPROCREGBASE  83
-+#define NUMCOPROCREGNAMES 32
-+
-+
-+/* this is made extern so that the assembler can use it to find out
-+   what instruction caused an error */
-+extern const struct nios2_opcode *nios2_find_opcode_hash (unsigned long);
-+
-+/* overflow message strings used in the assembler */
-+extern char *overflow_msgs[];
-+
-+#endif // _NIOS2_H
---- binutils-2.15/include/opcode/s-nios2-isa	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/include/opcode/s-nios2-isa	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1 @@
-+timestamp
---- binutils-2.15/ld/Makefile.am	2004-05-17 21:36:15.000000000 +0200
-+++ binutils-2.15-nios2/ld/Makefile.am	2005-05-17 12:20:14.000000000 +0200
-@@ -1440,6 +1440,9 @@ eelf32frvfd.c: $(srcdir)/emulparams/elf3
-   $(srcdir)/emulparams/elf32frv.sh \
-   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
- 	${GENSCRIPTS} elf32frvfd "$(tdir_frv)"
-+enios2elf.c: $(srcdir)/emulparams/nios2elf.sh \
-+  $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
-+	${GENSCRIPTS} nios2elf "$(tdir_nios2)"
- 
- # We need this for automake to use YLWRAP.
- EXTRA_ld_new_SOURCES = deffilep.y
---- binutils-2.15/ld/Makefile.in	2004-05-17 21:36:15.000000000 +0200
-+++ binutils-2.15-nios2/ld/Makefile.in	2005-05-17 12:20:14.000000000 +0200
-@@ -2166,6 +2166,9 @@ eelf32frvfd.c: $(srcdir)/emulparams/elf3
-   $(srcdir)/emulparams/elf32frv.sh \
-   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
- 	${GENSCRIPTS} elf32frvfd "$(tdir_frv)"
-+enios2elf.c: $(srcdir)/emulparams/nios2elf.sh \
-+  $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
-+	${GENSCRIPTS} nios2elf "$(tdir_nios2)"
- 
- # The generated emulation files mostly have the same dependencies.
- $(EMULATION_OFILES): ../bfd/bfd.h sysdep.h config.h $(INCDIR)/bfdlink.h \
---- binutils-2.15/ld/configure.tgt	2004-05-17 21:36:15.000000000 +0200
-+++ binutils-2.15-nios2/ld/configure.tgt	2005-05-17 12:20:14.000000000 +0200
-@@ -450,6 +450,7 @@ mn10200-*-*)		targ_emul=mn10200 ;;
- mn10300-*-*)		targ_emul=mn10300 ;;
- msp430-*-*)             targ_emul=msp430x110
-                         targ_extra_emuls="msp430x112 msp430x1101 msp430x1111 msp430x1121 msp430x1122 msp430x1132 msp430x122 msp430x123 msp430x1222 msp430x1232 msp430x133 msp430x135 msp430x1331 msp430x1351 msp430x147 msp430x148 msp430x149 msp430x155 msp430x156 msp430x157 msp430x167 msp430x168 msp430x169 msp430x311 msp430x312 msp430x313 msp430x314 msp430x315 msp430x323 msp430x325 msp430x336 msp430x337 msp430x412 msp430x413 msp430xE423 msp430xE425 msp430xE427 msp430xW423 msp430xW425 msp430xW427 msp430x435 msp430x436 msp430x437 msp430x447 msp430x448 msp430x449" ;;
-+nios2-*-*|nios2-*-*)    targ_emul=nios2elf ;;
- alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
- 		        targ_emul=elf64alpha_fbsd
- 			targ_extra_emuls="elf64alpha alpha"
---- binutils-2.15/ld/emulparams/nios2elf.sh	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/ld/emulparams/nios2elf.sh	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,15 @@
-+SCRIPT_NAME=elf
-+OUTPUT_FORMAT="elf32-littlenios2"
-+TEXT_START_ADDR=0x0
-+OTHER_GOT_SYMBOLS='
-+  _gp = ALIGN(16) + 0x7ff0;
-+  PROVIDE(gp = _gp);
-+'
-+ARCH=nios2
-+MACHINE=
-+MAXPAGESIZE=256
-+ENTRY=_start
-+EMBEDDED=yes
-+DATA_ADDR=.
-+NOP=0x0001883a
-+
---- binutils-2.15/ld/ldmain.c	2004-05-17 21:36:16.000000000 +0200
-+++ binutils-2.15-nios2/ld/ldmain.c	2005-05-17 12:20:14.000000000 +0200
-@@ -397,6 +397,14 @@ main (int argc, char **argv)
-       yyparse ();
-       lex_string = NULL;
-     }
-+/* NG horrible hack, but it works and I haven't the time to do this properly */
-+#ifdef bfd_set_link_info
-+	bfd_set_link_info(&link_info);
-+#endif
-+#ifdef bfd_set_force_make_executable
-+	bfd_set_force_make_executable(force_make_executable);
-+#endif
-+
- 
-   if (trace_file_tries)
-     {
---- binutils-2.15/ld/nios2_ld_xfail.lst	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/ld/nios2_ld_xfail.lst	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,3 @@
-+
-+
-+
---- binutils-2.15/ld/testsuite/ld-elf/merge.d	2003-05-07 07:08:02.000000000 +0200
-+++ binutils-2.15-nios2/ld/testsuite/ld-elf/merge.d	2005-05-17 12:20:14.000000000 +0200
-@@ -5,6 +5,7 @@
- #xfail: "hppa*-*-*" "h8300-*-*" "i960-*-*" "ip2k-*-*" "m32r-*-*" "mcore-*-*"
- #xfail: "mn10*-*-*" "mips64*-*-linux*" "openrisc-*-*" "pj-*-*" "sparc*-*-*"
- #xfail: "xtensa-*-*"
-+#xfail: "nios2-*-*"
- 
- .*:     file format .*elf.*
- 
---- binutils-2.15/ld/testsuite/ld-elfcomm/elfcomm.exp	2003-06-18 05:38:05.000000000 +0200
-+++ binutils-2.15-nios2/ld/testsuite/ld-elfcomm/elfcomm.exp	2005-05-17 12:20:14.000000000 +0200
-@@ -56,6 +56,10 @@ proc dump_common1 { testname } {
-     return 1
- }
- 
-+if [istarget nios2-*-*] {
-+    set CFLAGS "$CFLAGS -G0"
-+}
-+
- if { ![ld_compile "$CC $CFLAGS" $srcdir/$subdir/common1a.c tmpdir/common1a.o]
-     || ![ld_compile "$CC $CFLAGS" $srcdir/$subdir/common1b.c tmpdir/common1b.o] } {
-     unresolved $test1
---- binutils-2.15/ld/testsuite/ld-scripts/cross2.t	2001-08-27 12:49:55.000000000 +0200
-+++ binutils-2.15-nios2/ld/testsuite/ld-scripts/cross2.t	2005-05-17 12:20:14.000000000 +0200
-@@ -2,5 +2,9 @@ NOCROSSREFS ( .text .data )
- SECTIONS
- {
-   .text : { *(.text) *(.text.*) *(.pr) }
--  .data : { *(.data) *(.data.*) *(.sdata) *(.rw) *(.tc0) *(.tc) *(.toc) }
-+  .data : 
-+  { *(.data) *(.data.*) 
-+  	_gp = ABSOLUTE(. + 0x7ff0);
-+    *(.sdata) *(.rw) *(.tc0) *(.tc) *(.toc) 
-+   }
- }
---- binutils-2.15/opcodes/Makefile.am	2004-01-07 19:39:40.000000000 +0100
-+++ binutils-2.15-nios2/opcodes/Makefile.am	2005-05-17 12:20:14.000000000 +0200
-@@ -125,6 +125,8 @@ CFILES = \
- 	mmix-dis.c \
- 	mmix-opc.c \
- 	ns32k-dis.c \
-+	nios2-opc.c \
-+	nios2-dis.c \
- 	openrisc-asm.c \
- 	openrisc-desc.c \
- 	openrisc-dis.c \
-@@ -237,6 +239,8 @@ ALL_MACHINES = \
- 	mmix-opc.lo \
- 	msp430-dis.lo \
- 	ns32k-dis.lo \
-+	nios2-opc.lo \
-+	nios2-dis.lo \
- 	openrisc-asm.lo \
- 	openrisc-desc.lo \
- 	openrisc-dis.lo \
-@@ -739,6 +743,13 @@ mmix-opc.lo: mmix-opc.c $(INCDIR)/opcode
- ns32k-dis.lo: ns32k-dis.c $(BFD_H) $(INCDIR)/ansidecl.h \
-   $(INCDIR)/symcat.h sysdep.h config.h $(INCDIR)/dis-asm.h \
-   $(INCDIR)/opcode/ns32k.h opintl.h
-+nios2-opc.lo: nios2-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
-+  $(INCDIR)/opcode/nios2.h
-+nios2-dis.lo: nios2-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
-+  $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/nios2.h \
-+  opintl.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
-+  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
-+  $(INCDIR)/elf/nios2.h $(INCDIR)/elf/reloc-macros.h
- openrisc-asm.lo: openrisc-asm.c sysdep.h config.h $(INCDIR)/ansidecl.h \
-   $(BFD_H) $(INCDIR)/symcat.h openrisc-desc.h $(INCDIR)/opcode/cgen.h \
-   openrisc-opc.h opintl.h $(INCDIR)/xregex.h $(INCDIR)/xregex2.h \
---- binutils-2.15/opcodes/Makefile.in	2004-01-07 19:39:40.000000000 +0100
-+++ binutils-2.15-nios2/opcodes/Makefile.in	2005-05-17 12:20:14.000000000 +0200
-@@ -236,6 +236,8 @@ CFILES = \
- 	mmix-dis.c \
- 	mmix-opc.c \
- 	ns32k-dis.c \
-+	nios2-opc.c \
-+	nios2-dis.c \
- 	openrisc-asm.c \
- 	openrisc-desc.c \
- 	openrisc-dis.c \
-@@ -348,6 +350,8 @@ ALL_MACHINES = \
- 	mmix-dis.lo \
- 	mmix-opc.lo \
- 	msp430-dis.lo \
-+	nios2-opc.lo \
-+	nios2-dis.lo \
- 	ns32k-dis.lo \
- 	openrisc-asm.lo \
- 	openrisc-desc.lo \
-@@ -1232,6 +1236,13 @@ mmix-dis.lo: mmix-dis.c $(INCDIR)/opcode
-   $(BFD_H) $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/libiberty.h \
-   opintl.h
- mmix-opc.lo: mmix-opc.c $(INCDIR)/opcode/mmix.h $(INCDIR)/symcat.h
-+nios2-opc.lo: nios2-opc.c sysdep.h config.h $(INCDIR)/ansidecl.h \
-+  $(INCDIR)/opcode/nios2.h
-+nios2-dis.lo: nios2-dis.c sysdep.h config.h $(INCDIR)/ansidecl.h \
-+  $(INCDIR)/dis-asm.h $(BFD_H) $(INCDIR)/symcat.h $(INCDIR)/opcode/nios2.h \
-+  opintl.h $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h \
-+  $(INCDIR)/elf/internal.h $(INCDIR)/elf/external.h $(INCDIR)/bfdlink.h \
-+  $(INCDIR)/elf/nios2.h $(INCDIR)/elf/reloc-macros.h
- ns32k-dis.lo: ns32k-dis.c $(BFD_H) $(INCDIR)/ansidecl.h \
-   $(INCDIR)/symcat.h sysdep.h config.h $(INCDIR)/dis-asm.h \
-   $(INCDIR)/opcode/ns32k.h opintl.h
---- binutils-2.15/opcodes/configure	2003-08-05 11:39:31.000000000 +0200
-+++ binutils-2.15-nios2/opcodes/configure	2005-05-17 12:20:14.000000000 +0200
-@@ -4661,6 +4661,7 @@ if test x${all_targets} = xfalse ; then
- 	bfd_mn10200_arch)	ta="$ta m10200-dis.lo m10200-opc.lo" ;;
- 	bfd_mn10300_arch)	ta="$ta m10300-dis.lo m10300-opc.lo" ;;
- 	bfd_msp430_arch)	ta="$ta msp430-dis.lo" ;;
-+	bfd_nios2_arch)		ta="$ta nios2-dis.lo nios2-opc.lo" ;;
- 	bfd_ns32k_arch)		ta="$ta ns32k-dis.lo" ;;
- 	bfd_openrisc_arch)	ta="$ta openrisc-asm.lo openrisc-desc.lo openrisc-dis.lo openrisc-ibld.lo openrisc-opc.lo" using_cgen=yes ;;
- 	bfd_or32_arch)		ta="$ta or32-dis.lo or32-opc.lo" using_cgen=yes ;;
---- binutils-2.15/opcodes/configure.in	2003-08-05 11:39:31.000000000 +0200
-+++ binutils-2.15-nios2/opcodes/configure.in	2005-05-17 12:20:14.000000000 +0200
-@@ -202,6 +202,7 @@ if test x${all_targets} = xfalse ; then
- 	bfd_mn10200_arch)	ta="$ta m10200-dis.lo m10200-opc.lo" ;;
- 	bfd_mn10300_arch)	ta="$ta m10300-dis.lo m10300-opc.lo" ;;
- 	bfd_msp430_arch)	ta="$ta msp430-dis.lo" ;;
-+	bfd_nios2_arch)		ta="$ta nios2-dis.lo nios2-opc.lo" ;;
- 	bfd_ns32k_arch)		ta="$ta ns32k-dis.lo" ;;
- 	bfd_openrisc_arch)	ta="$ta openrisc-asm.lo openrisc-desc.lo openrisc-dis.lo openrisc-ibld.lo openrisc-opc.lo" using_cgen=yes ;;
- 	bfd_or32_arch)		ta="$ta or32-dis.lo or32-opc.lo" using_cgen=yes ;;
---- binutils-2.15/opcodes/disassemble.c	2003-11-14 16:12:44.000000000 +0100
-+++ binutils-2.15-nios2/opcodes/disassemble.c	2005-05-17 12:20:14.000000000 +0200
-@@ -1,5 +1,5 @@
- /* Select disassembly routine for specified architecture.
--   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
-+   Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
-    Free Software Foundation, Inc.
- 
- This program is free software; you can redistribute it and/or modify
-@@ -72,6 +72,7 @@ Foundation, Inc., 59 Temple Place - Suit
- #define ARCH_z8k
- #define ARCH_frv
- #define ARCH_iq2000
-+#define ARCH_nios2
- #define INCLUDE_SHMEDIA
- #endif
- 
-@@ -375,6 +376,11 @@ disassembler (abfd)
-       disassemble = print_insn_iq2000;
-       break;
- #endif
-+#ifdef ARCH_nios2
-+	case bfd_arch_nios2:
-+	  disassemble = print_insn_nios2;
-+	  break;
-+#endif
-     default:
-       return 0;
-     }
---- binutils-2.15/opcodes/nios2-dis.c	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/opcodes/nios2-dis.c	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,445 @@
-+/* nios2-dis.c -- Altera New Jersey disassemble routines.
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+This file is part of GDB, GAS, and the GNU binutils.
-+
-+GDB, GAS, and the GNU binutils are free software; you can redistribute
-+them and/or modify them under the terms of the GNU General Public
-+License as published by the Free Software Foundation; either version
-+1, or (at your option) any later version.
-+
-+GDB, GAS, and the GNU binutils are distributed in the hope that they
-+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 file; see the file COPYING.  If not, write to the Free
-+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-+
-+#include <stdlib.h>
-+#include <assert.h>
-+#include <string.h>
-+#include "dis-asm.h"
-+#include "opcode/nios2.h"
-+
-+/* No symbol table is available when this code runs out in an embedded
-+   system as when it is used for disassembler support in a monitor. */
-+
-+#if !defined(EMBEDDED_ENV)
-+#define SYMTAB_AVAILABLE 1
-+#include "elf-bfd.h"
-+#include "elf/nios2.h"
-+#endif
-+
-+/* length of New Jersey instruction in bytes */
-+#define INSNLEN 4
-+
-+/* helper function prototypes */
-+static int nios2_disassemble (bfd_vma, unsigned long, disassemble_info *);
-+static void nios2_init_opcode_hash (void);
-+
-+
-+static int nios2_print_insn_arg (const char *argptr, unsigned long opcode,
-+				 bfd_vma address, disassemble_info * info);
-+
-+
-+/* print_insn_nios2 is the main disassemble function for New Jersey.
-+   The function diassembler(abfd) (source in disassemble.c)
-+   returns a pointer to this function when the bfd machine type is
-+   New Jersey. print_insn_nios2 reads the instruction word at the
-+   address given, and prints the disassembled instruction on the
-+   stream info->stream using info->fprintf_func. */
-+
-+int
-+print_insn_nios2 (bfd_vma address, disassemble_info * info)
-+{
-+  /* buffer into which the instruction bytes are written */
-+  bfd_byte buffer[INSNLEN];
-+  /* used to indicate return status from function calls */
-+  int status;
-+
-+  assert (info != NULL);
-+
-+  status = (*info->read_memory_func) (address, buffer, INSNLEN, info);
-+  if (status == 0)
-+    {
-+      status =
-+	nios2_disassemble (address, (unsigned long) bfd_getl32 (buffer),
-+			   info);
-+    }
-+  else
-+    {
-+      (*info->memory_error_func) (status, address, info);
-+      status = -1;
-+    }
-+  return status;
-+}
-+
-+/* Data structures used by the opcode hash table */
-+
-+typedef struct _nios2_opcode_hash
-+{
-+  const struct nios2_opcode *opcode;
-+  struct _nios2_opcode_hash *next;
-+} nios2_opcode_hash;
-+
-+static bfd_boolean nios2_hash_init = 0;
-+static nios2_opcode_hash *nios2_hash[(OP_MASK_OP) + 1];
-+
-+/* separate hash table for pseudo-ops */
-+static nios2_opcode_hash *nios2_ps_hash[(OP_MASK_OP) + 1];
-+
-+/* Function to initialize the opcode hash table */
-+
-+void
-+nios2_init_opcode_hash ()
-+{
-+  unsigned int i;
-+  register const struct nios2_opcode *op;
-+  nios2_opcode_hash *tmp_hash;
-+
-+  for (i = 0; i <= OP_MASK_OP; ++i)
-+    {
-+      nios2_hash[0] = NULL;
-+    }
-+  for (i = 0; i <= OP_MASK_OP; i++)
-+    {
-+      for (op = nios2_opcodes; op < &nios2_opcodes[NUMOPCODES]; op++)
-+	{
-+	  if ((op->pinfo & NIOS2_INSN_MACRO) == NIOS2_INSN_MACRO)
-+	    {
-+	      if (i == ((op->match >> OP_SH_OP) & OP_MASK_OP) &&
-+		  (op->
-+		   pinfo & (NIOS2_INSN_MACRO_MOV | NIOS2_INSN_MACRO_MOVI) &
-+		   0x7fffffff) != 0)
-+		{
-+		  tmp_hash = nios2_ps_hash[i];
-+		  if (tmp_hash == NULL)
-+		    {
-+		      tmp_hash =
-+			(nios2_opcode_hash *)
-+			malloc (sizeof (nios2_opcode_hash));
-+		      nios2_ps_hash[i] = tmp_hash;
-+		    }
-+		  else
-+		    {
-+		      while (tmp_hash->next != NULL)
-+			tmp_hash = tmp_hash->next;
-+		      tmp_hash->next =
-+			(nios2_opcode_hash *)
-+			malloc (sizeof (nios2_opcode_hash));
-+		      tmp_hash = tmp_hash->next;
-+		    }
-+		  if (tmp_hash == NULL)
-+		    {
-+		      fprintf (stderr,
-+			       "error allocating memory...broken disassembler\n");
-+		      abort ();
-+		    }
-+		  tmp_hash->opcode = op;
-+		  tmp_hash->next = NULL;
-+		}
-+	    }
-+	  else if (i == ((op->match >> OP_SH_OP) & OP_MASK_OP))
-+	    {
-+	      tmp_hash = nios2_hash[i];
-+	      if (tmp_hash == NULL)
-+		{
-+		  tmp_hash =
-+		    (nios2_opcode_hash *) malloc (sizeof (nios2_opcode_hash));
-+		  nios2_hash[i] = tmp_hash;
-+		}
-+	      else
-+		{
-+		  while (tmp_hash->next != NULL)
-+		    tmp_hash = tmp_hash->next;
-+		  tmp_hash->next =
-+		    (nios2_opcode_hash *) malloc (sizeof (nios2_opcode_hash));
-+		  tmp_hash = tmp_hash->next;
-+		}
-+	      if (tmp_hash == NULL)
-+		{
-+		  fprintf (stderr,
-+			   "error allocating memory...broken disassembler\n");
-+		  abort ();
-+		}
-+	      tmp_hash->opcode = op;
-+	      tmp_hash->next = NULL;
-+	    }
-+	}
-+    }
-+  nios2_hash_init = 1;
-+#ifdef DEBUG_HASHTABLE
-+  for (i = 0; i <= OP_MASK_OP; ++i)
-+    {
-+      printf ("index: 0x%02X    ops: ", i);
-+      tmp_hash = nios2_hash[i];
-+      if (tmp_hash != NULL)
-+	{
-+	  while (tmp_hash != NULL)
-+	    {
-+	      printf ("%s ", tmp_hash->opcode->name);
-+	      tmp_hash = tmp_hash->next;
-+	    }
-+	}
-+      printf ("\n");
-+    }
-+
-+  for (i = 0; i <= OP_MASK_OP; ++i)
-+    {
-+      printf ("index: 0x%02X    ops: ", i);
-+      tmp_hash = nios2_ps_hash[i];
-+      if (tmp_hash != NULL)
-+	{
-+	  while (tmp_hash != NULL)
-+	    {
-+	      printf ("%s ", tmp_hash->opcode->name);
-+	      tmp_hash = tmp_hash->next;
-+	    }
-+	}
-+      printf ("\n");
-+    }
-+#endif
-+}
-+
-+/* Function which returns a pointer to an nios2_opcode struct for
-+   a given instruction opcode, or NULL if there is an error */
-+
-+const struct nios2_opcode *
-+nios2_find_opcode_hash (unsigned long opcode)
-+{
-+  nios2_opcode_hash *entry;
-+
-+  /* Build a hash table to shorten the search time. */
-+  if (!nios2_hash_init)
-+    {
-+      nios2_init_opcode_hash ();
-+    }
-+
-+  /* first look in the pseudo-op hashtable */
-+  entry = nios2_ps_hash[(opcode >> OP_SH_OP) & OP_MASK_OP];
-+
-+  /* look for a match and if we get one, this is the instruction we decode */
-+  while (entry != NULL)
-+    {
-+      if ((entry->opcode->match) == (opcode & entry->opcode->mask))
-+	return entry->opcode;
-+      else
-+	entry = entry->next;
-+    }
-+
-+  /* if we haven't yet returned, then we need to look in the main
-+     hashtable */
-+  entry = nios2_hash[(opcode >> OP_SH_OP) & OP_MASK_OP];
-+
-+  if (entry == NULL)
-+    return NULL;
-+
-+
-+  while (entry != NULL)
-+    {
-+      if ((entry->opcode->match) == (opcode & entry->opcode->mask))
-+	return entry->opcode;
-+      else
-+	entry = entry->next;
-+    }
-+
-+  return NULL;
-+}
-+
-+/* nios2_disassemble does all the work of disassembling a New Jersey
-+       instruction opcode */
-+
-+int
-+nios2_disassemble (bfd_vma address, unsigned long opcode,
-+		   disassemble_info * info)
-+{
-+  const struct nios2_opcode *op;
-+  const char *argstr;
-+
-+  info->bytes_per_line = INSNLEN;
-+  info->bytes_per_chunk = INSNLEN;
-+  info->display_endian = info->endian;
-+  info->insn_info_valid = 1;
-+  info->branch_delay_insns = 0;
-+  info->data_size = 0;
-+  info->insn_type = dis_nonbranch;
-+  info->target = 0;
-+  info->target2 = 0;
-+
-+  /* Find the major opcode and use this to disassemble
-+     the instruction and its arguments */
-+  op = nios2_find_opcode_hash (opcode);
-+
-+  if (op != NULL)
-+    {
-+      bfd_boolean is_nop = FALSE;
-+      if (op->pinfo == NIOS2_INSN_MACRO_MOV)
-+	{
-+	  /* check for mov r0, r0 and if it is
-+	     change to nop */
-+	  int dst, src;
-+	  dst = GET_INSN_FIELD (RRD, opcode);
-+	  src = GET_INSN_FIELD (RRS, opcode);
-+	  if (dst == 0 && src == 0)
-+	    {
-+	      (*info->fprintf_func) (info->stream, "nop");
-+	      is_nop = TRUE;
-+	    }
-+	  else
-+	    {
-+	      (*info->fprintf_func) (info->stream, "%s", op->name);
-+	    }
-+	}
-+      else
-+	{
-+	  (*info->fprintf_func) (info->stream, "%s", op->name);
-+	}
-+
-+      if (!is_nop)
-+	{
-+	  argstr = op->args;
-+	  if (argstr != NULL && *argstr != '\0')
-+	    {
-+	      (*info->fprintf_func) (info->stream, "\t");
-+	      while (*argstr != '\0')
-+		{
-+		  nios2_print_insn_arg (argstr, opcode, address, info);
-+		  ++argstr;
-+		}
-+	    }
-+	}
-+    }
-+  else
-+    {
-+      /* Handle undefined instructions. */
-+      info->insn_type = dis_noninsn;
-+      (*info->fprintf_func) (info->stream, "0x%x", opcode);
-+    }
-+  // this tells the caller how far to advance the program counter
-+  return INSNLEN;
-+}
-+
-+/* The function nios2_print_insn_arg uses the character pointed
-+   to by argptr to determine how it print the next token or separator
-+   character in the arguments to an instruction */
-+int
-+nios2_print_insn_arg (const char *argptr,
-+		      unsigned long opcode, bfd_vma address,
-+		      disassemble_info * info)
-+{
-+  unsigned long i = 0;
-+  unsigned long reg_base;
-+
-+  assert (argptr != NULL);
-+  assert (info != NULL);
-+
-+  switch (*argptr)
-+    {
-+    case ',':
-+    case '(':
-+    case ')':
-+      (*info->fprintf_func) (info->stream, "%c", *argptr);
-+      break;
-+    case 'd':
-+      i = GET_INSN_FIELD (RRD, opcode);
-+
-+      if (GET_INSN_FIELD (OP, opcode) == OP_MATCH_CUSTOM
-+	  && GET_INSN_FIELD (CUSTOM_C, opcode) == 0)
-+	reg_base = COPROCREGBASE;
-+      else
-+	reg_base = 0;
-+
-+      if (i < NUMREGNAMES)
-+	(*info->fprintf_func) (info->stream, "%s",
-+			       nios2_regs[i + reg_base].name);
-+      else
-+	(*info->fprintf_func) (info->stream, "unknown");
-+      break;
-+    case 's':
-+      i = GET_INSN_FIELD (RRS, opcode);
-+
-+      if (GET_INSN_FIELD (OP, opcode) == OP_MATCH_CUSTOM
-+	  && GET_INSN_FIELD (CUSTOM_A, opcode) == 0)
-+	reg_base = COPROCREGBASE;
-+      else
-+	reg_base = 0;
-+
-+      if (i < NUMREGNAMES)
-+	(*info->fprintf_func) (info->stream, "%s",
-+			       nios2_regs[i + reg_base].name);
-+      else
-+	(*info->fprintf_func) (info->stream, "unknown");
-+      break;
-+    case 't':
-+      i = GET_INSN_FIELD (RRT, opcode);
-+
-+      if (GET_INSN_FIELD (OP, opcode) == OP_MATCH_CUSTOM
-+	  && GET_INSN_FIELD (CUSTOM_B, opcode) == 0)
-+	reg_base = COPROCREGBASE;
-+      else
-+	reg_base = 0;
-+
-+      if (i < NUMREGNAMES)
-+	(*info->fprintf_func) (info->stream, "%s",
-+			       nios2_regs[i + reg_base].name);
-+      else
-+	(*info->fprintf_func) (info->stream, "unknown");
-+      break;
-+    case 'i':
-+      /* 16-bit signed immediate */
-+      i = (signed) (GET_INSN_FIELD (IMM16, opcode) << 16) >> 16;
-+      (*info->fprintf_func) (info->stream, "%d", i);
-+      break;
-+    case 'u':
-+      /* 16-bit unsigned immediate */
-+      i = GET_INSN_FIELD (IMM16, opcode);
-+      (*info->fprintf_func) (info->stream, "%d", i);
-+      break;
-+    case 'o':
-+      /* 16-bit signed immediate address offset */
-+      i = (signed) (GET_INSN_FIELD (IMM16, opcode) << 16) >> 16;
-+      address = address + 4 + i;	/* NG changed to byte offset 1/9/03 */
-+      (*info->print_address_func) (address, info);
-+      break;
-+    case 'p':
-+      /* 5-bit unsigned immediate */
-+      i = GET_INSN_FIELD (CACHE_OPX, opcode);
-+      (*info->fprintf_func) (info->stream, "%d", i);
-+      break;
-+    case 'j':
-+      /* 5-bit unsigned immediate */
-+      i = GET_INSN_FIELD (IMM5, opcode);
-+      (*info->fprintf_func) (info->stream, "%d", i);
-+      break;
-+    case 'l':
-+      /* 8-bit unsigned immediate */
-+      /* FIXME - not yet implemented */
-+      i = GET_INSN_FIELD (CUSTOM_N, opcode);
-+      (*info->fprintf_func) (info->stream, "%u", i);
-+      break;
-+    case 'm':
-+      /* 26-bit unsigned immediate */
-+      i = GET_INSN_FIELD (IMM26, opcode);
-+      /* this translates to an address because its only used in call instructions */
-+      address = (address & 0xf0000000) | (i << 2);
-+      (*info->print_address_func) (address, info);
-+      break;
-+    case 'c':
-+      i = GET_INSN_FIELD (IMM5, opcode);	/* ctrl register index */
-+      (*info->fprintf_func) (info->stream, "%s",
-+			     nios2_regs[CTLREGBASE + i].name);
-+      break;
-+    case 'b':
-+      i = GET_INSN_FIELD (IMM5, opcode);
-+      (*info->fprintf_func) (info->stream, "%d", i);
-+      break;
-+    default:
-+      (*info->fprintf_func) (info->stream, "unknown");
-+      break;
-+    }
-+  return 0;
-+}
---- binutils-2.15/opcodes/nios2-opc.c	1970-01-01 01:00:00.000000000 +0100
-+++ binutils-2.15-nios2/opcodes/nios2-opc.c	2005-05-17 12:20:14.000000000 +0200
-@@ -0,0 +1,315 @@
-+/* nios2-opc.c -- Altera New Jersey opcode list.
-+
-+   Copyright (C) 2003
-+   by Nigel Gray (ngray@altera.com).
-+
-+This file is part of GDB, GAS, and the GNU binutils.
-+
-+GDB, GAS, and the GNU binutils are free software; you can redistribute
-+them and/or modify them under the terms of the GNU General Public
-+License as published by the Free Software Foundation; either version
-+1, or (at your option) any later version.
-+
-+GDB, GAS, and the GNU binutils are distributed in the hope that they
-+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 file; see the file COPYING.  If not, write to the Free
-+Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
-+
-+#include <stdio.h>
-+#include "opcode/nios2.h"
-+
-+/* Register string table */
-+
-+const struct nios2_reg nios2_builtin_regs[] = {
-+  {"zero", 0},
-+  {"at", 1},			// assembler temporary
-+  {"r2", 2},
-+  {"r3", 3},
-+  {"r4", 4},
-+  {"r5", 5},
-+  {"r6", 6},
-+  {"r7", 7},
-+  {"r8", 8},
-+  {"r9", 9},
-+  {"r10", 10},
-+  {"r11", 11},
-+  {"r12", 12},
-+  {"r13", 13},
-+  {"r14", 14},
-+  {"r15", 15},
-+  {"r16", 16},
-+  {"r17", 17},
-+  {"r18", 18},
-+  {"r19", 19},
-+  {"r20", 20},
-+  {"r21", 21},
-+  {"r22", 22},
-+  {"r23", 23},
-+  {"et", 24},
-+  {"bt", 25},
-+  {"gp", 26},			/* global pointer */
-+  {"sp", 27},			/* stack pointer */
-+  {"fp", 28},			/* frame pointer */
-+  {"ea", 29},			/* exception return address */
-+  {"ba", 30},			/* breakpoint return address */
-+  {"ra", 31},			/* return address */
-+
-+  /* alternative names for special registers */
-+  {"r0", 0},
-+  {"r1", 1},
-+  {"r24", 24},
-+  {"r25", 25},
-+  {"r26", 26},
-+  {"r27", 27},
-+  {"r28", 28},
-+  {"r29", 29},
-+  {"r30", 30},
-+  {"r31", 31},
-+
-+  /* control register names */
-+  {"status", 0},
-+  {"estatus", 1},
-+  {"bstatus", 2},
-+  {"ienable", 3},
-+  {"ipending", 4},
-+  {"cpuid", 5},
-+  {"ctl6", 6},
-+  {"ctl7", 7},
-+  {"pteaddr", 8},
-+  {"tlbacc", 9},
-+  {"tlbmisc", 10},
-+  {"ctl11", 11},
-+  {"ctl12", 12},
-+  {"ctl13", 13},
-+  {"ctl14", 14},
-+  {"ctl15", 15},
-+  {"ctl16", 16},
-+  {"ctl17", 17},
-+  {"ctl18", 18},
-+  {"ctl19", 19},
-+  {"ctl20", 20},
-+  {"ctl21", 21},
-+  {"ctl22", 22},
-+  {"ctl23", 23},
-+  {"ctl24", 24},
-+  {"ctl25", 25},
-+  {"ctl26", 26},
-+  {"ctl27", 27},
-+  {"ctl28", 28},
-+  {"ctl29", 29},
-+  {"ctl30", 30},
-+  {"ctl31", 31},
-+  {"ctl0", 0},
-+  {"ctl1", 1},
-+  {"ctl2", 2},
-+  {"ctl3", 3},
-+  {"ctl4", 4},
-+  {"ctl5", 5},
-+  {"ctl8", 8},
-+  {"ctl9", 9},
-+  {"ctl10", 10},
-+
-+  /* coprocessor register names */
-+  {"c0", 0},
-+  {"c1", 1},
-+  {"c2", 2},
-+  {"c3", 3},
-+  {"c4", 4},
-+  {"c5", 5},
-+  {"c6", 6},
-+  {"c7", 7},
-+  {"c8", 8},
-+  {"c9", 9},
-+  {"c10", 10},
-+  {"c11", 11},
-+  {"c12", 12},
-+  {"c13", 13},
-+  {"c14", 14},
-+  {"c15", 15},
-+  {"c16", 16},
-+  {"c17", 17},
-+  {"c18", 18},
-+  {"c19", 19},
-+  {"c20", 20},
-+  {"c21", 21},
-+  {"c22", 22},
-+  {"c23", 23},
-+  {"c24", 24},
-+  {"c25", 25},
-+  {"c26", 26},
-+  {"c27", 27},
-+  {"c28", 28},
-+  {"c29", 29},
-+  {"c30", 30},
-+  {"c31", 31},
-+};
-+
-+#define NIOS2_NUM_REGS \
-+       ((sizeof nios2_builtin_regs) / (sizeof (nios2_builtin_regs[0])))
-+const int nios2_num_builtin_regs = NIOS2_NUM_REGS;
-+
-+/* const removed from the following to allow for dynamic extensions to the
-+ * built-in instruction set. */
-+struct nios2_reg *nios2_regs = (struct nios2_reg *) nios2_builtin_regs;
-+int nios2_num_regs = NIOS2_NUM_REGS;
-+#undef NIOS2_NUM_REGS
-+
-+/* overflow message string templates */
-+
-+char *overflow_msgs[] = {
-+  "call target address 0x%08x out of range 0x%08x to 0x%08x",
-+  "branch offset %d out of range %d to %d",
-+  "%s offset %d out of range %d to %d",
-+  "immediate value %d out of range %d to %d",
-+  "immediate value %u out of range %u to %u",
-+  "immediate value %u out of range %u to %u",
-+  "custom instruction opcode %u out of range %u to %u",
-+};
-+
-+
-+
-+/*--------------------------------------------------------------------------------
-+   This is the opcode table used by the New Jersey GNU as, disassembler and GDB
-+  --------------------------------------------------------------------------------*/
-+
-+/*
-+       The following letters can appear in the args field of the nios2_opcode
-+       structure:
-+
-+       c - a 5-bit control register index or break opcode
-+       d - a 5-bit destination register index
-+       s - a 5-bit left source register index
-+       t - a 5-bit right source register index
-+       i - a 16-bit signed immediate
-+       u - a 16-bit unsigned immediate
-+
-+    j - a 5-bit unsigned immediate
-+       k - a 6-bit unsigned immediate
-+       l - an 8-bit unsigned immediate
-+       m - a 26-bit unsigned immediate
-+*/
-+
-+/* *INDENT-OFF* */
-+/* FIXME: Re-format for GNU standards */
-+const struct nios2_opcode nios2_builtin_opcodes[] =
-+{
-+   /* name,             args,           args_test     num_args,          match,                  mask,                                   pinfo */
-+       {"add",          "d,s,t",        "d,s,t,E",     3,         OP_MATCH_ADD,           OP_MASK_ROPX | OP_MASK_ROP,      	      0,									no_overflow },
-+       {"addi",         "t,s,i",        "t,s,i,E",     3,         OP_MATCH_ADDI,          OP_MASK_IOP,                            NIOS2_INSN_ADDI,						signed_immed16_overflow },
-+       {"subi",         "t,s,i",        "t,s,i,E",     3,         OP_MATCH_ADDI,          OP_MASK_IOP,                            NIOS2_INSN_MACRO,						signed_immed16_overflow },
-+       {"and",          "d,s,t",        "d,s,t,E",     3,         OP_MATCH_AND,           OP_MASK_ROPX | OP_MASK_ROP,			  0,									no_overflow },
-+       {"andhi",        "t,s,u",        "t,s,u,E",     3,         OP_MATCH_ANDHI,         OP_MASK_IOP,                            0,									unsigned_immed16_overflow },
-+       {"andi",         "t,s,u",        "t,s,u,E",     3,         OP_MATCH_ANDI,          OP_MASK_IOP,                            NIOS2_INSN_ANDI,						unsigned_immed16_overflow },
-+       {"beq",          "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BEQ,           OP_MASK_IOP,                            NIOS2_INSN_CBRANCH,  					branch_target_overflow },
-+       {"bge",          "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BGE,           OP_MASK_IOP,                            NIOS2_INSN_CBRANCH,					branch_target_overflow },
-+       {"bgeu",         "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BGEU,          OP_MASK_IOP,                            NIOS2_INSN_CBRANCH,					branch_target_overflow },
-+       {"bgt",          "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BLT,           OP_MASK_IOP,                            NIOS2_INSN_MACRO|NIOS2_INSN_CBRANCH,		branch_target_overflow },
-+       {"bgtu",         "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BLTU,          OP_MASK_IOP,                            NIOS2_INSN_MACRO|NIOS2_INSN_CBRANCH,		branch_target_overflow },
-+       {"ble",          "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BGE,           OP_MASK_IOP,                            NIOS2_INSN_MACRO|NIOS2_INSN_CBRANCH,		branch_target_overflow },
-+       {"bleu",         "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BGEU,          OP_MASK_IOP,                            NIOS2_INSN_MACRO|NIOS2_INSN_CBRANCH,		branch_target_overflow },
-+       {"blt",          "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BLT,           OP_MASK_IOP,                            NIOS2_INSN_CBRANCH,					branch_target_overflow },
-+       {"bltu",         "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BLTU,          OP_MASK_IOP,                            NIOS2_INSN_CBRANCH,					branch_target_overflow },
-+       {"bne",          "s,t,o",        "s,t,o,E",     3,         OP_MATCH_BNE,           OP_MASK_IOP,                            NIOS2_INSN_CBRANCH,					branch_target_overflow },
-+       {"br",           "o",            "o,E",         1,         OP_MATCH_BR,            OP_MASK_IOP,                            NIOS2_INSN_UBRANCH,					branch_target_overflow },
-+       {"break",        "b",            "b,E",         1,         OP_MATCH_BREAK,         OP_MASK_BREAK,                          0,				 					no_overflow },
-+       {"bret",         "",             "E",           0,         OP_MATCH_BRET,          OP_MASK,                                0, 									no_overflow },
-+       {"flushd",       "i(s)",       	"i(s)E",       2,         OP_MATCH_FLUSHD,        OP_MASK_IOP,                            0,									signed_immed16_overflow },
-+       {"flushi",       "s",       		"s,E",	       1,         OP_MATCH_FLUSHI,        OP_MASK_FLUSHI,			              0,				 					no_overflow },
-+       {"flushp",       "",       		"E",	       0,         OP_MATCH_FLUSHP,        OP_MASK,	                              0,				 					no_overflow },
-+ 	   {"initd",       "i(s)",       	"i(s)E",       2,         OP_MATCH_INITD,         OP_MASK_IOP,                            0,									signed_immed16_overflow },
-+       {"initi",       "s",       		"s,E",	       1,         OP_MATCH_INITI,         OP_MASK_INITI,			              0,				 					no_overflow },
-+       {"call",         "m",            "m,E",         1,         OP_MATCH_CALL,          OP_MASK_IOP,                            NIOS2_INSN_CALL,						call_target_overflow },
-+       {"callr",        "s",            "s,E",         1,         OP_MATCH_CALLR,         OP_MASK_CALLR,                          0, 									no_overflow },
-+       {"cmpeq",        "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPEQ,         OP_MASK_ROPX | OP_MASK_ROP, 		      0,									no_overflow },
-+       {"cmpeqi",       "t,s,i",        "t,s,i,E",     3,         OP_MATCH_CMPEQI,        OP_MASK_IOP,                            0,									signed_immed16_overflow },
-+       {"cmpge",        "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPGE,         OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"cmpgei",       "t,s,i",        "t,s,i,E",     3,         OP_MATCH_CMPGEI,        OP_MASK_IOP,                            0,									signed_immed16_overflow },
-+       {"cmpgeu",       "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPGEU,        OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"cmpgeui",      "t,s,u",        "t,s,u,E",     3,         OP_MATCH_CMPGEUI,       OP_MASK_IOP,                            0,									unsigned_immed16_overflow },
-+       {"cmpgt",        "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPLT,         OP_MASK_ROPX | OP_MASK_ROP,             NIOS2_INSN_MACRO, 					no_overflow },
-+       {"cmpgti",       "t,s,i",        "t,s,i,E",     3,         OP_MATCH_CMPGEI,        OP_MASK_IOP,                            NIOS2_INSN_MACRO,						signed_immed16_overflow },
-+       {"cmpgtu",       "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPLTU,        OP_MASK_ROPX | OP_MASK_ROP,             NIOS2_INSN_MACRO, 					no_overflow },
-+       {"cmpgtui",      "t,s,u",        "t,s,u,E",     3,         OP_MATCH_CMPGEUI,       OP_MASK_IOP,                            NIOS2_INSN_MACRO,						unsigned_immed16_overflow },
-+       {"cmple",        "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPGE,         OP_MASK_ROPX | OP_MASK_ROP,             NIOS2_INSN_MACRO, 					no_overflow },
-+       {"cmplei",       "t,s,i",        "t,s,i,E",     3,         OP_MATCH_CMPLTI,        OP_MASK_IOP,                            NIOS2_INSN_MACRO,						signed_immed16_overflow },
-+       {"cmpleu",       "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPGEU,        OP_MASK_ROPX | OP_MASK_ROP,             NIOS2_INSN_MACRO, 					no_overflow },
-+       {"cmpleui",      "t,s,u",        "t,s,u,E",     3,         OP_MATCH_CMPLTUI,       OP_MASK_IOP,                            NIOS2_INSN_MACRO,						unsigned_immed16_overflow },
-+       {"cmplt",        "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPLT,         OP_MASK_ROPX | OP_MASK_ROP,             0,									no_overflow },
-+       {"cmplti",       "t,s,i",        "t,s,i,E",     3,         OP_MATCH_CMPLTI,        OP_MASK_IOP,                            0,									signed_immed16_overflow },
-+       {"cmpltu",       "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPLTU,        OP_MASK_ROPX | OP_MASK_ROP,             0,									no_overflow },
-+       {"cmpltui",      "t,s,u",        "t,s,u,E",     3,         OP_MATCH_CMPLTUI,       OP_MASK_IOP,                            0,									unsigned_immed16_overflow },
-+       {"cmpne",        "d,s,t",        "d,s,t,E",     3,         OP_MATCH_CMPNE,         OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"cmpnei",       "t,s,i",        "t,s,i,E",     3,         OP_MATCH_CMPNEI,        OP_MASK_IOP,                            0,									signed_immed16_overflow },
-+       {"div",          "d,s,t",        "d,s,t,E",     3,         OP_MATCH_DIV,           OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"divu",         "d,s,t",        "d,s,t,E",     3,         OP_MATCH_DIVU,          OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"jmp",          "s",            "s,E",         1,         OP_MATCH_JMP,           OP_MASK_JMP,                            0, 									no_overflow },
-+       {"ldb",          "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDB,           OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"ldbio",        "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDBIO,         OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"ldbu",         "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDBU,          OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"ldbuio",       "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDBUIO,        OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"ldh",          "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDH,           OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"ldhio",        "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDHIO,         OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"ldhu",         "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDHU,          OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"ldhuio",       "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDHUIO,        OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"ldw",          "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDW,           OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"ldwio",        "t,i(s)",       "t,i(s)E",     3,         OP_MATCH_LDWIO,         OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"mov",          "d,s",          "d,s,E",       2,         OP_MATCH_ADD,           OP_MASK_RRT|OP_MASK_ROPX|OP_MASK_ROP,   NIOS2_INSN_MACRO_MOV, 				no_overflow },
-+       {"movhi",        "t,u",          "t,u,E",       2,         OP_MATCH_ORHI,          OP_MASK_IRS|OP_MASK_IOP,                NIOS2_INSN_MACRO_MOVI,				unsigned_immed16_overflow },
-+       {"movui",        "t,u",          "t,u,E",       2,         OP_MATCH_ORI,           OP_MASK_IRS|OP_MASK_IOP,                NIOS2_INSN_MACRO_MOVI,				unsigned_immed16_overflow },
-+       {"movi",         "t,i",          "t,i,E",       2,         OP_MATCH_ADDI,          OP_MASK_IRS|OP_MASK_IOP,                NIOS2_INSN_MACRO_MOVI,				signed_immed16_overflow },
-+       /* movia expands to two instructions so there is no mask or match */
-+       {"movia",		"t,o",			"t,o,E",		2,		OP_MATCH_ORHI,          OP_MASK_IOP,							  NIOS2_INSN_MACRO_MOVIA,				no_overflow },
-+       {"mul",          "d,s,t",        "d,s,t,E",      3,        OP_MATCH_MUL,           OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"muli",         "t,s,i",        "t,s,i,E",      3,        OP_MATCH_MULI,          OP_MASK_IOP,                            0,									signed_immed16_overflow },
-+       {"mulxss",       "d,s,t",        "d,s,t,E",      3,        OP_MATCH_MULXSS,        OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"mulxsu",       "d,s,t",        "d,s,t,E",      3,        OP_MATCH_MULXSU,        OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"mulxuu",       "d,s,t",        "d,s,t,E",      3,        OP_MATCH_MULXUU,        OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"nextpc",       "d",            "d,E",          1,        OP_MATCH_NEXTPC,        OP_MASK_NEXTPC,                         0, 									no_overflow },
-+       {"nop",          "",             "E",            0,        OP_MATCH_ADD,           OP_MASK,                                NIOS2_INSN_MACRO_MOV,					no_overflow },
-+       {"nor",          "d,s,t",        "d,s,t,E",      3,        OP_MATCH_NOR,           OP_MASK_ROPX | OP_MASK_ROP,             0,									no_overflow },
-+       {"or",           "d,s,t",        "d,s,t,E",      3,        OP_MATCH_OR,            OP_MASK_ROPX | OP_MASK_ROP,             0,									no_overflow },
-+       {"orhi",         "t,s,u",        "t,s,u,E",      3,        OP_MATCH_ORHI,          OP_MASK_IOP,                            0,									unsigned_immed16_overflow },
-+       {"ori",          "t,s,u",        "t,s,u,E",      3,        OP_MATCH_ORI,           OP_MASK_IOP,                            NIOS2_INSN_ORI,						unsigned_immed16_overflow },
-+       {"rdctl",        "d,c",          "d,c,E",        2,        OP_MATCH_RDCTL,         OP_MASK_RDCTL,                          0, 									no_overflow },
-+       {"ret",          "",             "E",            0,        OP_MATCH_RET,           OP_MASK,                                0, 									no_overflow },
-+       {"rol",          "d,s,t",        "d,s,t,E",      3,      OP_MATCH_ROL,           OP_MASK_ROPX | OP_MASK_ROP,               0, 									no_overflow },
-+       {"roli",         "d,s,j",        "d,s,j,E",      3,        OP_MATCH_ROLI,          OP_MASK_ROLI,                           0, 									unsigned_immed5_overflow },
-+       {"ror",          "d,s,t",        "d,s,t,E",      3,        OP_MATCH_ROR,           OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"sll",          "d,s,t",        "d,s,t,E",      3,        OP_MATCH_SLL,           OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"slli",         "d,s,j",        "d,s,j,E",      3,        OP_MATCH_SLLI,          OP_MASK_SLLI,                           0, 									unsigned_immed5_overflow },
-+       {"sra",          "d,s,t",        "d,s,t,E",      3,        OP_MATCH_SRA,           OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"srai",         "d,s,j",        "d,s,j,E",      3,        OP_MATCH_SRAI,          OP_MASK_SRAI,                           0, 									unsigned_immed5_overflow },
-+       {"srl",          "d,s,t",        "d,s,t,E",      3,        OP_MATCH_SRL,           OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"srli",         "d,s,j",        "d,s,j,E",      3,        OP_MATCH_SRLI,          OP_MASK_SRLI,                           0, 									unsigned_immed5_overflow },
-+       {"stb",          "t,i(s)",       "t,i(s)E",      3,        OP_MATCH_STB,           OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"stbio",        "t,i(s)",       "t,i(s)E",      3,        OP_MATCH_STBIO,         OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"sth",          "t,i(s)",       "t,i(s)E",      3,        OP_MATCH_STH,           OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"sthio",        "t,i(s)",       "t,i(s)E",      3,        OP_MATCH_STHIO,         OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"stw",          "t,i(s)",       "t,i(s)E",      3,        OP_MATCH_STW,           OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"stwio",        "t,i(s)",       "t,i(s)E",      3,        OP_MATCH_STWIO,         OP_MASK_IOP,                            0,									address_offset_overflow },
-+       {"sub",          "d,s,t",        "d,s,t,E",      3,        OP_MATCH_SUB,           OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"sync",         "",             "E",            0,        OP_MATCH_SYNC,          OP_MASK_SYNC,                           0, 									no_overflow },
-+       {"trap",         "",             "E",            0,      	OP_MATCH_TRAP,          OP_MASK_TRAP,                         0, 									no_overflow },
-+       {"eret",         "",             "E",            0,      OP_MATCH_ERET,          OP_MASK,                                  0,									no_overflow },
-+       {"custom",          "l,d,s,t",      "l,d,s,t,E",    4,        OP_MATCH_CUSTOM,           OP_MASK_ROP,                      0,	 								custom_opcode_overflow },
-+       {"wrctl",        "c,s",          "c,s,E",        2,        OP_MATCH_WRCTL,         OP_MASK_WRCTL,                          0, 									no_overflow },
-+       {"xor",          "d,s,t",        "d,s,t,E",      3,        OP_MATCH_XOR,           OP_MASK_ROPX | OP_MASK_ROP,             0, 									no_overflow },
-+       {"xorhi",        "t,s,u",        "t,s,u,E",      3,        OP_MATCH_XORHI,         OP_MASK_IOP,                            0,									unsigned_immed16_overflow },
-+       {"xori",         "t,s,u",        "t,s,u,E",      3,        OP_MATCH_XORI,          OP_MASK_IOP,                            NIOS2_INSN_XORI,						unsigned_immed16_overflow }
-+};
-+/* *INDENT-ON* */
-+
-+#define NIOS2_NUM_OPCODES \
-+       ((sizeof nios2_builtin_opcodes) / (sizeof (nios2_builtin_opcodes[0])))
-+const int bfd_nios2_num_builtin_opcodes = NIOS2_NUM_OPCODES;
-+
-+/* const removed from the following to allow for dynamic extensions to the
-+ * built-in instruction set. */
-+struct nios2_opcode *nios2_opcodes =
-+  (struct nios2_opcode *) nios2_builtin_opcodes;
-+int bfd_nios2_num_opcodes = NIOS2_NUM_OPCODES;
-+#undef NIOS2_NUM_OPCODES
Index: toolchain/binutils/2.15/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.15/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.15/100-uclibc-conf.patch	(working copy)
@@ -1,692 +0,0 @@
-diff -urN binutils-2.15-dist/bfd/config.bfd binutils-2.15/bfd/config.bfd
---- binutils-2.15-dist/bfd/config.bfd	2004-05-17 14:35:56.000000000 -0500
-+++ binutils-2.15/bfd/config.bfd	2004-08-04 12:01:44.000000000 -0500
-@@ -126,7 +126,7 @@
-     targ_defvec=ecoffalpha_little_vec
-     targ_selvecs=bfd_elf64_alpha_vec
-     ;;
--  alpha*-*-linux-gnu* | alpha*-*-elf*)
-+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc* | alpha*-*-elf*)
-     targ_defvec=bfd_elf64_alpha_vec
-     targ_selvecs=ecoffalpha_little_vec
-     ;;
-@@ -136,7 +136,7 @@
-   alpha*-*-*)
-     targ_defvec=ecoffalpha_little_vec
-     ;;
--  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
-+  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-linux-uclibc* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
-     targ_defvec=bfd_elf64_ia64_little_vec
-     targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
-     ;;
-@@ -213,7 +213,7 @@
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-     ;;
--  armeb-*-elf | arm*b-*-linux-gnu*)
-+  armeb-*-elf | arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_bigarm_vec
-     targ_selvecs=bfd_elf32_littlearm_vec
-     ;;
-@@ -221,7 +221,7 @@
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-     ;;
--  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \
-+  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-linux-uclibc* | arm*-*-conix* | \
-   arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks)
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-@@ -360,7 +360,7 @@
-     ;;
- 
- #ifdef BFD64
--  hppa*64*-*-linux-gnu*)
-+  hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)
-     targ_defvec=bfd_elf64_hppa_linux_vec
-     targ_selvecs=bfd_elf64_hppa_vec
-     ;;
-@@ -371,7 +371,7 @@
-     ;;
- #endif
- 
--  hppa*-*-linux-gnu* | hppa*-*-netbsd*)
-+  hppa*-*-linux-gnu* | hppa*-*-linux-uclibc* | hppa*-*-netbsd*)
-     targ_defvec=bfd_elf32_hppa_linux_vec
-     targ_selvecs=bfd_elf32_hppa_vec
-     ;;
-@@ -494,7 +494,7 @@
-     targ_selvecs=bfd_elf32_i386_vec
-     targ_underscore=yes
-     ;;
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_i386_vec
-     targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
-     targ64_selvecs=bfd_elf64_x86_64_vec
-@@ -508,7 +508,7 @@
-     targ_defvec=bfd_elf64_x86_64_vec
-     targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
-     ;;
--  x86_64-*-linux-gnu*)
-+  x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*)
-     targ_defvec=bfd_elf64_x86_64_vec
-     targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
-     ;;
-@@ -683,7 +683,7 @@
-     targ_selvecs=bfd_elf32_m68k_vec
-     targ_underscore=yes
-     ;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_m68k_vec
-     targ_selvecs=m68klinux_vec
-     ;;
-@@ -955,7 +955,8 @@
-     ;;
- #endif
-   powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
--  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
-+  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-linux-uclibc* | \
-+  powerpc-*-rtems* | \
-   powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*)
-     targ_defvec=bfd_elf32_powerpc_vec
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
-@@ -987,8 +988,8 @@
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
-     ;;
-   powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
--  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
--  powerpcle-*-rtems*)
-+  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-linux-uclibc* |\
-+  powerpcle-*-vxworks* | powerpcle-*-rtems*)
-     targ_defvec=bfd_elf32_powerpcle_vec
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
-     targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
-@@ -1149,7 +1150,7 @@
-     targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
-     targ_underscore=yes
-     ;;
--  sparc-*-linux-gnu*)
-+  sparc-*-linux-gnu* | sparc-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_sparc_vec
-     targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec"
-     ;;
-@@ -1196,7 +1197,7 @@
-     targ_defvec=sunos_big_vec
-     targ_underscore=yes
-     ;;
--  sparc64-*-linux-gnu*)
-+  sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)
-     targ_defvec=bfd_elf64_sparc_vec
-     targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
-     ;;
-@@ -1265,7 +1266,7 @@
-     targ_underscore=yes
-     ;;
- 
--  vax-*-linux-gnu*)
-+  vax-*-linux-gnu* | vax-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_vax_vec
-     ;;
- 
-diff -urN binutils-2.15-dist/bfd/configure binutils-2.15/bfd/configure
---- binutils-2.15-dist/bfd/configure	2004-05-17 14:35:57.000000000 -0500
-+++ binutils-2.15/bfd/configure	2004-08-04 12:01:44.000000000 -0500
-@@ -1699,6 +1699,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]+$'
-@@ -5278,7 +5283,7 @@
-   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
- 	COREFILE=''
- 	;;
--  alpha*-*-linux-gnu*)
-+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/alphalinux.h"'
- 	;;
-@@ -5338,7 +5343,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386mach3.h"'
- 	;;
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386linux.h"'
- 	;;
-@@ -5376,7 +5381,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/hp300bsd.h"'
- 	;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/m68klinux.h"'
- 	;;
-@@ -5477,7 +5482,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxult2.h"'
- 	;;
--  vax-*-linux-gnu*)
-+  vax-*-linux-gnu* | vax-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxlinux.h"'
- 	;;
-diff -urN binutils-2.15-dist/bfd/configure.in binutils-2.15/bfd/configure.in
---- binutils-2.15-dist/bfd/configure.in	2004-05-17 14:35:57.000000000 -0500
-+++ binutils-2.15/bfd/configure.in	2004-08-04 12:01:44.000000000 -0500
-@@ -178,7 +178,7 @@
-   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
- 	COREFILE=''
- 	;;
--  alpha*-*-linux-gnu*)
-+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/alphalinux.h"'
- 	;;
-@@ -259,7 +259,7 @@
- 	TRAD_HEADER='"hosts/i386mach3.h"'
- 	;;
- changequote(,)dnl
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
- changequote([,])dnl
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386linux.h"'
-@@ -300,7 +300,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/hp300bsd.h"'
- 	;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/m68klinux.h"'
- 	;;
-@@ -385,7 +385,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxult2.h"'
- 	;;
--  vax-*-linux-gnu*)
-+  vax-*-linux-gnu* | vax-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxlinux.h"'
- 	;;
-diff -urN binutils-2.15-dist/binutils/configure binutils-2.15/binutils/configure
---- binutils-2.15-dist/binutils/configure	2004-01-02 11:08:04.000000000 -0600
-+++ binutils-2.15/binutils/configure	2004-08-04 12:01:44.000000000 -0500
-@@ -1585,6 +1585,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 binutils-2.15-dist/configure binutils-2.15/configure
---- binutils-2.15-dist/configure	2004-05-17 14:36:20.000000000 -0500
-+++ binutils-2.15/configure	2004-08-04 12:01:44.000000000 -0500
-@@ -1288,6 +1288,18 @@
-   i[3456789]86-*-freebsd* | i[3456789]86-*-kfreebsd*-gnu)
-     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
-     ;;
-+  i[3456789]86-*-linux-uclibc*)
-+    # This section makes it possible to build newlib natively on linux.
-+    # If we are using a cross compiler then don't configure newlib.
-+    if test x${is_cross_compiler} != xno ; then
-+      noconfigdirs="$noconfigdirs target-newlib"
-+    fi
-+    noconfigdirs="$noconfigdirs target-libgloss"
-+    # If we are not using a cross compiler, do configure newlib.
-+    # Note however, that newlib will only be configured in this situation
-+    # if the --with-newlib option has been given, because otherwise
-+    # 'target-newlib' will appear in skipdirs.
-+    ;;
-   i[3456789]86-*-linux*)
-     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
-     # not build java stuff by default.
-diff -urN binutils-2.15-dist/configure.in binutils-2.15/configure.in
---- binutils-2.15-dist/configure.in	2004-05-17 14:40:54.000000000 -0500
-+++ binutils-2.15/configure.in	2004-08-04 12:01:44.000000000 -0500
-@@ -521,6 +521,18 @@
-   i[[3456789]]86-*-freebsd* | i[[3456789]]86-*-kfreebsd*-gnu)
-     noconfigdirs="$noconfigdirs target-newlib target-libgloss"
-     ;;
-+  i[[3456789]]86-*-linux-uclibc*)
-+    # This section makes it possible to build newlib natively on linux.
-+    # If we are using a cross compiler then don't configure newlib.
-+    if test x${is_cross_compiler} != xno ; then
-+      noconfigdirs="$noconfigdirs target-newlib"
-+    fi
-+    noconfigdirs="$noconfigdirs target-libgloss"
-+    # If we are not using a cross compiler, do configure newlib.
-+    # Note however, that newlib will only be configured in this situation
-+    # if the --with-newlib option has been given, because otherwise
-+    # 'target-newlib' will appear in skipdirs.
-+    ;;
-   i[[3456789]]86-*-linux*)
-     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
-     # not build java stuff by default.
-diff -urN binutils-2.15-dist/gas/configure binutils-2.15/gas/configure
---- binutils-2.15-dist/gas/configure	2004-05-17 14:36:07.000000000 -0500
-+++ binutils-2.15/gas/configure	2004-08-04 12:07:50.000000000 -0500
-@@ -3400,6 +3400,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]+$'
-@@ -4224,6 +4229,7 @@
-       alpha*-*-osf*)			fmt=ecoff ;;
-       alpha*-*-linuxecoff*)		fmt=ecoff ;;
-       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
-+      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
-       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
-       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
- 
-@@ -4240,6 +4246,7 @@
-       arm*-*-conix*)			fmt=elf ;;
-       arm-*-linux*aout*)		fmt=aout em=linux ;;
-       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
-+      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
-       arm*-*-uclinux*)			fmt=elf  em=linux ;;
-       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
-       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
-@@ -4253,6 +4260,7 @@
-       avr-*-*)				fmt=elf ;;
- 
-       cris-*-linux-gnu*)		fmt=multi bfd_gas=yes em=linux ;;
-+      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
-       cris-*-*)				fmt=multi bfd_gas=yes ;;
- 
-       d10v-*-*)				fmt=elf ;;
-@@ -4310,7 +4318,9 @@
-       i386-*-linux*oldld)		fmt=aout em=linux ;;
-       i386-*-linux*coff*)		fmt=coff em=linux ;;
-       i386-*-linux-gnu*)		fmt=elf em=linux ;;
-+      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
-       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       i386-*-lynxos*)			fmt=coff em=lynx ;;
-       i386-*-sysv[45]*)			fmt=elf ;;
-       i386-*-solaris*)			fmt=elf ;;
-@@ -4370,6 +4380,7 @@
-       ia64-*-elf*)			fmt=elf ;;
-       ia64-*-aix*)			fmt=elf em=ia64aix ;;
-       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       ia64-*-hpux*)			fmt=elf em=hpux ;;
-       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
- 
-@@ -4397,6 +4408,7 @@
-       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
-       m68k-*-linux*aout*)		fmt=aout em=linux ;;
-       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
-+      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
-       m68k-*-uclinux*)			fmt=elf ;;
-       m68k-*-gnu*)			fmt=elf ;;
-       m68k-*-lynxos*)			fmt=coff em=lynx ;;
-@@ -4459,6 +4471,7 @@
-       ppc-*-beos*)			fmt=coff ;;
-       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
-       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
-+      ppc-*-linux-uclibc* | \
-       ppc-*-linux-gnu*)			fmt=elf em=linux
- 	    case "$endian" in
- 		big)  ;;
-@@ -4486,7 +4499,9 @@
-       ppc-*-kaos*)			fmt=elf ;;
- 
-       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
-       s390-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
- 
-       sh*-*-linux*)			fmt=elf em=linux
- 	    case ${cpu} in
-@@ -4519,6 +4534,7 @@
-       sparc-*-coff)			fmt=coff ;;
-       sparc-*-linux*aout*)		fmt=aout em=linux ;;
-       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
-+      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
-       sparc-*-lynxos*)			fmt=coff em=lynx ;;
-       sparc-fujitsu-none)		fmt=aout ;;
-       sparc-*-elf)			fmt=elf ;;
-diff -urN binutils-2.15-dist/gas/configure.in binutils-2.15/gas/configure.in
---- binutils-2.15-dist/gas/configure.in	2004-05-17 14:36:07.000000000 -0500
-+++ binutils-2.15/gas/configure.in	2004-08-04 12:07:21.000000000 -0500
-@@ -194,6 +194,7 @@
-       alpha*-*-osf*)			fmt=ecoff ;;
-       alpha*-*-linuxecoff*)		fmt=ecoff ;;
-       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
-+      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
-       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
-       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
- 
-@@ -210,6 +211,7 @@
-       arm*-*-conix*)			fmt=elf ;;
-       arm-*-linux*aout*)		fmt=aout em=linux ;;
-       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
-+      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
-       arm*-*-uclinux*)			fmt=elf  em=linux ;;
-       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
-       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
-@@ -223,6 +225,7 @@
-       avr-*-*)				fmt=elf ;;
- 
-       cris-*-linux-gnu*)		fmt=multi bfd_gas=yes em=linux ;;
-+      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
-       cris-*-*)				fmt=multi bfd_gas=yes ;;
- 
-       d10v-*-*)				fmt=elf ;;
-@@ -280,7 +283,9 @@
-       i386-*-linux*oldld)		fmt=aout em=linux ;;
-       i386-*-linux*coff*)		fmt=coff em=linux ;;
-       i386-*-linux-gnu*)		fmt=elf em=linux ;;
-+      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
-       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       i386-*-lynxos*)			fmt=coff em=lynx ;;
- changequote(,)dnl
-       i386-*-sysv[45]*)			fmt=elf ;;
-@@ -333,6 +338,7 @@
-       ia64-*-elf*)			fmt=elf ;;
-       ia64-*-aix*)			fmt=elf em=ia64aix ;;
-       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       ia64-*-hpux*)			fmt=elf em=hpux ;;
-       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
- 
-@@ -360,6 +366,7 @@
-       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
-       m68k-*-linux*aout*)		fmt=aout em=linux ;;
-       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
-+      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
-       m68k-*-uclinux*)			fmt=elf ;;
-       m68k-*-gnu*)			fmt=elf ;;
-       m68k-*-lynxos*)			fmt=coff em=lynx ;;
-@@ -419,6 +426,7 @@
-       ppc-*-beos*)			fmt=coff ;;
-       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
-       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
-+      ppc-*-linux-uclibc* | \
-       ppc-*-linux-gnu*)			fmt=elf em=linux
- 	    case "$endian" in
- 		big)  ;;
-@@ -439,7 +447,9 @@
-       ppc-*-kaos*)			fmt=elf ;;
- 
-       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
-       s390-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
- 
-       sh*-*-linux*)			fmt=elf em=linux
- 	    case ${cpu} in
-@@ -472,6 +482,7 @@
-       sparc-*-coff)			fmt=coff ;;
-       sparc-*-linux*aout*)		fmt=aout em=linux ;;
-       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
-+      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
-       sparc-*-lynxos*)			fmt=coff em=lynx ;;
-       sparc-fujitsu-none)		fmt=aout ;;
-       sparc-*-elf)			fmt=elf ;;
-diff -urN binutils-2.15-dist/gprof/configure binutils-2.15/gprof/configure
---- binutils-2.15-dist/gprof/configure	2003-08-26 12:19:19.000000000 -0500
-+++ binutils-2.15/gprof/configure	2004-08-04 12:01:45.000000000 -0500
-@@ -1581,6 +1581,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 binutils-2.15-dist/ld/configure binutils-2.15/ld/configure
---- binutils-2.15-dist/ld/configure	2003-04-24 07:36:07.000000000 -0500
-+++ binutils-2.15/ld/configure	2004-08-04 12:01:45.000000000 -0500
-@@ -1589,6 +1589,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 binutils-2.15-dist/ld/configure.tgt binutils-2.15/ld/configure.tgt
---- binutils-2.15-dist/ld/configure.tgt	2004-05-17 14:36:15.000000000 -0500
-+++ binutils-2.15/ld/configure.tgt	2004-08-04 12:01:45.000000000 -0500
-@@ -30,6 +30,7 @@
- 			targ_extra_emuls="criself crislinux"
- 			targ_extra_libpath=$targ_extra_emuls ;;
- cris-*-linux-gnu*)	targ_emul=crislinux ;;
-+cris-*-linux-uclibc*)	targ_emul=crislinux ;;
- cris-*-*)		targ_emul=criself
- 			targ_extra_emuls="crisaout crislinux"
- 			targ_extra_libpath=$targ_extra_emuls ;;
-@@ -59,14 +60,16 @@
- 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'`
- 			tdir_sun4=sparc-sun-sunos4
- 			;;
--sparc64-*-linux-gnu*)	targ_emul=elf64_sparc
-+sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)	 \
-+			targ_emul=elf64_sparc
- 			targ_extra_emuls="elf32_sparc sparclinux sun4"
- 			targ_extra_libpath=elf32_sparc
- 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
- 			tdir_sparclinux=${tdir_elf32_sparc}aout
- 			tdir_sun4=sparc-sun-sunos4
- 			;;
--sparc*-*-linux-gnu*)	targ_emul=elf32_sparc
-+sparc*-*-linux-gnu* | sparc*-*-linux-uclibc*) \
-+			targ_emul=elf32_sparc
- 			targ_extra_emuls="sparclinux elf64_sparc sun4"
- 			targ_extra_libpath=elf64_sparc
- 			tdir_sparclinux=${targ_alias}aout
-@@ -118,7 +121,9 @@
- m32r*le-*-elf*)         targ_emul=m32rlelf ;;
- m32r*-*-elf*)           targ_emul=m32relf ;;
- m32r*le-*-linux-gnu*)   targ_emul=m32rlelf_linux ;;
-+m32r*le-*-linux-uclibc*) targ_emul=m32rlelf_linux ;;
- m32r*-*-linux-gnu*)     targ_emul=m32relf_linux ;;
-+m32r*-*-linux-uclibc*)  targ_emul=m32relf_linux ;;
- m68hc11-*-*|m6811-*-*)	targ_emul=m68hc11elf 
- 			targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
- m68hc12-*-*|m6812-*-*)	targ_emul=m68hc12elf 
-@@ -128,7 +133,7 @@
- m68*-ericsson-ose)	targ_emul=sun3 ;;
- m68*-apple-aux*)	targ_emul=m68kaux ;;
- *-tandem-none)		targ_emul=st2000 ;;
--i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;;
-+i370-*-elf* | i370-*-linux-gnu* | i370-*-linux-uclibc*) targ_emul=elf32i370 ;;
- i[3-7]86-*-nto-qnx*)	targ_emul=i386nto ;;
- i[3-7]86-*-vsta)	targ_emul=vsta ;;
- i[3-7]86-go32-rtems*)	targ_emul=i386go32 ;;
-@@ -152,14 +157,16 @@
- 			tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'`
- 			;;
- i[3-7]86-*-linux*oldld)	targ_emul=i386linux; targ_extra_emuls=elf_i386 ;;
--i[3-7]86-*-linux-gnu*)	targ_emul=elf_i386
-+i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) \
-+			targ_emul=elf_i386
- 			targ_extra_emuls=i386linux
- 			if test x${want64} = xtrue; then
- 			  targ_extra_emuls="$targ_extra_emuls elf_x86_64"
- 			fi
- 			tdir_i386linux=${targ_alias}aout
- 			;;
--x86_64-*-linux-gnu*)	targ_emul=elf_x86_64
-+x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) \
-+			targ_emul=elf_x86_64
- 			targ_extra_emuls="elf_i386 i386linux"
- 			targ_extra_libpath=elf_i386
- 			tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'`
-@@ -259,10 +266,13 @@
- arm9e-*-elf)		targ_emul=armelf ;;
- arm-*-oabi)		targ_emul=armelf_oabi ;;
- arm*b-*-linux-gnu*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
-+arm*b-*-linux-uclibc*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
- arm*-*-linux-gnu*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
-+arm*-*-linux-uclibc*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- arm*-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- arm*-*-conix*)		targ_emul=armelf ;;
--thumb-*-linux-gnu* | thumb-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
-+thumb-*-linux-gnu* | thumb-*-linux-uclibc* | thumb-*-uclinux*) \
-+			targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- strongarm-*-coff)	targ_emul=armcoff ;;
- strongarm-*-elf)	targ_emul=armelf ;;
- strongarm-*-kaos*)	targ_emul=armelf ;;
-@@ -364,7 +374,8 @@
- 			targ_extra_emuls=m68kelf
- 			tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'`
- 			;;
--m68k-*-linux-gnu*)	targ_emul=m68kelf
-+m68k-*-linux-gnu* | m68k-*-linux-uclibc*) \
-+			targ_emul=m68kelf
- 			targ_extra_emuls=m68klinux
- 			tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'`
- 			;;
-@@ -381,9 +392,9 @@
- m68*-*-psos*)		targ_emul=m68kpsos ;;
- m68*-*-rtemscoff*)	targ_emul=m68kcoff ;;
- m68*-*-rtems*)		targ_emul=m68kelf ;;
--hppa*64*-*-linux-gnu*)	targ_emul=hppa64linux ;;
-+hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)  targ_emul=hppa64linux ;;
- hppa*64*-*)		targ_emul=elf64hppa ;;
--hppa*-*-linux-gnu*)	targ_emul=hppalinux ;;
-+hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*)	targ_emul=hppalinux ;;
- hppa*-*-*elf*)		targ_emul=hppaelf ;;
- hppa*-*-lites*)		targ_emul=hppaelf ;;
- hppa*-*-netbsd*)	targ_emul=hppanbsd ;;
-@@ -396,6 +407,7 @@
- 			targ_emul=vaxnbsd
- 			targ_extra_emuls=elf32vax ;;
- vax-*-linux-gnu*)	targ_emul=elf32vax ;;
-+vax-*-linux-uclibc*)	targ_emul=elf32vax ;;
- mips*-*-pe)		targ_emul=mipspe ;
- 			targ_extra_ofiles="deffilep.o pe-dll.o" ;;
- mips*-dec-ultrix*)	targ_emul=mipslit ;;
-@@ -429,16 +441,16 @@
- mips*-*-vxworks*)	targ_emul=elf32ebmip
- 		        targ_extra_emuls="elf32elmip" ;;
- mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
--mips64*el-*-linux-gnu*)	targ_emul=elf32ltsmipn32
-+mips64*el-*-linux-gnu* | mips64*el-*-linux-uclibc*)	targ_emul=elf32ltsmipn32
- 			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
- 			;;
--mips64*-*-linux-gnu*)	targ_emul=elf32btsmipn32
-+mips64*-*-linux-gnu* | mips64*-*-linux-uclibc*)	targ_emul=elf32btsmipn32
- 			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
- 			;;
--mips*el-*-linux-gnu*)	targ_emul=elf32ltsmip
-+mips*el-*-linux-gnu* | mips*el-*-linux-uclibc*)	targ_emul=elf32ltsmip
- 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
- 			;;
--mips*-*-linux-gnu*)	targ_emul=elf32btsmip
-+mips*-*-linux-gnu* | mips*-*-linux-uclibc*)	targ_emul=elf32btsmip
- 			targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip"
- 			;;
- mips*-*-lnews*)		targ_emul=mipslnews ;;
-@@ -461,6 +473,10 @@
- alpha*-*-linux-gnu*)	targ_emul=elf64alpha targ_extra_emuls=alpha
- 			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
- 			;;
-+alpha*-*-linux-uclibc*)	targ_emul=elf64alpha targ_extra_emuls=alpha
-+			# The following needs to be checked...
-+			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
-+			;;
- alpha*-*-osf*)		targ_emul=alpha ;;
- alpha*-*-gnu*)		targ_emul=elf64alpha ;;
- alpha*-*-netware*)	targ_emul=alpha ;;
-diff -urN binutils-2.15-dist/libtool.m4 binutils-2.15/libtool.m4
---- binutils-2.15-dist/libtool.m4	2003-04-10 22:58:39.000000000 -0500
-+++ binutils-2.15/libtool.m4	2004-08-04 12:01:45.000000000 -0500
-@@ -645,6 +645,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 binutils-2.15-dist/ltconfig binutils-2.15/ltconfig
---- binutils-2.15-dist/ltconfig	2003-10-03 23:54:47.000000000 -0500
-+++ binutils-2.15/ltconfig	2004-08-04 12:01:45.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
- 
-@@ -1259,6 +1260,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 -urN binutils-2.15-dist/opcodes/configure binutils-2.15/opcodes/configure
---- binutils-2.15-dist/opcodes/configure	2003-08-05 04:39:31.000000000 -0500
-+++ binutils-2.15/opcodes/configure	2004-08-04 12:01:45.000000000 -0500
-@@ -1700,6 +1700,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]+$'
Index: toolchain/binutils/2.15/400-mips-ELF_MAXPAGESIZE-4K.patch
===================================================================
--- toolchain/binutils/2.15/400-mips-ELF_MAXPAGESIZE-4K.patch	(revision 20005)
+++ toolchain/binutils/2.15/400-mips-ELF_MAXPAGESIZE-4K.patch	(working copy)
@@ -1,26 +0,0 @@
---- binutils/bfd/elf32-mips.c~
-+++ binutils/bfd/elf32-mips.c
-@@ -1611,7 +1611,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
---- binutils/bfd/elfn32-mips.c~
-+++ binutils/bfd/elfn32-mips.c
-@@ -1976,7 +1976,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
Index: toolchain/binutils/2.15/600-arm-textrel.patch
===================================================================
--- toolchain/binutils/2.15/600-arm-textrel.patch	(revision 20005)
+++ toolchain/binutils/2.15/600-arm-textrel.patch	(working copy)
@@ -1,63 +0,0 @@
-http://sources.redhat.com/ml/binutils/2004-06/msg00010.html
---- binutils-2.15.90.0.3-old/bfd/elf32-arm.h	2004-04-12 14:56:33.000000000 -0500
-+++ binutils-2.15.90.0.3/bfd/elf32-arm.h	2004-09-03 06:56:40.000000000 -0500
-@@ -87,6 +87,8 @@
- #endif
- static bfd_boolean allocate_dynrelocs 
-   PARAMS ((struct elf_link_hash_entry *h, PTR inf));
-+static bfd_boolean elf32_arm_readonly_dynrelocs
-+  PARAMS ((struct elf_link_hash_entry *, PTR));
- static bfd_boolean create_got_section 
-   PARAMS ((bfd * dynobj, struct bfd_link_info * info));
- static bfd_boolean elf32_arm_create_dynamic_sections 
-@@ -3531,6 +3533,37 @@
-   return TRUE;
- }
- 
-+/* Find any dynamic relocs that apply to read-only sections.  */
-+
-+static bfd_boolean
-+elf32_arm_readonly_dynrelocs (h, inf)
-+     struct elf_link_hash_entry *h;
-+     PTR inf;
-+{
-+  struct elf32_arm_link_hash_entry *eh;
-+  struct elf32_arm_relocs_copied *p;
-+
-+  if (h->root.type == bfd_link_hash_warning)
-+    h = (struct elf_link_hash_entry *) h->root.u.i.link;
-+
-+  eh = (struct elf32_arm_link_hash_entry *) h;
-+  for (p = eh->relocs_copied; p != NULL; p = p->next)
-+    {
-+      asection *s = p->section;
-+
-+      if (s != NULL && (s->flags & SEC_READONLY) != 0)
-+       {
-+         struct bfd_link_info *info = (struct bfd_link_info *) inf;
-+
-+         info->flags |= DF_TEXTREL;
-+
-+         /* Not an error, just cut short the traversal.  */
-+         return FALSE;
-+       }
-+    }
-+  return TRUE;
-+}
-+
- /* Set the sizes of the dynamic sections.  */
- 
- static bfd_boolean
-@@ -3740,6 +3773,12 @@
- 	    return FALSE;
- 	}
- 
-+      /* If any dynamic relocs apply to a read-only section,
-+         then we need a DT_TEXTREL entry.  */
-+      if ((info->flags & DF_TEXTREL) == 0)
-+        elf_link_hash_traverse (&htab->root, elf32_arm_readonly_dynrelocs,
-+                                (PTR) info);
-+
-       if ((info->flags & DF_TEXTREL) != 0)
- 	{
- 	  if (!add_dynamic_entry (DT_TEXTREL, 0))
Index: toolchain/binutils/2.15/210-cflags.patch
===================================================================
--- toolchain/binutils/2.15/210-cflags.patch	(revision 20005)
+++ toolchain/binutils/2.15/210-cflags.patch	(working copy)
@@ -1,32 +0,0 @@
-diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.am binutils-2.14.90.0.6.new/bfd/doc/Makefile.am
---- binutils-2.14.90.0.6/bfd/doc/Makefile.am	2003-07-23 10:08:09.000000000 -0500
-+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.am	2004-03-01 16:05:16.000000000 -0600
-@@ -55,10 +55,10 @@
- MKDOC = chew$(EXEEXT_FOR_BUILD)
- 
- $(MKDOC): chew.o
--	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
-+	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
- 
- chew.o: chew.c
--	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
-+	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
- 
- protos: libbfd.h libcoff.h bfd.h
- 
-diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.in binutils-2.14.90.0.6.new/bfd/doc/Makefile.in
---- binutils-2.14.90.0.6/bfd/doc/Makefile.in	2003-07-23 10:08:09.000000000 -0500
-+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.in	2004-03-01 16:05:03.000000000 -0600
-@@ -469,10 +469,10 @@
- 
- 
- $(MKDOC): chew.o
--	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
-+	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
- 
- chew.o: chew.c
--	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
-+	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
- 
- protos: libbfd.h libcoff.h bfd.h
- 
Index: toolchain/binutils/2.16.1/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.16.1/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.16.1/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.16.1/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.16.1/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.16.1/100-uclibc-conf.patch	(working copy)
@@ -1,586 +0,0 @@
-diff -ur binutils-2.15.97.orig/bfd/config.bfd binutils-2.15.97/bfd/config.bfd
---- binutils-2.15.97.orig/bfd/config.bfd	2005-04-29 20:48:14.000000000 -0400
-+++ binutils-2.15.97/bfd/config.bfd	2005-04-29 20:53:50.000000000 -0400
-@@ -140,7 +140,7 @@
-     targ_defvec=ecoffalpha_little_vec
-     targ_selvecs=bfd_elf64_alpha_vec
-     ;;
--  alpha*-*-linux-gnu* | alpha*-*-elf*)
-+  alpha*-*-linux-* | alpha*-*-elf*)
-     targ_defvec=bfd_elf64_alpha_vec
-     targ_selvecs=ecoffalpha_little_vec
-     ;;
-@@ -150,7 +150,7 @@
-   alpha*-*-*)
-     targ_defvec=ecoffalpha_little_vec
-     ;;
--  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
-+  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
-     targ_defvec=bfd_elf64_ia64_little_vec
-     targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
-     ;;
-@@ -227,7 +227,7 @@
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-     ;;
--  armeb-*-elf | arm*b-*-linux-gnu*)
-+  armeb-*-elf | arm*b-*-linux-*)
-     targ_defvec=bfd_elf32_bigarm_vec
-     targ_selvecs=bfd_elf32_littlearm_vec
-     ;;
-@@ -235,7 +235,7 @@
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-     ;;
--  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \
-+  arm-*-elf | arm-*-freebsd* | arm*-*-linux-* | arm*-*-conix* | \
-   arm*-*-uclinux* | arm-*-kfreebsd*-gnu | \
-   arm*-*-eabi* )
-     targ_defvec=bfd_elf32_littlearm_vec
-@@ -385,7 +385,7 @@
-     ;;
- 
- #ifdef BFD64
--  hppa*64*-*-linux-gnu*)
-+  hppa*64*-*-linux-*)
-     targ_defvec=bfd_elf64_hppa_linux_vec
-     targ_selvecs=bfd_elf64_hppa_vec
-     ;;
-@@ -396,7 +396,7 @@
-     ;;
- #endif
- 
--  hppa*-*-linux-gnu*)
-+  hppa*-*-linux-*)
-     targ_defvec=bfd_elf32_hppa_linux_vec
-     targ_selvecs=bfd_elf32_hppa_vec
-     ;;
-@@ -529,7 +529,7 @@
-     targ_selvecs=bfd_elf32_i386_vec
-     targ_underscore=yes
-     ;;
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-*)
-     targ_defvec=bfd_elf32_i386_vec
-     targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
-     targ64_selvecs=bfd_elf64_x86_64_vec
-@@ -543,7 +543,7 @@
-     targ_defvec=bfd_elf64_x86_64_vec
-     targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
-     ;;
--  x86_64-*-linux-gnu*)
-+  x86_64-*-linux-*)
-     targ_defvec=bfd_elf64_x86_64_vec
-     targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
-     ;;
-@@ -719,7 +719,7 @@
-     targ_selvecs=bfd_elf32_m68k_vec
-     targ_underscore=yes
-     ;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-*)
-     targ_defvec=bfd_elf32_m68k_vec
-     targ_selvecs=m68klinux_vec
-     ;;
-@@ -1005,7 +1005,7 @@
-     ;;
- #endif
-   powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
--  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
-+  powerpc-*-solaris2* | powerpc-*-linux-* | powerpc-*-rtems* | \
-   powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*)
-     targ_defvec=bfd_elf32_powerpc_vec
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
-@@ -1042,7 +1042,7 @@
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
-     ;;
-   powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
--  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
-+  powerpcle-*-solaris2* | powerpcle-*-linux-* | powerpcle-*-vxworks* |\
-   powerpcle-*-rtems*)
-     targ_defvec=bfd_elf32_powerpcle_vec
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
-@@ -1213,7 +1213,7 @@
-     targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
-     targ_underscore=yes
-     ;;
--  sparc-*-linux-gnu*)
-+  sparc-*-linux-*)
-     targ_defvec=bfd_elf32_sparc_vec
-     targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec"
-     ;;
-@@ -1260,7 +1260,7 @@
-     targ_defvec=sunos_big_vec
-     targ_underscore=yes
-     ;;
--  sparc64-*-linux-gnu*)
-+  sparc64-*-linux-*)
-     targ_defvec=bfd_elf64_sparc_vec
-     targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
-     ;;
-@@ -1329,7 +1329,7 @@
-     targ_underscore=yes
-     ;;
- 
--  vax-*-linux-gnu*)
-+  vax-*-linux-*)
-     targ_defvec=bfd_elf32_vax_vec
-     ;;
- 
-diff -ur binutils-2.15.97.orig/bfd/configure binutils-2.15.97/bfd/configure
---- binutils-2.15.97.orig/bfd/configure	2005-04-29 20:48:14.000000000 -0400
-+++ binutils-2.15.97/bfd/configure	2005-04-29 20:53:50.000000000 -0400
-@@ -9918,7 +9918,7 @@
-   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
- 	COREFILE=''
- 	;;
--  alpha*-*-linux-gnu*)
-+  alpha*-*-linux-*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/alphalinux.h"'
- 	;;
-@@ -9982,7 +9982,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386mach3.h"'
- 	;;
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386linux.h"'
- 	;;
-@@ -10020,7 +10020,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/hp300bsd.h"'
- 	;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/m68klinux.h"'
- 	;;
-@@ -10154,7 +10154,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxult2.h"'
- 	;;
--  vax-*-linux-gnu*)
-+  vax-*-linux-*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxlinux.h"'
- 	;;
-diff -ur binutils-2.15.97.orig/bfd/configure.in binutils-2.15.97/bfd/configure.in
---- binutils-2.15.97.orig/bfd/configure.in	2005-04-29 20:48:14.000000000 -0400
-+++ binutils-2.15.97/bfd/configure.in	2005-04-29 20:53:50.000000000 -0400
-@@ -163,7 +163,7 @@
-   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
- 	COREFILE=''
- 	;;
--  alpha*-*-linux-gnu*)
-+  alpha*-*-linux-*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/alphalinux.h"'
- 	;;
-@@ -248,7 +248,7 @@
- 	TRAD_HEADER='"hosts/i386mach3.h"'
- 	;;
- changequote(,)dnl
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-*)
- changequote([,])dnl
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386linux.h"'
-@@ -289,7 +289,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/hp300bsd.h"'
- 	;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/m68klinux.h"'
- 	;;
-@@ -375,7 +375,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxult2.h"'
- 	;;
--  vax-*-linux-gnu*)
-+  vax-*-linux-*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxlinux.h"'
- 	;;
-diff -ur binutils-2.15.97.orig/gas/configure binutils-2.15.97/gas/configure
---- binutils-2.15.97.orig/gas/configure	2005-04-29 20:48:14.000000000 -0400
-+++ binutils-2.15.97/gas/configure	2005-04-29 20:53:50.000000000 -0400
-@@ -4462,7 +4462,7 @@
- _ACEOF
- 
- 	;;
--      ppc-*-linux-gnu*)
-+      ppc-*-linux-*)
- 	case "$endian" in
- 	  big)  ;;
- 	  *)    { { echo "$as_me:$LINENO: error: GNU/Linux must be configured big endian" >&5
-diff -ur binutils-2.15.97.orig/gas/configure.in binutils-2.15.97/gas/configure.in
---- binutils-2.15.97.orig/gas/configure.in	2005-04-29 20:48:14.000000000 -0400
-+++ binutils-2.15.97/gas/configure.in	2005-04-29 20:53:50.000000000 -0400
-@@ -161,7 +161,7 @@
- 	AC_DEFINE(AIX_WEAK_SUPPORT, 1,
- 		  [Define if using AIX 5.2 value for C_WEAKEXT.])
- 	;;
--      ppc-*-linux-gnu*)
-+      ppc-*-linux-*)
- 	case "$endian" in
- 	  big)  ;;
- 	  *)    AC_MSG_ERROR(GNU/Linux must be configured big endian) ;;
-diff -ur binutils-2.15.97.orig/gas/configure.tgt binutils-2.15.97/gas/configure.tgt
---- binutils-2.15.97.orig/gas/configure.tgt	2005-04-29 20:48:14.000000000 -0400
-+++ binutils-2.15.97/gas/configure.tgt	2005-04-29 20:53:50.000000000 -0400
-@@ -100,7 +100,7 @@
-   alpha-*-*vms*)			fmt=evax ;;
-   alpha-*-osf*)				fmt=ecoff ;;
-   alpha-*-linuxecoff*)			fmt=ecoff ;;
--  alpha-*-linux-gnu*)			fmt=elf em=linux ;;
-+  alpha-*-linux-*)			fmt=elf em=linux ;;
-   alpha-*-netbsd*)			fmt=elf em=nbsd ;;
-   alpha-*-openbsd*)			fmt=elf em=obsd ;;
- 
-@@ -116,7 +116,7 @@
-   arm-*-conix*)				fmt=elf ;;
-   arm-*-linux*aout*)			fmt=aout em=linux ;;
-   arm-*-linux-gnueabi*)			fmt=elf  em=armlinuxeabi ;;	 
--  arm-*-linux-gnu*)			fmt=elf  em=linux ;;
-+  arm-*-linux-*)			fmt=elf  em=linux ;;
-   arm-*-uclinux*)			fmt=elf  em=linux ;;
-   arm-*-netbsdelf*)                 	fmt=elf  em=nbsd ;;
-   arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
-@@ -128,7 +128,7 @@
- 
-   avr-*-*)				fmt=elf ;;
- 
--  cris-*-linux-gnu* | crisv32-*-linux-gnu*)
-+  cris-*-linux-* | crisv32-*-linux-*)
- 					fmt=multi bfd_gas=yes em=linux ;;
-   cris-*-* | crisv32-*-*)		fmt=multi bfd_gas=yes ;;
- 
-@@ -192,7 +192,7 @@
-   i386-*-linux*aout*)			fmt=aout em=linux ;;
-   i386-*-linux*oldld)			fmt=aout em=linux ;;
-   i386-*-linux*coff*)			fmt=coff em=linux ;;
--  i386-*-linux-gnu*)			fmt=elf em=linux ;;
-+  i386-*-linux-*)			fmt=elf em=linux ;;
-   i386-*-lynxos*)			fmt=elf em=lynx bfd_gas=yes ;;
-   i386-*-sysv[45]*)			fmt=elf ;;
-   i386-*-solaris*)			fmt=elf ;;
-@@ -238,7 +238,7 @@
- 
-   ia64-*-elf*)				fmt=elf ;;
-   ia64-*-aix*)				fmt=elf em=ia64aix ;;
--  ia64-*-linux-gnu*)			fmt=elf em=linux ;;
-+  ia64-*-linux-*)			fmt=elf em=linux ;;
-   ia64-*-hpux*)				fmt=elf em=hpux ;;
-   ia64-*-netbsd*)			fmt=elf em=nbsd ;;
- 
-@@ -265,7 +265,7 @@
-   m68k-*-rtems*)			fmt=elf ;;
-   m68k-*-hpux*)				fmt=hp300 em=hp300 ;;
-   m68k-*-linux*aout*)			fmt=aout em=linux ;;
--  m68k-*-linux-gnu*)			fmt=elf em=linux ;;
-+  m68k-*-linux-*)			fmt=elf em=linux ;;
-   m68k-*-uclinux*)			fmt=elf ;;
-   m68k-*-gnu*)				fmt=elf ;;
-   m68k-*-netbsdelf*)			fmt=elf em=nbsd ;;
-@@ -332,7 +332,7 @@
-   ppc-*-beos*)				fmt=coff ;;
-   ppc-*-*n*bsd* | ppc-*-elf*)		fmt=elf ;;
-   ppc-*-eabi* | ppc-*-sysv4*)		fmt=elf ;;
--  ppc-*-linux-gnu*)			fmt=elf em=linux ;;
-+  ppc-*-linux-*)			fmt=elf em=linux ;;
-   ppc-*-solaris*)			fmt=elf ;;
-   ppc-*-rtems*)				fmt=elf ;;
-   ppc-*-macos*)				fmt=coff em=macos ;;
-@@ -340,7 +340,7 @@
-   ppc-*-kaos*)				fmt=elf ;;
-   ppc-*-lynxos*)			fmt=elf em=lynx bfd_gas=yes ;;
- 
--  s390-*-linux-gnu*)			fmt=elf em=linux ;;
-+  s390-*-linux-*)			fmt=elf em=linux ;;
-   s390-*-tpf*)				fmt=elf ;;
- 
-   sh*-*-linux*)				fmt=elf em=linux
-@@ -369,7 +369,7 @@
-   sparc-*-aout | sparc*-*-vxworks*)	fmt=aout em=sparcaout ;;
-   sparc-*-coff)				fmt=coff ;;
-   sparc-*-linux*aout*)			fmt=aout em=linux ;;
--  sparc-*-linux-gnu*)			fmt=elf em=linux ;;
-+  sparc-*-linux-*)			fmt=elf em=linux ;;
-   sparc-fujitsu-none)			fmt=aout ;;
-   sparc-*-elf)				fmt=elf ;;
-   sparc-*-sysv4*)			fmt=elf ;;
-@@ -398,7 +398,7 @@
-   vax-*-netbsdelf*)			fmt=elf em=nbsd ;;
-   vax-*-netbsd*)			fmt=aout em=nbsd ;;
-   vax-*-bsd* | vax-*-ultrix*)		fmt=aout ;;
--  vax-*-linux-gnu*)			fmt=elf em=linux bfd_gas=yes ;;
-+  vax-*-linux-*)			fmt=elf em=linux bfd_gas=yes ;;
- 
-   w65-*-*)				fmt=coff ;;
- 
-diff -ur binutils-2.15.97.orig/ld/configure.host binutils-2.15.97/ld/configure.host
---- binutils-2.15.97.orig/ld/configure.host	2005-04-29 20:48:15.000000000 -0400
-+++ binutils-2.15.97/ld/configure.host	2005-04-29 20:53:50.000000000 -0400
-@@ -83,7 +83,7 @@
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,ld\[^ \]\*,ld-linux,g"`
-   ;;
- 
--arm*-*-linux-gnu*)
-+arm*-*-linux-*)
-   HOSTING_CRT0='-p '`echo "$HOSTING_CRT0" | sed -e "s,ld\[^ \]\*,ld-linux,g"`
-   ;;
- 
-@@ -141,7 +141,7 @@
-   HOSTING_LIBS="$HOSTING_LIBS"' -lcygwin -L/usr/lib/w32api -luser32 -lkernel32 -ladvapi32 -lshell32 `if [ -f ../gcc/libgcc.a ] ; then echo ../gcc/libgcc.a ; else ${CC} -print-libgcc-file-name; fi`'
-   ;;
- 
--ia64-*-linux-gnu*)
-+ia64-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,ld\[^ \]*\*,ld-linux-ia64,g"`
-   ;;
- 
-@@ -155,11 +155,11 @@
-   HOSTING_LIBS='-L/usr/lib32 '"$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o ; else ${CC} -print-file-name=crtend.o; fi` /usr/lib32/crtn.o -init __do_global_ctors -fini __do_global_dtors'
-   ;;
- 
--mips*-*-linux-gnu*)
-+mips*-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld.so.1,"`
-   ;;
- 
--m68*-*-linux-gnu*)
-+m68*-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld.so.1,"`
-   ;;
- 
-@@ -183,19 +183,19 @@
-   HOSTING_LIBS="$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} -print-file-name=crtend.o; fi`'
-   ;;
- 
--powerpc64*-*-linux-gnu*)
-+powerpc64*-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib64/ld64.so.1,"`
-   ;;
- 
--powerpc*-*-linux-gnu*)
-+powerpc*-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld.so.1,"`
-   ;;
- 
--s390x-*-linux-gnu*)
-+s390x-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld64.so.1,"`
-   ;;
- 
--s390-*-linux-gnu*)
-+s390-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld.so.1,"`
-   ;;
- 
-@@ -209,15 +209,15 @@
-   HOSTING_LIBS="$HOSTING_LIBS"' `if [ -f ../gcc/crtend.o ]; then echo ../gcc/crtend.o; else ${CC} -print-file-name=crtend.o; fi` `if [ -f ../gcc/crtn.o ]; then echo ../gcc/crtn.o; else ${CC} -print-file-name=crtn.o; fi`'
-   ;;
- 
--sparc-*-linux-gnu*)
-+sparc-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib/ld-linux.so.2,"`
-   ;;
- 
--sparc64-*-linux-gnu*)
-+sparc64-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib64/ld-linux.so.2,"`
-   ;;
- 
--x86_64-*-linux-gnu*)
-+x86_64-*-linux-*)
-   HOSTING_CRT0=`echo "$HOSTING_CRT0" | sed -e "s,\\\`specs.*\"\\\`,/lib64/ld-linux-x86-64.so.2,"`
-   ;;
- 
-diff -ur binutils-2.15.97.orig/ld/configure.tgt binutils-2.15.97/ld/configure.tgt
---- binutils-2.15.97.orig/ld/configure.tgt	2005-04-29 20:48:15.000000000 -0400
-+++ binutils-2.15.97/ld/configure.tgt	2005-04-29 20:53:50.000000000 -0400
-@@ -30,7 +30,7 @@
- cris-*-*aout*)		targ_emul=crisaout
- 			targ_extra_emuls="criself crislinux"
- 			targ_extra_libpath=$targ_extra_emuls ;;
--cris-*-linux-gnu* | cris-*-linux-gnu*)
-+cris-*-linux-* | crisv32-*-linux-*)
- 			targ_emul=crislinux ;;
- cris-*-* | crisv32-*-*)	targ_emul=criself
- 			targ_extra_emuls="crisaout crislinux"
-@@ -62,14 +62,14 @@
- 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'`
- 			tdir_sun4=sparc-sun-sunos4
- 			;;
--sparc64-*-linux-gnu*)	targ_emul=elf64_sparc
-+sparc64-*-linux-*)	targ_emul=elf64_sparc
- 			targ_extra_emuls="elf32_sparc sparclinux sun4"
- 			targ_extra_libpath=elf32_sparc
- 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
- 			tdir_sparclinux=${tdir_elf32_sparc}aout
- 			tdir_sun4=sparc-sun-sunos4
- 			;;
--sparc*-*-linux-gnu*)	targ_emul=elf32_sparc
-+sparc*-*-linux-*)	targ_emul=elf32_sparc
- 			targ_extra_emuls="sparclinux elf64_sparc sun4"
- 			targ_extra_libpath=elf64_sparc
- 			tdir_sparclinux=${targ_alias}aout
-@@ -119,8 +119,8 @@
- ia64-*-aix*)		targ_emul=elf64_aix ;;
- m32r*le-*-elf*)         targ_emul=m32rlelf ;;
- m32r*-*-elf*)           targ_emul=m32relf ;;
--m32r*le-*-linux-gnu*)   targ_emul=m32rlelf_linux ;;
--m32r*-*-linux-gnu*)     targ_emul=m32relf_linux ;;
-+m32r*le-*-linux-*)      targ_emul=m32rlelf_linux ;;
-+m32r*-*-linux-*)        targ_emul=m32relf_linux ;;
- m68hc11-*-*|m6811-*-*)	targ_emul=m68hc11elf 
- 			targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
- m68hc12-*-*|m6812-*-*)	targ_emul=m68hc12elf 
-@@ -131,7 +131,7 @@
- m68*-apple-aux*)	targ_emul=m68kaux ;;
- maxq-*-coff)            targ_emul=maxqcoff;;
- *-tandem-none)		targ_emul=st2000 ;;
--i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;;
-+i370-*-elf* | i370-*-linux-*) targ_emul=elf32i370 ;;
- i[3-7]86-*-nto-qnx*)	targ_emul=i386nto ;;
- i[3-7]86-*-vsta)	targ_emul=vsta ;;
- i[3-7]86-go32-rtems*)	targ_emul=i386go32 ;;
-@@ -155,14 +155,14 @@
- 			tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'`
- 			;;
- i[3-7]86-*-linux*oldld)	targ_emul=i386linux; targ_extra_emuls=elf_i386 ;;
--i[3-7]86-*-linux-gnu*)	targ_emul=elf_i386
-+i[3-7]86-*-linux-*)	targ_emul=elf_i386
- 			targ_extra_emuls=i386linux
- 			if test x${want64} = xtrue; then
- 			  targ_extra_emuls="$targ_extra_emuls elf_x86_64"
- 			fi
- 			tdir_i386linux=${targ_alias}aout
- 			;;
--x86_64-*-linux-gnu*)	targ_emul=elf_x86_64
-+x86_64-*-linux-*)	targ_emul=elf_x86_64
- 			targ_extra_emuls="elf_i386 i386linux"
- 			targ_extra_libpath=elf_i386
- 			tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'`
-@@ -262,13 +262,13 @@
- arm-*-kaos*)		targ_emul=armelf ;;
- arm9e-*-elf)		targ_emul=armelf ;;
- arm*b-*-linux-gnueabi)	targ_emul=armelfb_linux_eabi ;;
--arm*b-*-linux-gnu*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
-+arm*b-*-linux-*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
- arm*-*-linux-gnueabi)	targ_emul=armelf_linux_eabi ;;
--arm*-*-linux-gnu*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
-+arm*-*-linux-*)	        targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- arm*-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- arm-*-vxworks)		targ_emul=armelf_vxworks ;;
- arm*-*-conix*)		targ_emul=armelf ;;
--thumb-*-linux-gnu* | thumb-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
-+thumb-*-linux-* | thumb-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- strongarm-*-coff)	targ_emul=armcoff ;;
- strongarm-*-elf)	targ_emul=armelf ;;
- strongarm-*-kaos*)	targ_emul=armelf ;;
-@@ -372,7 +372,7 @@
- 			targ_extra_emuls=m68kelf
- 			tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'`
- 			;;
--m68k-*-linux-gnu*)	targ_emul=m68kelf
-+m68k-*-linux-*) 	targ_emul=m68kelf
- 			targ_extra_emuls=m68klinux
- 			tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'`
- 			;;
-@@ -388,9 +388,9 @@
- m68*-*-psos*)		targ_emul=m68kpsos ;;
- m68*-*-rtemscoff*)	targ_emul=m68kcoff ;;
- m68*-*-rtems*)		targ_emul=m68kelf ;;
--hppa*64*-*-linux-gnu*)	targ_emul=hppa64linux ;;
-+hppa*64*-*-linux-*)	targ_emul=hppa64linux ;;
- hppa*64*-*)		targ_emul=elf64hppa ;;
--hppa*-*-linux-gnu*)	targ_emul=hppalinux ;;
-+hppa*-*-linux-*)	targ_emul=hppalinux ;;
- hppa*-*-*elf*)		targ_emul=hppaelf ;;
- hppa*-*-lites*)		targ_emul=hppaelf ;;
- hppa*-*-netbsd*)	targ_emul=hppanbsd ;;
-@@ -402,7 +402,7 @@
- vax-*-netbsdaout* | vax-*-netbsd*)
- 			targ_emul=vaxnbsd
- 			targ_extra_emuls=elf32vax ;;
--vax-*-linux-gnu*)	targ_emul=elf32vax ;;
-+vax-*-linux-*)  	targ_emul=elf32vax ;;
- mips*-*-pe)		targ_emul=mipspe ;
- 			targ_extra_ofiles="deffilep.o pe-dll.o" ;;
- mips*-dec-ultrix*)	targ_emul=mipslit ;;
-@@ -436,18 +436,18 @@
- mips*-*-vxworks*)	targ_emul=elf32ebmip
- 		        targ_extra_emuls="elf32elmip" ;;
- mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
--mips64*el-*-linux-gnu*)	targ_emul=elf32ltsmipn32
-+mips64*el-*-linux-*)	targ_emul=elf32ltsmipn32
- 			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
- 			targ_extra_libpath="elf32ltsmip elf64ltsmip"
- 			;;
--mips64*-*-linux-gnu*)	targ_emul=elf32btsmipn32
-+mips64*-*-linux-*)	targ_emul=elf32btsmipn32
- 			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
- 			targ_extra_libpath="elf32btsmip elf64btsmip"
- 			;;
--mips*el-*-linux-gnu*)	targ_emul=elf32ltsmip
-+mips*el-*-linux-*)	targ_emul=elf32ltsmip
- 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
- 			;;
--mips*-*-linux-gnu*)	targ_emul=elf32btsmip
-+mips*-*-linux-*)	targ_emul=elf32btsmip
- 			targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip"
- 			;;
- mips*-*-lnews*)		targ_emul=mipslnews ;;
-@@ -467,7 +467,7 @@
- alpha*-*-linuxecoff*)	targ_emul=alpha targ_extra_emuls=elf64alpha
- 			tdir_elf64alpha=`echo ${targ_alias} | sed -e 's/ecoff//'`
- 			;;
--alpha*-*-linux-gnu*)	targ_emul=elf64alpha targ_extra_emuls=alpha
-+alpha*-*-linux-*)	targ_emul=elf64alpha targ_extra_emuls=alpha
- 			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
- 			;;
- alpha*-*-osf*)		targ_emul=alpha ;;
-diff -ur binutils-2.15.97.orig/ld/emultempl/elf32.em binutils-2.15.97/ld/emultempl/elf32.em
---- binutils-2.15.97.orig/ld/emultempl/elf32.em	2005-04-29 20:48:15.000000000 -0400
-+++ binutils-2.15.97/ld/emultempl/elf32.em	2005-04-29 20:53:50.000000000 -0400
-@@ -65,7 +65,7 @@
- 
- if [ "x${USE_LIBPATH}" = xyes ] ; then
-   case ${target} in
--    *-*-linux-gnu*)
-+    *-*-linux-*)
-   cat >>e${EMULATION_NAME}.c <<EOF
- #ifdef HAVE_GLOB
- #include <glob.h>
-@@ -350,7 +350,7 @@
- 
- EOF
- case ${target} in
--  *-*-linux-gnu*)
-+  *-*-linux-*)
-     cat >>e${EMULATION_NAME}.c <<EOF
- 	  {
- 	    struct bfd_link_needed_list *l;
-@@ -522,7 +522,7 @@
- 
- EOF
-   case ${target} in
--    *-*-linux-gnu*)
-+    *-*-linux-*)
-       cat >>e${EMULATION_NAME}.c <<EOF
- /* For a native linker, check the file /etc/ld.so.conf for directories
-    in which we may find shared libraries.  /etc/ld.so.conf is really
-@@ -932,7 +932,7 @@
- EOF
- if [ "x${USE_LIBPATH}" = xyes ] ; then
-   case ${target} in
--    *-*-linux-gnu*)
-+    *-*-linux-*)
-       cat >>e${EMULATION_NAME}.c <<EOF
- 	  if (gld${EMULATION_NAME}_check_ld_so_conf (l->name, force))
- 	    break;
Index: toolchain/binutils/2.16.1/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.16.1/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.16.1/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.16.1/sh-flags-off-by-one.patch
===================================================================
--- toolchain/binutils/2.16.1/sh-flags-off-by-one.patch	(revision 20005)
+++ toolchain/binutils/2.16.1/sh-flags-off-by-one.patch	(working copy)
@@ -1,21 +0,0 @@
-2005-08-25  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
-
-	* elf32-sh.c (sh_elf_get_flags_from_mach): Fix off-by-one error.
-
-Index: bfd/elf32-sh.c
-===================================================================
-RCS file: /cvs/src/src/bfd/elf32-sh.c,v
-retrieving revision 1.128
-retrieving revision 1.129
-diff -u -p -r1.128 -r1.129
---- binutils/bfd/elf32-sh.c	25 Aug 2005 02:32:10 -0000	1.128
-+++ binutils/bfd/elf32-sh.c	25 Aug 2005 05:10:22 -0000	1.129
-@@ -6655,7 +6655,7 @@ sh_elf_set_mach_from_flags (bfd *abfd)
- int
- sh_elf_get_flags_from_mach (unsigned long mach)
- {
--  int i = ARRAY_SIZE (sh_ef_bfd_table);
-+  int i = ARRAY_SIZE (sh_ef_bfd_table) - 1;
-   
-   for (; i>0; i--)
-     if (sh_ef_bfd_table[i] == mach)
Index: toolchain/binutils/2.16.1/110-uclibc-libtool-conf.patch
===================================================================
--- toolchain/binutils/2.16.1/110-uclibc-libtool-conf.patch	(revision 20005)
+++ toolchain/binutils/2.16.1/110-uclibc-libtool-conf.patch	(working copy)
@@ -1,218 +0,0 @@
-diff -urN binutils-2.16.90.0.2-dist/bfd/configure binutils-2.16.90.0.2/bfd/configure
---- binutils-2.16.90.0.2-dist/bfd/configure	2005-04-29 12:50:24.000000000 -0500
-+++ binutils-2.16.90.0.2/bfd/configure	2005-04-30 11:34:59.246377032 -0500
-@@ -3584,6 +3584,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/binutils/configure binutils-2.16.90.0.2/binutils/configure
---- binutils-2.16.90.0.2-dist/binutils/configure	2005-04-29 12:50:26.000000000 -0500
-+++ binutils-2.16.90.0.2/binutils/configure	2005-04-30 11:35:28.900868864 -0500
-@@ -1577,6 +1577,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/configure binutils-2.16.90.0.2/configure
---- binutils-2.16.90.0.2-dist/configure	2005-04-29 12:50:23.000000000 -0500
-+++ binutils-2.16.90.0.2/configure	2005-04-30 11:31:12.525843792 -0500
-@@ -1111,7 +1111,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-diff -urN binutils-2.16.90.0.2-dist/configure.in binutils-2.16.90.0.2/configure.in
---- binutils-2.16.90.0.2-dist/configure.in	2005-04-29 12:50:23.000000000 -0500
-+++ binutils-2.16.90.0.2/configure.in	2005-04-30 11:29:51.643139832 -0500
-@@ -328,7 +328,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-diff -urN binutils-2.16.90.0.2-dist/gas/configure binutils-2.16.90.0.2/gas/configure
---- binutils-2.16.90.0.2-dist/gas/configure	2005-04-29 12:50:27.000000000 -0500
-+++ binutils-2.16.90.0.2/gas/configure	2005-04-30 11:35:21.097055224 -0500
-@@ -3421,6 +3421,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/gas/testsuite/gas/sh/basic.exp binutils-2.16.90.0.2/gas/testsuite/gas/sh/basic.exp
---- binutils-2.16.90.0.2-dist/gas/testsuite/gas/sh/basic.exp	2005-04-09 14:03:14.000000000 -0500
-+++ binutils-2.16.90.0.2/gas/testsuite/gas/sh/basic.exp	2005-04-30 11:41:57.301822944 -0500
-@@ -20,7 +20,7 @@
- 
- # Written by Cygnus Support.
- 
--if [istarget "sh*-*-linux-gnu"] {
-+if {[istarget "sh*-*-linux-gnu"] || [istarget "sh*-*-linux-uclibc"]} {
-     global ASFLAGS
-     set ASFLAGS "$ASFLAGS -big"
- }
-diff -urN binutils-2.16.90.0.2-dist/gprof/configure binutils-2.16.90.0.2/gprof/configure
---- binutils-2.16.90.0.2-dist/gprof/configure	2005-04-29 12:50:29.000000000 -0500
-+++ binutils-2.16.90.0.2/gprof/configure	2005-04-30 11:35:36.880655752 -0500
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/ld/configure binutils-2.16.90.0.2/ld/configure
---- binutils-2.16.90.0.2-dist/ld/configure	2005-04-29 12:50:30.000000000 -0500
-+++ binutils-2.16.90.0.2/ld/configure	2005-04-30 11:46:15.974498720 -0500
-@@ -1581,6 +1581,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/ld/testsuite/ld-sh/sh.exp binutils-2.16.90.0.2/ld/testsuite/ld-sh/sh.exp
---- binutils-2.16.90.0.2-dist/ld/testsuite/ld-sh/sh.exp	2005-04-09 14:03:29.000000000 -0500
-+++ binutils-2.16.90.0.2/ld/testsuite/ld-sh/sh.exp	2005-04-30 11:45:07.890849008 -0500
-@@ -62,7 +62,7 @@
- 
- set testsrec "SH relaxing to S-records"
- 
--if [istarget sh*-linux-gnu] {
-+if {[istarget sh*-linux-gnu] || [istarget sh*-*-linux-uclibc]} {
-     # This target needs the explicit entry address.
-     catch "exec $objdump -x tmpdir/sh1 | grep start\\ address | sed s/start\\ address//" entry_addr
-     set srec_relax_arg "-Ttext $entry_addr -relax --oformat srec tmpdir/sh1.o"
-@@ -117,7 +117,7 @@
-     return
- }
- 
--if [istarget sh*-linux-gnu] {
-+if {[istarget sh*-linux-gnu] || [istarget sh*-*-linux-uclibc]} {
-     exec sed -e s/_main/main/ -e s/_trap/trap/ -e s/_stack/stack/ \
- 	    < $srcdir/$subdir/start.s >tmpdir/start.s
- } else {
-diff -urN binutils-2.16.90.0.2-dist/ld/testsuite/ld-srec/srec.exp binutils-2.16.90.0.2/ld/testsuite/ld-srec/srec.exp
---- binutils-2.16.90.0.2-dist/ld/testsuite/ld-srec/srec.exp	2005-04-29 12:50:30.000000000 -0500
-+++ binutils-2.16.90.0.2/ld/testsuite/ld-srec/srec.exp	2005-04-30 11:44:26.358162936 -0500
-@@ -385,7 +385,7 @@
- setup_xfail "v850*-*-elf"
- 
- # The S-record linker doesn't handle Alpha Elf relaxation.
--setup_xfail "alpha*-*-elf*" "alpha*-*-linux-gnu*" "alpha*-*-gnu*"
-+setup_xfail "alpha*-*-elf*" "alpha*-*-linux-gnu*" "alpha*-*-gnu*" "alpha*-*-linux-uclibc*"
- setup_xfail "alpha*-*-netbsd*"
- 
- # The S-record linker hasn't any hope of coping with HPPA relocs.
-@@ -424,7 +424,7 @@
- setup_xfail "thumb-*-*"
- setup_xfail "powerpc*-*-eabi*"
- setup_xfail "v850*-*-elf"
--setup_xfail "alpha*-*-elf*" "alpha*-*-linux-gnu*" "alpha*-*-gnu*"
-+setup_xfail "alpha*-*-elf*" "alpha*-*-linux-gnu*" "alpha*-*-gnu*" "alpha*-*-linux-uclibc*"
- setup_xfail "alpha*-*-netbsd*"
- setup_xfail "hppa*-*-*"
- setup_xfail "ia64-*-*"
-diff -urN binutils-2.16.90.0.2-dist/libtool.m4 binutils-2.16.90.0.2/libtool.m4
---- binutils-2.16.90.0.2-dist/libtool.m4	2004-07-27 23:36:06.000000000 -0500
-+++ binutils-2.16.90.0.2/libtool.m4	2005-04-30 11:35:54.062043784 -0500
-@@ -645,6 +645,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/ltconfig binutils-2.16.90.0.2/ltconfig
---- binutils-2.16.90.0.2-dist/ltconfig	2004-11-22 14:33:30.000000000 -0600
-+++ binutils-2.16.90.0.2/ltconfig	2005-04-30 11:22:10.594229920 -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
-@@ -1270,6 +1271,23 @@
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
-diff -urN binutils-2.16.90.0.2-dist/opcodes/configure binutils-2.16.90.0.2/opcodes/configure
---- binutils-2.16.90.0.2-dist/opcodes/configure	2005-04-29 12:50:31.000000000 -0500
-+++ binutils-2.16.90.0.2/opcodes/configure	2005-04-30 11:17:07.168357664 -0500
-@@ -3588,6 +3588,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/binutils/2.16.1/400-mips-ELF_MAXPAGESIZE-4K.patch
===================================================================
--- toolchain/binutils/2.16.1/400-mips-ELF_MAXPAGESIZE-4K.patch	(revision 20005)
+++ toolchain/binutils/2.16.1/400-mips-ELF_MAXPAGESIZE-4K.patch	(working copy)
@@ -1,26 +0,0 @@
---- binutils/bfd/elf32-mips.c~
-+++ binutils/bfd/elf32-mips.c
-@@ -1613,7 +1613,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
---- binutils/bfd/elfn32-mips.c~
-+++ binutils/bfd/elfn32-mips.c
-@@ -2399,7 +2399,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
Index: toolchain/binutils/2.16.1/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.16.1/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.16.1/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,52 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.am binutils-2.14.90.0.6/ld/Makefile.am
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.am	2003-08-21 16:28:48.000000000 +0100
-+++ binutils-2.14.90.0.6/ld/Makefile.am	2003-09-10 23:12:09.000000000 +0100
-@@ -19,7 +19,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.in binutils-2.14.90.0.6/ld/Makefile.in
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.in	2003-08-21 16:28:48.000000000 +0100
-+++ binutils-2.14.90.0.6/ld/Makefile.in	2003-09-10 23:12:09.000000000 +0100
-@@ -128,7 +128,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
Index: toolchain/binutils/2.17.50.0.10/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.10/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.10/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.10/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.10/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.10/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.10/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.10/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.10/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.10/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.10/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.10/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.17.50.0.14/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.14/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.14/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.14/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.14/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.14/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.ac
-+++ binutils-2.16.91.0.7/configure.ac
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.14/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.14/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.14/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.14/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.14/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.14/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.ac binutils-2.16.91.0.7/configure.ac
---- binutils-2.16.91.0.7.orig/configure.ac	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.ac	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.17.50.0.16/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.16/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.16/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.16/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.16/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.16/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.ac
-+++ binutils-2.16.91.0.7/configure.ac
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.16/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.16/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.16/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.16/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.16/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.16/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.ac binutils-2.16.91.0.7/configure.ac
---- binutils-2.16.91.0.7.orig/configure.ac	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.ac	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.17.50.0.2/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.2/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.2/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.2/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.2/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.2/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.2/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.17.50.0.2/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.2/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.17.50.0.2/400-mips-ELF_MAXPAGESIZE-4K.patch
===================================================================
--- toolchain/binutils/2.17.50.0.2/400-mips-ELF_MAXPAGESIZE-4K.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.2/400-mips-ELF_MAXPAGESIZE-4K.patch	(working copy)
@@ -1,26 +0,0 @@
---- binutils/bfd/elf32-mips.c~
-+++ binutils/bfd/elf32-mips.c
-@@ -1613,7 +1613,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
---- binutils/bfd/elfn32-mips.c~
-+++ binutils/bfd/elfn32-mips.c
-@@ -2399,7 +2399,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
Index: toolchain/binutils/2.17.50.0.2/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.2/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.2/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.2/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.2/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.2/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.17.50.0.3/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.3/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.3/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.3/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.3/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.3/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.3/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.17.50.0.3/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.3/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.17.50.0.3/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.3/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.3/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.3/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.3/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.3/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/Config.in
===================================================================
--- toolchain/binutils/Config.in	(revision 20005)
+++ toolchain/binutils/Config.in	(working copy)
@@ -4,94 +4,14 @@
 
 choice
 	prompt "Binutils Version"
-	default BR2_BINUTILS_VERSION_2_17
+	default BR2_BINUTILS_VERSION_2_18
 	help
 	  Select the version of binutils you wish to use.
 
-	config BR2_BINUTILS_VERSION_2_14_90_0_8
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.14.90.0.8"
-
-	config BR2_BINUTILS_VERSION_2_15
-		depends !BR2_avr32 && BR2_DEPRECATED
-		bool "binutils 2.15"
-
-	config BR2_BINUTILS_VERSION_2_15_94_0_2_2
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.15.94.0.2.2"
-
-	config BR2_BINUTILS_VERSION_2_16_1
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.16.1"
-
-	config BR2_BINUTILS_VERSION_2_16_90_0_3
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.16.90.0.3"
-
-	config BR2_BINUTILS_VERSION_2_16_91_0_5
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.16.91.0.5"
-
-	config BR2_BINUTILS_VERSION_2_16_91_0_6
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.16.91.0.6"
-
-	config BR2_BINUTILS_VERSION_2_16_91_0_7
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.16.91.0.7"
-
 	config BR2_BINUTILS_VERSION_2_17
 		depends BR2_avr32 || !BR2_nios2 && BR2_DEPRECATED
 		bool "binutils 2.17"
 
-	config BR2_BINUTILS_VERSION_2_17_50_0_2
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.2"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_3
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.3"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_4
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.4"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_5
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.5"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_6
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.6"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_7
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.7"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_8
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.8"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_9
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.9"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_10
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.10"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_12
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.12"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_14
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.14"
-
-	config BR2_BINUTILS_VERSION_2_17_50_0_16
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "binutils 2.17.50.0.16"
-
 	config BR2_BINUTILS_VERSION_2_17_50_0_17
 		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
 		bool "binutils 2.17.50.0.17"
@@ -107,27 +27,7 @@
 
 config BR2_BINUTILS_VERSION
 	string
-	default "2.14.90.0.8"	if BR2_BINUTILS_VERSION_2_14_90_0_8
-	default "2.15"		if BR2_BINUTILS_VERSION_2_15
-	default "2.15.94.0.2.2" if BR2_BINUTILS_VERSION_2_15_94_0_2_2
-	default "2.16.1"	if BR2_BINUTILS_VERSION_2_16_1
-	default "2.16.90.0.3"	if BR2_BINUTILS_VERSION_2_16_90_0_3
-	default "2.16.91.0.5"	if BR2_BINUTILS_VERSION_2_16_91_0_5
-	default "2.16.91.0.6"	if BR2_BINUTILS_VERSION_2_16_91_0_6
-	default "2.16.91.0.7"	if BR2_BINUTILS_VERSION_2_16_91_0_7
 	default "2.17"		if BR2_BINUTILS_VERSION_2_17
-	default "2.17.50.0.2"	if BR2_BINUTILS_VERSION_2_17_50_0_2
-	default "2.17.50.0.3"	if BR2_BINUTILS_VERSION_2_17_50_0_3
-	default "2.17.50.0.4"	if BR2_BINUTILS_VERSION_2_17_50_0_4
-	default "2.17.50.0.5"	if BR2_BINUTILS_VERSION_2_17_50_0_5
-	default "2.17.50.0.6"	if BR2_BINUTILS_VERSION_2_17_50_0_6
-	default "2.17.50.0.7"	if BR2_BINUTILS_VERSION_2_17_50_0_7
-	default "2.17.50.0.8"	if BR2_BINUTILS_VERSION_2_17_50_0_8
-	default "2.17.50.0.9"	if BR2_BINUTILS_VERSION_2_17_50_0_9
-	default "2.17.50.0.10"	if BR2_BINUTILS_VERSION_2_17_50_0_10
-	default "2.17.50.0.12"	if BR2_BINUTILS_VERSION_2_17_50_0_12
-	default "2.17.50.0.14"	if BR2_BINUTILS_VERSION_2_17_50_0_14
-	default "2.17.50.0.16"	if BR2_BINUTILS_VERSION_2_17_50_0_16
 	default "2.17.50.0.17"	if BR2_BINUTILS_VERSION_2_17_50_0_17
 	default "2.18"		if BR2_BINUTILS_VERSION_2_18
 	default "2.18.50.0.1"	if BR2_BINUTILS_VERSION_2_18_50_0_1
Index: toolchain/binutils/2.17.50.0.4/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.4/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.4/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.4/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.4/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.4/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.4/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.17.50.0.4/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.4/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.17.50.0.4/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.4/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.4/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.4/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.4/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.4/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.17.50.0.5/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.5/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.5/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.5/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.5/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.5/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.5/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.17.50.0.5/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.5/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.17.50.0.5/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.5/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.5/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.5/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.5/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.5/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.17.50.0.6/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.6/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.6/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.6/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.6/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.6/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.6/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.17.50.0.6/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.6/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.17.50.0.6/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.6/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.6/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.6/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.6/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.6/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.16.90.0.3/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.16.90.0.3/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.16.90.0.3/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.16.90.0.3/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.16.90.0.3/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.16.90.0.3/100-uclibc-conf.patch	(working copy)
@@ -1,200 +0,0 @@
-diff -urN binutils-2.16.90.0.2-dist/bfd/configure binutils-2.16.90.0.2/bfd/configure
---- binutils-2.16.90.0.2-dist/bfd/configure	2005-04-29 12:50:24.000000000 -0500
-+++ binutils-2.16.90.0.2/bfd/configure	2005-04-30 11:34:59.246377032 -0500
-@@ -3584,6 +3584,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/binutils/configure binutils-2.16.90.0.2/binutils/configure
---- binutils-2.16.90.0.2-dist/binutils/configure	2005-04-29 12:50:26.000000000 -0500
-+++ binutils-2.16.90.0.2/binutils/configure	2005-04-30 11:35:28.900868864 -0500
-@@ -1577,6 +1577,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/configure binutils-2.16.90.0.2/configure
---- binutils-2.16.90.0.2-dist/configure	2005-04-29 12:50:23.000000000 -0500
-+++ binutils-2.16.90.0.2/configure	2005-04-30 11:31:12.525843792 -0500
-@@ -1111,7 +1111,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-@@ -1207,7 +1207,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1495,7 +1495,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
-diff -urN binutils-2.16.90.0.2-dist/configure.in binutils-2.16.90.0.2/configure.in
---- binutils-2.16.90.0.2-dist/configure.in	2005-04-29 12:50:23.000000000 -0500
-+++ binutils-2.16.90.0.2/configure.in	2005-04-30 11:29:51.643139832 -0500
-@@ -328,7 +328,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-@@ -424,7 +424,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -712,7 +712,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
-diff -urN binutils-2.16.90.0.2-dist/gas/configure binutils-2.16.90.0.2/gas/configure
---- binutils-2.16.90.0.2-dist/gas/configure	2005-04-29 12:50:27.000000000 -0500
-+++ binutils-2.16.90.0.2/gas/configure	2005-04-30 11:35:21.097055224 -0500
-@@ -3421,6 +3421,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/gprof/configure binutils-2.16.90.0.2/gprof/configure
---- binutils-2.16.90.0.2-dist/gprof/configure	2005-04-29 12:50:29.000000000 -0500
-+++ binutils-2.16.90.0.2/gprof/configure	2005-04-30 11:35:36.880655752 -0500
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/ld/configure binutils-2.16.90.0.2/ld/configure
---- binutils-2.16.90.0.2-dist/ld/configure	2005-04-29 12:50:30.000000000 -0500
-+++ binutils-2.16.90.0.2/ld/configure	2005-04-30 11:46:15.974498720 -0500
-@@ -1581,6 +1581,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/libtool.m4 binutils-2.16.90.0.2/libtool.m4
---- binutils-2.16.90.0.2-dist/libtool.m4	2004-07-27 23:36:06.000000000 -0500
-+++ binutils-2.16.90.0.2/libtool.m4	2005-04-30 11:35:54.062043784 -0500
-@@ -645,6 +645,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* | knetbsd*-gnu)
-   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 binutils-2.16.90.0.2-dist/ltconfig binutils-2.16.90.0.2/ltconfig
---- binutils-2.16.90.0.2-dist/ltconfig	2004-11-22 14:33:30.000000000 -0600
-+++ binutils-2.16.90.0.2/ltconfig	2005-04-30 11:22:10.594229920 -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
-@@ -1270,6 +1271,23 @@
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
-diff -urN binutils-2.16.90.0.2-dist/opcodes/configure binutils-2.16.90.0.2/opcodes/configure
---- binutils-2.16.90.0.2-dist/opcodes/configure	2005-04-29 12:50:31.000000000 -0500
-+++ binutils-2.16.90.0.2/opcodes/configure	2005-04-30 11:17:07.168357664 -0500
-@@ -3588,6 +3588,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/binutils/2.16.90.0.3/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.16.90.0.3/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.16.90.0.3/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.16.90.0.3/sh-flags-off-by-one.patch
===================================================================
--- toolchain/binutils/2.16.90.0.3/sh-flags-off-by-one.patch	(revision 20005)
+++ toolchain/binutils/2.16.90.0.3/sh-flags-off-by-one.patch	(working copy)
@@ -1,21 +0,0 @@
-2005-08-25  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
-
-	* elf32-sh.c (sh_elf_get_flags_from_mach): Fix off-by-one error.
-
-Index: bfd/elf32-sh.c
-===================================================================
-RCS file: /cvs/src/src/bfd/elf32-sh.c,v
-retrieving revision 1.128
-retrieving revision 1.129
-diff -u -p -r1.128 -r1.129
---- binutils/bfd/elf32-sh.c	25 Aug 2005 02:32:10 -0000	1.128
-+++ binutils/bfd/elf32-sh.c	25 Aug 2005 05:10:22 -0000	1.129
-@@ -6655,7 +6655,7 @@ sh_elf_set_mach_from_flags (bfd *abfd)
- int
- sh_elf_get_flags_from_mach (unsigned long mach)
- {
--  int i = ARRAY_SIZE (sh_ef_bfd_table);
-+  int i = ARRAY_SIZE (sh_ef_bfd_table) - 1;
-   
-   for (; i>0; i--)
-     if (sh_ef_bfd_table[i] == mach)
Index: toolchain/binutils/2.16.90.0.3/400-mips-ELF_MAXPAGESIZE-4K.patch
===================================================================
--- toolchain/binutils/2.16.90.0.3/400-mips-ELF_MAXPAGESIZE-4K.patch	(revision 20005)
+++ toolchain/binutils/2.16.90.0.3/400-mips-ELF_MAXPAGESIZE-4K.patch	(working copy)
@@ -1,26 +0,0 @@
---- binutils/bfd/elf32-mips.c~
-+++ binutils/bfd/elf32-mips.c
-@@ -1613,7 +1613,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
---- binutils/bfd/elfn32-mips.c~
-+++ binutils/bfd/elfn32-mips.c
-@@ -2399,7 +2399,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
Index: toolchain/binutils/2.16.90.0.3/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.16.90.0.3/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.16.90.0.3/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,52 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.am binutils-2.14.90.0.6/ld/Makefile.am
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.am	2003-08-21 16:28:48.000000000 +0100
-+++ binutils-2.14.90.0.6/ld/Makefile.am	2003-09-10 23:12:09.000000000 +0100
-@@ -19,7 +19,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.in binutils-2.14.90.0.6/ld/Makefile.in
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.in	2003-08-21 16:28:48.000000000 +0100
-+++ binutils-2.14.90.0.6/ld/Makefile.in	2003-09-10 23:12:09.000000000 +0100
-@@ -128,7 +128,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
Index: toolchain/binutils/2.17.50.0.7/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.7/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.7/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.7/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.7/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.7/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.7/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.7/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.7/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.7/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.7/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.7/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/binutils/2.15.94.0.2.2/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.15.94.0.2.2/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.15.94.0.2.2/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.15.94.0.2.2/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.15.94.0.2.2/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.15.94.0.2.2/100-uclibc-conf.patch	(working copy)
@@ -1,749 +0,0 @@
-diff -ur binutils-2.15.94.0.2.orig/bfd/config.bfd binutils-2.15.94.0.2/bfd/config.bfd
---- binutils-2.15.94.0.2.orig/bfd/config.bfd	2004-12-22 15:00:57.219024360 -0500
-+++ binutils-2.15.94.0.2/bfd/config.bfd	2004-12-22 15:01:18.982715776 -0500
-@@ -140,7 +140,7 @@
-     targ_defvec=ecoffalpha_little_vec
-     targ_selvecs=bfd_elf64_alpha_vec
-     ;;
--  alpha*-*-linux-gnu* | alpha*-*-elf*)
-+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc* | alpha*-*-elf*)
-     targ_defvec=bfd_elf64_alpha_vec
-     targ_selvecs=ecoffalpha_little_vec
-     ;;
-@@ -150,7 +150,7 @@
-   alpha*-*-*)
-     targ_defvec=ecoffalpha_little_vec
-     ;;
--  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
-+  ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-linux-uclibc* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu)
-     targ_defvec=bfd_elf64_ia64_little_vec
-     targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec"
-     ;;
-@@ -227,7 +227,7 @@
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-     ;;
--  armeb-*-elf | arm*b-*-linux-gnu*)
-+  armeb-*-elf | arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_bigarm_vec
-     targ_selvecs=bfd_elf32_littlearm_vec
-     ;;
-@@ -235,8 +235,8 @@
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-     ;;
--  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \
--  arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks | \
-+  arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-linux-uclibc* | \
-+  arm*-*-conix* | arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks | \
-   arm*-*-eabi* )
-     targ_defvec=bfd_elf32_littlearm_vec
-     targ_selvecs=bfd_elf32_bigarm_vec
-@@ -381,7 +381,7 @@
-     ;;
- 
- #ifdef BFD64
--  hppa*64*-*-linux-gnu*)
-+  hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)
-     targ_defvec=bfd_elf64_hppa_linux_vec
-     targ_selvecs=bfd_elf64_hppa_vec
-     ;;
-@@ -392,7 +392,7 @@
-     ;;
- #endif
- 
--  hppa*-*-linux-gnu*)
-+  hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_hppa_linux_vec
-     targ_selvecs=bfd_elf32_hppa_vec
-     ;;
-@@ -525,7 +525,7 @@
-     targ_selvecs=bfd_elf32_i386_vec
-     targ_underscore=yes
-     ;;
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_i386_vec
-     targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec"
-     targ64_selvecs=bfd_elf64_x86_64_vec
-@@ -539,7 +539,7 @@
-     targ_defvec=bfd_elf64_x86_64_vec
-     targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec"
-     ;;
--  x86_64-*-linux-gnu*)
-+  x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*)
-     targ_defvec=bfd_elf64_x86_64_vec
-     targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec"
-     ;;
-@@ -715,7 +715,7 @@
-     targ_selvecs=bfd_elf32_m68k_vec
-     targ_underscore=yes
-     ;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_m68k_vec
-     targ_selvecs=m68klinux_vec
-     ;;
-@@ -1001,7 +1001,8 @@
-     ;;
- #endif
-   powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \
--  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \
-+  powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-linux-uclibc* | \
-+  powerpc-*-rtems* | \
-   powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*)
-     targ_defvec=bfd_elf32_powerpc_vec
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec"
-@@ -1038,8 +1039,8 @@
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
-     ;;
-   powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \
--  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\
--  powerpcle-*-rtems*)
-+  powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-linux-uclibc* |\
-+  powerpcle-*-vxworks* | powerpcle-*-rtems*)
-     targ_defvec=bfd_elf32_powerpcle_vec
-     targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec"
-     targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec"
-@@ -1209,7 +1210,7 @@
-     targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec"
-     targ_underscore=yes
-     ;;
--  sparc-*-linux-gnu*)
-+  sparc-*-linux-gnu* | sparc-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_sparc_vec
-     targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec"
-     ;;
-@@ -1256,7 +1257,7 @@
-     targ_defvec=sunos_big_vec
-     targ_underscore=yes
-     ;;
--  sparc64-*-linux-gnu*)
-+  sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)
-     targ_defvec=bfd_elf64_sparc_vec
-     targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec"
-     ;;
-@@ -1325,7 +1326,7 @@
-     targ_underscore=yes
-     ;;
- 
--  vax-*-linux-gnu*)
-+  vax-*-linux-gnu* | vax-*-linux-uclibc*)
-     targ_defvec=bfd_elf32_vax_vec
-     ;;
- 
-diff -ur binutils-2.15.94.0.2.orig/bfd/configure binutils-2.15.94.0.2/bfd/configure
---- binutils-2.15.94.0.2.orig/bfd/configure	2004-12-22 15:00:57.221024056 -0500
-+++ binutils-2.15.94.0.2/bfd/configure	2004-12-22 15:01:18.996713648 -0500
-@@ -3583,6 +3583,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -9914,7 +9919,7 @@
-   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
- 	COREFILE=''
- 	;;
--  alpha*-*-linux-gnu*)
-+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/alphalinux.h"'
- 	;;
-@@ -9978,7 +9983,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386mach3.h"'
- 	;;
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386linux.h"'
- 	;;
-@@ -10016,7 +10021,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/hp300bsd.h"'
- 	;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/m68klinux.h"'
- 	;;
-@@ -10150,7 +10155,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxult2.h"'
- 	;;
--  vax-*-linux-gnu*)
-+  vax-*-linux-gnu* | vax-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxlinux.h"'
- 	;;
-diff -ur binutils-2.15.94.0.2.orig/bfd/configure.in binutils-2.15.94.0.2/bfd/configure.in
---- binutils-2.15.94.0.2.orig/bfd/configure.in	2004-12-22 15:00:57.223023752 -0500
-+++ binutils-2.15.94.0.2/bfd/configure.in	2004-12-22 15:01:18.998713344 -0500
-@@ -163,7 +163,7 @@
-   alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu)
- 	COREFILE=''
- 	;;
--  alpha*-*-linux-gnu*)
-+  alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/alphalinux.h"'
- 	;;
-@@ -248,7 +248,7 @@
- 	TRAD_HEADER='"hosts/i386mach3.h"'
- 	;;
- changequote(,)dnl
--  i[3-7]86-*-linux-gnu*)
-+  i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*)
- changequote([,])dnl
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/i386linux.h"'
-@@ -289,7 +289,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/hp300bsd.h"'
- 	;;
--  m68*-*-linux-gnu*)
-+  m68*-*-linux-gnu* | m68*-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/m68klinux.h"'
- 	;;
-@@ -375,7 +375,7 @@
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxult2.h"'
- 	;;
--  vax-*-linux-gnu*)
-+  vax-*-linux-gnu* | vax-*-linux-uclibc*)
- 	COREFILE=trad-core.lo
- 	TRAD_HEADER='"hosts/vaxlinux.h"'
- 	;;
-diff -ur binutils-2.15.94.0.2.orig/binutils/configure binutils-2.15.94.0.2/binutils/configure
---- binutils-2.15.94.0.2.orig/binutils/configure	2004-12-22 15:00:57.351004296 -0500
-+++ binutils-2.15.94.0.2/binutils/configure	2004-12-22 15:01:19.002712736 -0500
-@@ -1575,6 +1575,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -ur binutils-2.15.94.0.2.orig/configure binutils-2.15.94.0.2/configure
---- binutils-2.15.94.0.2.orig/configure	2004-12-22 15:00:57.321008856 -0500
-+++ binutils-2.15.94.0.2/configure	2004-12-22 15:01:19.007711976 -0500
-@@ -1352,6 +1352,18 @@
-   i[3456789]86-*-coff | i[3456789]86-*-elf)
-     noconfigdirs="$noconfigdirs ${libgcj}"
-     ;;
-+  i[3456789]86-*-linux-uclibc*)
-+    # This section makes it possible to build newlib natively on linux.
-+    # If we are using a cross compiler then don't configure newlib.
-+    if test x${is_cross_compiler} != xno ; then
-+      noconfigdirs="$noconfigdirs target-newlib"
-+    fi
-+    noconfigdirs="$noconfigdirs target-libgloss"
-+    # If we are not using a cross compiler, do configure newlib.
-+    # Note however, that newlib will only be configured in this situation
-+    # if the --with-newlib option has been given, because otherwise
-+    # 'target-newlib' will appear in skipdirs.
-+    ;;
-   i[3456789]86-*-linux*)
-     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
-     # not build java stuff by default.
-diff -ur binutils-2.15.94.0.2.orig/configure.in binutils-2.15.94.0.2/configure.in
---- binutils-2.15.94.0.2.orig/configure.in	2004-12-22 15:00:57.321008856 -0500
-+++ binutils-2.15.94.0.2/configure.in	2004-12-22 15:01:19.010711520 -0500
-@@ -561,6 +561,18 @@
-   i[[3456789]]86-*-coff | i[[3456789]]86-*-elf)
-     noconfigdirs="$noconfigdirs ${libgcj}"
-     ;;
-+  i[[3456789]]86-*-linux-uclibc*)
-+    # This section makes it possible to build newlib natively on linux.
-+    # If we are using a cross compiler then don't configure newlib.
-+    if test x${is_cross_compiler} != xno ; then
-+      noconfigdirs="$noconfigdirs target-newlib"
-+    fi
-+    noconfigdirs="$noconfigdirs target-libgloss"
-+    # If we are not using a cross compiler, do configure newlib.
-+    # Note however, that newlib will only be configured in this situation
-+    # if the --with-newlib option has been given, because otherwise
-+    # 'target-newlib' will appear in skipdirs.
-+    ;;
-   i[[3456789]]86-*-linux*)
-     # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's
-     # not build java stuff by default.
-diff -ur binutils-2.15.94.0.2.orig/gas/configure binutils-2.15.94.0.2/gas/configure
---- binutils-2.15.94.0.2.orig/gas/configure	2004-12-22 15:00:57.461987424 -0500
-+++ binutils-2.15.94.0.2/gas/configure	2004-12-22 15:01:19.019710152 -0500
-@@ -3420,6 +3420,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -4256,6 +4261,7 @@
-       alpha*-*-osf*)			fmt=ecoff ;;
-       alpha*-*-linuxecoff*)		fmt=ecoff ;;
-       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
-+      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
-       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
-       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
- 
-@@ -4272,6 +4278,7 @@
-       arm-*-linux*aout*)		fmt=aout em=linux ;;
-       arm*-*-linux-gnueabi*)		fmt=elf  em=armlinuxeabi ;;
-       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
-+      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
-       arm*-*-uclinux*)			fmt=elf  em=linux ;;
-       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
-       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
-@@ -4285,6 +4292,7 @@
- 
-       cris-*-linux-gnu* | crisv32-*-linux-gnu*)
- 					fmt=multi bfd_gas=yes em=linux ;;
-+      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
-       cris-*-* | crisv32-*-*)		fmt=multi bfd_gas=yes ;;
- 
-       crx-*-elf*)	    		fmt=elf ;;
-@@ -4344,7 +4352,9 @@
-       i386-*-linux*oldld)		fmt=aout em=linux ;;
-       i386-*-linux*coff*)		fmt=coff em=linux ;;
-       i386-*-linux-gnu*)		fmt=elf em=linux ;;
-+      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
-       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       i386-*-lynxos*)			fmt=elf em=lynx bfd_gas=yes ;;
-       i386-*-sysv[45]*)			fmt=elf ;;
-       i386-*-solaris*)			fmt=elf ;;
-@@ -4404,6 +4414,7 @@
-       ia64-*-elf*)			fmt=elf ;;
-       ia64-*-aix*)			fmt=elf em=ia64aix ;;
-       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       ia64-*-hpux*)			fmt=elf em=hpux ;;
-       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
- 
-@@ -4431,6 +4442,7 @@
-       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
-       m68k-*-linux*aout*)		fmt=aout em=linux ;;
-       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
-+      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
-       m68k-*-uclinux*)			fmt=elf ;;
-       m68k-*-gnu*)			fmt=elf ;;
-       m68k-*-lynxos*)			fmt=coff em=lynx ;;
-@@ -4505,6 +4517,7 @@
-       ppc-*-beos*)			fmt=coff ;;
-       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
-       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
-+      ppc-*-linux-uclibc* | \
-       ppc-*-linux-gnu*)			fmt=elf em=linux
- 	    case "$endian" in
- 		big)  ;;
-@@ -4532,7 +4545,9 @@
-       ppc-*-lynxos*)			fmt=elf em=lynx bfd_gas=yes ;;
- 
-       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
-       s390-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
-       s390-*-tpf*)			fmt=elf ;;
- 
-       sh*-*-linux*)			fmt=elf em=linux
-@@ -4568,6 +4583,7 @@
-       sparc-*-coff)			fmt=coff ;;
-       sparc-*-linux*aout*)		fmt=aout em=linux ;;
-       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
-+      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
-       sparc-*-lynxos*)			fmt=coff em=lynx ;;
-       sparc-fujitsu-none)		fmt=aout ;;
-       sparc-*-elf)			fmt=elf ;;
-diff -ur binutils-2.15.94.0.2.orig/gas/configure.in binutils-2.15.94.0.2/gas/configure.in
---- binutils-2.15.94.0.2.orig/gas/configure.in	2004-12-22 15:00:57.461987424 -0500
-+++ binutils-2.15.94.0.2/gas/configure.in	2004-12-22 15:01:19.022709696 -0500
-@@ -202,6 +202,7 @@
-       alpha*-*-osf*)			fmt=ecoff ;;
-       alpha*-*-linuxecoff*)		fmt=ecoff ;;
-       alpha*-*-linux-gnu*)		fmt=elf em=linux ;;
-+      alpha*-*-linux-uclibc*)		fmt=elf em=linux ;;
-       alpha*-*-netbsd*)			fmt=elf em=nbsd ;;
-       alpha*-*-openbsd*)		fmt=elf em=obsd ;;
- 
-@@ -218,6 +219,7 @@
-       arm-*-linux*aout*)		fmt=aout em=linux ;;
-       arm*-*-linux-gnueabi*)		fmt=elf  em=armlinuxeabi ;;	 
-       arm*-*-linux-gnu*)		fmt=elf  em=linux ;;
-+      arm*-*-linux-uclibc*)		fmt=elf  em=linux ;;
-       arm*-*-uclinux*)			fmt=elf  em=linux ;;
-       arm-*-netbsdelf*)                 fmt=elf  em=nbsd ;;
-       arm-*-*n*bsd*)			fmt=aout em=nbsd ;;
-@@ -231,6 +233,7 @@
- 
-       cris-*-linux-gnu* | crisv32-*-linux-gnu*)
- 					fmt=multi bfd_gas=yes em=linux ;;
-+      cris-*-linux-uclibc*)		fmt=multi bfd_gas=yes em=linux ;;
-       cris-*-* | crisv32-*-*)		fmt=multi bfd_gas=yes ;;
- 
-       crx-*-elf*)	    		fmt=elf ;;
-@@ -290,7 +293,9 @@
-       i386-*-linux*oldld)		fmt=aout em=linux ;;
-       i386-*-linux*coff*)		fmt=coff em=linux ;;
-       i386-*-linux-gnu*)		fmt=elf em=linux ;;
-+      i386-*-linux-uclibc*)		fmt=elf em=linux ;;
-       x86_64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      x86_64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       i386-*-lynxos*)			fmt=elf em=lynx bfd_gas=yes ;;
- changequote(,)dnl
-       i386-*-sysv[45]*)			fmt=elf ;;
-@@ -343,6 +348,7 @@
-       ia64-*-elf*)			fmt=elf ;;
-       ia64-*-aix*)			fmt=elf em=ia64aix ;;
-       ia64-*-linux-gnu*)		fmt=elf em=linux ;;
-+      ia64-*-linux-uclibc*)		fmt=elf em=linux ;;
-       ia64-*-hpux*)			fmt=elf em=hpux ;;
-       ia64-*-netbsd*)			fmt=elf em=nbsd ;;
- 
-@@ -370,6 +376,7 @@
-       m68k-*-hpux*)			fmt=hp300 em=hp300 ;;
-       m68k-*-linux*aout*)		fmt=aout em=linux ;;
-       m68k-*-linux-gnu*)		fmt=elf em=linux ;;
-+      m68k-*-linux-uclibc*)		fmt=elf em=linux ;;
-       m68k-*-uclinux*)			fmt=elf ;;
-       m68k-*-gnu*)			fmt=elf ;;
-       m68k-*-lynxos*)			fmt=coff em=lynx ;;
-@@ -441,6 +448,7 @@
-       ppc-*-beos*)			fmt=coff ;;
-       ppc-*-*n*bsd* | ppc-*-elf*)	fmt=elf ;;
-       ppc-*-eabi* | ppc-*-sysv4*)	fmt=elf ;;
-+      ppc-*-linux-uclibc* | \
-       ppc-*-linux-gnu*)			fmt=elf em=linux
- 	    case "$endian" in
- 		big)  ;;
-@@ -461,7 +469,9 @@
-       ppc-*-lynxos*)			fmt=elf em=lynx bfd_gas=yes ;;
- 
-       s390x-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390x-*-linux-uclibc*)		fmt=elf em=linux ;;
-       s390-*-linux-gnu*)		fmt=elf em=linux ;;
-+      s390-*-linux-uclibc*)		fmt=elf em=linux ;;
-       s390-*-tpf*)			fmt=elf ;;
- 
-       sh*-*-linux*)			fmt=elf em=linux
-@@ -493,6 +503,7 @@
-       sparc-*-coff)			fmt=coff ;;
-       sparc-*-linux*aout*)		fmt=aout em=linux ;;
-       sparc-*-linux-gnu*)		fmt=elf em=linux ;;
-+      sparc-*-linux-uclibc*)		fmt=elf em=linux ;;
-       sparc-*-lynxos*)			fmt=coff em=lynx ;;
-       sparc-fujitsu-none)		fmt=aout ;;
-       sparc-*-elf)			fmt=elf ;;
-diff -ur binutils-2.15.94.0.2.orig/gprof/configure binutils-2.15.94.0.2/gprof/configure
---- binutils-2.15.94.0.2.orig/gprof/configure	2004-12-22 15:00:57.949913248 -0500
-+++ binutils-2.15.94.0.2/gprof/configure	2004-12-22 15:01:19.030708480 -0500
-@@ -3418,6 +3418,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -ur binutils-2.15.94.0.2.orig/ld/configure binutils-2.15.94.0.2/ld/configure
---- binutils-2.15.94.0.2.orig/ld/configure	2004-12-22 15:00:58.032900632 -0500
-+++ binutils-2.15.94.0.2/ld/configure	2004-12-22 15:01:19.035707720 -0500
-@@ -1579,6 +1579,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -ur binutils-2.15.94.0.2.orig/ld/configure.tgt binutils-2.15.94.0.2/ld/configure.tgt
---- binutils-2.15.94.0.2.orig/ld/configure.tgt	2004-12-22 15:00:58.033900480 -0500
-+++ binutils-2.15.94.0.2/ld/configure.tgt	2004-12-22 15:01:19.036707568 -0500
-@@ -32,6 +32,7 @@
- 			targ_extra_libpath=$targ_extra_emuls ;;
- cris-*-linux-gnu* | cris-*-linux-gnu*)
- 			targ_emul=crislinux ;;
-+cris-*-linux-uclibc*)	targ_emul=crislinux ;;
- cris-*-* | crisv32-*-*)	targ_emul=criself
- 			targ_extra_emuls="crisaout crislinux"
- 			targ_extra_libpath=$targ_extra_emuls ;;
-@@ -62,14 +63,16 @@
- 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'`
- 			tdir_sun4=sparc-sun-sunos4
- 			;;
--sparc64-*-linux-gnu*)	targ_emul=elf64_sparc
-+sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*)	 \
-+			targ_emul=elf64_sparc
- 			targ_extra_emuls="elf32_sparc sparclinux sun4"
- 			targ_extra_libpath=elf32_sparc
- 			tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'`
- 			tdir_sparclinux=${tdir_elf32_sparc}aout
- 			tdir_sun4=sparc-sun-sunos4
- 			;;
--sparc*-*-linux-gnu*)	targ_emul=elf32_sparc
-+sparc*-*-linux-gnu* | sparc*-*-linux-uclibc*) \
-+			targ_emul=elf32_sparc
- 			targ_extra_emuls="sparclinux elf64_sparc sun4"
- 			targ_extra_libpath=elf64_sparc
- 			tdir_sparclinux=${targ_alias}aout
-@@ -121,7 +124,9 @@
- m32r*le-*-elf*)         targ_emul=m32rlelf ;;
- m32r*-*-elf*)           targ_emul=m32relf ;;
- m32r*le-*-linux-gnu*)   targ_emul=m32rlelf_linux ;;
-+m32r*le-*-linux-uclibc*) targ_emul=m32rlelf_linux ;;
- m32r*-*-linux-gnu*)     targ_emul=m32relf_linux ;;
-+m32r*-*-linux-uclibc*)  targ_emul=m32relf_linux ;;
- m68hc11-*-*|m6811-*-*)	targ_emul=m68hc11elf 
- 			targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;;
- m68hc12-*-*|m6812-*-*)	targ_emul=m68hc12elf 
-@@ -132,7 +137,7 @@
- m68*-apple-aux*)	targ_emul=m68kaux ;;
- maxq-*-coff)            targ_emul=maxqcoff;;
- *-tandem-none)		targ_emul=st2000 ;;
--i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;;
-+i370-*-elf* | i370-*-linux-gnu* | i370-*-linux-uclibc*) targ_emul=elf32i370 ;;
- i[3-7]86-*-nto-qnx*)	targ_emul=i386nto ;;
- i[3-7]86-*-vsta)	targ_emul=vsta ;;
- i[3-7]86-go32-rtems*)	targ_emul=i386go32 ;;
-@@ -156,14 +161,16 @@
- 			tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'`
- 			;;
- i[3-7]86-*-linux*oldld)	targ_emul=i386linux; targ_extra_emuls=elf_i386 ;;
--i[3-7]86-*-linux-gnu*)	targ_emul=elf_i386
-+i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) \
-+			targ_emul=elf_i386
- 			targ_extra_emuls=i386linux
- 			if test x${want64} = xtrue; then
- 			  targ_extra_emuls="$targ_extra_emuls elf_x86_64"
- 			fi
- 			tdir_i386linux=${targ_alias}aout
- 			;;
--x86_64-*-linux-gnu*)	targ_emul=elf_x86_64
-+x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) \
-+			targ_emul=elf_x86_64
- 			targ_extra_emuls="elf_i386 i386linux"
- 			targ_extra_libpath=elf_i386
- 			tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'`
-@@ -263,11 +270,14 @@
- arm-*-kaos*)		targ_emul=armelf ;;
- arm9e-*-elf)		targ_emul=armelf ;;
- arm*b-*-linux-gnu*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
-+arm*b-*-linux-uclibc*)	targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;;
- arm*-*-linux-gnueabi)	targ_emul=armelf_linux_eabi ;;
- arm*-*-linux-gnu*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
-+arm*-*-linux-uclibc*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- arm*-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- arm*-*-conix*)		targ_emul=armelf ;;
--thumb-*-linux-gnu* | thumb-*-uclinux*)	targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
-+thumb-*-linux-gnu* | thumb-*-linux-uclibc* | thumb-*-uclinux*) \
-+			targ_emul=armelf_linux; targ_extra_emuls=armelf ;;
- strongarm-*-coff)	targ_emul=armcoff ;;
- strongarm-*-elf)	targ_emul=armelf ;;
- strongarm-*-kaos*)	targ_emul=armelf ;;
-@@ -371,7 +381,8 @@
- 			targ_extra_emuls=m68kelf
- 			tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'`
- 			;;
--m68k-*-linux-gnu*)	targ_emul=m68kelf
-+m68k-*-linux-gnu* | m68k-*-linux-uclibc*) \
-+			targ_emul=m68kelf
- 			targ_extra_emuls=m68klinux
- 			tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'`
- 			;;
-@@ -388,9 +399,9 @@
- m68*-*-psos*)		targ_emul=m68kpsos ;;
- m68*-*-rtemscoff*)	targ_emul=m68kcoff ;;
- m68*-*-rtems*)		targ_emul=m68kelf ;;
--hppa*64*-*-linux-gnu*)	targ_emul=hppa64linux ;;
-+hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*)  targ_emul=hppa64linux ;;
- hppa*64*-*)		targ_emul=elf64hppa ;;
--hppa*-*-linux-gnu*)	targ_emul=hppalinux ;;
-+hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*)	targ_emul=hppalinux ;;
- hppa*-*-*elf*)		targ_emul=hppaelf ;;
- hppa*-*-lites*)		targ_emul=hppaelf ;;
- hppa*-*-netbsd*)	targ_emul=hppanbsd ;;
-@@ -403,6 +414,7 @@
- 			targ_emul=vaxnbsd
- 			targ_extra_emuls=elf32vax ;;
- vax-*-linux-gnu*)	targ_emul=elf32vax ;;
-+vax-*-linux-uclibc*)	targ_emul=elf32vax ;;
- mips*-*-pe)		targ_emul=mipspe ;
- 			targ_extra_ofiles="deffilep.o pe-dll.o" ;;
- mips*-dec-ultrix*)	targ_emul=mipslit ;;
-@@ -436,16 +448,16 @@
- mips*-*-vxworks*)	targ_emul=elf32ebmip
- 		        targ_extra_emuls="elf32elmip" ;;
- mips*-*-windiss)	targ_emul=elf32mipswindiss ;;
--mips64*el-*-linux-gnu*)	targ_emul=elf32ltsmipn32
-+mips64*el-*-linux-gnu* | mips64*el-*-linux-uclibc*)	targ_emul=elf32ltsmipn32
- 			targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip"
- 			;;
--mips64*-*-linux-gnu*)	targ_emul=elf32btsmipn32
-+mips64*-*-linux-gnu* | mips64*-*-linux-uclibc*)	targ_emul=elf32btsmipn32
- 			targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip"
- 			;;
--mips*el-*-linux-gnu*)	targ_emul=elf32ltsmip
-+mips*el-*-linux-gnu* | mips*el-*-linux-uclibc*)	targ_emul=elf32ltsmip
- 			targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip"
- 			;;
--mips*-*-linux-gnu*)	targ_emul=elf32btsmip
-+mips*-*-linux-gnu* | mips*-*-linux-uclibc*)	targ_emul=elf32btsmip
- 			targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip"
- 			;;
- mips*-*-lnews*)		targ_emul=mipslnews ;;
-@@ -468,6 +480,10 @@
- alpha*-*-linux-gnu*)	targ_emul=elf64alpha targ_extra_emuls=alpha
- 			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
- 			;;
-+alpha*-*-linux-uclibc*)	targ_emul=elf64alpha targ_extra_emuls=alpha
-+			# The following needs to be checked...
-+			tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'`
-+			;;
- alpha*-*-osf*)		targ_emul=alpha ;;
- alpha*-*-gnu*)		targ_emul=elf64alpha ;;
- alpha*-*-netware*)	targ_emul=alpha ;;
-diff -ur binutils-2.15.94.0.2.orig/ld/emultempl/elf32.em binutils-2.15.94.0.2/ld/emultempl/elf32.em
---- binutils-2.15.94.0.2.orig/ld/emultempl/elf32.em	2004-12-22 15:00:58.044898808 -0500
-+++ binutils-2.15.94.0.2/ld/emultempl/elf32.em	2004-12-22 15:01:19.038707264 -0500
-@@ -65,7 +65,7 @@
- 
- if [ "x${USE_LIBPATH}" = xyes ] ; then
-   case ${target} in
--    *-*-linux-gnu*)
-+    *-*-linux-gnu* | *-*-linux-uclibc*)
-   cat >>e${EMULATION_NAME}.c <<EOF
- #include <glob.h>
- EOF
-@@ -337,7 +337,7 @@
- 
- EOF
- case ${target} in
--  *-*-linux-gnu*)
-+  *-*-linux-gnu* | *-*-linux-uclibc*)
-     cat >>e${EMULATION_NAME}.c <<EOF
- 	  {
- 	    struct bfd_link_needed_list *l;
-@@ -510,7 +510,7 @@
- 
- EOF
-   case ${target} in
--    *-*-linux-gnu*)
-+    *-*-linux-gnu* | *-*-linux-uclibc*)
-       cat >>e${EMULATION_NAME}.c <<EOF
- /* For a native linker, check the file /etc/ld.so.conf for directories
-    in which we may find shared libraries.  /etc/ld.so.conf is really
-@@ -894,7 +894,7 @@
- EOF
- if [ "x${USE_LIBPATH}" = xyes ] ; then
-   case ${target} in
--    *-*-linux-gnu*)
-+    *-*-linux-gnu* | *-*-linux-uclibc*)
-       cat >>e${EMULATION_NAME}.c <<EOF
- 	  if (gld${EMULATION_NAME}_check_ld_so_conf (l->name, force))
- 	    break;
-diff -ur binutils-2.15.94.0.2.orig/libiberty/configure binutils-2.15.94.0.2/libiberty/configure
---- binutils-2.15.94.0.2.orig/libiberty/configure	2004-12-22 15:00:59.263713520 -0500
-+++ binutils-2.15.94.0.2/libiberty/configure	2004-12-22 15:03:55.744884304 -0500
-@@ -3682,6 +3682,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-diff -ur binutils-2.15.94.0.2.orig/libtool.m4 binutils-2.15.94.0.2/libtool.m4
---- binutils-2.15.94.0.2.orig/libtool.m4	2004-12-22 15:00:57.329007640 -0500
-+++ binutils-2.15.94.0.2/libtool.m4	2004-12-22 15:01:19.039707112 -0500
-@@ -645,6 +645,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
-diff -ur binutils-2.15.94.0.2.orig/ltconfig binutils-2.15.94.0.2/ltconfig
---- binutils-2.15.94.0.2.orig/ltconfig	2004-12-22 15:00:57.330007488 -0500
-+++ binutils-2.15.94.0.2/ltconfig	2004-12-22 15:01:19.041706808 -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
- 
-@@ -1270,6 +1271,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 -ur binutils-2.15.94.0.2.orig/opcodes/configure binutils-2.15.94.0.2/opcodes/configure
---- binutils-2.15.94.0.2.orig/opcodes/configure	2004-12-22 15:00:59.334702728 -0500
-+++ binutils-2.15.94.0.2/opcodes/configure	2004-12-22 15:01:19.053704984 -0500
-@@ -3587,6 +3587,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/binutils/2.15.94.0.2.2/300-006_better_file_error.patch
===================================================================
--- toolchain/binutils/2.15.94.0.2.2/300-006_better_file_error.patch	(revision 20005)
+++ toolchain/binutils/2.15.94.0.2.2/300-006_better_file_error.patch	(working copy)
@@ -1,43 +0,0 @@
-#!/bin/sh -e
-## 006_better_file_error.dpatch by David Kimdon <dwhedon@gordian.com>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Specify which filename is causing an error if the filename is a
-## DP: directory. (#45832)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c binutils-2.14.90.0.6/bfd/opncls.c
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/bfd/opncls.c	2003-07-23 16:08:09.000000000 +0100
-+++ binutils-2.14.90.0.6/bfd/opncls.c	2003-09-10 22:35:00.000000000 +0100
-@@ -150,6 +150,13 @@
- {
-   bfd *nbfd;
-   const bfd_target *target_vec;
-+  struct stat s;
-+
-+  if (stat (filename, &s) == 0)
-+    if (S_ISDIR(s.st_mode)) {
-+      bfd_set_error (bfd_error_file_not_recognized);
-+      return NULL;
-+    }
- 
-   nbfd = _bfd_new_bfd ();
-   if (nbfd == NULL)
Index: toolchain/binutils/2.15.94.0.2.2/sh-flags-off-by-one.patch
===================================================================
--- toolchain/binutils/2.15.94.0.2.2/sh-flags-off-by-one.patch	(revision 20005)
+++ toolchain/binutils/2.15.94.0.2.2/sh-flags-off-by-one.patch	(working copy)
@@ -1,21 +0,0 @@
-2005-08-25  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
-
-	* elf32-sh.c (sh_elf_get_flags_from_mach): Fix off-by-one error.
-
-Index: bfd/elf32-sh.c
-===================================================================
-RCS file: /cvs/src/src/bfd/elf32-sh.c,v
-retrieving revision 1.128
-retrieving revision 1.129
-diff -u -p -r1.128 -r1.129
---- binutils/bfd/elf32-sh.c	25 Aug 2005 02:32:10 -0000	1.128
-+++ binutils/bfd/elf32-sh.c	25 Aug 2005 05:10:22 -0000	1.129
-@@ -6655,7 +6655,7 @@ sh_elf_set_mach_from_flags (bfd *abfd)
- int
- sh_elf_get_flags_from_mach (unsigned long mach)
- {
--  int i = ARRAY_SIZE (sh_ef_bfd_table);
-+  int i = ARRAY_SIZE (sh_ef_bfd_table) - 1;
-   
-   for (; i>0; i--)
-     if (sh_ef_bfd_table[i] == mach)
Index: toolchain/binutils/2.15.94.0.2.2/400-mips-ELF_MAXPAGESIZE-4K.patch
===================================================================
--- toolchain/binutils/2.15.94.0.2.2/400-mips-ELF_MAXPAGESIZE-4K.patch	(revision 20005)
+++ toolchain/binutils/2.15.94.0.2.2/400-mips-ELF_MAXPAGESIZE-4K.patch	(working copy)
@@ -1,26 +0,0 @@
---- binutils/bfd/elf32-mips.c~
-+++ binutils/bfd/elf32-mips.c
-@@ -1611,7 +1611,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
---- binutils/bfd/elfn32-mips.c~
-+++ binutils/bfd/elfn32-mips.c
-@@ -1976,7 +1976,9 @@
- 
- /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses
-    page sizes of up to that limit, so we need to respect it.  */
--#define ELF_MAXPAGESIZE			0x10000
-+/*#define ELF_MAXPAGESIZE			0x10000*/
-+/* Use 4K to shrink the elf header.  NOT for general use! */
-+#define ELF_MAXPAGESIZE			0x1000
- #define elf32_bed			elf32_tradbed
- 
- /* Include the target file again for this target.  */
Index: toolchain/binutils/2.15.94.0.2.2/300-120_mips_xgot_multigot_workaround.patch
===================================================================
--- toolchain/binutils/2.15.94.0.2.2/300-120_mips_xgot_multigot_workaround.patch	(revision 20005)
+++ toolchain/binutils/2.15.94.0.2.2/300-120_mips_xgot_multigot_workaround.patch	(working copy)
@@ -1,39 +0,0 @@
-#! /bin/sh -e
-## 120_mips_xgot_multigot_workaround.dpatch
-##
-## DP: Description: Make multigot/xgot handling mutually exclusive.
-## DP: Author: Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
-## DP: Upstream status: Not submitted
-## DP: Date: 2004-09-17
-
-if [ $# -lt 1 ]; then
-    echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch} ${2:+-d $2}"
-
-case "$1" in
-    -patch) patch -p1 ${patch_opts} < $0;;
-    -unpatch) patch -R -p1 ${patch_opts} < $0;;
-    *)
-        echo "`basename $0`: script expects -patch|-unpatch as argument" >&2
-        exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.15/bfd/elfxx-mips.c binutils-2.15/bfd/elfxx-mips.c
---- /home/james/debian/packages/binutils/binutils-2.15/bfd/elfxx-mips.c	2004-09-23 22:41:37.156466673 +0100
-+++ binutils-2.15/bfd/elfxx-mips.c	2004-09-23 22:42:15.998362861 +0100
-@@ -5883,6 +5883,8 @@
-   s->size += i * MIPS_ELF_GOT_SIZE (output_bfd);
- 
-   if (s->size > MIPS_ELF_GOT_MAX_SIZE (output_bfd)
-+      && g->global_gotno <= (MIPS_ELF_GOT_MAX_SIZE (output_bfd)
-+                            / MIPS_ELF_GOT_SIZE (output_bfd))
-       && ! mips_elf_multi_got (output_bfd, info, g, s, local_gotno))
-     return FALSE;
- 
Index: toolchain/binutils/2.15.94.0.2.2/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.15.94.0.2.2/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.15.94.0.2.2/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,52 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.am binutils-2.14.90.0.6/ld/Makefile.am
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.am	2003-08-21 16:28:48.000000000 +0100
-+++ binutils-2.14.90.0.6/ld/Makefile.am	2003-09-10 23:12:09.000000000 +0100
-@@ -19,7 +19,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
-diff -urNad /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.in binutils-2.14.90.0.6/ld/Makefile.in
---- /home/james/debian/packages/binutils/binutils-2.14.90.0.6/ld/Makefile.in	2003-08-21 16:28:48.000000000 +0100
-+++ binutils-2.14.90.0.6/ld/Makefile.in	2003-09-10 23:12:09.000000000 +0100
-@@ -128,7 +128,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
Index: toolchain/binutils/2.15.94.0.2.2/210-cflags.patch
===================================================================
--- toolchain/binutils/2.15.94.0.2.2/210-cflags.patch	(revision 20005)
+++ toolchain/binutils/2.15.94.0.2.2/210-cflags.patch	(working copy)
@@ -1,32 +0,0 @@
-diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.am binutils-2.14.90.0.6.new/bfd/doc/Makefile.am
---- binutils-2.14.90.0.6/bfd/doc/Makefile.am	2003-07-23 10:08:09.000000000 -0500
-+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.am	2004-03-01 16:05:16.000000000 -0600
-@@ -55,10 +55,10 @@
- MKDOC = chew$(EXEEXT_FOR_BUILD)
- 
- $(MKDOC): chew.o
--	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
-+	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
- 
- chew.o: chew.c
--	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
-+	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
- 
- protos: libbfd.h libcoff.h bfd.h
- 
-diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.in binutils-2.14.90.0.6.new/bfd/doc/Makefile.in
---- binutils-2.14.90.0.6/bfd/doc/Makefile.in	2003-07-23 10:08:09.000000000 -0500
-+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.in	2004-03-01 16:05:03.000000000 -0600
-@@ -469,10 +469,10 @@
- 
- 
- $(MKDOC): chew.o
--	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS)
-+	$(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS)
- 
- chew.o: chew.c
--	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c
-+	$(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c
- 
- protos: libbfd.h libcoff.h bfd.h
- 
Index: toolchain/binutils/2.17.50.0.8/300-012_check_ldrunpath_length.patch
===================================================================
--- toolchain/binutils/2.17.50.0.8/300-012_check_ldrunpath_length.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.8/300-012_check_ldrunpath_length.patch	(working copy)
@@ -1,47 +0,0 @@
-#!/bin/sh -e
-## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
-## DP: cases where -rpath isn't specified. (#151024)
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
-diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
---- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:58.000000000 +0100
-+++ binutils-2.15/ld/emultempl/elf32.em	2004-05-21 23:12:59.000000000 +0100
-@@ -692,6 +692,8 @@
- 	      && command_line.rpath == NULL)
- 	    {
- 	      lib_path = (const char *) getenv ("LD_RUN_PATH");
-+	      if ((lib_path) && (strlen (lib_path) == 0))
-+		  lib_path = NULL;
- 	      if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
- 						      force))
- 		break;
-@@ -871,6 +873,8 @@
-   rpath = command_line.rpath;
-   if (rpath == NULL)
-     rpath = (const char *) getenv ("LD_RUN_PATH");
-+  if ((rpath) && (strlen (rpath) == 0))
-+      rpath = NULL;
-   if (! (bfd_elf_size_dynamic_sections
- 	 (output_bfd, command_line.soname, rpath,
- 	  command_line.filter_shlib,
Index: toolchain/binutils/2.17.50.0.8/100-uclibc-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.8/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.8/100-uclibc-conf.patch	(working copy)
@@ -1,139 +0,0 @@
---- binutils-2.16.91.0.7/bfd/configure
-+++ binutils-2.16.91.0.7/bfd/configure
-@@ -3576,7 +3576,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/binutils/configure
-+++ binutils-2.16.91.0.7/binutils/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/configure
-+++ binutils-2.16.91.0.7/configure
-@@ -1270,7 +1270,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -1578,7 +1578,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[3456789]86-*-vsta) ;; # don't add gprof back in
-       i[3456789]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/configure.in
-+++ binutils-2.16.91.0.7/configure.in
-@@ -468,7 +468,7 @@
-   am33_2.0-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;
--  sh-*-linux*)
-+  sh*-*-linux*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
-     ;;    
-   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
-@@ -776,7 +776,7 @@
-   romp-*-*)
-     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
-     ;;
--  sh-*-* | sh64-*-*)
-+  sh*-*-* | sh64-*-*)
-     case "${host}" in
-       i[[3456789]]86-*-vsta) ;; # don't add gprof back in
-       i[[3456789]]86-*-go32*) ;; # don't add gprof back in
---- binutils-2.16.91.0.7/gas/configure
-+++ binutils-2.16.91.0.7/gas/configure
-@@ -3411,7 +3411,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/gprof/configure
-+++ binutils-2.16.91.0.7/gprof/configure
-@@ -3419,6 +3419,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* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- binutils-2.16.91.0.7/ld/configure
-+++ binutils-2.16.91.0.7/ld/configure
-@@ -3413,7 +3413,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/libtool.m4
-+++ binutils-2.16.91.0.7/libtool.m4
-@@ -739,7 +739,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
---- binutils-2.16.91.0.7/ltconfig
-+++ binutils-2.16.91.0.7/ltconfig
-@@ -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
-@@ -1247,7 +1248,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   version_type=linux
-   need_lib_prefix=no
-   need_version=no
---- binutils-2.16.91.0.7/opcodes/configure
-+++ binutils-2.16.91.0.7/opcodes/configure
-@@ -3579,7 +3579,7 @@
-   ;;
- 
- # This must be Linux ELF.
--linux-gnu*)
-+linux-gnu*|linux-uclibc*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
Index: toolchain/binutils/2.17.50.0.8/300-001_ld_makefile_patch.patch
===================================================================
--- toolchain/binutils/2.17.50.0.8/300-001_ld_makefile_patch.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.8/300-001_ld_makefile_patch.patch	(working copy)
@@ -1,50 +0,0 @@
-#!/bin/sh -e
-## 001_ld_makefile_patch.dpatch
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: correct where ld scripts are installed
-## DP: Author: Chris Chimelis <chris@debian.org>
-## DP: Upstream status: N/A
-## DP: Date: ??
-
-if [ $# -ne 1 ]; then
-    echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-    exit 1
-fi
-
-[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
-patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
-
-case "$1" in
-       -patch) patch $patch_opts -p1 < $0;;
-       -unpatch) patch $patch_opts -p1 -R < $0;;
-        *)
-                echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
-                exit 1;;
-esac
-
-exit 0
-
-@DPATCH@
---- binutils-2.16.91.0.1/ld/Makefile.am
-+++ binutils-2.16.91.0.1/ld/Makefile.am
-@@ -20,7 +20,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- 
- EMUL = @EMUL@
- EMULATION_OFILES = @EMULATION_OFILES@
---- binutils-2.16.91.0.1/ld/Makefile.in
-+++ binutils-2.16.91.0.1/ld/Makefile.in
-@@ -268,7 +268,7 @@
- # We put the scripts in the directory $(scriptdir)/ldscripts.
- # We can't put the scripts in $(datadir) because the SEARCH_DIR
- # directives need to be different for native and cross linkers.
--scriptdir = $(tooldir)/lib
-+scriptdir = $(libdir)
- BASEDIR = $(srcdir)/..
- BFDDIR = $(BASEDIR)/bfd
- INCDIR = $(BASEDIR)/include
Index: toolchain/binutils/2.17.50.0.8/110-arm-eabi-conf.patch
===================================================================
--- toolchain/binutils/2.17.50.0.8/110-arm-eabi-conf.patch	(revision 20005)
+++ toolchain/binutils/2.17.50.0.8/110-arm-eabi-conf.patch	(working copy)
@@ -1,24 +0,0 @@
-diff -urN binutils-2.16.91.0.7.orig/configure binutils-2.16.91.0.7/configure
---- binutils-2.16.91.0.7.orig/configure	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure	2006-05-31 14:55:53.000000000 +0300
-@@ -1299,7 +1299,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
-diff -urN binutils-2.16.91.0.7.orig/configure.in binutils-2.16.91.0.7/configure.in
---- binutils-2.16.91.0.7.orig/configure.in	2006-05-31 14:54:24.000000000 +0300
-+++ binutils-2.16.91.0.7/configure.in	2006-05-31 14:55:53.000000000 +0300
-@@ -497,7 +497,7 @@
-   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
--  arm*-*-linux-gnueabi)
-+  arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-     ;;
Index: toolchain/gcc/4.0.0/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/4.0.0/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/4.0.0/100-uclibc-conf.patch	(working copy)
@@ -1,478 +0,0 @@
-diff -urN gcc-4.0.0-dist/boehm-gc/configure gcc-4.0.0/boehm-gc/configure
---- gcc-4.0.0-dist/boehm-gc/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/boehm-gc/configure	2005-04-30 13:22:27.495094224 -0500
-@@ -4320,6 +4320,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/configure gcc-4.0.0/configure
---- gcc-4.0.0-dist/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/configure	2005-04-30 12:27:56.000000000 -0500
-@@ -1136,7 +1136,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-diff -urN gcc-4.0.0-dist/configure.in gcc-4.0.0/configure.in
---- gcc-4.0.0-dist/configure.in	2005-04-20 21:45:11.000000000 -0500
-+++ gcc-4.0.0/configure.in	2005-04-30 12:22:09.000000000 -0500
-@@ -345,7 +345,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-diff -urN gcc-4.0.0-dist/contrib/regression/objs-gcc.sh gcc-4.0.0/contrib/regression/objs-gcc.sh
---- gcc-4.0.0-dist/contrib/regression/objs-gcc.sh	2002-10-11 15:23:21.000000000 -0500
-+++ gcc-4.0.0/contrib/regression/objs-gcc.sh	2005-04-30 12:29:58.000000000 -0500
-@@ -105,6 +105,10 @@
-  then
-   make all-gdb all-dejagnu all-ld || exit 1
-   make install-gdb install-dejagnu install-ld || exit 1
-+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-+ then
-+  make all-gdb all-dejagnu all-ld || exit 1
-+  make install-gdb install-dejagnu install-ld || exit 1
- elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-   make bootstrap || exit 1
-   make install || exit 1
---- gcc-3.4.4/gcc/config/alpha/linux-elf.h
-+++ gcc-3.4.4/gcc/config/alpha/linux-elf.h
-@@ -27,7 +27,11 @@
- #define SUBTARGET_EXTRA_SPECS \
- { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
- 
-+#if defined USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
- #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
-+#endif
- 
- #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
-   %{O*:-O3} %{!O*:-O1}						\
-diff -urN gcc-4.0.0-dist/gcc/config/arm/linux-elf.h gcc-4.0.0/gcc/config/arm/linux-elf.h
---- gcc-4.0.0-dist/gcc/config/arm/linux-elf.h	2005-03-04 10:14:01.000000000 -0600
-+++ gcc-4.0.0/gcc/config/arm/linux-elf.h	2005-04-28 20:30:00.000000000 -0500
-@@ -82,6 +82,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} \
-@@ -92,6 +104,7 @@
-    -X \
-    %{mbig-endian:-EB}" \
-    SUBTARGET_EXTRA_LINK_SPEC
-+#endif
- 
- #define TARGET_OS_CPP_BUILTINS()		\
-   do						\
-diff -urN gcc-4.0.0-dist/gcc/config/cris/linux.h gcc-4.0.0/gcc/config/cris/linux.h
---- gcc-4.0.0-dist/gcc/config/cris/linux.h	2003-11-28 21:08:09.000000000 -0600
-+++ gcc-4.0.0/gcc/config/cris/linux.h	2005-04-28 20:30:00.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-4.0.0-dist/gcc/config/cris/t-linux-uclibc gcc-4.0.0/gcc/config/cris/t-linux-uclibc
---- gcc-4.0.0-dist/gcc/config/cris/t-linux-uclibc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/gcc/config/cris/t-linux-uclibc	2005-04-28 20:30:00.000000000 -0500
-@@ -0,0 +1,3 @@
-+T_CFLAGS = -DUSE_UCLIBC
-+TARGET_LIBGCC2_CFLAGS += -fPIC
-+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS)
-diff -urN gcc-4.0.0-dist/gcc/config/i386/linux.h gcc-4.0.0/gcc/config/i386/linux.h
---- gcc-4.0.0-dist/gcc/config/i386/linux.h	2004-11-27 10:45:14.000000000 -0600
-+++ gcc-4.0.0/gcc/config/i386/linux.h	2005-04-28 20:30:00.000000000 -0500
-@@ -107,6 +107,11 @@
- #define LINK_EMULATION "elf_i386"
- #define DYNAMIC_LINKER "/lib/ld-linux.so.2"
- 
-+#if defined USE_UCLIBC
-+#undef DYNAMIC_LINKER
-+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#endif
-+
- #undef  SUBTARGET_EXTRA_SPECS
- #define SUBTARGET_EXTRA_SPECS \
-   { "link_emulation", LINK_EMULATION },\
---- gcc-3.4.4/gcc/config/i386/linux64.h
-+++ gcc-3.4.4/gcc/config/i386/linux64.h
-@@ -55,6 +55,15 @@
-    done.  */
- 
- #undef	LINK_SPEC
-+#if defined USE_UCLIBC
-+#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-+  %{shared:-shared} \
-+  %{!shared: \
-+    %{!static: \
-+      %{rdynamic:-export-dynamic} \
-+      %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
-+    %{static:-static}}"
-+#else
- #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-   %{shared:-shared} \
-   %{!shared: \
-@@ -63,6 +73,7 @@
-       %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-       %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
-     %{static:-static}}"
-+#endif
- 
- #define MULTILIB_DEFAULTS { "m64" }
- 
-diff -urN gcc-4.0.0-dist/gcc/config/mips/linux.h gcc-4.0.0/gcc/config/mips/linux.h
---- gcc-4.0.0-dist/gcc/config/mips/linux.h	2005-01-25 20:04:46.000000000 -0600
-+++ gcc-4.0.0/gcc/config/mips/linux.h	2005-04-28 20:30:00.000000000 -0500
-@@ -108,6 +108,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} \
-@@ -117,6 +128,7 @@
-         %{rdynamic:-export-dynamic} \
-         %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-         %{static:-static}}}"
-+#endif
- 
- #undef SUBTARGET_ASM_SPEC
- #define SUBTARGET_ASM_SPEC "%{mabi=64: -64} %{!mno-abicalls:-KPIC}"
-diff -urN gcc-4.0.0-dist/gcc/config/rs6000/linux.h gcc-4.0.0/gcc/config/rs6000/linux.h
---- gcc-4.0.0-dist/gcc/config/rs6000/linux.h	2004-12-01 20:21:28.000000000 -0600
-+++ gcc-4.0.0/gcc/config/rs6000/linux.h	2005-04-28 20:30:00.000000000 -0500
-@@ -69,7 +69,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-4.0.0-dist/gcc/config/rs6000/sysv4.h gcc-4.0.0/gcc/config/rs6000/sysv4.h
---- gcc-4.0.0-dist/gcc/config/rs6000/sysv4.h	2005-02-15 09:53:52.000000000 -0600
-+++ gcc-4.0.0/gcc/config/rs6000/sysv4.h	2005-04-28 20:30:00.000000000 -0500
-@@ -956,6 +956,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)     }"
- 
-@@ -1134,6 +1135,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
-@@ -1300,6 +1305,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-4.0.0-dist/gcc/config/sh/linux.h gcc-4.0.0/gcc/config/sh/linux.h
---- gcc-4.0.0-dist/gcc/config/sh/linux.h	2005-01-25 20:04:48.000000000 -0600
-+++ gcc-4.0.0/gcc/config/sh/linux.h	2005-04-28 20:30:00.000000000 -0500
-@@ -67,12 +67,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-4.0.0-dist/gcc/config/t-linux-uclibc gcc-4.0.0/gcc/config/t-linux-uclibc
---- gcc-4.0.0-dist/gcc/config/t-linux-uclibc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/gcc/config/t-linux-uclibc	2005-04-28 20:30:00.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-4.0.0-dist/gcc/config.gcc gcc-4.0.0/gcc/config.gcc
---- gcc-4.0.0-dist/gcc/config.gcc	2005-03-30 21:17:08.000000000 -0600
-+++ gcc-4.0.0/gcc/config.gcc	2005-04-28 20:30:00.000000000 -0500
-@@ -439,7 +439,12 @@
-   case ${enable_threads} in
-     "" | yes | posix) thread_file='posix' ;;
-   esac
--  tmake_file="t-slibgcc-elf-ver t-linux"
-+  case ${target} in
-+    *-*-linux-uclibc*)
-+      tmake_file="t-slibgcc-elf-ver t-linux-uclibc" ;;
-+    *)
-+      tmake_file="t-slibgcc-elf-ver t-linux" ;;
-+  esac
-   ;;
- *-*-gnu*)
-   # On the Hurd, the setup is just about the same on
-@@ -744,6 +749,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"
- 	# We need to avoid using t-linux, so override default tmake_file
-@@ -1759,7 +1759,7 @@
- 	;;
- sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
- sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
--  sh-*-linux* | sh[346lbe]*-*-linux* | \
-+  sh*-*-linux* | sh[346lbe]*-*-linux* | \
-   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-    sh64-*-netbsd* | sh64l*-*-netbsd*)
- 	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
-diff -urN gcc-4.0.0-dist/libffi/configure gcc-4.0.0/libffi/configure
---- gcc-4.0.0-dist/libffi/configure	2004-12-02 05:04:21.000000000 -0600
-+++ gcc-4.0.0/libffi/configure	2005-04-30 12:18:05.000000000 -0500
-@@ -3457,6 +3457,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libgfortran/configure gcc-4.0.0/libgfortran/configure
---- gcc-4.0.0-dist/libgfortran/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/libgfortran/configure	2005-04-30 12:26:15.000000000 -0500
-@@ -3684,6 +3684,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libjava/configure gcc-4.0.0/libjava/configure
---- gcc-4.0.0-dist/libjava/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/libjava/configure	2005-04-30 12:27:15.000000000 -0500
-@@ -4354,6 +4354,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libmudflap/configure gcc-4.0.0/libmudflap/configure
---- gcc-4.0.0-dist/libmudflap/configure	2005-01-02 16:24:50.000000000 -0600
-+++ gcc-4.0.0/libmudflap/configure	2005-04-30 12:25:24.000000000 -0500
-@@ -5380,6 +5380,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libobjc/configure gcc-4.0.0/libobjc/configure
---- gcc-4.0.0-dist/libobjc/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/libobjc/configure	2005-04-30 12:25:55.000000000 -0500
-@@ -3283,6 +3283,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libtool.m4 gcc-4.0.0/libtool.m4
---- gcc-4.0.0-dist/libtool.m4	2004-11-29 17:45:17.000000000 -0600
-+++ gcc-4.0.0/libtool.m4	2005-04-30 12:28:32.000000000 -0500
-@@ -682,6 +682,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/ltconfig gcc-4.0.0/ltconfig
---- gcc-4.0.0-dist/ltconfig	2004-10-02 11:33:06.000000000 -0500
-+++ gcc-4.0.0/ltconfig	2005-04-30 13:26:08.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
-@@ -1273,6 +1274,23 @@
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
-diff -urN gcc-4.0.0-dist/zlib/configure gcc-4.0.0/zlib/configure
---- gcc-4.0.0-dist/zlib/configure	2004-11-24 16:04:38.000000000 -0600
-+++ gcc-4.0.0/zlib/configure	2005-04-30 12:30:40.000000000 -0500
-@@ -3426,6 +3426,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/gcc/4.0.0/602-sdk-libstdc++-includes.patch
===================================================================
--- toolchain/gcc/4.0.0/602-sdk-libstdc++-includes.patch	(revision 20005)
+++ toolchain/gcc/4.0.0/602-sdk-libstdc++-includes.patch	(working copy)
@@ -1,22 +0,0 @@
-diff -urN gcc-4.0.0-100/libstdc++-v3/fragment.am gcc-4.0.0/libstdc++-v3/fragment.am
---- gcc-4.0.0-100/libstdc++-v3/fragment.am	2004-10-25 15:32:40.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/fragment.am	2005-04-28 21:48:43.000000000 -0500
-@@ -18,5 +18,5 @@
- 	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
- 
- # -I/-D flags to pass when compiling.
--AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
-+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
- 
-diff -urN gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am gcc-4.0.0/libstdc++-v3/libmath/Makefile.am
---- gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am	2003-08-27 16:29:42.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/libmath/Makefile.am	2005-04-28 21:48:43.000000000 -0500
-@@ -32,7 +32,7 @@
- 
- libmath_la_SOURCES = stubs.c
- 
--AM_CPPFLAGS = $(CANADIAN_INCLUDES)
-+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
- 
- # Only compiling "C" sources in this directory.
- LIBTOOL = @LIBTOOL@ --tag CC
Index: toolchain/gcc/4.0.0/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/4.0.0/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/4.0.0/800-arm-bigendian.patch	(working copy)
@@ -1,67 +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-4.0.3/gcc/config/arm/linux-elf.h
-+++ gcc-4.0.3/gcc/config/arm/linux-elf.h
-@@ -31,19 +31,33 @@
- /* 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
-+
- #undef  TARGET_DEFAULT_FLOAT_ABI
- #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (0)
-+#define TARGET_DEFAULT (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", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
- 
- /* The GNU C++ standard library requires that these macros be defined.  */
- #undef CPLUSPLUS_CPP_SPEC
-@@ -90,7 +104,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
- 
- #define TARGET_OS_CPP_BUILTINS()		\
---- gcc-4.0.3/gcc/config.gcc
-+++ gcc-4.0.3/gcc/config.gcc
-@@ -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="${tmake_file} arm/t-arm arm/t-linux"
- 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
- 	gnu_ld=yes
Index: toolchain/gcc/4.0.0/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/4.0.0/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/4.0.0/300-libstdc++-pic.patch	(working copy)
@@ -1,45 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/src/Makefile.am
-+++ gcc-4.0.0/libstdc++-v3/src/Makefile.am
-@@ -214,6 +214,10 @@
- 	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Added bits to build debug library.
- if GLIBCXX_BUILD_DEBUG
- all-local: build_debug
---- gcc-4.0.0/libstdc++-v3/src/Makefile.in
-+++ gcc-4.0.0/libstdc++-v3/src/Makefile.in
-@@ -625,7 +625,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -664,7 +664,7 @@
- 	maintainer-clean-generic mostlyclean mostlyclean-compile \
- 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- 	tags uninstall uninstall-am uninstall-info-am \
--	uninstall-toolexeclibLTLIBRARIES
-+	uninstall-toolexeclibLTLIBRARIES install-exec-local
- 
- @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@libstdc++-symbol.ver:  ${glibcxx_srcdir}/$(SYMVER_MAP)
- @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@	cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
-@@ -743,6 +743,11 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/4.0.0/302-c99-snprintf.patch
===================================================================
--- toolchain/gcc/4.0.0/302-c99-snprintf.patch	(revision 20005)
+++ toolchain/gcc/4.0.0/302-c99-snprintf.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig	2005-04-29 00:08:41.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h	2005-04-29 00:08:45.000000000 -0500
-@@ -142,7 +142,7 @@
-   using ::vsprintf;
- }
- 
--#if _GLIBCXX_USE_C99
-+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
- 
- #undef snprintf
- #undef vfscanf
Index: toolchain/gcc/4.0.0/830-gcc-bug-num-22167.patch
===================================================================
--- toolchain/gcc/4.0.0/830-gcc-bug-num-22167.patch	(revision 20005)
+++ toolchain/gcc/4.0.0/830-gcc-bug-num-22167.patch	(working copy)
@@ -1,16 +0,0 @@
-Index: gcc/gcse.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/gcse.c,v
-retrieving revision 1.288.2.9
-diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.288.2.9 gcse.c
---- gcc/gcc/gcse.c	30 Oct 2004 18:02:53 -0000	1.288.2.9
-+++ gcc/gcc/gcse.c	14 Jul 2005 13:19:57 -0000
-@@ -6445,7 +6445,7 @@ hoist_code (void)
- 	  insn_inserted_p = 0;
- 
- 	  /* These tests should be the same as the tests above.  */
--	  if (TEST_BIT (hoist_vbeout[bb->index], i))
-+	  if (TEST_BIT (hoist_exprs[bb->index], i))
- 	    {
- 	      /* We've found a potentially hoistable expression, now
- 		 we look at every block BB dominates to see if it
Index: toolchain/gcc/4.0.0/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/4.0.0/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/4.0.0/200-uclibc-locale.patch	(working copy)
@@ -1,3237 +0,0 @@
-diff -urN gcc-4.0.0-100/libstdc++-v3/acinclude.m4 gcc-4.0.0/libstdc++-v3/acinclude.m4
---- gcc-4.0.0-100/libstdc++-v3/acinclude.m4	2005-04-30 13:06:53.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/acinclude.m4	2005-04-28 20:19:01.000000000 -0500
-@@ -1104,7 +1104,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
-@@ -1120,6 +1120,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      *-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1263,6 +1266,40 @@
-       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_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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h	2005-04-28 01:13:15.000000000 -0500
-@@ -0,0 +1,115 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifndef _C_LOCALE_H
-+#define _C_LOCALE_H 1
-+
-+#pragma GCC system_header
-+
-+#include <cstring>              // get std::strlen
-+#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <clocale>
-+#include <langinfo.h>		// For codecvt
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC_HAS_LOCALE__
-+#include <iconv.h>		// For codecvt using iconv, iconv_t
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#include <libintl.h> 		// For messages
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning what is _GLIBCXX_C_LOCALE_GNU for
-+#endif
-+#define _GLIBCXX_C_LOCALE_GNU 1
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix categories
-+#endif
-+// #define _GLIBCXX_NUM_CATEGORIES 6
-+#define _GLIBCXX_NUM_CATEGORIES 0
-+ 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+namespace __gnu_cxx
-+{
-+  extern "C" __typeof(uselocale) __uselocale;
-+}
-+#endif
-+
-+namespace std
-+{
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+  typedef __locale_t		__c_locale;
-+#else
-+  typedef int*			__c_locale;
-+#endif
-+
-+  // Convert numeric value of type _Tv to string and return length of
-+  // string.  If snprintf is available use it, otherwise fall back to
-+  // the unsafe sprintf which, in general, can be dangerous and should
-+  // be avoided.
-+  template<typename _Tv>
-+    int
-+    __convert_from_v(char* __out, const int __size, const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2005-04-28 01:13:15.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 = __wmask_type();
-+      }
-+    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-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2005-04-28 01:23:02.000000000 -0500
-@@ -0,0 +1,692 @@
-+// 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:
-+	__ret = pattern();
-+      }
-+    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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2005-04-28 01:20:20.000000000 -0500
-@@ -0,0 +1,173 @@
-+// 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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+ 
-+  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',';
-+
-+	  // Use ctype::widen code without the facet...
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  // NB: In the GNU model wchar_t is always 32 bit wide.
-+#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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc	2005-04-28 01:13:15.000000000 -0500
-@@ -0,0 +1,406 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
-+							     __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  union { char *__s; wchar_t *__w; } __u;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
-+	  _M_data->_M_date_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
-+	  _M_data->_M_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
-+	  _M_data->_M_am = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
-+	  _M_data->_M_pm = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
-+	  _M_data->_M_am_pm_format = __u.__w;
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
-+	  _M_data->_M_day1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
-+	  _M_data->_M_day2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
-+	  _M_data->_M_day3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
-+	  _M_data->_M_day4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
-+	  _M_data->_M_day5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
-+	  _M_data->_M_day6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
-+	  _M_data->_M_day7 = __u.__w;
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
-+	  _M_data->_M_aday1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
-+	  _M_data->_M_aday2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
-+	  _M_data->_M_aday3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
-+	  _M_data->_M_aday4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
-+	  _M_data->_M_aday5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
-+	  _M_data->_M_aday6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
-+	  _M_data->_M_aday7 = __u.__w;
-+
-+	  // Month names, starting with "C"'s January.
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
-+	  _M_data->_M_month01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
-+	  _M_data->_M_month02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
-+	  _M_data->_M_month03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
-+	  _M_data->_M_month04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
-+	  _M_data->_M_month05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
-+	  _M_data->_M_month06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
-+	  _M_data->_M_month07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
-+	  _M_data->_M_month08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
-+	  _M_data->_M_month09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
-+	  _M_data->_M_month10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
-+	  _M_data->_M_month11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
-+	  _M_data->_M_month12 = __u.__w;
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
-+	  _M_data->_M_amonth01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
-+	  _M_data->_M_amonth02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
-+	  _M_data->_M_amonth03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
-+	  _M_data->_M_amonth04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
-+	  _M_data->_M_amonth05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
-+	  _M_data->_M_amonth06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
-+	  _M_data->_M_amonth07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
-+	  _M_data->_M_amonth08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
-+	  _M_data->_M_amonth09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
-+	  _M_data->_M_amonth10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
-+	  _M_data->_M_amonth11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
-+	  _M_data->_M_amonth12 = __u.__w;
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h	2004-05-22 18:46:31.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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h	2005-04-28 01:10:27.000000000 -0500
-@@ -0,0 +1,64 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 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.1  Locales
-+//
-+  
-+/** @file ctype_base.h
-+ *  This is an internal header file, included by other library headers.
-+ *  You should not attempt to use it directly.
-+ */
-+
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  /// @brief  Base class for ctype.
-+  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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2005-04-28 01:10:27.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-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h	2005-04-28 01:10:27.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-4.0.0-100/libstdc++-v3/configure gcc-4.0.0/libstdc++-v3/configure
---- gcc-4.0.0-100/libstdc++-v3/configure	2005-04-30 13:06:53.683055232 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 12:24:24.000000000 -0500
-@@ -3998,6 +3998,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5672,7 +5677,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5697,6 +5702,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      linux-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h.  */
-@@ -5927,6 +5935,76 @@
-       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_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-4.0.0-100/libstdc++-v3/configure.host gcc-4.0.0/libstdc++-v3/configure.host
---- gcc-4.0.0-100/libstdc++-v3/configure.host	2005-04-30 13:06:53.688054472 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure.host	2005-04-28 20:20:32.000000000 -0500
-@@ -249,6 +249,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-4.0.0-100/libstdc++-v3/crossconfig.m4 gcc-4.0.0/libstdc++-v3/crossconfig.m4
---- gcc-4.0.0-100/libstdc++-v3/crossconfig.m4	2005-04-30 13:06:53.689054320 -0500
-+++ gcc-4.0.0/libstdc++-v3/crossconfig.m4	2005-04-28 20:27:15.000000000 -0500
-@@ -142,6 +142,98 @@
- 	;;
-     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_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 \
-@@ -156,7 +248,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-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h
---- gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h	2005-04-30 13:06:53.690054168 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h	2005-04-28 20:15:56.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-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h
---- gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h	2005-04-30 13:06:53.691054016 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h	2005-04-28 20:15:56.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;
Index: toolchain/gcc/4.0.0/303-c99-complex-ugly-hack.patch
===================================================================
--- toolchain/gcc/4.0.0/303-c99-complex-ugly-hack.patch	(revision 20005)
+++ toolchain/gcc/4.0.0/303-c99-complex-ugly-hack.patch	(working copy)
@@ -1,12 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/configure-old	2005-04-30 22:04:48.061603912 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 22:06:13.678588152 -0500
-@@ -7194,6 +7194,9 @@
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h.  */
- #include <complex.h>
-+#ifdef __UCLIBC__
-+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
-+#endif
- int
- main ()
- {
Index: toolchain/gcc/4.0.0/301-missing-execinfo_h.patch
===================================================================
--- toolchain/gcc/4.0.0/301-missing-execinfo_h.patch	(revision 20005)
+++ toolchain/gcc/4.0.0/301-missing-execinfo_h.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/boehm-gc/include/gc.h-orig	2005-04-28 22:28:57.000000000 -0500
-+++ gcc-4.0.0/boehm-gc/include/gc.h	2005-04-28 22:30:38.000000000 -0500
-@@ -500,7 +500,7 @@
- #ifdef __linux__
- # include <features.h>
- # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
--     && !defined(__ia64__)
-+     && !defined(__ia64__) && !defined(__UCLIBC__)
- #   ifndef GC_HAVE_BUILTIN_BACKTRACE
- #     define GC_HAVE_BUILTIN_BACKTRACE
- #   endif
Index: toolchain/gcc/4.0.1/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/4.0.1/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/4.0.1/100-uclibc-conf.patch	(working copy)
@@ -1,478 +0,0 @@
-diff -urN gcc-4.0.0-dist/boehm-gc/configure gcc-4.0.0/boehm-gc/configure
---- gcc-4.0.0-dist/boehm-gc/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/boehm-gc/configure	2005-04-30 13:22:27.495094224 -0500
-@@ -4320,6 +4320,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/configure gcc-4.0.0/configure
---- gcc-4.0.0-dist/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/configure	2005-04-30 12:27:56.000000000 -0500
-@@ -1136,7 +1136,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-diff -urN gcc-4.0.0-dist/configure.in gcc-4.0.0/configure.in
---- gcc-4.0.0-dist/configure.in	2005-04-20 21:45:11.000000000 -0500
-+++ gcc-4.0.0/configure.in	2005-04-30 12:22:09.000000000 -0500
-@@ -345,7 +345,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
-diff -urN gcc-4.0.0-dist/contrib/regression/objs-gcc.sh gcc-4.0.0/contrib/regression/objs-gcc.sh
---- gcc-4.0.0-dist/contrib/regression/objs-gcc.sh	2002-10-11 15:23:21.000000000 -0500
-+++ gcc-4.0.0/contrib/regression/objs-gcc.sh	2005-04-30 12:29:58.000000000 -0500
-@@ -105,6 +105,10 @@
-  then
-   make all-gdb all-dejagnu all-ld || exit 1
-   make install-gdb install-dejagnu install-ld || exit 1
-+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-+ then
-+  make all-gdb all-dejagnu all-ld || exit 1
-+  make install-gdb install-dejagnu install-ld || exit 1
- elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-   make bootstrap || exit 1
-   make install || exit 1
---- gcc-3.4.4/gcc/config/alpha/linux-elf.h
-+++ gcc-3.4.4/gcc/config/alpha/linux-elf.h
-@@ -27,7 +27,11 @@
- #define SUBTARGET_EXTRA_SPECS \
- { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
- 
-+#if defined USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
- #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
-+#endif
- 
- #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
-   %{O*:-O3} %{!O*:-O1}						\
-diff -urN gcc-4.0.0-dist/gcc/config/arm/linux-elf.h gcc-4.0.0/gcc/config/arm/linux-elf.h
---- gcc-4.0.0-dist/gcc/config/arm/linux-elf.h	2005-03-04 10:14:01.000000000 -0600
-+++ gcc-4.0.0/gcc/config/arm/linux-elf.h	2005-04-28 20:30:00.000000000 -0500
-@@ -82,6 +82,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} \
-@@ -92,6 +104,7 @@
-    -X \
-    %{mbig-endian:-EB}" \
-    SUBTARGET_EXTRA_LINK_SPEC
-+#endif
- 
- #define TARGET_OS_CPP_BUILTINS()		\
-   do						\
-diff -urN gcc-4.0.0-dist/gcc/config/cris/linux.h gcc-4.0.0/gcc/config/cris/linux.h
---- gcc-4.0.0-dist/gcc/config/cris/linux.h	2003-11-28 21:08:09.000000000 -0600
-+++ gcc-4.0.0/gcc/config/cris/linux.h	2005-04-28 20:30:00.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-4.0.0-dist/gcc/config/cris/t-linux-uclibc gcc-4.0.0/gcc/config/cris/t-linux-uclibc
---- gcc-4.0.0-dist/gcc/config/cris/t-linux-uclibc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/gcc/config/cris/t-linux-uclibc	2005-04-28 20:30:00.000000000 -0500
-@@ -0,0 +1,3 @@
-+T_CFLAGS = -DUSE_UCLIBC
-+TARGET_LIBGCC2_CFLAGS += -fPIC
-+CRTSTUFF_T_CFLAGS_S = $(TARGET_LIBGCC2_CFLAGS)
-diff -urN gcc-4.0.0-dist/gcc/config/i386/linux.h gcc-4.0.0/gcc/config/i386/linux.h
---- gcc-4.0.0-dist/gcc/config/i386/linux.h	2004-11-27 10:45:14.000000000 -0600
-+++ gcc-4.0.0/gcc/config/i386/linux.h	2005-04-28 20:30:00.000000000 -0500
-@@ -107,6 +107,11 @@
- #define LINK_EMULATION "elf_i386"
- #define DYNAMIC_LINKER "/lib/ld-linux.so.2"
- 
-+#if defined USE_UCLIBC
-+#undef DYNAMIC_LINKER
-+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#endif
-+
- #undef  SUBTARGET_EXTRA_SPECS
- #define SUBTARGET_EXTRA_SPECS \
-   { "link_emulation", LINK_EMULATION },\
---- gcc-3.4.4/gcc/config/i386/linux64.h
-+++ gcc-3.4.4/gcc/config/i386/linux64.h
-@@ -55,6 +55,15 @@
-    done.  */
- 
- #undef	LINK_SPEC
-+#if defined USE_UCLIBC
-+#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-+  %{shared:-shared} \
-+  %{!shared: \
-+    %{!static: \
-+      %{rdynamic:-export-dynamic} \
-+      %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \
-+    %{static:-static}}"
-+#else
- #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-   %{shared:-shared} \
-   %{!shared: \
-@@ -63,6 +73,7 @@
-       %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-       %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
-     %{static:-static}}"
-+#endif
- 
- #define MULTILIB_DEFAULTS { "m64" }
- 
-diff -urN gcc-4.0.0-dist/gcc/config/mips/linux.h gcc-4.0.0/gcc/config/mips/linux.h
---- gcc-4.0.0-dist/gcc/config/mips/linux.h	2005-01-25 20:04:46.000000000 -0600
-+++ gcc-4.0.0/gcc/config/mips/linux.h	2005-04-28 20:30:00.000000000 -0500
-@@ -108,6 +108,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} \
-@@ -117,6 +128,7 @@
-         %{rdynamic:-export-dynamic} \
-         %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-         %{static:-static}}}"
-+#endif
- 
- #undef SUBTARGET_ASM_SPEC
- #define SUBTARGET_ASM_SPEC "%{mabi=64: -64} %{!mno-abicalls:-KPIC}"
-diff -urN gcc-4.0.0-dist/gcc/config/rs6000/linux.h gcc-4.0.0/gcc/config/rs6000/linux.h
---- gcc-4.0.0-dist/gcc/config/rs6000/linux.h	2004-12-01 20:21:28.000000000 -0600
-+++ gcc-4.0.0/gcc/config/rs6000/linux.h	2005-04-28 20:30:00.000000000 -0500
-@@ -69,7 +69,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-4.0.0-dist/gcc/config/rs6000/sysv4.h gcc-4.0.0/gcc/config/rs6000/sysv4.h
---- gcc-4.0.0-dist/gcc/config/rs6000/sysv4.h	2005-02-15 09:53:52.000000000 -0600
-+++ gcc-4.0.0/gcc/config/rs6000/sysv4.h	2005-04-28 20:30:00.000000000 -0500
-@@ -956,6 +956,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)     }"
- 
-@@ -1134,6 +1135,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
-@@ -1300,6 +1305,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-4.0.0-dist/gcc/config/sh/linux.h gcc-4.0.0/gcc/config/sh/linux.h
---- gcc-4.0.0-dist/gcc/config/sh/linux.h	2005-01-25 20:04:48.000000000 -0600
-+++ gcc-4.0.0/gcc/config/sh/linux.h	2005-04-28 20:30:00.000000000 -0500
-@@ -67,12 +67,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-4.0.0-dist/gcc/config/t-linux-uclibc gcc-4.0.0/gcc/config/t-linux-uclibc
---- gcc-4.0.0-dist/gcc/config/t-linux-uclibc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/gcc/config/t-linux-uclibc	2005-04-28 20:30:00.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-4.0.0-dist/gcc/config.gcc gcc-4.0.0/gcc/config.gcc
---- gcc-4.0.0-dist/gcc/config.gcc	2005-03-30 21:17:08.000000000 -0600
-+++ gcc-4.0.0/gcc/config.gcc	2005-04-28 20:30:00.000000000 -0500
-@@ -439,7 +439,12 @@
-   case ${enable_threads} in
-     "" | yes | posix) thread_file='posix' ;;
-   esac
--  tmake_file="t-slibgcc-elf-ver t-linux"
-+  case ${target} in
-+    *-*-linux-uclibc*)
-+      tmake_file="t-slibgcc-elf-ver t-linux-uclibc" ;;
-+    *)
-+      tmake_file="t-slibgcc-elf-ver t-linux" ;;
-+  esac
-   ;;
- *-*-gnu*)
-   # On the Hurd, the setup is just about the same on
-@@ -744,6 +749,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"
- 	# We need to avoid using t-linux, so override default tmake_file
-@@ -1759,7 +1759,7 @@
- 	;;
- sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
- sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
--  sh-*-linux* | sh[346lbe]*-*-linux* | \
-+  sh*-*-linux* | sh[346lbe]*-*-linux* | \
-   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-    sh64-*-netbsd* | sh64l*-*-netbsd*)
- 	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
-diff -urN gcc-4.0.0-dist/libffi/configure gcc-4.0.0/libffi/configure
---- gcc-4.0.0-dist/libffi/configure	2004-12-02 05:04:21.000000000 -0600
-+++ gcc-4.0.0/libffi/configure	2005-04-30 12:18:05.000000000 -0500
-@@ -3457,6 +3457,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libgfortran/configure gcc-4.0.0/libgfortran/configure
---- gcc-4.0.0-dist/libgfortran/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/libgfortran/configure	2005-04-30 12:26:15.000000000 -0500
-@@ -3684,6 +3684,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libjava/configure gcc-4.0.0/libjava/configure
---- gcc-4.0.0-dist/libjava/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/libjava/configure	2005-04-30 12:27:15.000000000 -0500
-@@ -4354,6 +4354,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libmudflap/configure gcc-4.0.0/libmudflap/configure
---- gcc-4.0.0-dist/libmudflap/configure	2005-01-02 16:24:50.000000000 -0600
-+++ gcc-4.0.0/libmudflap/configure	2005-04-30 12:25:24.000000000 -0500
-@@ -5380,6 +5380,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libobjc/configure gcc-4.0.0/libobjc/configure
---- gcc-4.0.0-dist/libobjc/configure	2005-04-21 02:04:10.000000000 -0500
-+++ gcc-4.0.0/libobjc/configure	2005-04-30 12:25:55.000000000 -0500
-@@ -3283,6 +3283,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/libtool.m4 gcc-4.0.0/libtool.m4
---- gcc-4.0.0-dist/libtool.m4	2004-11-29 17:45:17.000000000 -0600
-+++ gcc-4.0.0/libtool.m4	2005-04-30 12:28:32.000000000 -0500
-@@ -682,6 +682,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   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-4.0.0-dist/ltconfig gcc-4.0.0/ltconfig
---- gcc-4.0.0-dist/ltconfig	2004-10-02 11:33:06.000000000 -0500
-+++ gcc-4.0.0/ltconfig	2005-04-30 13:26:08.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
-@@ -1273,6 +1274,23 @@
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
-diff -urN gcc-4.0.0-dist/zlib/configure gcc-4.0.0/zlib/configure
---- gcc-4.0.0-dist/zlib/configure	2004-11-24 16:04:38.000000000 -0600
-+++ gcc-4.0.0/zlib/configure	2005-04-30 12:30:40.000000000 -0500
-@@ -3426,6 +3426,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/gcc/4.0.1/602-sdk-libstdc++-includes.patch
===================================================================
--- toolchain/gcc/4.0.1/602-sdk-libstdc++-includes.patch	(revision 20005)
+++ toolchain/gcc/4.0.1/602-sdk-libstdc++-includes.patch	(working copy)
@@ -1,22 +0,0 @@
-diff -urN gcc-4.0.0-100/libstdc++-v3/fragment.am gcc-4.0.0/libstdc++-v3/fragment.am
---- gcc-4.0.0-100/libstdc++-v3/fragment.am	2004-10-25 15:32:40.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/fragment.am	2005-04-28 21:48:43.000000000 -0500
-@@ -18,5 +18,5 @@
- 	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
- 
- # -I/-D flags to pass when compiling.
--AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
-+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
- 
-diff -urN gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am gcc-4.0.0/libstdc++-v3/libmath/Makefile.am
---- gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am	2003-08-27 16:29:42.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/libmath/Makefile.am	2005-04-28 21:48:43.000000000 -0500
-@@ -32,7 +32,7 @@
- 
- libmath_la_SOURCES = stubs.c
- 
--AM_CPPFLAGS = $(CANADIAN_INCLUDES)
-+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
- 
- # Only compiling "C" sources in this directory.
- LIBTOOL = @LIBTOOL@ --tag CC
Index: toolchain/gcc/4.0.1/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/4.0.1/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/4.0.1/800-arm-bigendian.patch	(working copy)
@@ -1,67 +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-4.0.3/gcc/config/arm/linux-elf.h
-+++ gcc-4.0.3/gcc/config/arm/linux-elf.h
-@@ -31,19 +31,33 @@
- /* 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
-+
- #undef  TARGET_DEFAULT_FLOAT_ABI
- #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (0)
-+#define TARGET_DEFAULT (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", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
- 
- /* The GNU C++ standard library requires that these macros be defined.  */
- #undef CPLUSPLUS_CPP_SPEC
-@@ -90,7 +104,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
- 
- #define TARGET_OS_CPP_BUILTINS()		\
---- gcc-4.0.3/gcc/config.gcc
-+++ gcc-4.0.3/gcc/config.gcc
-@@ -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="${tmake_file} arm/t-arm arm/t-linux"
- 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
- 	gnu_ld=yes
Index: toolchain/gcc/4.0.1/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/4.0.1/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/4.0.1/300-libstdc++-pic.patch	(working copy)
@@ -1,45 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/src/Makefile.am
-+++ gcc-4.0.0/libstdc++-v3/src/Makefile.am
-@@ -214,6 +214,10 @@
- 	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Added bits to build debug library.
- if GLIBCXX_BUILD_DEBUG
- all-local: build_debug
---- gcc-4.0.0/libstdc++-v3/src/Makefile.in
-+++ gcc-4.0.0/libstdc++-v3/src/Makefile.in
-@@ -625,7 +625,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -664,7 +664,7 @@
- 	maintainer-clean-generic mostlyclean mostlyclean-compile \
- 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- 	tags uninstall uninstall-am uninstall-info-am \
--	uninstall-toolexeclibLTLIBRARIES
-+	uninstall-toolexeclibLTLIBRARIES install-exec-local
- 
- @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@libstdc++-symbol.ver:  ${glibcxx_srcdir}/$(SYMVER_MAP)
- @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@	cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
-@@ -743,6 +743,11 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/4.0.1/302-c99-snprintf.patch
===================================================================
--- toolchain/gcc/4.0.1/302-c99-snprintf.patch	(revision 20005)
+++ toolchain/gcc/4.0.1/302-c99-snprintf.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig	2005-04-29 00:08:41.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h	2005-04-29 00:08:45.000000000 -0500
-@@ -142,7 +142,7 @@
-   using ::vsprintf;
- }
- 
--#if _GLIBCXX_USE_C99
-+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
- 
- #undef snprintf
- #undef vfscanf
Index: toolchain/gcc/4.0.1/830-gcc-bug-num-22167.patch
===================================================================
--- toolchain/gcc/4.0.1/830-gcc-bug-num-22167.patch	(revision 20005)
+++ toolchain/gcc/4.0.1/830-gcc-bug-num-22167.patch	(working copy)
@@ -1,16 +0,0 @@
-Index: gcc/gcse.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/gcse.c,v
-retrieving revision 1.288.2.9
-diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.288.2.9 gcse.c
---- gcc/gcc/gcse.c	30 Oct 2004 18:02:53 -0000	1.288.2.9
-+++ gcc/gcc/gcse.c	14 Jul 2005 13:19:57 -0000
-@@ -6445,7 +6445,7 @@ hoist_code (void)
- 	  insn_inserted_p = 0;
- 
- 	  /* These tests should be the same as the tests above.  */
--	  if (TEST_BIT (hoist_vbeout[bb->index], i))
-+	  if (TEST_BIT (hoist_exprs[bb->index], i))
- 	    {
- 	      /* We've found a potentially hoistable expression, now
- 		 we look at every block BB dominates to see if it
Index: toolchain/gcc/4.0.1/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/4.0.1/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/4.0.1/200-uclibc-locale.patch	(working copy)
@@ -1,3237 +0,0 @@
-diff -urN gcc-4.0.0-100/libstdc++-v3/acinclude.m4 gcc-4.0.0/libstdc++-v3/acinclude.m4
---- gcc-4.0.0-100/libstdc++-v3/acinclude.m4	2005-04-30 13:06:53.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/acinclude.m4	2005-04-28 20:19:01.000000000 -0500
-@@ -1104,7 +1104,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
-@@ -1120,6 +1120,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      *-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1263,6 +1266,40 @@
-       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_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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h	2005-04-28 01:13:15.000000000 -0500
-@@ -0,0 +1,115 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifndef _C_LOCALE_H
-+#define _C_LOCALE_H 1
-+
-+#pragma GCC system_header
-+
-+#include <cstring>              // get std::strlen
-+#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <clocale>
-+#include <langinfo.h>		// For codecvt
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC_HAS_LOCALE__
-+#include <iconv.h>		// For codecvt using iconv, iconv_t
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#include <libintl.h> 		// For messages
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning what is _GLIBCXX_C_LOCALE_GNU for
-+#endif
-+#define _GLIBCXX_C_LOCALE_GNU 1
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix categories
-+#endif
-+// #define _GLIBCXX_NUM_CATEGORIES 6
-+#define _GLIBCXX_NUM_CATEGORIES 0
-+ 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+namespace __gnu_cxx
-+{
-+  extern "C" __typeof(uselocale) __uselocale;
-+}
-+#endif
-+
-+namespace std
-+{
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+  typedef __locale_t		__c_locale;
-+#else
-+  typedef int*			__c_locale;
-+#endif
-+
-+  // Convert numeric value of type _Tv to string and return length of
-+  // string.  If snprintf is available use it, otherwise fall back to
-+  // the unsafe sprintf which, in general, can be dangerous and should
-+  // be avoided.
-+  template<typename _Tv>
-+    int
-+    __convert_from_v(char* __out, const int __size, const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2005-04-28 01:13:15.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 = __wmask_type();
-+      }
-+    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-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2005-04-28 01:23:02.000000000 -0500
-@@ -0,0 +1,692 @@
-+// 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:
-+	__ret = pattern();
-+      }
-+    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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2005-04-28 01:20:20.000000000 -0500
-@@ -0,0 +1,173 @@
-+// 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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+ 
-+  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',';
-+
-+	  // Use ctype::widen code without the facet...
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  // NB: In the GNU model wchar_t is always 32 bit wide.
-+#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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc	2005-04-28 01:13:15.000000000 -0500
-@@ -0,0 +1,406 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
-+							     __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  union { char *__s; wchar_t *__w; } __u;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
-+	  _M_data->_M_date_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
-+	  _M_data->_M_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
-+	  _M_data->_M_am = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
-+	  _M_data->_M_pm = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
-+	  _M_data->_M_am_pm_format = __u.__w;
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
-+	  _M_data->_M_day1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
-+	  _M_data->_M_day2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
-+	  _M_data->_M_day3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
-+	  _M_data->_M_day4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
-+	  _M_data->_M_day5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
-+	  _M_data->_M_day6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
-+	  _M_data->_M_day7 = __u.__w;
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
-+	  _M_data->_M_aday1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
-+	  _M_data->_M_aday2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
-+	  _M_data->_M_aday3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
-+	  _M_data->_M_aday4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
-+	  _M_data->_M_aday5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
-+	  _M_data->_M_aday6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
-+	  _M_data->_M_aday7 = __u.__w;
-+
-+	  // Month names, starting with "C"'s January.
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
-+	  _M_data->_M_month01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
-+	  _M_data->_M_month02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
-+	  _M_data->_M_month03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
-+	  _M_data->_M_month04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
-+	  _M_data->_M_month05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
-+	  _M_data->_M_month06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
-+	  _M_data->_M_month07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
-+	  _M_data->_M_month08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
-+	  _M_data->_M_month09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
-+	  _M_data->_M_month10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
-+	  _M_data->_M_month11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
-+	  _M_data->_M_month12 = __u.__w;
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
-+	  _M_data->_M_amonth01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
-+	  _M_data->_M_amonth02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
-+	  _M_data->_M_amonth03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
-+	  _M_data->_M_amonth04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
-+	  _M_data->_M_amonth05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
-+	  _M_data->_M_amonth06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
-+	  _M_data->_M_amonth07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
-+	  _M_data->_M_amonth08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
-+	  _M_data->_M_amonth09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
-+	  _M_data->_M_amonth10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
-+	  _M_data->_M_amonth11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
-+	  _M_data->_M_amonth12 = __u.__w;
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h	2004-05-22 18:46:31.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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h	2005-04-28 01:10:27.000000000 -0500
-@@ -0,0 +1,64 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 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.1  Locales
-+//
-+  
-+/** @file ctype_base.h
-+ *  This is an internal header file, included by other library headers.
-+ *  You should not attempt to use it directly.
-+ */
-+
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  /// @brief  Base class for ctype.
-+  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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2005-04-28 01:10:27.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-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h	2005-04-28 01:10:27.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-4.0.0-100/libstdc++-v3/configure gcc-4.0.0/libstdc++-v3/configure
---- gcc-4.0.0-100/libstdc++-v3/configure	2005-04-30 13:06:53.683055232 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 12:24:24.000000000 -0500
-@@ -3998,6 +3998,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5672,7 +5677,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5697,6 +5702,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      linux-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h.  */
-@@ -5927,6 +5935,76 @@
-       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_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-4.0.0-100/libstdc++-v3/configure.host gcc-4.0.0/libstdc++-v3/configure.host
---- gcc-4.0.0-100/libstdc++-v3/configure.host	2005-04-30 13:06:53.688054472 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure.host	2005-04-28 20:20:32.000000000 -0500
-@@ -249,6 +249,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-4.0.0-100/libstdc++-v3/crossconfig.m4 gcc-4.0.0/libstdc++-v3/crossconfig.m4
---- gcc-4.0.0-100/libstdc++-v3/crossconfig.m4	2005-04-30 13:06:53.689054320 -0500
-+++ gcc-4.0.0/libstdc++-v3/crossconfig.m4	2005-04-28 20:27:15.000000000 -0500
-@@ -142,6 +142,98 @@
- 	;;
-     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_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 \
-@@ -156,7 +248,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-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h
---- gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h	2005-04-30 13:06:53.690054168 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h	2005-04-28 20:15:56.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-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h
---- gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h	2005-04-30 13:06:53.691054016 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h	2005-04-28 20:15:56.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;
Index: toolchain/gcc/4.0.1/303-c99-complex-ugly-hack.patch
===================================================================
--- toolchain/gcc/4.0.1/303-c99-complex-ugly-hack.patch	(revision 20005)
+++ toolchain/gcc/4.0.1/303-c99-complex-ugly-hack.patch	(working copy)
@@ -1,12 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/configure-old	2005-04-30 22:04:48.061603912 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 22:06:13.678588152 -0500
-@@ -7194,6 +7194,9 @@
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h.  */
- #include <complex.h>
-+#ifdef __UCLIBC__
-+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
-+#endif
- int
- main ()
- {
Index: toolchain/gcc/4.0.1/301-missing-execinfo_h.patch
===================================================================
--- toolchain/gcc/4.0.1/301-missing-execinfo_h.patch	(revision 20005)
+++ toolchain/gcc/4.0.1/301-missing-execinfo_h.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/boehm-gc/include/gc.h-orig	2005-04-28 22:28:57.000000000 -0500
-+++ gcc-4.0.0/boehm-gc/include/gc.h	2005-04-28 22:30:38.000000000 -0500
-@@ -500,7 +500,7 @@
- #ifdef __linux__
- # include <features.h>
- # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
--     && !defined(__ia64__)
-+     && !defined(__ia64__) && !defined(__UCLIBC__)
- #   ifndef GC_HAVE_BUILTIN_BACKTRACE
- #     define GC_HAVE_BUILTIN_BACKTRACE
- #   endif
Index: toolchain/gcc/4.1.0/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/4.1.0/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/100-uclibc-conf.patch	(working copy)
@@ -1,544 +0,0 @@
---- gcc-4.1.0/gcc/config/t-linux-uclibc
-+++ gcc-4.1.0/gcc/config/t-linux-uclibc
-@@ -0,0 +1,5 @@
-+# Remove glibc specific files added in t-linux
-+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
-+
-+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
-+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
---- gcc-4.1.0/gcc/config.gcc
-+++ gcc-4.1.0/gcc/config.gcc
-@@ -1887,7 +1887,7 @@ s390x-ibm-tpf*)
- 	;;
- sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
- sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
--  sh-*-linux* | sh[346lbe]*-*-linux* | \
-+  sh*-*-linux* | sh[346lbe]*-*-linux* | \
-   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-    sh64-*-netbsd* | sh64l*-*-netbsd*)
- 	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
-@@ -2341,6 +2341,12 @@ m32c-*-elf*)
- 	;;
- esac
- 
-+# Rather than hook into each target, just do it after all the linux
-+# targets have been processed
-+case ${target} in
-+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
-+esac
-+
- case ${target} in
- i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1)
- 	tmake_file="${tmake_file} i386/t-gmm_malloc"
---- gcc-4.1.0/boehm-gc/configure
-+++ gcc-4.1.0/boehm-gc/configure
-@@ -4320,6 +4320,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/configure
-+++ gcc-4.1.0/configure
-@@ -1133,7 +1133,7 @@ no)
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
---- gcc-4.1.0/configure.in
-+++ gcc-4.1.0/configure.in
-@@ -341,7 +341,7 @@ no)
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
---- gcc-4.1.0/contrib/regression/objs-gcc.sh
-+++ gcc-4.1.0/contrib/regression/objs-gcc.sh
-@@ -105,6 +105,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H
-  then
-   make all-gdb all-dejagnu all-ld || exit 1
-   make install-gdb install-dejagnu install-ld || exit 1
-+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-+ then
-+  make all-gdb all-dejagnu all-ld || exit 1
-+  make install-gdb install-dejagnu install-ld || exit 1
- elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-   make bootstrap || exit 1
-   make install || exit 1
---- gcc-4.1.0/gcc/config/alpha/linux-elf.h
-+++ gcc-4.1.0/gcc/config/alpha/linux-elf.h
-@@ -27,7 +27,11 @@ Boston, MA 02110-1301, USA.  */
- #define SUBTARGET_EXTRA_SPECS \
- { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
- 
-+#if defined USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
- #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
-+#endif
- 
- #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
-   %{O*:-O3} %{!O*:-O1}						\
---- gcc-4.1.0/gcc/config/arm/linux-elf.h
-+++ gcc-4.1.0/gcc/config/arm/linux-elf.h
-@@ -51,7 +51,11 @@
- 
- #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
- 
-+#ifdef USE_UCLIBC
-+#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0"
-+#else
- #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2"
-+#endif
- 
- #define LINUX_TARGET_LINK_SPEC  "%{h*} %{version:-v} \
-    %{b} \
---- gcc-4.1.0/gcc/config/cris/linux.h
-+++ gcc-4.1.0/gcc/config/cris/linux.h
-@@ -73,6 +73,25 @@ Boston, MA 02110-1301, USA.  */
- #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"
- 
-@@ -87,6 +106,8 @@ Boston, MA 02110-1301, USA.  */
-   %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\
-   %{!r:%{O2|O3: --gc-sections}}"
- 
-+#endif  /* USE_UCLIBC */
-+
- 
- /* Node: Run-time Target */
- 
---- gcc-4.1.0/gcc/config/i386/linux.h
-+++ gcc-4.1.0/gcc/config/i386/linux.h
-@@ -107,6 +107,11 @@ Boston, MA 02110-1301, USA.  */
- #define LINK_EMULATION "elf_i386"
- #define DYNAMIC_LINKER "/lib/ld-linux.so.2"
- 
-+#if defined USE_UCLIBC
-+#undef DYNAMIC_LINKER
-+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#endif
-+
- #undef  SUBTARGET_EXTRA_SPECS
- #define SUBTARGET_EXTRA_SPECS \
-   { "link_emulation", LINK_EMULATION },\
---- gcc-4.1.0/gcc/config/i386/linux64.h
-+++ gcc-4.1.0/gcc/config/i386/linux64.h
-@@ -54,14 +54,21 @@ Boston, MA 02110-1301, USA.  */
-    When the -shared link option is used a final link is not being
-    done.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
--      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
-+      %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
-+      %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
-     %{static:-static}}"
- 
- /* Similar to standard Linux, but adding -ffast-math support.  */
---- gcc-4.1.0/gcc/config/ia64/linux.h
-+++ gcc-4.1.0/gcc/config/ia64/linux.h
-@@ -37,13 +37,18 @@ do {						\
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- 
---- gcc-4.1.0/gcc/config/m68k/linux.h
-+++ gcc-4.1.0/gcc/config/m68k/linux.h
-@@ -123,12 +123,17 @@ Boston, MA 02110-1301, USA.  */
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "-m m68kelf %{shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-     %{static}}"
- 
- /* For compatibility with linux/a.out */
---- gcc-4.1.0/gcc/config/mips/linux.h
-+++ gcc-4.1.0/gcc/config/mips/linux.h
-@@ -105,6 +105,11 @@ Boston, MA 02110-1301, USA.  */
- 
- /* Borrowed from sparc/linux.h */
- #undef LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #define LINK_SPEC \
-  "%(endian_spec) \
-   %{shared:-shared} \
-@@ -112,7 +117,7 @@ Boston, MA 02110-1301, USA.  */
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- #undef SUBTARGET_ASM_SPEC
---- gcc-4.1.0/gcc/config/pa/pa-linux.h
-+++ gcc-4.1.0/gcc/config/pa/pa-linux.h
-@@ -49,13 +49,18 @@ Boston, MA 02110-1301, USA.  */
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- /* glibc's profiling functions don't need gcc to allocate counters.  */
---- gcc-4.1.0/gcc/config/rs6000/linux.h
-+++ gcc-4.1.0/gcc/config/rs6000/linux.h
-@@ -72,7 +72,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}"
---- gcc-4.1.0/gcc/config/rs6000/sysv4.h
-+++ gcc-4.1.0/gcc/config/rs6000/sysv4.h
-@@ -866,6 +866,7 @@ extern int fixuplabelno;
-   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)     }"
- 
-@@ -1043,6 +1044,10 @@ extern int fixuplabelno;
-   %{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
-@@ -1209,6 +1214,7 @@ ncrtn.o%s"
-   { "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 },			\
---- gcc-4.1.0/gcc/config/s390/linux.h
-+++ gcc-4.1.0/gcc/config/s390/linux.h
-@@ -77,6 +77,13 @@ Software Foundation, 51 Franklin Street,
- #define MULTILIB_DEFAULTS { "m31" }
- #endif
- 
-+#ifdef USE_UCLIBC
-+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC \
-   "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
-@@ -86,8 +93,8 @@ Software Foundation, 51 Franklin Street,
-       %{!static: \
- 	%{rdynamic:-export-dynamic} \
- 	%{!dynamic-linker: \
--          %{m31:-dynamic-linker /lib/ld.so.1} \
--          %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
-+          %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
-+          %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
- 
- 
- #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
---- gcc-4.1.0/gcc/config/sh/linux.h
-+++ gcc-4.1.0/gcc/config/sh/linux.h
-@@ -56,12 +56,21 @@ Boston, MA 02110-1301, USA.  */
- #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
- 
- /* Output assembler code to STREAM to call the profiler.  */
- 
---- gcc-4.1.0/gcc/config/sparc/linux.h
-+++ gcc-4.1.0/gcc/config/sparc/linux.h
-@@ -125,6 +125,11 @@ Boston, MA 02110-1301, USA.  */
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!mno-relax:%{!r:-relax}} \
-@@ -132,7 +137,7 @@ Boston, MA 02110-1301, USA.  */
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- /* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
---- gcc-4.1.0/gcc/config/sparc/linux64.h
-+++ gcc-4.1.0/gcc/config/sparc/linux64.h
-@@ -162,12 +162,17 @@ Boston, MA 02110-1301, USA.  */
-   { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
-   { "link_arch",	 LINK_ARCH_SPEC },
-     
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER  "/lib/ld-linux.so.2"
-+#endif
- #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}} \
- "
- 
---- gcc-4.1.0/libffi/configure
-+++ gcc-4.1.0/libffi/configure
-@@ -3457,6 +3457,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libgfortran/configure
-+++ gcc-4.1.0/libgfortran/configure
-@@ -3699,6 +3699,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libjava/configure
-+++ gcc-4.1.0/libjava/configure
-@@ -5137,6 +5137,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libmudflap/configure
-+++ gcc-4.1.0/libmudflap/configure
-@@ -5382,6 +5382,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libobjc/configure
-+++ gcc-4.1.0/libobjc/configure
-@@ -3312,6 +3312,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libtool.m4
-+++ gcc-4.1.0/libtool.m4
-@@ -743,6 +743,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
---- gcc-4.1.0/ltconfig
-+++ gcc-4.1.0/ltconfig
-@@ -603,6 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-
- 
- # 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
-@@ -1274,6 +1275,23 @@ linux-gnu*)
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
---- gcc-4.1.0/zlib/configure
-+++ gcc-4.1.0/zlib/configure
-@@ -3426,6 +3426,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/gcc/4.1.0/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/4.1.0/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/800-arm-bigendian.patch	(working copy)
@@ -1,67 +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-4.1.0/gcc/config/arm/linux-elf.h
-+++ gcc-4.1.0/gcc/config/arm/linux-elf.h
-@@ -28,19 +28,33 @@
- #undef  TARGET_VERSION
- #define TARGET_VERSION  fputs (" (ARM GNU/Linux with ELF)", stderr);
- 
-+/*
-+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
-+ * (big endian) configurations.
-+ */
-+#if TARGET_BIG_ENDIAN_DEFAULT
-+#define TARGET_ENDIAN_DEFAULT MASK_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
-+
- #undef  TARGET_DEFAULT_FLOAT_ABI
- #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (0)
-+#define TARGET_DEFAULT (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", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
- 
- /* Now we define the strings used to build the spec file.  */
- #undef  LIB_SPEC
-@@ -61,7 +75,7 @@
-    %{rdynamic:-export-dynamic} \
-    %{!dynamic-linker:-dynamic-linker " LINUX_TARGET_INTERPRETER "} \
-    -X \
--   %{mbig-endian:-EB}" \
-+   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
-    SUBTARGET_EXTRA_LINK_SPEC
- 
- #undef  LINK_SPEC
---- gcc-4.1.0/gcc/config.gcc
-+++ gcc-4.1.0/gcc/config.gcc
-@@ -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" 
-+	case $target in
-+	arm*b-*)
-+		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
-+		;;
-+	esac
- 	tmake_file="${tmake_file} t-linux arm/t-arm"
- 	case ${target} in
- 	arm*-*-linux-gnueabi)
Index: toolchain/gcc/4.1.0/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/4.1.0/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/300-libstdc++-pic.patch	(working copy)
@@ -1,46 +0,0 @@
-# DP: Build and install libstdc++_pic.a library.
-
---- gcc-4.1.0/libstdc++-v3/src/Makefile.am
-+++ gcc-4.1.0/libstdc++-v3/src/Makefile.am
-@@ -214,6 +214,10 @@
- 	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Added bits to build debug library.
- if GLIBCXX_BUILD_DEBUG
- all-local: build_debug
---- gcc-4.1.0/libstdc++-v3/src/Makefile.in
-+++ gcc-4.1.0/libstdc++-v3/src/Makefile.in
-@@ -627,7 +627,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -660,6 +660,7 @@
- 	distclean-libtool distclean-tags distdir dvi dvi-am html \
- 	html-am info info-am install install-am install-data \
- 	install-data-am install-data-local install-exec \
-+	install-exec-local \
- 	install-exec-am install-info install-info-am install-man \
- 	install-strip install-toolexeclibLTLIBRARIES installcheck \
- 	installcheck-am installdirs maintainer-clean \
-@@ -745,6 +746,11 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/4.1.0/302-c99-snprintf.patch
===================================================================
--- toolchain/gcc/4.1.0/302-c99-snprintf.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/302-c99-snprintf.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig	2005-04-29 00:08:41.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h	2005-04-29 00:08:45.000000000 -0500
-@@ -142,7 +142,7 @@
-   using ::vsprintf;
- }
- 
--#if _GLIBCXX_USE_C99
-+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
- 
- #undef snprintf
- #undef vfscanf
Index: toolchain/gcc/4.1.0/740-sh-pr24836.patch
===================================================================
--- toolchain/gcc/4.1.0/740-sh-pr24836.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/740-sh-pr24836.patch	(working copy)
@@ -1,25 +0,0 @@
-http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348
-http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836
-
---- gcc/gcc/configure.ac	(revision 106699)
-+++ gcc/gcc/configure.ac	(working copy)
-@@ -2446,7 +2446,7 @@
- 	tls_first_minor=14
- 	tls_as_opt="-m64 -Aesame --fatal-warnings"
- 	;;
--  sh-*-* | sh[34]-*-*)
-+  sh-*-* | sh[34]*-*-*)
-     conftest_s='
- 	.section ".tdata","awT",@progbits
- foo:	.long	25
---- gcc/gcc/configure
-+++ gcc/gcc/configure
-@@ -14846,7 +14846,7 @@
- 	tls_first_minor=14
- 	tls_as_opt="-m64 -Aesame --fatal-warnings"
- 	;;
--  sh-*-* | sh[34]-*-*)
-+  sh-*-* | sh[34]*-*-*)
-     conftest_s='
- 	.section ".tdata","awT",@progbits
- foo:	.long	25
Index: toolchain/gcc/4.1.0/304-index_macro.patch
===================================================================
--- toolchain/gcc/4.1.0/304-index_macro.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/304-index_macro.patch	(working copy)
@@ -1,24 +0,0 @@
---- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps	2006-03-24 01:49:51 +0100
-+++ gcc-4.1.0/libstdc++-v3/include/ext/rope	2006-03-24 01:49:37 +0100
-@@ -59,6 +59,9 @@
- #include <bits/allocator.h>
- #include <ext/hash_fun.h>
- 
-+/* cope w/ index defined as macro, SuSv3 proposal */
-+#undef index
-+
- # ifdef __GC
- #   define __GC_CONST const
- # else
---- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps	2006-03-24 01:50:04 +0100
-+++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h	2006-03-24 01:50:28 +0100
-@@ -53,6 +53,9 @@
- #include <ext/memory> // For uninitialized_copy_n
- #include <ext/numeric> // For power
- 
-+/* cope w/ index defined as macro, SuSv3 proposal */
-+#undef index
-+
- namespace __gnu_cxx
- {
-   using std::size_t;
Index: toolchain/gcc/4.1.0/110-arm-eabi.patch
===================================================================
--- toolchain/gcc/4.1.0/110-arm-eabi.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/110-arm-eabi.patch	(working copy)
@@ -1,27 +0,0 @@
---- gcc-2005q3-1.orig/gcc/config.gcc	2005-10-31 19:02:54.000000000 +0300
-+++ gcc-2005q3-1/gcc/config.gcc	2006-01-27 01:09:09.000000000 +0300
-@@ -674,7 +674,7 @@
- 	tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" 
- 	tmake_file="t-slibgcc-elf-ver t-linux arm/t-arm"
- 	case ${target} in
--	arm*-*-linux-gnueabi)
-+	arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
- 	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
- 	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
-   	    # The BPABI long long divmod functions return a 128-bit value in 
-
-diff -urN gcc-2005q3-2/gcc/config/arm/linux-eabi.h gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h
---- gcc-2005q3-2/gcc/config/arm/linux-eabi.h	2005-12-07 23:14:16.000000000 +0300
-+++ gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h	2006-03-29 19:02:34.000000000 +0400
-@@ -53,7 +53,11 @@
- /* Use ld-linux.so.3 so that it will be possible to run "classic"
-    GNU/Linux binaries on an EABI system.  */
- #undef LINUX_TARGET_INTERPRETER
-+#ifdef USE_UCLIBC
-+#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0"
-+#else
- #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3"
-+#endif
- 
- /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
-    use the GNU/Linux version, not the generic BPABI version.  */
Index: toolchain/gcc/4.1.0/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/4.1.0/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/200-uclibc-locale.patch	(working copy)
@@ -1,3261 +0,0 @@
-diff -urN gcc-4.1.0-dist/libstdc++-v3/acinclude.m4 gcc-4.1.0/libstdc++-v3/acinclude.m4
---- gcc-4.1.0-dist/libstdc++-v3/acinclude.m4	2006-03-26 12:08:28.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/acinclude.m4	2006-03-25 22:06:30.000000000 -0700
-@@ -1071,7 +1071,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
-@@ -1087,6 +1087,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      *-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1230,6 +1233,40 @@
-       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_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-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2006-03-25 22:18:37.000000000 -0700
-@@ -0,0 +1,63 @@
-+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
-+
-+// Copyright (C) 2002, 2004, 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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 <bits/c++config.h>
-+#include <clocale>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning clean this up
-+#endif
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+                                                  
-+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(newlocale) __newlocale;
-+extern "C" __typeof(freelocale) __freelocale;
-+extern "C" __typeof(duplocale) __duplocale;
-+extern "C" __typeof(uselocale) __uselocale;
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+extern "C" __typeof(iswctype_l) __iswctype_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;
-+#endif 
-+
-+#endif // GLIBC 2.3 and later
-diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.cc	2006-03-25 22:18:37.000000000 -0700
-@@ -0,0 +1,152 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005 
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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)
-+    {
-+      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)
-+    {
-+      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)
-+    {
-+      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 (__cloc && _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-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.h
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.h	2006-03-26 13:03:42.000000000 -0700
-@@ -0,0 +1,117 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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 __attribute__ ((__unused__)),
-+		     const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2006-03-25 22:18:37.000000000 -0700
-@@ -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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-4.1.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/collate_members.cc	2006-03-25 22:18:37.000000000 -0700
-@@ -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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-4.1.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2006-03-25 22:18:37.000000000 -0700
-@@ -0,0 +1,314 @@
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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 = __wmask_type();
-+      }
-+    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
-+  { 
-+    // The case of __m == ctype_base::space is particularly important,
-+    // due to its use in many istream functions.  Therefore we deal with
-+    // it first, exploiting the knowledge that on GNU systems _M_bit[5]
-+    // is the mask corresponding to ctype_base::space.  NB: an encoding
-+    // change would not affect correctness!
-+    bool __ret = false;
-+    if (__m == _M_bit[5])
-+      __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
-+    else
-+      {
-+	// Highest bitmask in ctype_base == 10, but extra in "C"
-+	// library for blank.
-+	const size_t __bitmasksize = 11;
-+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+	  if (__m & _M_bit[__bitcur])
-+	    {
-+	      if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
-+		{
-+		  __ret = true;
-+		  break;
-+		}
-+	      else if (__m == _M_bit[__bitcur])
-+		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-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.cc	2006-03-25 22:18:37.000000000 -0700
-@@ -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.h
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.h	2006-03-25 22:18:37.000000000 -0700
-@@ -0,0 +1,121 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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(NULL), _M_name_messages(NULL)
-+     {
-+       const size_t __len = std::strlen(__s) + 1;
-+       char* __tmp = new char[__len];
-+       std::memcpy(__tmp, __s, __len);
-+       _M_name_messages = __tmp;
-+
-+       // Last to avoid leaking memory if new throws.
-+       _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()
-+    { 
-+      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-4.1.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2006-03-25 22:18:37.000000000 -0700
-@@ -0,0 +1,692 @@
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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:
-+	__ret = pattern();
-+      }
-+    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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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-4.1.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2006-03-25 22:18:37.000000000 -0700
-@@ -0,0 +1,173 @@
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+ 
-+  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',';
-+
-+	  // Use ctype::widen code without the facet...
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  // NB: In the GNU model wchar_t is always 32 bit wide.
-+#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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.cc
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.cc	2006-03-25 22:18:37.000000000 -0700
-@@ -0,0 +1,406 @@
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
-+							     __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  union { char *__s; wchar_t *__w; } __u;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
-+	  _M_data->_M_date_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
-+	  _M_data->_M_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
-+	  _M_data->_M_am = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
-+	  _M_data->_M_pm = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
-+	  _M_data->_M_am_pm_format = __u.__w;
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
-+	  _M_data->_M_day1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
-+	  _M_data->_M_day2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
-+	  _M_data->_M_day3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
-+	  _M_data->_M_day4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
-+	  _M_data->_M_day5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
-+	  _M_data->_M_day6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
-+	  _M_data->_M_day7 = __u.__w;
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
-+	  _M_data->_M_aday1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
-+	  _M_data->_M_aday2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
-+	  _M_data->_M_aday3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
-+	  _M_data->_M_aday4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
-+	  _M_data->_M_aday5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
-+	  _M_data->_M_aday6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
-+	  _M_data->_M_aday7 = __u.__w;
-+
-+	  // Month names, starting with "C"'s January.
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
-+	  _M_data->_M_month01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
-+	  _M_data->_M_month02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
-+	  _M_data->_M_month03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
-+	  _M_data->_M_month04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
-+	  _M_data->_M_month05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
-+	  _M_data->_M_month06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
-+	  _M_data->_M_month07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
-+	  _M_data->_M_month08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
-+	  _M_data->_M_month09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
-+	  _M_data->_M_month10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
-+	  _M_data->_M_month11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
-+	  _M_data->_M_month12 = __u.__w;
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
-+	  _M_data->_M_amonth01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
-+	  _M_data->_M_amonth02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
-+	  _M_data->_M_amonth03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
-+	  _M_data->_M_amonth04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
-+	  _M_data->_M_amonth05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
-+	  _M_data->_M_amonth06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
-+	  _M_data->_M_amonth07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
-+	  _M_data->_M_amonth08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
-+	  _M_data->_M_amonth09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
-+	  _M_data->_M_amonth10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
-+	  _M_data->_M_amonth11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
-+	  _M_data->_M_amonth12 = __u.__w;
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff -urN gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.h
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.h	2005-10-21 02:34:06.000000000 -0600
-@@ -0,0 +1,76 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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(NULL)
-+    { 
-+      const size_t __len = std::strlen(__s) + 1;
-+      char* __tmp = new char[__len];
-+      std::memcpy(__tmp, __s, __len);
-+      _M_name_timepunct = __tmp;
-+
-+      try
-+	{ _M_initialize_timepunct(__cloc); }
-+      catch(...)
-+	{
-+	  delete [] _M_name_timepunct;
-+	  __throw_exception_again;
-+	}
-+    }
-+
-+  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-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_base.h
---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_base.h	2006-03-25 22:06:30.000000000 -0700
-@@ -0,0 +1,64 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 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.1  Locales
-+//
-+  
-+/** @file ctype_base.h
-+ *  This is an internal header file, included by other library headers.
-+ *  You should not attempt to use it directly.
-+ */
-+
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  /// @brief  Base class for ctype.
-+  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-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_inline.h
---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_inline.h	2006-03-25 22:06:30.000000000 -0700
-@@ -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-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h
---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2006-03-25 22:06:30.000000000 -0700
-@@ -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-4.1.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.1.0/libstdc++-v3/config/os/uclibc/os_defines.h
---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 17:00:00.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/os_defines.h	2006-03-25 22:06:30.000000000 -0700
-@@ -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-4.1.0-dist/libstdc++-v3/configure gcc-4.1.0/libstdc++-v3/configure
---- gcc-4.1.0-dist/libstdc++-v3/configure	2006-03-26 12:08:28.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/configure	2006-03-25 22:06:30.000000000 -0700
-@@ -4005,6 +4005,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5740,7 +5745,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5765,6 +5770,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      linux-uclibc*)
-+        enable_clocale_flag=uclibc
-+	;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h.  */
-@@ -5995,6 +6003,76 @@
-       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_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-4.1.0-dist/libstdc++-v3/configure.host gcc-4.1.0/libstdc++-v3/configure.host
---- gcc-4.1.0-dist/libstdc++-v3/configure.host	2006-03-26 12:08:28.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/configure.host	2006-03-25 22:06:30.000000000 -0700
-@@ -261,6 +261,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-4.1.0-dist/libstdc++-v3/crossconfig.m4 gcc-4.1.0/libstdc++-v3/crossconfig.m4
---- gcc-4.1.0-dist/libstdc++-v3/crossconfig.m4	2006-03-26 12:08:28.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/crossconfig.m4	2006-03-25 22:06:30.000000000 -0700
-@@ -143,6 +143,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 \
-@@ -157,7 +250,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-4.1.0-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.1.0/libstdc++-v3/include/c_compatibility/wchar.h
---- gcc-4.1.0-dist/libstdc++-v3/include/c_compatibility/wchar.h	2006-03-26 12:08:28.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/include/c_compatibility/wchar.h	2006-03-25 22:06:30.000000000 -0700
-@@ -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-4.1.0-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.1.0/libstdc++-v3/include/c_std/std_cwchar.h
---- gcc-4.1.0-dist/libstdc++-v3/include/c_std/std_cwchar.h	2006-03-26 12:08:28.000000000 -0700
-+++ gcc-4.1.0/libstdc++-v3/include/c_std/std_cwchar.h	2006-03-25 22:06:30.000000000 -0700
-@@ -180,7 +180,9 @@
-   using ::wcscoll;
-   using ::wcscpy;
-   using ::wcscspn;
-+#if _GLIBCXX_HAVE_WCSFTIME
-   using ::wcsftime;
-+#endif
-   using ::wcslen;
-   using ::wcsncat;
-   using ::wcsncmp;
Index: toolchain/gcc/4.1.0/303-c99-complex-ugly-hack.patch
===================================================================
--- toolchain/gcc/4.1.0/303-c99-complex-ugly-hack.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/303-c99-complex-ugly-hack.patch	(working copy)
@@ -1,12 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/configure-old	2005-04-30 22:04:48.061603912 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 22:06:13.678588152 -0500
-@@ -7194,6 +7194,9 @@
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h.  */
- #include <complex.h>
-+#ifdef __UCLIBC__
-+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
-+#endif
- int
- main ()
- {
Index: toolchain/gcc/4.1.0/301-missing-execinfo_h.patch
===================================================================
--- toolchain/gcc/4.1.0/301-missing-execinfo_h.patch	(revision 20005)
+++ toolchain/gcc/4.1.0/301-missing-execinfo_h.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/boehm-gc/include/gc.h-orig	2005-04-28 22:28:57.000000000 -0500
-+++ gcc-4.0.0/boehm-gc/include/gc.h	2005-04-28 22:30:38.000000000 -0500
-@@ -500,7 +500,7 @@
- #ifdef __linux__
- # include <features.h>
- # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
--     && !defined(__ia64__)
-+     && !defined(__ia64__) && !defined(__UCLIBC__)
- #   ifndef GC_HAVE_BUILTIN_BACKTRACE
- #     define GC_HAVE_BUILTIN_BACKTRACE
- #   endif
Index: toolchain/gcc/4.0.2/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/4.0.2/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/4.0.2/100-uclibc-conf.patch	(working copy)
@@ -1,553 +0,0 @@
---- gcc-4.0.2/gcc/config/t-linux-uclibc
-+++ gcc-4.0.2/gcc/config/t-linux-uclibc
-@@ -0,0 +1,5 @@
-+# Remove glibc specific files added in t-linux
-+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
-+
-+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
-+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
---- gcc-4.0.2/gcc/config.gcc
-+++ gcc-4.0.2/gcc/config.gcc
-@@ -1778,7 +1778,7 @@
- 	;;
- sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
- sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
--  sh-*-linux* | sh[346lbe]*-*-linux* | \
-+  sh*-*-linux* | sh[346lbe]*-*-linux* | \
-   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-    sh64-*-netbsd* | sh64l*-*-netbsd*)
- 	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
-@@ -2234,10 +2234,16 @@
- *)
- 	echo "*** Configuration ${target} not supported" 1>&2
- 	exit 1
- 	;;
- esac
-+
-+# Rather than hook into each target, just do it after all the linux
-+# targets have been processed
-+case ${target} in
-+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
-+esac
- 
- case ${target} in
- i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1)
- 	tmake_file="${tmake_file} i386/t-gmm_malloc"
- 	;;
---- gcc-4.0.2/gcc/config/alpha/linux-elf.h
-+++ gcc-4.0.2/gcc/config/alpha/linux-elf.h
-@@ -27,7 +27,11 @@
- #define SUBTARGET_EXTRA_SPECS \
- { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
- #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
-+#endif
- 
- #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
-   %{O*:-O3} %{!O*:-O1}						\
---- gcc-4.0.2/gcc/config/arm/linux-elf.h
-+++ gcc-4.0.2/gcc/config/arm/linux-elf.h
-@@ -81,14 +81,19 @@
- #define ENDFILE_SPEC \
-   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC "%{h*} %{version:-v} \
-    %{b} %{Wl,*:%*} \
-    %{static:-Bstatic} \
-    %{shared:-shared} \
-    %{symbolic:-Bsymbolic} \
-    %{rdynamic:-export-dynamic} \
--   %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
-+   %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \
-    -X \
-    %{mbig-endian:-EB}" \
-    SUBTARGET_EXTRA_LINK_SPEC
---- gcc-4.0.2/gcc/config/cris/linux.h
-+++ gcc-4.0.2/gcc/config/cris/linux.h
-@@ -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 */
- 
---- gcc-4.0.2/gcc/config/i386/linux.h
-+++ gcc-4.0.2/gcc/config/i386/linux.h
-@@ -107,6 +107,11 @@
- #define LINK_EMULATION "elf_i386"
- #define DYNAMIC_LINKER "/lib/ld-linux.so.2"
- 
-+#ifdef USE_UCLIBC
-+#undef DYNAMIC_LINKER
-+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#endif
-+
- #undef  SUBTARGET_EXTRA_SPECS
- #define SUBTARGET_EXTRA_SPECS \
-   { "link_emulation", LINK_EMULATION },\
---- gcc-4.0.2/gcc/config/i386/linux64.h
-+++ gcc-4.0.2/gcc/config/i386/linux64.h
-@@ -54,14 +54,21 @@
-    When the -shared link option is used a final link is not being
-    done.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
--      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
-+      %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
-+      %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
-     %{static:-static}}"
- 
- #define MULTILIB_DEFAULTS { "m64" }
---- gcc-4.0.2/gcc/config/ia64/linux.h
-+++ gcc-4.0.2/gcc/config/ia64/linux.h
-@@ -37,13 +37,18 @@
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- 
---- gcc-4.0.2/gcc/config/m68k/linux.h
-+++ gcc-4.0.2/gcc/config/m68k/linux.h
-@@ -127,12 +127,17 @@
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "-m m68kelf %{shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-     %{static}}"
- 
- /* For compatibility with linux/a.out */
---- gcc-4.0.2/gcc/config/mips/linux.h
-+++ gcc-4.0.2/gcc/config/mips/linux.h
-@@ -108,14 +108,19 @@
- 
- /* Borrowed from sparc/linux.h */
- #undef LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #define LINK_SPEC \
-  "%(endian_spec) \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- #undef SUBTARGET_ASM_SPEC
---- gcc-4.0.2/gcc/config/pa/pa-linux.h
-+++ gcc-4.0.2/gcc/config/pa/pa-linux.h
-@@ -82,13 +82,18 @@
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- /* glibc's profiling functions don't need gcc to allocate counters.  */
---- gcc-4.0.2/gcc/config/rs6000/linux.h
-+++ gcc-4.0.2/gcc/config/rs6000/linux.h
-@@ -69,7 +69,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}"
---- gcc-4.0.2/gcc/config/rs6000/sysv4.h
-+++ gcc-4.0.2/gcc/config/rs6000/sysv4.h
-@@ -949,6 +949,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)     }"
- 
-@@ -1127,6 +1128,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
-@@ -1293,6 +1298,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 },			\
---- gcc-4.0.2/gcc/config/s390/linux.h
-+++ gcc-4.0.2/gcc/config/s390/linux.h
-@@ -77,6 +77,13 @@
- #define MULTILIB_DEFAULTS { "m31" }
- #endif
- 
-+#ifdef USE_UCLIBC
-+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC \
-   "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
-@@ -86,8 +93,8 @@
-       %{!static: \
- 	%{rdynamic:-export-dynamic} \
- 	%{!dynamic-linker: \
--          %{m31:-dynamic-linker /lib/ld.so.1} \
--          %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
-+          %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
-+          %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
- 
- 
- #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
---- gcc-4.0.2/gcc/config/sh/linux.h
-+++ gcc-4.0.2/gcc/config/sh/linux.h
-@@ -67,11 +67,16 @@
- #undef SUBTARGET_LINK_EMUL_SUFFIX
- #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
- #undef SUBTARGET_LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #define SUBTARGET_LINK_SPEC \
-   "%{shared:-shared} \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
--     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+     %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-    %{static:-static}"
- 
- #undef LIB_SPEC
---- gcc-4.0.2/gcc/config/sparc/linux.h
-+++ gcc-4.0.2/gcc/config/sparc/linux.h
-@@ -130,14 +130,19 @@
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!mno-relax:%{!r:-relax}} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- /* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
---- gcc-4.0.2/gcc/config/sparc/linux64.h
-+++ gcc-4.0.2/gcc/config/sparc/linux64.h
-@@ -167,12 +166,17 @@
-   { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
-   { "link_arch",	 LINK_ARCH_SPEC },
-     
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER  "/lib/ld-linux.so.2"
-+#endif
- #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}} \
- "
- 
---- gcc-4.0.2/libtool.m4
-+++ gcc-4.0.2/libtool.m4
-@@ -682,6 +682,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
---- gcc-4.0.2/ltconfig
-+++ gcc-4.0.2/ltconfig
-@@ -603,6 +603,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
-@@ -1274,6 +1275,23 @@
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
---- gcc-4.0.2/libffi/configure
-+++ gcc-4.0.2/libffi/configure
-@@ -3457,6 +3457,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/libgfortran/configure
-+++ gcc-4.0.2/libgfortran/configure
-@@ -3681,6 +3681,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/libjava/configure
-+++ gcc-4.0.2/libjava/configure
-@@ -4351,6 +4351,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/libmudflap/configure
-+++ gcc-4.0.2/libmudflap/configure
-@@ -5380,6 +5380,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/libobjc/configure
-+++ gcc-4.0.2/libobjc/configure
-@@ -3283,6 +3283,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/boehm-gc/configure
-+++ gcc-4.0.2/boehm-gc/configure
-@@ -4320,6 +4320,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/configure
-+++ gcc-4.0.2/configure
-@@ -1141,7 +1141,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
---- gcc-4.0.2/configure.in
-+++ gcc-4.0.2/configure.in
-@@ -350,7 +350,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
---- gcc-4.0.2/contrib/regression/objs-gcc.sh
-+++ gcc-4.0.2/contrib/regression/objs-gcc.sh
-@@ -105,6 +105,10 @@
-  then
-   make all-gdb all-dejagnu all-ld || exit 1
-   make install-gdb install-dejagnu install-ld || exit 1
-+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-+ then
-+  make all-gdb all-dejagnu all-ld || exit 1
-+  make install-gdb install-dejagnu install-ld || exit 1
- elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-   make bootstrap || exit 1
-   make install || exit 1
---- gcc-4.0.2/zlib/configure
-+++ gcc-4.0.2/zlib/configure
-@@ -3426,6 +3426,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/gcc/4.0.2/602-sdk-libstdc++-includes.patch
===================================================================
--- toolchain/gcc/4.0.2/602-sdk-libstdc++-includes.patch	(revision 20005)
+++ toolchain/gcc/4.0.2/602-sdk-libstdc++-includes.patch	(working copy)
@@ -1,22 +0,0 @@
-diff -urN gcc-4.0.0-100/libstdc++-v3/fragment.am gcc-4.0.0/libstdc++-v3/fragment.am
---- gcc-4.0.0-100/libstdc++-v3/fragment.am	2004-10-25 15:32:40.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/fragment.am	2005-04-28 21:48:43.000000000 -0500
-@@ -18,5 +18,5 @@
- 	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
- 
- # -I/-D flags to pass when compiling.
--AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
-+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
- 
-diff -urN gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am gcc-4.0.0/libstdc++-v3/libmath/Makefile.am
---- gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am	2003-08-27 16:29:42.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/libmath/Makefile.am	2005-04-28 21:48:43.000000000 -0500
-@@ -32,7 +32,7 @@
- 
- libmath_la_SOURCES = stubs.c
- 
--AM_CPPFLAGS = $(CANADIAN_INCLUDES)
-+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
- 
- # Only compiling "C" sources in this directory.
- LIBTOOL = @LIBTOOL@ --tag CC
Index: toolchain/gcc/4.0.2/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/4.0.2/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/4.0.2/800-arm-bigendian.patch	(working copy)
@@ -1,67 +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-4.0.3/gcc/config/arm/linux-elf.h
-+++ gcc-4.0.3/gcc/config/arm/linux-elf.h
-@@ -31,19 +31,33 @@
- /* 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
-+
- #undef  TARGET_DEFAULT_FLOAT_ABI
- #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (0)
-+#define TARGET_DEFAULT (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", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
- 
- /* The GNU C++ standard library requires that these macros be defined.  */
- #undef CPLUSPLUS_CPP_SPEC
-@@ -90,7 +104,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
- 
- #define TARGET_OS_CPP_BUILTINS()		\
---- gcc-4.0.3/gcc/config.gcc
-+++ gcc-4.0.3/gcc/config.gcc
-@@ -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="${tmake_file} arm/t-arm arm/t-linux"
- 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
- 	gnu_ld=yes
Index: toolchain/gcc/4.0.2/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/4.0.2/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/4.0.2/300-libstdc++-pic.patch	(working copy)
@@ -1,45 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/src/Makefile.am
-+++ gcc-4.0.0/libstdc++-v3/src/Makefile.am
-@@ -214,6 +214,10 @@
- 	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Added bits to build debug library.
- if GLIBCXX_BUILD_DEBUG
- all-local: build_debug
---- gcc-4.0.0/libstdc++-v3/src/Makefile.in
-+++ gcc-4.0.0/libstdc++-v3/src/Makefile.in
-@@ -625,7 +625,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -664,7 +664,7 @@
- 	maintainer-clean-generic mostlyclean mostlyclean-compile \
- 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- 	tags uninstall uninstall-am uninstall-info-am \
--	uninstall-toolexeclibLTLIBRARIES
-+	uninstall-toolexeclibLTLIBRARIES install-exec-local
- 
- @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@libstdc++-symbol.ver:  ${glibcxx_srcdir}/$(SYMVER_MAP)
- @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@	cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
-@@ -743,6 +743,11 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/4.0.2/302-c99-snprintf.patch
===================================================================
--- toolchain/gcc/4.0.2/302-c99-snprintf.patch	(revision 20005)
+++ toolchain/gcc/4.0.2/302-c99-snprintf.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig	2005-04-29 00:08:41.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h	2005-04-29 00:08:45.000000000 -0500
-@@ -142,7 +142,7 @@
-   using ::vsprintf;
- }
- 
--#if _GLIBCXX_USE_C99
-+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
- 
- #undef snprintf
- #undef vfscanf
Index: toolchain/gcc/4.0.2/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/4.0.2/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/4.0.2/200-uclibc-locale.patch	(working copy)
@@ -1,3237 +0,0 @@
-diff -urN gcc-4.0.0-100/libstdc++-v3/acinclude.m4 gcc-4.0.0/libstdc++-v3/acinclude.m4
---- gcc-4.0.0-100/libstdc++-v3/acinclude.m4	2005-04-30 13:06:53.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/acinclude.m4	2005-04-28 20:19:01.000000000 -0500
-@@ -1104,7 +1104,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
-@@ -1120,6 +1120,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      *-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1263,6 +1266,40 @@
-       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_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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h	2005-04-28 01:13:15.000000000 -0500
-@@ -0,0 +1,115 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifndef _C_LOCALE_H
-+#define _C_LOCALE_H 1
-+
-+#pragma GCC system_header
-+
-+#include <cstring>              // get std::strlen
-+#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <clocale>
-+#include <langinfo.h>		// For codecvt
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC_HAS_LOCALE__
-+#include <iconv.h>		// For codecvt using iconv, iconv_t
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#include <libintl.h> 		// For messages
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning what is _GLIBCXX_C_LOCALE_GNU for
-+#endif
-+#define _GLIBCXX_C_LOCALE_GNU 1
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix categories
-+#endif
-+// #define _GLIBCXX_NUM_CATEGORIES 6
-+#define _GLIBCXX_NUM_CATEGORIES 0
-+ 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+namespace __gnu_cxx
-+{
-+  extern "C" __typeof(uselocale) __uselocale;
-+}
-+#endif
-+
-+namespace std
-+{
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+  typedef __locale_t		__c_locale;
-+#else
-+  typedef int*			__c_locale;
-+#endif
-+
-+  // Convert numeric value of type _Tv to string and return length of
-+  // string.  If snprintf is available use it, otherwise fall back to
-+  // the unsafe sprintf which, in general, can be dangerous and should
-+  // be avoided.
-+  template<typename _Tv>
-+    int
-+    __convert_from_v(char* __out, const int __size, const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2005-04-28 01:13:15.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 = __wmask_type();
-+      }
-+    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-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2005-04-28 01:23:02.000000000 -0500
-@@ -0,0 +1,692 @@
-+// 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:
-+	__ret = pattern();
-+      }
-+    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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2005-04-28 01:20:20.000000000 -0500
-@@ -0,0 +1,173 @@
-+// 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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+ 
-+  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',';
-+
-+	  // Use ctype::widen code without the facet...
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  // NB: In the GNU model wchar_t is always 32 bit wide.
-+#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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc	2005-04-28 01:13:15.000000000 -0500
-@@ -0,0 +1,406 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
-+							     __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  union { char *__s; wchar_t *__w; } __u;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
-+	  _M_data->_M_date_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
-+	  _M_data->_M_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
-+	  _M_data->_M_am = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
-+	  _M_data->_M_pm = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
-+	  _M_data->_M_am_pm_format = __u.__w;
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
-+	  _M_data->_M_day1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
-+	  _M_data->_M_day2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
-+	  _M_data->_M_day3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
-+	  _M_data->_M_day4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
-+	  _M_data->_M_day5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
-+	  _M_data->_M_day6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
-+	  _M_data->_M_day7 = __u.__w;
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
-+	  _M_data->_M_aday1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
-+	  _M_data->_M_aday2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
-+	  _M_data->_M_aday3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
-+	  _M_data->_M_aday4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
-+	  _M_data->_M_aday5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
-+	  _M_data->_M_aday6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
-+	  _M_data->_M_aday7 = __u.__w;
-+
-+	  // Month names, starting with "C"'s January.
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
-+	  _M_data->_M_month01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
-+	  _M_data->_M_month02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
-+	  _M_data->_M_month03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
-+	  _M_data->_M_month04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
-+	  _M_data->_M_month05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
-+	  _M_data->_M_month06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
-+	  _M_data->_M_month07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
-+	  _M_data->_M_month08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
-+	  _M_data->_M_month09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
-+	  _M_data->_M_month10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
-+	  _M_data->_M_month11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
-+	  _M_data->_M_month12 = __u.__w;
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
-+	  _M_data->_M_amonth01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
-+	  _M_data->_M_amonth02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
-+	  _M_data->_M_amonth03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
-+	  _M_data->_M_amonth04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
-+	  _M_data->_M_amonth05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
-+	  _M_data->_M_amonth06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
-+	  _M_data->_M_amonth07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
-+	  _M_data->_M_amonth08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
-+	  _M_data->_M_amonth09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
-+	  _M_data->_M_amonth10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
-+	  _M_data->_M_amonth11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
-+	  _M_data->_M_amonth12 = __u.__w;
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h	2004-05-22 18:46:31.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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h	2005-04-28 01:10:27.000000000 -0500
-@@ -0,0 +1,64 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 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.1  Locales
-+//
-+  
-+/** @file ctype_base.h
-+ *  This is an internal header file, included by other library headers.
-+ *  You should not attempt to use it directly.
-+ */
-+
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  /// @brief  Base class for ctype.
-+  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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2005-04-28 01:10:27.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-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h	2005-04-28 01:10:27.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-4.0.0-100/libstdc++-v3/configure gcc-4.0.0/libstdc++-v3/configure
---- gcc-4.0.0-100/libstdc++-v3/configure	2005-04-30 13:06:53.683055232 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 12:24:24.000000000 -0500
-@@ -3998,6 +3998,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5672,7 +5677,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5697,6 +5702,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      linux-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h.  */
-@@ -5927,6 +5935,76 @@
-       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_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-4.0.0-100/libstdc++-v3/configure.host gcc-4.0.0/libstdc++-v3/configure.host
---- gcc-4.0.0-100/libstdc++-v3/configure.host	2005-04-30 13:06:53.688054472 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure.host	2005-04-28 20:20:32.000000000 -0500
-@@ -249,6 +249,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-4.0.0-100/libstdc++-v3/crossconfig.m4 gcc-4.0.0/libstdc++-v3/crossconfig.m4
---- gcc-4.0.0-100/libstdc++-v3/crossconfig.m4	2005-04-30 13:06:53.689054320 -0500
-+++ gcc-4.0.0/libstdc++-v3/crossconfig.m4	2005-04-28 20:27:15.000000000 -0500
-@@ -142,6 +142,98 @@
- 	;;
-     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_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 \
-@@ -156,7 +248,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-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h
---- gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h	2005-04-30 13:06:53.690054168 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h	2005-04-28 20:15:56.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-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h
---- gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h	2005-04-30 13:06:53.691054016 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h	2005-04-28 20:15:56.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;
Index: toolchain/gcc/4.0.2/303-c99-complex-ugly-hack.patch
===================================================================
--- toolchain/gcc/4.0.2/303-c99-complex-ugly-hack.patch	(revision 20005)
+++ toolchain/gcc/4.0.2/303-c99-complex-ugly-hack.patch	(working copy)
@@ -1,12 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/configure-old	2005-04-30 22:04:48.061603912 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 22:06:13.678588152 -0500
-@@ -7194,6 +7194,9 @@
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h.  */
- #include <complex.h>
-+#ifdef __UCLIBC__
-+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
-+#endif
- int
- main ()
- {
Index: toolchain/gcc/4.0.2/301-missing-execinfo_h.patch
===================================================================
--- toolchain/gcc/4.0.2/301-missing-execinfo_h.patch	(revision 20005)
+++ toolchain/gcc/4.0.2/301-missing-execinfo_h.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/boehm-gc/include/gc.h-orig	2005-04-28 22:28:57.000000000 -0500
-+++ gcc-4.0.0/boehm-gc/include/gc.h	2005-04-28 22:30:38.000000000 -0500
-@@ -500,7 +500,7 @@
- #ifdef __linux__
- # include <features.h>
- # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
--     && !defined(__ia64__)
-+     && !defined(__ia64__) && !defined(__UCLIBC__)
- #   ifndef GC_HAVE_BUILTIN_BACKTRACE
- #     define GC_HAVE_BUILTIN_BACKTRACE
- #   endif
Index: toolchain/gcc/4.1.1/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/4.1.1/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/100-uclibc-conf.patch	(working copy)
@@ -1,544 +0,0 @@
---- gcc-4.1.0/gcc/config/t-linux-uclibc
-+++ gcc-4.1.0/gcc/config/t-linux-uclibc
-@@ -0,0 +1,5 @@
-+# Remove glibc specific files added in t-linux
-+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
-+
-+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
-+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
---- gcc-4.1.0/gcc/config.gcc
-+++ gcc-4.1.0/gcc/config.gcc
-@@ -1887,7 +1887,7 @@ s390x-ibm-tpf*)
- 	;;
- sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
- sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
--  sh-*-linux* | sh[346lbe]*-*-linux* | \
-+  sh*-*-linux* | sh[346lbe]*-*-linux* | \
-   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-    sh64-*-netbsd* | sh64l*-*-netbsd*)
- 	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
-@@ -2341,6 +2341,12 @@ m32c-*-elf*)
- 	;;
- esac
- 
-+# Rather than hook into each target, just do it after all the linux
-+# targets have been processed
-+case ${target} in
-+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
-+esac
-+
- case ${target} in
- i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1)
- 	tmake_file="${tmake_file} i386/t-gmm_malloc"
---- gcc-4.1.0/boehm-gc/configure
-+++ gcc-4.1.0/boehm-gc/configure
-@@ -4320,6 +4320,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/configure
-+++ gcc-4.1.0/configure
-@@ -1133,7 +1133,7 @@ no)
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
---- gcc-4.1.0/configure.in
-+++ gcc-4.1.0/configure.in
-@@ -341,7 +341,7 @@ no)
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
---- gcc-4.1.0/contrib/regression/objs-gcc.sh
-+++ gcc-4.1.0/contrib/regression/objs-gcc.sh
-@@ -105,6 +105,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H
-  then
-   make all-gdb all-dejagnu all-ld || exit 1
-   make install-gdb install-dejagnu install-ld || exit 1
-+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-+ then
-+  make all-gdb all-dejagnu all-ld || exit 1
-+  make install-gdb install-dejagnu install-ld || exit 1
- elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-   make bootstrap || exit 1
-   make install || exit 1
---- gcc-4.1.0/gcc/config/alpha/linux-elf.h
-+++ gcc-4.1.0/gcc/config/alpha/linux-elf.h
-@@ -27,7 +27,11 @@ Boston, MA 02110-1301, USA.  */
- #define SUBTARGET_EXTRA_SPECS \
- { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
- 
-+#if defined USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
- #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
-+#endif
- 
- #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
-   %{O*:-O3} %{!O*:-O1}						\
---- gcc-4.1.0/gcc/config/arm/linux-elf.h
-+++ gcc-4.1.0/gcc/config/arm/linux-elf.h
-@@ -51,7 +51,11 @@
- 
- #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
- 
-+#ifdef USE_UCLIBC
-+#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0"
-+#else
- #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2"
-+#endif
- 
- #define LINUX_TARGET_LINK_SPEC  "%{h*} %{version:-v} \
-    %{b} \
---- gcc-4.1.0/gcc/config/cris/linux.h
-+++ gcc-4.1.0/gcc/config/cris/linux.h
-@@ -73,6 +73,25 @@ Boston, MA 02110-1301, USA.  */
- #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"
- 
-@@ -87,6 +106,8 @@ Boston, MA 02110-1301, USA.  */
-   %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\
-   %{!r:%{O2|O3: --gc-sections}}"
- 
-+#endif  /* USE_UCLIBC */
-+
- 
- /* Node: Run-time Target */
- 
---- gcc-4.1.0/gcc/config/i386/linux.h
-+++ gcc-4.1.0/gcc/config/i386/linux.h
-@@ -107,6 +107,11 @@ Boston, MA 02110-1301, USA.  */
- #define LINK_EMULATION "elf_i386"
- #define DYNAMIC_LINKER "/lib/ld-linux.so.2"
- 
-+#if defined USE_UCLIBC
-+#undef DYNAMIC_LINKER
-+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#endif
-+
- #undef  SUBTARGET_EXTRA_SPECS
- #define SUBTARGET_EXTRA_SPECS \
-   { "link_emulation", LINK_EMULATION },\
---- gcc-4.1.0/gcc/config/i386/linux64.h
-+++ gcc-4.1.0/gcc/config/i386/linux64.h
-@@ -54,14 +54,21 @@ Boston, MA 02110-1301, USA.  */
-    When the -shared link option is used a final link is not being
-    done.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
--      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
-+      %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
-+      %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
-     %{static:-static}}"
- 
- /* Similar to standard Linux, but adding -ffast-math support.  */
---- gcc-4.1.0/gcc/config/ia64/linux.h
-+++ gcc-4.1.0/gcc/config/ia64/linux.h
-@@ -37,13 +37,18 @@ do {						\
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- 
---- gcc-4.1.0/gcc/config/m68k/linux.h
-+++ gcc-4.1.0/gcc/config/m68k/linux.h
-@@ -123,12 +123,17 @@ Boston, MA 02110-1301, USA.  */
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "-m m68kelf %{shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-     %{static}}"
- 
- /* For compatibility with linux/a.out */
---- gcc-4.1.0/gcc/config/mips/linux.h
-+++ gcc-4.1.0/gcc/config/mips/linux.h
-@@ -105,6 +105,11 @@ Boston, MA 02110-1301, USA.  */
- 
- /* Borrowed from sparc/linux.h */
- #undef LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #define LINK_SPEC \
-  "%(endian_spec) \
-   %{shared:-shared} \
-@@ -112,7 +117,7 @@ Boston, MA 02110-1301, USA.  */
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- #undef SUBTARGET_ASM_SPEC
---- gcc-4.1.0/gcc/config/pa/pa-linux.h
-+++ gcc-4.1.0/gcc/config/pa/pa-linux.h
-@@ -49,13 +49,18 @@ Boston, MA 02110-1301, USA.  */
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- /* glibc's profiling functions don't need gcc to allocate counters.  */
---- gcc-4.1.0/gcc/config/rs6000/linux.h
-+++ gcc-4.1.0/gcc/config/rs6000/linux.h
-@@ -72,7 +72,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}"
---- gcc-4.1.0/gcc/config/rs6000/sysv4.h
-+++ gcc-4.1.0/gcc/config/rs6000/sysv4.h
-@@ -866,6 +866,7 @@ extern int fixuplabelno;
-   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)     }"
- 
-@@ -1043,6 +1044,10 @@ extern int fixuplabelno;
-   %{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
-@@ -1209,6 +1214,7 @@ ncrtn.o%s"
-   { "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 },			\
---- gcc-4.1.0/gcc/config/s390/linux.h
-+++ gcc-4.1.0/gcc/config/s390/linux.h
-@@ -77,6 +77,13 @@ Software Foundation, 51 Franklin Street,
- #define MULTILIB_DEFAULTS { "m31" }
- #endif
- 
-+#ifdef USE_UCLIBC
-+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC \
-   "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
-@@ -86,8 +93,8 @@ Software Foundation, 51 Franklin Street,
-       %{!static: \
- 	%{rdynamic:-export-dynamic} \
- 	%{!dynamic-linker: \
--          %{m31:-dynamic-linker /lib/ld.so.1} \
--          %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
-+          %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
-+          %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
- 
- 
- #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
---- gcc-4.1.0/gcc/config/sh/linux.h
-+++ gcc-4.1.0/gcc/config/sh/linux.h
-@@ -56,12 +56,21 @@ Boston, MA 02110-1301, USA.  */
- #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
- 
- /* Output assembler code to STREAM to call the profiler.  */
- 
---- gcc-4.1.0/gcc/config/sparc/linux.h
-+++ gcc-4.1.0/gcc/config/sparc/linux.h
-@@ -125,6 +125,11 @@ Boston, MA 02110-1301, USA.  */
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!mno-relax:%{!r:-relax}} \
-@@ -132,7 +137,7 @@ Boston, MA 02110-1301, USA.  */
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- /* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
---- gcc-4.1.0/gcc/config/sparc/linux64.h
-+++ gcc-4.1.0/gcc/config/sparc/linux64.h
-@@ -162,12 +162,17 @@ Boston, MA 02110-1301, USA.  */
-   { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
-   { "link_arch",	 LINK_ARCH_SPEC },
-     
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER  "/lib/ld-linux.so.2"
-+#endif
- #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}} \
- "
- 
---- gcc-4.1.0/libffi/configure
-+++ gcc-4.1.0/libffi/configure
-@@ -3457,6 +3457,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libgfortran/configure
-+++ gcc-4.1.0/libgfortran/configure
-@@ -3699,6 +3699,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libjava/configure
-+++ gcc-4.1.0/libjava/configure
-@@ -5137,6 +5137,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libmudflap/configure
-+++ gcc-4.1.0/libmudflap/configure
-@@ -5382,6 +5382,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libobjc/configure
-+++ gcc-4.1.0/libobjc/configure
-@@ -3312,6 +3312,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.1.0/libtool.m4
-+++ gcc-4.1.0/libtool.m4
-@@ -743,6 +743,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
---- gcc-4.1.0/ltconfig
-+++ gcc-4.1.0/ltconfig
-@@ -603,6 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-
- 
- # 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
-@@ -1274,6 +1275,23 @@ linux-gnu*)
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
---- gcc-4.1.0/zlib/configure
-+++ gcc-4.1.0/zlib/configure
-@@ -3426,6 +3426,11 @@ linux-gnu*)
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/gcc/4.1.1/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/4.1.1/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/800-arm-bigendian.patch	(working copy)
@@ -1,67 +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-4.1.0/gcc/config/arm/linux-elf.h
-+++ gcc-4.1.0/gcc/config/arm/linux-elf.h
-@@ -28,19 +28,33 @@
- #undef  TARGET_VERSION
- #define TARGET_VERSION  fputs (" (ARM GNU/Linux with ELF)", stderr);
- 
-+/*
-+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-*
-+ * (big endian) configurations.
-+ */
-+#if TARGET_BIG_ENDIAN_DEFAULT
-+#define TARGET_ENDIAN_DEFAULT MASK_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
-+
- #undef  TARGET_DEFAULT_FLOAT_ABI
- #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (0)
-+#define TARGET_DEFAULT (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", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
- 
- /* Now we define the strings used to build the spec file.  */
- #undef  LIB_SPEC
-@@ -61,7 +75,7 @@
-    %{rdynamic:-export-dynamic} \
-    %{!dynamic-linker:-dynamic-linker " LINUX_TARGET_INTERPRETER "} \
-    -X \
--   %{mbig-endian:-EB}" \
-+   %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
-    SUBTARGET_EXTRA_LINK_SPEC
- 
- #undef  LINK_SPEC
---- gcc-4.1.0/gcc/config.gcc
-+++ gcc-4.1.0/gcc/config.gcc
-@@ -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" 
-+	case $target in
-+	arm*b-*)
-+		tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
-+		;;
-+	esac
- 	tmake_file="${tmake_file} t-linux arm/t-arm"
- 	case ${target} in
- 	arm*-*-linux-gnueabi)
Index: toolchain/gcc/4.1.1/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/4.1.1/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/300-libstdc++-pic.patch	(working copy)
@@ -1,50 +0,0 @@
-# DP: Build and install libstdc++_pic.a library.
-
---- gcc/libstdc++-v3/src/Makefile.am
-+++ gcc/libstdc++-v3/src/Makefile.am
-@@ -214,6 +214,12 @@
- 	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+ifeq ($(enable_shared),yes)
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+endif
-+
- # Added bits to build debug library.
- if GLIBCXX_BUILD_DEBUG
- all-local: build_debug
---- gcc/libstdc++-v3/src/Makefile.in
-+++ gcc/libstdc++-v3/src/Makefile.in
-@@ -627,7 +627,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -660,6 +660,7 @@
- 	distclean-libtool distclean-tags distdir dvi dvi-am html \
- 	html-am info info-am install install-am install-data \
- 	install-data-am install-data-local install-exec \
-+	install-exec-local \
- 	install-exec-am install-info install-info-am install-man \
- 	install-strip install-toolexeclibLTLIBRARIES installcheck \
- 	installcheck-am installdirs maintainer-clean \
-@@ -743,6 +743,13 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+ifeq ($(enable_shared),yes)
-+	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+endif
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/4.1.1/302-c99-snprintf.patch
===================================================================
--- toolchain/gcc/4.1.1/302-c99-snprintf.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/302-c99-snprintf.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig	2005-04-29 00:08:41.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h	2005-04-29 00:08:45.000000000 -0500
-@@ -142,7 +142,7 @@
-   using ::vsprintf;
- }
- 
--#if _GLIBCXX_USE_C99
-+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
- 
- #undef snprintf
- #undef vfscanf
Index: toolchain/gcc/4.1.1/740-sh-pr24836.patch
===================================================================
--- toolchain/gcc/4.1.1/740-sh-pr24836.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/740-sh-pr24836.patch	(working copy)
@@ -1,25 +0,0 @@
-http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348
-http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836
-
---- gcc/gcc/configure.ac	(revision 106699)
-+++ gcc/gcc/configure.ac	(working copy)
-@@ -2446,7 +2446,7 @@
- 	tls_first_minor=14
- 	tls_as_opt="-m64 -Aesame --fatal-warnings"
- 	;;
--  sh-*-* | sh[34]-*-*)
-+  sh-*-* | sh[34]*-*-*)
-     conftest_s='
- 	.section ".tdata","awT",@progbits
- foo:	.long	25
---- gcc/gcc/configure
-+++ gcc/gcc/configure
-@@ -14846,7 +14846,7 @@
- 	tls_first_minor=14
- 	tls_as_opt="-m64 -Aesame --fatal-warnings"
- 	;;
--  sh-*-* | sh[34]-*-*)
-+  sh-*-* | sh[34]*-*-*)
-     conftest_s='
- 	.section ".tdata","awT",@progbits
- foo:	.long	25
Index: toolchain/gcc/4.1.1/304-index_macro.patch
===================================================================
--- toolchain/gcc/4.1.1/304-index_macro.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/304-index_macro.patch	(working copy)
@@ -1,24 +0,0 @@
---- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps	2006-03-24 01:49:51 +0100
-+++ gcc-4.1.0/libstdc++-v3/include/ext/rope	2006-03-24 01:49:37 +0100
-@@ -59,6 +59,9 @@
- #include <bits/allocator.h>
- #include <ext/hash_fun.h>
- 
-+/* cope w/ index defined as macro, SuSv3 proposal */
-+#undef index
-+
- # ifdef __GC
- #   define __GC_CONST const
- # else
---- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps	2006-03-24 01:50:04 +0100
-+++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h	2006-03-24 01:50:28 +0100
-@@ -53,6 +53,9 @@
- #include <ext/memory> // For uninitialized_copy_n
- #include <ext/numeric> // For power
- 
-+/* cope w/ index defined as macro, SuSv3 proposal */
-+#undef index
-+
- namespace __gnu_cxx
- {
-   using std::size_t;
Index: toolchain/gcc/4.1.1/110-arm-eabi.patch
===================================================================
--- toolchain/gcc/4.1.1/110-arm-eabi.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/110-arm-eabi.patch	(working copy)
@@ -1,27 +0,0 @@
---- gcc-2005q3-1.orig/gcc/config.gcc	2005-10-31 19:02:54.000000000 +0300
-+++ gcc-2005q3-1/gcc/config.gcc	2006-01-27 01:09:09.000000000 +0300
-@@ -674,7 +674,7 @@
- 	tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" 
- 	tmake_file="t-slibgcc-elf-ver t-linux arm/t-arm"
- 	case ${target} in
--	arm*-*-linux-gnueabi)
-+	arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
- 	    tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
- 	    tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
-   	    # The BPABI long long divmod functions return a 128-bit value in 
-
-diff -urN gcc-2005q3-2/gcc/config/arm/linux-eabi.h gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h
---- gcc-2005q3-2/gcc/config/arm/linux-eabi.h	2005-12-07 23:14:16.000000000 +0300
-+++ gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h	2006-03-29 19:02:34.000000000 +0400
-@@ -53,7 +53,11 @@
- /* Use ld-linux.so.3 so that it will be possible to run "classic"
-    GNU/Linux binaries on an EABI system.  */
- #undef LINUX_TARGET_INTERPRETER
-+#ifdef USE_UCLIBC
-+#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0"
-+#else
- #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3"
-+#endif
- 
- /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
-    use the GNU/Linux version, not the generic BPABI version.  */
Index: toolchain/gcc/4.1.1/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/4.1.1/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/200-uclibc-locale.patch	(working copy)
@@ -1,3239 +0,0 @@
---- gcc-4.1.0-dist/libstdc++-v3/acinclude.m4
-+++ gcc-4.1.0/libstdc++-v3/acinclude.m4
-@@ -1071,7 +1071,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
-@@ -1087,6 +1087,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      *-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1230,6 +1233,40 @@
-       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_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
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
-@@ -0,0 +1,63 @@
-+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
-+
-+// Copyright (C) 2002, 2004, 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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 <bits/c++config.h>
-+#include <clocale>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning clean this up
-+#endif
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+                                                  
-+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(newlocale) __newlocale;
-+extern "C" __typeof(freelocale) __freelocale;
-+extern "C" __typeof(duplocale) __duplocale;
-+extern "C" __typeof(uselocale) __uselocale;
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+extern "C" __typeof(iswctype_l) __iswctype_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;
-+#endif 
-+
-+#endif // GLIBC 2.3 and later
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
-@@ -0,0 +1,152 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005 
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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)
-+    {
-+      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)
-+    {
-+      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)
-+    {
-+      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 (__cloc && _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
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.h
-@@ -0,0 +1,117 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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 __attribute__ ((__unused__)),
-+		     const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
-@@ -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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
-+}
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
-@@ -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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
-+}
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
-@@ -0,0 +1,314 @@
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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 = __wmask_type();
-+      }
-+    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
-+  { 
-+    // The case of __m == ctype_base::space is particularly important,
-+    // due to its use in many istream functions.  Therefore we deal with
-+    // it first, exploiting the knowledge that on GNU systems _M_bit[5]
-+    // is the mask corresponding to ctype_base::space.  NB: an encoding
-+    // change would not affect correctness!
-+    bool __ret = false;
-+    if (__m == _M_bit[5])
-+      __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
-+    else
-+      {
-+	// Highest bitmask in ctype_base == 10, but extra in "C"
-+	// library for blank.
-+	const size_t __bitmasksize = 11;
-+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+	  if (__m & _M_bit[__bitcur])
-+	    {
-+	      if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
-+		{
-+		  __ret = true;
-+		  break;
-+		}
-+	      else if (__m == _M_bit[__bitcur])
-+		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
-+}
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
-@@ -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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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
-+}
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.h
-@@ -0,0 +1,121 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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(NULL), _M_name_messages(NULL)
-+     {
-+       const size_t __len = std::strlen(__s) + 1;
-+       char* __tmp = new char[__len];
-+       std::memcpy(__tmp, __s, __len);
-+       _M_name_messages = __tmp;
-+
-+       // Last to avoid leaking memory if new throws.
-+       _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()
-+    { 
-+      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); 
-+	 }
-+     }
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
-@@ -0,0 +1,692 @@
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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:
-+	__ret = pattern();
-+      }
-+    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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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;
-+# elif defined __UCLIBC_HAS_LOCALE__
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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;
-+# elif defined __UCLIBC_HAS_LOCALE__
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+          union { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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
-+}
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
-@@ -0,0 +1,173 @@
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+ 
-+  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',';
-+
-+	  // Use ctype::widen code without the facet...
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  // NB: In the GNU model wchar_t is always 32 bit wide.
-+#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;
-+# elif defined __UCLIBC_HAS_LOCALE__
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.cc
-@@ -0,0 +1,406 @@
-+// 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
-+							     __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  union { char *__s; wchar_t *__w; } __u;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
-+	  _M_data->_M_date_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
-+	  _M_data->_M_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
-+	  _M_data->_M_am = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
-+	  _M_data->_M_pm = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
-+	  _M_data->_M_am_pm_format = __u.__w;
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
-+	  _M_data->_M_day1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
-+	  _M_data->_M_day2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
-+	  _M_data->_M_day3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
-+	  _M_data->_M_day4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
-+	  _M_data->_M_day5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
-+	  _M_data->_M_day6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
-+	  _M_data->_M_day7 = __u.__w;
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
-+	  _M_data->_M_aday1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
-+	  _M_data->_M_aday2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
-+	  _M_data->_M_aday3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
-+	  _M_data->_M_aday4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
-+	  _M_data->_M_aday5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
-+	  _M_data->_M_aday6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
-+	  _M_data->_M_aday7 = __u.__w;
-+
-+	  // Month names, starting with "C"'s January.
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
-+	  _M_data->_M_month01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
-+	  _M_data->_M_month02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
-+	  _M_data->_M_month03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
-+	  _M_data->_M_month04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
-+	  _M_data->_M_month05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
-+	  _M_data->_M_month06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
-+	  _M_data->_M_month07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
-+	  _M_data->_M_month08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
-+	  _M_data->_M_month09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
-+	  _M_data->_M_month10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
-+	  _M_data->_M_month11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
-+	  _M_data->_M_month12 = __u.__w;
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
-+	  _M_data->_M_amonth01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
-+	  _M_data->_M_amonth02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
-+	  _M_data->_M_amonth03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
-+	  _M_data->_M_amonth04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
-+	  _M_data->_M_amonth05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
-+	  _M_data->_M_amonth06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
-+	  _M_data->_M_amonth07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
-+	  _M_data->_M_amonth08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
-+	  _M_data->_M_amonth09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
-+	  _M_data->_M_amonth10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
-+	  _M_data->_M_amonth11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
-+	  _M_data->_M_amonth12 = __u.__w;
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h
-+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.h
-@@ -0,0 +1,76 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004, 2005 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-+// 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(NULL)
-+    { 
-+      const size_t __len = std::strlen(__s) + 1;
-+      char* __tmp = new char[__len];
-+      std::memcpy(__tmp, __s, __len);
-+      _M_name_timepunct = __tmp;
-+
-+      try
-+	{ _M_initialize_timepunct(__cloc); }
-+      catch(...)
-+	{
-+	  delete [] _M_name_timepunct;
-+	  __throw_exception_again;
-+	}
-+    }
-+
-+  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); 
-+    }
---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h
-+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_base.h
-@@ -0,0 +1,64 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 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.1  Locales
-+//
-+  
-+/** @file ctype_base.h
-+ *  This is an internal header file, included by other library headers.
-+ *  You should not attempt to use it directly.
-+ */
-+
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  /// @brief  Base class for ctype.
-+  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;
-+  };
---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h
-+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_inline.h
-@@ -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;
-+  }
---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h
-+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h
-@@ -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;
-+  }
---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h
-+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/os_defines.h
-@@ -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
---- gcc-4.1.0-dist/libstdc++-v3/configure
-+++ gcc-4.1.0/libstdc++-v3/configure
-@@ -4005,6 +4005,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5740,7 +5745,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5765,6 +5770,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      linux-uclibc*)
-+        enable_clocale_flag=uclibc
-+	;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h.  */
-@@ -5995,6 +6003,76 @@
-       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_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
---- gcc-4.1.0-dist/libstdc++-v3/configure.host
-+++ gcc-4.1.0/libstdc++-v3/configure.host
-@@ -261,6 +261,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.
---- gcc-4.1.0-dist/libstdc++-v3/crossconfig.m4
-+++ gcc-4.1.0/libstdc++-v3/crossconfig.m4
-@@ -143,6 +143,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 \
-@@ -157,7 +250,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)
---- gcc-4.1.0-dist/libstdc++-v3/include/c_compatibility/wchar.h
-+++ gcc-4.1.0/libstdc++-v3/include/c_compatibility/wchar.h
-@@ -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;
---- gcc-4.1.0-dist/libstdc++-v3/include/c_std/std_cwchar.h
-+++ gcc-4.1.0/libstdc++-v3/include/c_std/std_cwchar.h
-@@ -180,7 +180,9 @@
-   using ::wcscoll;
-   using ::wcscpy;
-   using ::wcscspn;
-+#if _GLIBCXX_HAVE_WCSFTIME
-   using ::wcsftime;
-+#endif
-   using ::wcslen;
-   using ::wcsncat;
-   using ::wcsncmp;
Index: toolchain/gcc/4.1.1/303-c99-complex-ugly-hack.patch
===================================================================
--- toolchain/gcc/4.1.1/303-c99-complex-ugly-hack.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/303-c99-complex-ugly-hack.patch	(working copy)
@@ -1,12 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/configure-old	2005-04-30 22:04:48.061603912 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 22:06:13.678588152 -0500
-@@ -7194,6 +7194,9 @@
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h.  */
- #include <complex.h>
-+#ifdef __UCLIBC__
-+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
-+#endif
- int
- main ()
- {
Index: toolchain/gcc/4.1.1/301-missing-execinfo_h.patch
===================================================================
--- toolchain/gcc/4.1.1/301-missing-execinfo_h.patch	(revision 20005)
+++ toolchain/gcc/4.1.1/301-missing-execinfo_h.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/boehm-gc/include/gc.h-orig	2005-04-28 22:28:57.000000000 -0500
-+++ gcc-4.0.0/boehm-gc/include/gc.h	2005-04-28 22:30:38.000000000 -0500
-@@ -500,7 +500,7 @@
- #ifdef __linux__
- # include <features.h>
- # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
--     && !defined(__ia64__)
-+     && !defined(__ia64__) && !defined(__UCLIBC__)
- #   ifndef GC_HAVE_BUILTIN_BACKTRACE
- #     define GC_HAVE_BUILTIN_BACKTRACE
- #   endif
Index: toolchain/gcc/4.0.3/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/4.0.3/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/4.0.3/100-uclibc-conf.patch	(working copy)
@@ -1,553 +0,0 @@
---- gcc-4.0.2/gcc/config/t-linux-uclibc
-+++ gcc-4.0.2/gcc/config/t-linux-uclibc
-@@ -0,0 +1,5 @@
-+# Remove glibc specific files added in t-linux
-+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
-+
-+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
-+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
---- gcc-4.0.2/gcc/config.gcc
-+++ gcc-4.0.2/gcc/config.gcc
-@@ -1778,7 +1778,7 @@
- 	;;
- sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \
- sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \
--  sh-*-linux* | sh[346lbe]*-*-linux* | \
-+  sh*-*-linux* | sh[346lbe]*-*-linux* | \
-   sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \
-    sh64-*-netbsd* | sh64l*-*-netbsd*)
- 	tmake_file="${tmake_file} sh/t-sh sh/t-elf"
-@@ -2234,10 +2234,16 @@
- *)
- 	echo "*** Configuration ${target} not supported" 1>&2
- 	exit 1
- 	;;
- esac
-+
-+# Rather than hook into each target, just do it after all the linux
-+# targets have been processed
-+case ${target} in
-+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
-+esac
- 
- case ${target} in
- i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1)
- 	tmake_file="${tmake_file} i386/t-gmm_malloc"
- 	;;
---- gcc-4.0.2/gcc/config/alpha/linux-elf.h
-+++ gcc-4.0.2/gcc/config/alpha/linux-elf.h
-@@ -27,7 +27,11 @@
- #define SUBTARGET_EXTRA_SPECS \
- { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
- #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
-+#endif
- 
- #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
-   %{O*:-O3} %{!O*:-O1}						\
---- gcc-4.0.2/gcc/config/arm/linux-elf.h
-+++ gcc-4.0.2/gcc/config/arm/linux-elf.h
-@@ -81,14 +81,19 @@
- #define ENDFILE_SPEC \
-   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC "%{h*} %{version:-v} \
-    %{b} %{Wl,*:%*} \
-    %{static:-Bstatic} \
-    %{shared:-shared} \
-    %{symbolic:-Bsymbolic} \
-    %{rdynamic:-export-dynamic} \
--   %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
-+   %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \
-    -X \
-    %{mbig-endian:-EB}" \
-    SUBTARGET_EXTRA_LINK_SPEC
---- gcc-4.0.2/gcc/config/cris/linux.h
-+++ gcc-4.0.2/gcc/config/cris/linux.h
-@@ -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 */
- 
---- gcc-4.0.2/gcc/config/i386/linux.h
-+++ gcc-4.0.2/gcc/config/i386/linux.h
-@@ -107,6 +107,11 @@
- #define LINK_EMULATION "elf_i386"
- #define DYNAMIC_LINKER "/lib/ld-linux.so.2"
- 
-+#ifdef USE_UCLIBC
-+#undef DYNAMIC_LINKER
-+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#endif
-+
- #undef  SUBTARGET_EXTRA_SPECS
- #define SUBTARGET_EXTRA_SPECS \
-   { "link_emulation", LINK_EMULATION },\
---- gcc-4.0.2/gcc/config/i386/linux64.h
-+++ gcc-4.0.2/gcc/config/i386/linux64.h
-@@ -54,14 +54,21 @@
-    When the -shared link option is used a final link is not being
-    done.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
--      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
-+      %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
-+      %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
-     %{static:-static}}"
- 
- #define MULTILIB_DEFAULTS { "m64" }
---- gcc-4.0.2/gcc/config/ia64/linux.h
-+++ gcc-4.0.2/gcc/config/ia64/linux.h
-@@ -37,13 +37,18 @@
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- 
---- gcc-4.0.2/gcc/config/m68k/linux.h
-+++ gcc-4.0.2/gcc/config/m68k/linux.h
-@@ -127,12 +127,17 @@
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "-m m68kelf %{shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-     %{static}}"
- 
- /* For compatibility with linux/a.out */
---- gcc-4.0.2/gcc/config/mips/linux.h
-+++ gcc-4.0.2/gcc/config/mips/linux.h
-@@ -108,14 +108,19 @@
- 
- /* Borrowed from sparc/linux.h */
- #undef LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #define LINK_SPEC \
-  "%(endian_spec) \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- #undef SUBTARGET_ASM_SPEC
---- gcc-4.0.2/gcc/config/pa/pa-linux.h
-+++ gcc-4.0.2/gcc/config/pa/pa-linux.h
-@@ -82,13 +82,18 @@
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- /* glibc's profiling functions don't need gcc to allocate counters.  */
---- gcc-4.0.2/gcc/config/rs6000/linux.h
-+++ gcc-4.0.2/gcc/config/rs6000/linux.h
-@@ -69,7 +69,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}"
---- gcc-4.0.2/gcc/config/rs6000/sysv4.h
-+++ gcc-4.0.2/gcc/config/rs6000/sysv4.h
-@@ -949,6 +949,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)     }"
- 
-@@ -1127,6 +1128,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
-@@ -1293,6 +1298,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 },			\
---- gcc-4.0.2/gcc/config/s390/linux.h
-+++ gcc-4.0.2/gcc/config/s390/linux.h
-@@ -77,6 +77,13 @@
- #define MULTILIB_DEFAULTS { "m31" }
- #endif
- 
-+#ifdef USE_UCLIBC
-+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC \
-   "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
-@@ -86,8 +93,8 @@
-       %{!static: \
- 	%{rdynamic:-export-dynamic} \
- 	%{!dynamic-linker: \
--          %{m31:-dynamic-linker /lib/ld.so.1} \
--          %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
-+          %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
-+          %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
- 
- 
- #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
---- gcc-4.0.2/gcc/config/sh/linux.h
-+++ gcc-4.0.2/gcc/config/sh/linux.h
-@@ -67,11 +67,16 @@
- #undef SUBTARGET_LINK_EMUL_SUFFIX
- #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
- #undef SUBTARGET_LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #define SUBTARGET_LINK_SPEC \
-   "%{shared:-shared} \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
--     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+     %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-    %{static:-static}"
- 
- #undef LIB_SPEC
---- gcc-4.0.2/gcc/config/sparc/linux.h
-+++ gcc-4.0.2/gcc/config/sparc/linux.h
-@@ -130,14 +130,19 @@
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!mno-relax:%{!r:-relax}} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- /* The sun bundled assembler doesn't accept -Yd, (and neither does gas).
---- gcc-4.0.2/gcc/config/sparc/linux64.h
-+++ gcc-4.0.2/gcc/config/sparc/linux64.h
-@@ -167,12 +166,17 @@
-   { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
-   { "link_arch",	 LINK_ARCH_SPEC },
-     
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER  "/lib/ld-linux.so.2"
-+#endif
- #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}} \
- "
- 
---- gcc-4.0.2/libtool.m4
-+++ gcc-4.0.2/libtool.m4
-@@ -682,6 +682,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$']
---- gcc-4.0.2/ltconfig
-+++ gcc-4.0.2/ltconfig
-@@ -603,6 +603,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
-@@ -1274,6 +1275,23 @@
-   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.
-+  hardcode_into_libs=yes
-+  # Assume using the uClibc dynamic linker.
-+  dynamic_linker="uClibc ld.so"
-+  ;;
-+
- netbsd*)
-   need_lib_prefix=no
-   need_version=no
---- gcc-4.0.2/libffi/configure
-+++ gcc-4.0.2/libffi/configure
-@@ -3457,6 +3457,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/libgfortran/configure
-+++ gcc-4.0.2/libgfortran/configure
-@@ -3681,6 +3681,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/libjava/configure
-+++ gcc-4.0.2/libjava/configure
-@@ -4351,6 +4351,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/libmudflap/configure
-+++ gcc-4.0.2/libmudflap/configure
-@@ -5380,6 +5380,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/libobjc/configure
-+++ gcc-4.0.2/libobjc/configure
-@@ -3283,6 +3283,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/boehm-gc/configure
-+++ gcc-4.0.2/boehm-gc/configure
-@@ -4320,6 +4320,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
---- gcc-4.0.2/configure
-+++ gcc-4.0.2/configure
-@@ -1141,7 +1141,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
---- gcc-4.0.2/configure.in
-+++ gcc-4.0.2/configure.in
-@@ -350,7 +350,7 @@
-     ;;
- "")
-     case "${target}" in
--    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu)
-+    *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*)
-         # Enable libmudflap by default in GNU and friends.
- 	;;
-     *-*-freebsd*)
---- gcc-4.0.2/contrib/regression/objs-gcc.sh
-+++ gcc-4.0.2/contrib/regression/objs-gcc.sh
-@@ -105,6 +105,10 @@
-  then
-   make all-gdb all-dejagnu all-ld || exit 1
-   make install-gdb install-dejagnu install-ld || exit 1
-+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
-+ then
-+  make all-gdb all-dejagnu all-ld || exit 1
-+  make install-gdb install-dejagnu install-ld || exit 1
- elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
-   make bootstrap || exit 1
-   make install || exit 1
---- gcc-4.0.2/zlib/configure
-+++ gcc-4.0.2/zlib/configure
-@@ -3426,6 +3426,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
Index: toolchain/gcc/4.0.3/602-sdk-libstdc++-includes.patch
===================================================================
--- toolchain/gcc/4.0.3/602-sdk-libstdc++-includes.patch	(revision 20005)
+++ toolchain/gcc/4.0.3/602-sdk-libstdc++-includes.patch	(working copy)
@@ -1,22 +0,0 @@
-diff -urN gcc-4.0.0-100/libstdc++-v3/fragment.am gcc-4.0.0/libstdc++-v3/fragment.am
---- gcc-4.0.0-100/libstdc++-v3/fragment.am	2004-10-25 15:32:40.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/fragment.am	2005-04-28 21:48:43.000000000 -0500
-@@ -18,5 +18,5 @@
- 	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
- 
- # -I/-D flags to pass when compiling.
--AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
-+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
- 
-diff -urN gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am gcc-4.0.0/libstdc++-v3/libmath/Makefile.am
---- gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am	2003-08-27 16:29:42.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/libmath/Makefile.am	2005-04-28 21:48:43.000000000 -0500
-@@ -32,7 +32,7 @@
- 
- libmath_la_SOURCES = stubs.c
- 
--AM_CPPFLAGS = $(CANADIAN_INCLUDES)
-+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
- 
- # Only compiling "C" sources in this directory.
- LIBTOOL = @LIBTOOL@ --tag CC
Index: toolchain/gcc/4.0.3/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/4.0.3/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/4.0.3/800-arm-bigendian.patch	(working copy)
@@ -1,67 +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-4.0.3/gcc/config/arm/linux-elf.h
-+++ gcc-4.0.3/gcc/config/arm/linux-elf.h
-@@ -31,19 +31,33 @@
- /* 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
-+
- #undef  TARGET_DEFAULT_FLOAT_ABI
- #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (0)
-+#define TARGET_DEFAULT (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", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" }
- 
- /* The GNU C++ standard library requires that these macros be defined.  */
- #undef CPLUSPLUS_CPP_SPEC
-@@ -90,7 +104,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
- 
- #define TARGET_OS_CPP_BUILTINS()		\
---- gcc-4.0.3/gcc/config.gcc
-+++ gcc-4.0.3/gcc/config.gcc
-@@ -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="${tmake_file} arm/t-arm arm/t-linux"
- 	extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
- 	gnu_ld=yes
Index: toolchain/gcc/4.0.3/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/4.0.3/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/4.0.3/300-libstdc++-pic.patch	(working copy)
@@ -1,45 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/src/Makefile.am
-+++ gcc-4.0.0/libstdc++-v3/src/Makefile.am
-@@ -214,6 +214,10 @@
- 	  $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Added bits to build debug library.
- if GLIBCXX_BUILD_DEBUG
- all-local: build_debug
---- gcc-4.0.0/libstdc++-v3/src/Makefile.in
-+++ gcc-4.0.0/libstdc++-v3/src/Makefile.in
-@@ -625,7 +625,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -664,7 +664,7 @@
- 	maintainer-clean-generic mostlyclean mostlyclean-compile \
- 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- 	tags uninstall uninstall-am uninstall-info-am \
--	uninstall-toolexeclibLTLIBRARIES
-+	uninstall-toolexeclibLTLIBRARIES install-exec-local
- 
- @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@libstdc++-symbol.ver:  ${glibcxx_srcdir}/$(SYMVER_MAP)
- @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@	cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
-@@ -743,6 +743,11 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/4.0.3/302-c99-snprintf.patch
===================================================================
--- toolchain/gcc/4.0.3/302-c99-snprintf.patch	(revision 20005)
+++ toolchain/gcc/4.0.3/302-c99-snprintf.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig	2005-04-29 00:08:41.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h	2005-04-29 00:08:45.000000000 -0500
-@@ -142,7 +142,7 @@
-   using ::vsprintf;
- }
- 
--#if _GLIBCXX_USE_C99
-+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__)
- 
- #undef snprintf
- #undef vfscanf
Index: toolchain/gcc/4.0.3/304-index_macro.patch
===================================================================
--- toolchain/gcc/4.0.3/304-index_macro.patch	(revision 20005)
+++ toolchain/gcc/4.0.3/304-index_macro.patch	(working copy)
@@ -1,24 +0,0 @@
---- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps	2006-03-24 01:49:51 +0100
-+++ gcc-4.1.0/libstdc++-v3/include/ext/rope	2006-03-24 01:49:37 +0100
-@@ -59,6 +59,9 @@
- #include <bits/allocator.h>
- #include <ext/hash_fun.h>
- 
-+/* cope w/ index defined as macro, SuSv3 proposal */
-+#undef index
-+
- # ifdef __GC
- #   define __GC_CONST const
- # else
---- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps	2006-03-24 01:50:04 +0100
-+++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h	2006-03-24 01:50:28 +0100
-@@ -53,6 +53,9 @@
- #include <ext/memory> // For uninitialized_copy_n
- #include <ext/numeric> // For power
- 
-+/* cope w/ index defined as macro, SuSv3 proposal */
-+#undef index
-+
- namespace __gnu_cxx
- {
-   using std::size_t;
Index: toolchain/gcc/4.0.3/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/4.0.3/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/4.0.3/200-uclibc-locale.patch	(working copy)
@@ -1,3237 +0,0 @@
-diff -urN gcc-4.0.0-100/libstdc++-v3/acinclude.m4 gcc-4.0.0/libstdc++-v3/acinclude.m4
---- gcc-4.0.0-100/libstdc++-v3/acinclude.m4	2005-04-30 13:06:53.000000000 -0500
-+++ gcc-4.0.0/libstdc++-v3/acinclude.m4	2005-04-28 20:19:01.000000000 -0500
-@@ -1104,7 +1104,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
-@@ -1120,6 +1120,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      *-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1263,6 +1266,40 @@
-       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_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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h	2005-04-28 01:13:15.000000000 -0500
-@@ -0,0 +1,115 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifndef _C_LOCALE_H
-+#define _C_LOCALE_H 1
-+
-+#pragma GCC system_header
-+
-+#include <cstring>              // get std::strlen
-+#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <clocale>
-+#include <langinfo.h>		// For codecvt
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC_HAS_LOCALE__
-+#include <iconv.h>		// For codecvt using iconv, iconv_t
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#include <libintl.h> 		// For messages
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning what is _GLIBCXX_C_LOCALE_GNU for
-+#endif
-+#define _GLIBCXX_C_LOCALE_GNU 1
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix categories
-+#endif
-+// #define _GLIBCXX_NUM_CATEGORIES 6
-+#define _GLIBCXX_NUM_CATEGORIES 0
-+ 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+namespace __gnu_cxx
-+{
-+  extern "C" __typeof(uselocale) __uselocale;
-+}
-+#endif
-+
-+namespace std
-+{
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+  typedef __locale_t		__c_locale;
-+#else
-+  typedef int*			__c_locale;
-+#endif
-+
-+  // Convert numeric value of type _Tv to string and return length of
-+  // string.  If snprintf is available use it, otherwise fall back to
-+  // the unsafe sprintf which, in general, can be dangerous and should
-+  // be avoided.
-+  template<typename _Tv>
-+    int
-+    __convert_from_v(char* __out, const int __size, const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2005-04-28 01:13:15.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 = __wmask_type();
-+      }
-+    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-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h	2005-04-28 01:13:15.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-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2005-04-28 01:23:02.000000000 -0500
-@@ -0,0 +1,692 @@
-+// 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:
-+	__ret = pattern();
-+      }
-+    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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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...
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] =
-+	      static_cast<wchar_t>(money_base::_S_atoms[__i]);
-+	}
-+      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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2005-04-28 01:20:20.000000000 -0500
-@@ -0,0 +1,173 @@
-+// 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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+ 
-+  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',';
-+
-+	  // Use ctype::widen code without the facet...
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_out[__i]);
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] =
-+	      static_cast<wchar_t>(__num_base::_S_atoms_in[__j]);
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  // NB: In the GNU model wchar_t is always 32 bit wide.
-+#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 { char *__s; wchar_t __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = __u.__w;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = __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 = 4;
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = 5;
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc	2005-04-28 01:13:15.000000000 -0500
-@@ -0,0 +1,406 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT,
-+							     __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  union { char *__s; wchar_t *__w; } __u;
-+
-+	  __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc);
-+	  _M_data->_M_date_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc);
-+	  _M_data->_M_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc);
-+	  _M_data->_M_am = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc);
-+	  _M_data->_M_pm = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc);
-+	  _M_data->_M_am_pm_format = __u.__w;
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc);
-+	  _M_data->_M_day1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc);
-+	  _M_data->_M_day2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc);
-+	  _M_data->_M_day3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc);
-+	  _M_data->_M_day4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc);
-+	  _M_data->_M_day5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc);
-+	  _M_data->_M_day6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc);
-+	  _M_data->_M_day7 = __u.__w;
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc);
-+	  _M_data->_M_aday1 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc);
-+	  _M_data->_M_aday2 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc);
-+	  _M_data->_M_aday3 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc);
-+	  _M_data->_M_aday4 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc);
-+	  _M_data->_M_aday5 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc);
-+	  _M_data->_M_aday6 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc);
-+	  _M_data->_M_aday7 = __u.__w;
-+
-+	  // Month names, starting with "C"'s January.
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc);
-+	  _M_data->_M_month01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc);
-+	  _M_data->_M_month02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc);
-+	  _M_data->_M_month03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc);
-+	  _M_data->_M_month04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc);
-+	  _M_data->_M_month05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc);
-+	  _M_data->_M_month06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc);
-+	  _M_data->_M_month07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc);
-+	  _M_data->_M_month08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc);
-+	  _M_data->_M_month09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc);
-+	  _M_data->_M_month10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc);
-+	  _M_data->_M_month11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc);
-+	  _M_data->_M_month12 = __u.__w;
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc);
-+	  _M_data->_M_amonth01 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc);
-+	  _M_data->_M_amonth02 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc);
-+	  _M_data->_M_amonth03 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc);
-+	  _M_data->_M_amonth04 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc);
-+	  _M_data->_M_amonth05 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc);
-+	  _M_data->_M_amonth06 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc);
-+	  _M_data->_M_amonth07 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc);
-+	  _M_data->_M_amonth08 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc);
-+	  _M_data->_M_amonth09 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc);
-+	  _M_data->_M_amonth10 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc);
-+	  _M_data->_M_amonth11 = __u.__w;
-+	  __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc);
-+	  _M_data->_M_amonth12 = __u.__w;
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h
---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h	2004-05-22 18:46:31.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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h	2005-04-28 01:10:27.000000000 -0500
-@@ -0,0 +1,64 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 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.1  Locales
-+//
-+  
-+/** @file ctype_base.h
-+ *  This is an internal header file, included by other library headers.
-+ *  You should not attempt to use it directly.
-+ */
-+
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  /// @brief  Base class for ctype.
-+  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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/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-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2005-04-28 01:10:27.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-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h
---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h	2005-04-28 01:10:27.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-4.0.0-100/libstdc++-v3/configure gcc-4.0.0/libstdc++-v3/configure
---- gcc-4.0.0-100/libstdc++-v3/configure	2005-04-30 13:06:53.683055232 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 12:24:24.000000000 -0500
-@@ -3998,6 +3998,11 @@
-   lt_cv_deplibs_check_method=pass_all
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd* | knetbsd*-gnu)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5672,7 +5677,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5697,6 +5702,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case ${target_os} in
-+      linux-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h.  */
-@@ -5927,6 +5935,76 @@
-       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_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-4.0.0-100/libstdc++-v3/configure.host gcc-4.0.0/libstdc++-v3/configure.host
---- gcc-4.0.0-100/libstdc++-v3/configure.host	2005-04-30 13:06:53.688054472 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure.host	2005-04-28 20:20:32.000000000 -0500
-@@ -249,6 +249,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-4.0.0-100/libstdc++-v3/crossconfig.m4 gcc-4.0.0/libstdc++-v3/crossconfig.m4
---- gcc-4.0.0-100/libstdc++-v3/crossconfig.m4	2005-04-30 13:06:53.689054320 -0500
-+++ gcc-4.0.0/libstdc++-v3/crossconfig.m4	2005-04-28 20:27:15.000000000 -0500
-@@ -142,6 +142,98 @@
- 	;;
-     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_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 \
-@@ -156,7 +248,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-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h
---- gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h	2005-04-30 13:06:53.690054168 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h	2005-04-28 20:15:56.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-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h
---- gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h	2005-04-30 13:06:53.691054016 -0500
-+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h	2005-04-28 20:15:56.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;
Index: toolchain/gcc/4.0.3/303-c99-complex-ugly-hack.patch
===================================================================
--- toolchain/gcc/4.0.3/303-c99-complex-ugly-hack.patch	(revision 20005)
+++ toolchain/gcc/4.0.3/303-c99-complex-ugly-hack.patch	(working copy)
@@ -1,12 +0,0 @@
---- gcc-4.0.0/libstdc++-v3/configure-old	2005-04-30 22:04:48.061603912 -0500
-+++ gcc-4.0.0/libstdc++-v3/configure	2005-04-30 22:06:13.678588152 -0500
-@@ -7194,6 +7194,9 @@
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h.  */
- #include <complex.h>
-+#ifdef __UCLIBC__
-+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs
-+#endif
- int
- main ()
- {
Index: toolchain/gcc/4.0.3/301-missing-execinfo_h.patch
===================================================================
--- toolchain/gcc/4.0.3/301-missing-execinfo_h.patch	(revision 20005)
+++ toolchain/gcc/4.0.3/301-missing-execinfo_h.patch	(working copy)
@@ -1,11 +0,0 @@
---- gcc-4.0.0/boehm-gc/include/gc.h-orig	2005-04-28 22:28:57.000000000 -0500
-+++ gcc-4.0.0/boehm-gc/include/gc.h	2005-04-28 22:30:38.000000000 -0500
-@@ -500,7 +500,7 @@
- #ifdef __linux__
- # include <features.h>
- # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
--     && !defined(__ia64__)
-+     && !defined(__ia64__) && !defined(__UCLIBC__)
- #   ifndef GC_HAVE_BUILTIN_BACKTRACE
- #     define GC_HAVE_BUILTIN_BACKTRACE
- #   endif
Index: toolchain/gcc/3.4.2/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/3.4.2/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/100-uclibc-conf.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.4.2/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/3.4.2/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/300-libstdc++-pic.patch	(working copy)
@@ -1,47 +0,0 @@
-# DP: Build and install libstdc++_pic.a library.
-
---- gcc/libstdc++-v3/src/Makefile.am
-+++ gcc/libstdc++-v3/src/Makefile.am
-@@ -224,6 +224,10 @@
- 	  @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Added bits to build debug library.
- if GLIBCPP_BUILD_DEBUG
- all-local: build_debug
-
---- gcc/libstdc++-v3/src/Makefile.in
-+++ gcc/libstdc++-v3/src/Makefile.in
-@@ -585,7 +585,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -618,6 +618,7 @@
- 	distclean-tags distdir dvi dvi-am info info-am install \
- 	install-am install-data install-data-am install-data-local \
- 	install-exec install-exec-am install-info install-info-am \
-+	install-exec-local \
- 	install-man install-strip install-toolexeclibLTLIBRARIES \
- 	installcheck installcheck-am installdirs maintainer-clean \
- 	maintainer-clean-generic mostlyclean mostlyclean-compile \
-@@ -707,6 +708,11 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/3.4.2/300-pr17541.patch
===================================================================
--- toolchain/gcc/3.4.2/300-pr17541.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/300-pr17541.patch	(working copy)
@@ -1,234 +0,0 @@
-# DP: 2004-09-21  Bud Davis  <bdavis9659@comcast.net>
-# DP: 	
-# DP: 	PR fortran/17541
-# DP: 	* bld.c (ffebld_constant_new_real2_val): Fix typo,
-# DP: 	
-# DP: 	PR fortran/17541
-# DP: 	* g77.f-torture/execute/pr17541.f: New test.
-
-Index: gcc/gcc/f/bld.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/f/Attic/bld.c,v
-retrieving revision 1.16.14.1
-retrieving revision 1.16.14.2
-diff -u -r1.16.14.1 -r1.16.14.2
---- gcc/gcc/f/bld.c	12 Jul 2004 17:58:36 -0000	1.16.14.1
-+++ gcc/gcc/f/bld.c	21 Sep 2004 12:54:27 -0000	1.16.14.2
-@@ -1333,7 +1333,7 @@
-      nc = malloc_new_kp (ffebld_constant_pool(),
-                          "FFEBLD_constREAL2",
-                          sizeof (*nc));
--     nc->consttype = FFEBLD_constREAL1;
-+     nc->consttype = FFEBLD_constREAL2;
-      nc->u.real2 = val;
-      nc->hook = FFECOM_constantNULL;
-      nc->llink = NULL;
-Index: gcc/gcc/testsuite/g77.f-torture/execute/pr17541.f
-===================================================================
-RCS file: gcc/gcc/testsuite/g77.f-torture/execute/pr17541.f
-diff -N gcc/gcc/testsuite/g77.f-torture/execute/pr17541.f
---- /dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/g77.f-torture/execute/pr17541.f	21 Sep 2004 12:54:35 -0000	1.1.2.1
-@@ -0,0 +1,202 @@
-+        program test
-+        implicit none
-+! check all types of data statements
-+! pr 17541
-+        real r(2)
-+        double precision s(2)
-+        integer*1 ib(2)
-+        integer*2 ih(2)
-+        integer*4 iw(2)
-+        integer*8 id(3)
-+        logical*1 lb(2)
-+        logical*2 lh(2)
-+        logical*4 lw(2)
-+        logical*8 ld(2)
-+        character*1 a(2)
-+        character*5 b(2)
-+        complex c1(2)
-+        complex*8 c2(2)
-+        data r / 1.0,2.0 /
-+        data s / 2.d0,1.d0/
-+        data ib / 1,-1 /
-+        data ih / 2,100/
-+        data iw / 4,3560000 /
-+        data id / 8,Z'ABCDEF01',Z'5555AAAA' /
-+        data a / 'a', 'z' /
-+        data b / 'xyz','abc'/
-+        data c1 /(1.0,2.0),(-1.0,-2.0)/
-+        data c2 /(1.d0,2.d0),(-1.d0,-2.d0)/
-+        data lb / .TRUE.,.FALSE. /
-+        data lh / .TRUE.,.FALSE. /
-+        data lw / .TRUE.,.FALSE. /
-+        data ld / .TRUE.,.FALSE. /
-+        logical dbug
-+        data dbug /.FALSE./
-+! check the reals first
-+        if (r(1).ne.1.0) then
-+           if (dbug) then
-+             print*,r(1), ' should be 1.0 '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (r(2).ne.2.0) then
-+           if (dbug) then
-+             print*,r(2), ' should be 2.0 '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (s(1).ne.2.d0) then
-+           if (dbug) then
-+             print*,s(1), ' xxshould be 2.d0 '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (s(2).ne.1.d0) then
-+           if (dbug) then
-+             print*,s(2), ' should be 1.d0 '
-+           else
-+             call abort
-+           endif
-+        endif
-+! now the integers
-+        if (ib(1).ne.1) then
-+           if (dbug) then
-+             print*,ib(1), ' should be 1 '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (ib(2).ne.-1) then
-+           if (dbug) then
-+             print*,ib(2), ' should be -1 '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (ih(1).ne.2) then
-+           if (dbug) then
-+             print*,ih(2), ' should be 2 '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (ih(2).ne.100) then
-+           if (dbug) then
-+             print*,ih(2), ' should be 100 '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (iw(1).ne.4) then
-+           if (dbug) then
-+             print*,iw(1), ' should be 4 '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (iw(2).ne.3560000) then
-+           if (dbug) then
-+             print*,iw(2), ' should be 3560000 '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (id(1).ne.8) then
-+           if (dbug) print*,id(1), ' should be 8 '
-+           call abort
-+        endif
-+        if (id(2).ne.Z'ABCDEF01') then
-+           if (dbug) print*,id(2), " should be Z'ABCDEF01' "
-+           call abort
-+        endif
-+        if (id(3).ne.Z'5555AAAA') then
-+           if (dbug) print*,id(2), " should be Z'5555AAAA' "
-+           call abort
-+        endif
-+! complex
-+        if (c1(1).ne.(1.0,2.0)) then
-+           if (dbug) then
-+             print*,c1(1), ' should be (1.0,2.0) '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (c1(2).ne.(-1.0,-2.0)) then
-+           if (dbug) then
-+             print*,c1(2), ' should be (-1.0,-2.0) '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (c2(1).ne.(1.d0,2.d0)) then
-+           if (dbug) then
-+             print*,c2(1), ' should be (1.0,2.0) '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (c2(2).ne.(-1.d0,-2.d0)) then
-+           if (dbug) then
-+             print*,c2(2), ' should be (-1.0,-2.0) '
-+           else
-+             call abort
-+           endif
-+        endif
-+! character
-+        if (a(1).ne.'a') then
-+           if (dbug) then
-+             print*,a(1), ' should be a '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (b(1).ne.'xyz') then
-+           if (dbug) then
-+             print*,b(1), ' should be xyz '
-+           else
-+             call abort
-+           endif
-+        endif
-+!logicals
-+        if (.NOT.lb(1)) then
-+           if (dbug) print*,lb(1), ' should be .T. '
-+           call abort
-+        endif
-+        if (lb(2)) then
-+           if (dbug) print*,lb(2), ' should be .F. '
-+           call abort
-+        endif
-+        if (.NOT.lh(1)) then
-+           if (dbug) print*,lh(1), ' should be .T. '
-+           call abort
-+        endif
-+        if (lh(2)) then
-+           if (dbug) print*,lh(2), ' should be .F. '
-+           call abort
-+        endif
-+        if (.NOT.lw(1)) then
-+           if (dbug) print*,lw(1), ' should be .T. '
-+           call abort
-+        endif
-+        if (lw(2)) then
-+           if (dbug) print*,lw(2), ' should be .F. '
-+           call abort
-+        endif
-+        if (.NOT.ld(1)) then
-+           if (dbug) then
-+             print*,ld(1), ' should be .T. '
-+           else
-+             call abort
-+           endif
-+        endif
-+        if (ld(2)) then
-+           if (dbug) then
-+             print*,ld(2), ' should be .F. '
-+           else
-+             call abort
-+           endif
-+        endif
-+        end
Index: toolchain/gcc/3.4.2/300-pr15526.patch
===================================================================
--- toolchain/gcc/3.4.2/300-pr15526.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/300-pr15526.patch	(working copy)
@@ -1,53 +0,0 @@
-# DP: 2004-09-26  Roger Sayle  <roger@eyesopen.com>
-# DP: 
-# DP: 	PR other/15526
-# DP: 	Backport from mainline
-# DP: 	2004-05-20  Falk Hueffner  <falk@debian.org>
-# DP: 	* libgcc2.c (__mulvsi3): Fix overflow test.
-
-diff -u -r1.170.6.1 -r1.170.6.2
---- gcc/gcc/libgcc2.c	2004/07/17 21:18:47	1.170.6.1
-+++ gcc/gcc/libgcc2.c	2004/09/26 20:47:14	1.170.6.2
-@@ -130,9 +130,7 @@
- {
-   const DWtype w = (DWtype) a * (DWtype) b;
- 
--  if (((a >= 0) == (b >= 0))
--      ? (UDWtype) w > (UDWtype) (((DWtype) 1 << (WORD_SIZE - 1)) - 1)
--      : (UDWtype) w < (UDWtype) ((DWtype) -1 << (WORD_SIZE - 1)))
-+  if ((Wtype) (w >> WORD_SIZE) != (Wtype) w >> (WORD_SIZE - 1))
-     abort ();
- 
-   return w;
-
-/cvs/gcc/gcc/gcc/testsuite/gcc.dg/ftrapv-1.c,v  -->  standard output
-revision 1.1.22.1
---- gcc/gcc/testsuite/gcc.dg/ftrapv-1.c
-+++ /dev/null	2004-10-15 06:22:06.980596000 +0000
-@@ -0,0 +1,25 @@
-+/* Copyright (C) 2004 Free Software Foundation.
-+
-+   PR other/15526
-+   Verify correct overflow checking with -ftrapv.
-+
-+   Written by Falk Hueffner, 20th May 2004.  */
-+
-+/* { dg-do run } */
-+/* { dg-options "-ftrapv" } */
-+
-+__attribute__((noinline)) int
-+mulv(int a, int b)
-+{
-+  return a * b;
-+}
-+
-+int
-+main()
-+{
-+  mulv( 0,  0);
-+  mulv( 0, -1);
-+  mulv(-1,  0);
-+  mulv(-1, -1);
-+  return 0;
-+}
-
Index: toolchain/gcc/3.4.2/830-gcc-bug-num-22167.patch
===================================================================
--- toolchain/gcc/3.4.2/830-gcc-bug-num-22167.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/830-gcc-bug-num-22167.patch	(working copy)
@@ -1,16 +0,0 @@
-Index: gcc/gcse.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/gcse.c,v
-retrieving revision 1.288.2.9
-diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.288.2.9 gcse.c
---- gcc/gcc/gcse.c	30 Oct 2004 18:02:53 -0000	1.288.2.9
-+++ gcc/gcc/gcse.c	14 Jul 2005 13:19:57 -0000
-@@ -6445,7 +6445,7 @@ hoist_code (void)
- 	  insn_inserted_p = 0;
- 
- 	  /* These tests should be the same as the tests above.  */
--	  if (TEST_BIT (hoist_vbeout[bb->index], i))
-+	  if (TEST_BIT (hoist_exprs[bb->index], i))
- 	    {
- 	      /* We've found a potentially hoistable expression, now
- 		 we look at every block BB dominates to see if it
Index: toolchain/gcc/3.4.2/600-gcc34-arm-ldm-peephole.patch
===================================================================
--- toolchain/gcc/3.4.2/600-gcc34-arm-ldm-peephole.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/600-gcc34-arm-ldm-peephole.patch	(working copy)
@@ -1,79 +0,0 @@
---- gcc-3.4.0/gcc/config/arm/arm.md.arm-ldm-peephole	2004-01-13 08:24:37.000000000 -0500
-+++ gcc-3.4.0/gcc/config/arm/arm.md	2004-04-24 18:18:04.000000000 -0400
-@@ -8810,13 +8810,16 @@
-    (set_attr "length" "4,8,8")]
- )
- 
-+; Try to convert LDR+LDR+arith into [add+]LDM+arith
-+; On XScale, LDM is always slower than two LDRs, so only do this if
-+; optimising for size.
- (define_insn "*arith_adjacentmem"
-   [(set (match_operand:SI 0 "s_register_operand" "=r")
- 	(match_operator:SI 1 "shiftable_operator"
- 	 [(match_operand:SI 2 "memory_operand" "m")
- 	  (match_operand:SI 3 "memory_operand" "m")]))
-    (clobber (match_scratch:SI 4 "=r"))]
--  "TARGET_ARM && adjacent_mem_locations (operands[2], operands[3])"
-+  "TARGET_ARM && (!arm_tune_xscale || optimize_size) && adjacent_mem_locations (operands[2], operands[3])"
-   "*
-   {
-     rtx ldm[3];
-@@ -8851,6 +8854,8 @@
-       }
-    if (val1 && val2)
-       {
-+	/* This would be a loss on a Harvard core, but adjacent_mem_locations()
-+	   will prevent it from happening.  */
- 	rtx ops[3];
- 	ldm[0] = ops[0] = operands[4];
- 	ops[1] = XEXP (XEXP (operands[2], 0), 0);
---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm-peephole	2004-04-24 18:16:25.000000000 -0400
-+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:18:04.000000000 -0400
-@@ -4593,8 +4593,11 @@
- 	 arith_adjacentmem pattern to output an overlong sequence.  */
-       if (!const_ok_for_op (PLUS, val0) || !const_ok_for_op (PLUS, val1))
- 	return 0;
--      
--      return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4);
-+
-+      /* For Harvard cores, only accept pairs where one offset is zero.
-+         See comment in load_multiple_sequence.  */
-+      return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4)
-+	&& (!arm_ld_sched || val0 == 0 || val1 == 0);
-     }
-   return 0;
- }
-@@ -4838,6 +4841,11 @@
-       *load_offset = unsorted_offsets[order[0]];
-     }
- 
-+  /* For XScale a two-word LDM is a performance loss, so only do this if
-+     size is more important.  See comments in arm_gen_load_multiple.  */
-+  if (nops == 2 && arm_tune_xscale && !optimize_size)
-+    return 0;
-+
-   if (unsorted_offsets[order[0]] == 0)
-     return 1; /* ldmia */
- 
-@@ -5064,6 +5072,11 @@
-       *load_offset = unsorted_offsets[order[0]];
-     }
- 
-+  /* For XScale a two-word LDM is a performance loss, so only do this if
-+     size is more important.  See comments in arm_gen_load_multiple.  */
-+  if (nops == 2 && arm_tune_xscale && !optimize_size)
-+    return 0;
-+
-   if (unsorted_offsets[order[0]] == 0)
-     return 1; /* stmia */
- 
---- gcc-3.4.0/gcc/genpeep.c.arm-ldm-peephole	2003-07-05 01:27:22.000000000 -0400
-+++ gcc-3.4.0/gcc/genpeep.c	2004-04-24 18:18:04.000000000 -0400
-@@ -381,6 +381,7 @@
-   printf ("#include \"recog.h\"\n");
-   printf ("#include \"except.h\"\n\n");
-   printf ("#include \"function.h\"\n\n");
-+  printf ("#include \"flags.h\"\n\n");
- 
-   printf ("#ifdef HAVE_peephole\n");
-   printf ("extern rtx peep_operand[];\n\n");
Index: toolchain/gcc/3.4.2/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/3.4.2/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/200-uclibc-locale.patch	(working copy)
@@ -1,3255 +0,0 @@
-diff -urN gcc-3.4.2-dist/libstdc++-v3/acinclude.m4 gcc-3.4.2/libstdc++-v3/acinclude.m4
---- gcc-3.4.2-dist/libstdc++-v3/acinclude.m4	2004-07-15 12:42:45.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/acinclude.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -996,7 +996,7 @@
-   AC_MSG_CHECKING([for C locale to use])
-   GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@],
-     [use MODEL for target locale package],
--    [permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
-+    [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto])
-   
-   # If they didn't use this option switch, or if they specified --enable
-   # with no specific model, we'll have to look for one.  If they
-@@ -1012,6 +1012,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      x*-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1138,6 +1141,41 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      AC_MSG_RESULT(uclibc)
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+      AC_SUBST(glibcxx_MOFILES)
-+      AC_SUBST(glibcxx_POFILES)
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/aclocal.m4 gcc-3.4.2/libstdc++-v3/aclocal.m4
---- gcc-3.4.2-dist/libstdc++-v3/aclocal.m4	2004-08-13 15:44:03.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/aclocal.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -1025,6 +1025,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      x*-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1151,6 +1154,41 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      AC_MSG_RESULT(uclibc)
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+      AC_SUBST(glibcxx_MOFILES)
-+      AC_SUBST(glibcxx_POFILES)
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,59 @@
-+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
-+
-+// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+// Written by Jakub Jelinek <jakub@redhat.com>
-+
-+#include <clocale>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning clean this up
-+#endif
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+                                                  
-+extern "C" __typeof(iswctype_l) __iswctype_l;
-+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
-+extern "C" __typeof(strcoll_l) __strcoll_l;
-+extern "C" __typeof(strftime_l) __strftime_l;
-+extern "C" __typeof(strtod_l) __strtod_l;
-+extern "C" __typeof(strtof_l) __strtof_l;
-+extern "C" __typeof(strtold_l) __strtold_l;
-+extern "C" __typeof(strxfrm_l) __strxfrm_l;
-+extern "C" __typeof(towlower_l) __towlower_l;
-+extern "C" __typeof(towupper_l) __towupper_l;
-+extern "C" __typeof(wcscoll_l) __wcscoll_l;
-+extern "C" __typeof(wcsftime_l) __wcsftime_l;
-+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
-+extern "C" __typeof(wctype_l) __wctype_l;
-+extern "C" __typeof(newlocale) __newlocale;
-+extern "C" __typeof(freelocale) __freelocale;
-+extern "C" __typeof(duplocale) __duplocale;
-+extern "C" __typeof(uselocale) __uselocale;
-+
-+#endif // GLIBC 2.3 and later
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,160 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <cerrno>  // For errno
-+#include <locale>
-+#include <stdexcept>
-+#include <langinfo.h>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
-+#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
-+#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
-+#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
-+#define __strtof_l(S, E, L)         strtof((S), (E))
-+#define __strtod_l(S, E, L)         strtod((S), (E))
-+#define __strtold_l(S, E, L)        strtold((S), (E))
-+#warning should dummy __newlocale check for C|POSIX ?
-+#define __newlocale(a, b, c)        NULL
-+#define __freelocale(a)             ((void)0)
-+#define __duplocale(a)              __c_locale()
-+#endif
-+
-+namespace std 
-+{
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  float __f = __strtof_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __f;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  double __d = __strtod_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __d;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  long double __ld = __strtold_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __ld;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  void
-+  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, 
-+				    __c_locale __old)
-+  {
-+    __cloc = __newlocale(1 << LC_ALL, __s, __old);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    if (!__cloc)
-+      {
-+	// This named locale is not supported by the underlying OS.
-+	__throw_runtime_error(__N("locale::facet::_S_create_c_locale "
-+			      "name not valid"));
-+      }
-+#endif
-+  }
-+  
-+  void
-+  locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
-+  {
-+    if (_S_get_c_locale() != __cloc)
-+      __freelocale(__cloc); 
-+  }
-+
-+  __c_locale
-+  locale::facet::_S_clone_c_locale(__c_locale& __cloc)
-+  { return __duplocale(__cloc); }
-+} // namespace std
-+
-+namespace __gnu_cxx
-+{
-+  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
-+    {
-+      "LC_CTYPE", 
-+      "LC_NUMERIC",
-+      "LC_TIME", 
-+      "LC_COLLATE", 
-+      "LC_MONETARY",
-+      "LC_MESSAGES", 
-+#if _GLIBCXX_NUM_CATEGORIES != 0
-+      "LC_PAPER", 
-+      "LC_NAME", 
-+      "LC_ADDRESS",
-+      "LC_TELEPHONE", 
-+      "LC_MEASUREMENT", 
-+      "LC_IDENTIFICATION" 
-+#endif
-+    };
-+}
-+
-+namespace std
-+{
-+  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
-+}  // namespace std
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h	2004-09-10 10:48:08.000000000 -0500
-@@ -0,0 +1,115 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifndef _C_LOCALE_H
-+#define _C_LOCALE_H 1
-+
-+#pragma GCC system_header
-+
-+#include <cstring>              // get std::strlen
-+#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <clocale>
-+#include <langinfo.h>		// For codecvt
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC_HAS_LOCALE__
-+#include <iconv.h>		// For codecvt using iconv, iconv_t
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#include <libintl.h> 		// For messages
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning what is _GLIBCXX_C_LOCALE_GNU for
-+#endif
-+#define _GLIBCXX_C_LOCALE_GNU 1
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix categories
-+#endif
-+// #define _GLIBCXX_NUM_CATEGORIES 6
-+#define _GLIBCXX_NUM_CATEGORIES 0
-+ 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+namespace __gnu_cxx
-+{
-+  extern "C" __typeof(uselocale) __uselocale;
-+}
-+#endif
-+
-+namespace std
-+{
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+  typedef __locale_t		__c_locale;
-+#else
-+  typedef int*			__c_locale;
-+#endif
-+
-+  // Convert numeric value of type _Tv to string and return length of
-+  // string.  If snprintf is available use it, otherwise fall back to
-+  // the unsafe sprintf which, in general, can be dangerous and should
-+  // be avoided.
-+  template<typename _Tv>
-+    int
-+    __convert_from_v(char* __out, const int __size, const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,306 @@
-+// std::codecvt implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.5 - Template class codecvt
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+namespace std
-+{
-+  // Specializations.
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_out(state_type& __state, const intern_type* __from, 
-+	 const intern_type* __from_end, const intern_type*& __from_next,
-+	 extern_type* __to, extern_type* __to_end,
-+	 extern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // wcsnrtombs is *very* fast but stops if encounters NUL characters:
-+    // in case we fall back to wcrtomb and then continue, in a loop.
-+    // NB: wcsnrtombs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
-+						      __from_end - __from_next);
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	const size_t __conv = wcsnrtombs(__to_next, &__from_next,
-+					 __from_chunk_end - __from_next,
-+					 __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // wcrtomb.
-+	    for (; __from < __from_next; ++__from)
-+	      __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
-+	    __state = __tmp_state;
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    extern_type __buf[MB_LEN_MAX];
-+	    __tmp_state = __state;
-+	    const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
-+	    if (__conv > static_cast<size_t>(__to_end - __to_next))
-+	      __ret = partial;
-+	    else
-+	      {
-+		memcpy(__to_next, __buf, __conv);
-+		__state = __tmp_state;
-+		__to_next += __conv;
-+		++__from_next;
-+	      }
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+  
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_in(state_type& __state, const extern_type* __from, 
-+	const extern_type* __from_end, const extern_type*& __from_next,
-+	intern_type* __to, intern_type* __to_end,
-+	intern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we store a L'\0' and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0',
-+								  __from_end
-+								  - __from_next));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	size_t __conv = mbsnrtowcs(__to_next, &__from_next,
-+				   __from_chunk_end - __from_next,
-+				   __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (;; ++__to_next, __from += __conv)
-+	      {
-+		__conv = mbrtowc(__to_next, __from, __from_end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __from_next = __from;
-+	    __state = __tmp_state;	    
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    // It is unclear what to return in this case (see DR 382). 
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    if (__to_next < __to_end)
-+	      {
-+		// XXX Probably wrong for stateful encodings
-+		__tmp_state = __state;		
-+		++__from_next;
-+		*__to_next++ = L'\0';
-+	      }
-+	    else
-+	      __ret = partial;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_encoding() const throw()
-+  {
-+    // XXX This implementation assumes that the encoding is
-+    // stateless and is either single-byte or variable-width.
-+    int __ret = 0;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    if (MB_CUR_MAX == 1)
-+      __ret = 1;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }  
-+
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_max_length() const throw()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    // XXX Probably wrong for stateful encodings.
-+    int __ret = MB_CUR_MAX;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }
-+  
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_length(state_type& __state, const extern_type* __from,
-+	    const extern_type* __end, size_t __max) const
-+  {
-+    int __ret = 0;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we advance past it and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+  
-+    // A dummy internal buffer is needed in order for mbsnrtocws to consider
-+    // its fourth parameter (it wouldn't with NULL as first parameter).
-+    wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t) 
-+							   * __max));
-+    while (__from < __end && __max)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0',
-+								  __end
-+								  - __from));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __end;
-+
-+	const extern_type* __tmp_from = __from;
-+	size_t __conv = mbsnrtowcs(__to, &__from,
-+				   __from_chunk_end - __from,
-+				   __max, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (__from = __tmp_from;; __from += __conv)
-+	      {
-+		__conv = mbrtowc(NULL, __from, __end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __state = __tmp_state;
-+	    __ret += __from - __tmp_from;
-+	    break;
-+	  }
-+	if (!__from)
-+	  __from = __from_chunk_end;
-+	
-+	__ret += __from - __tmp_from;
-+	__max -= __conv;
-+
-+	if (__from < __end && __max)
-+	  {
-+	    // XXX Probably wrong for stateful encodings
-+	    __tmp_state = __state;
-+	    ++__from;
-+	    ++__ret;
-+	    --__max;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,80 @@
-+// std::collate implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
-+#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
-+#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
-+#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
-+#endif
-+
-+namespace std
-+{
-+  // These are basically extensions to char_traits, and perhaps should
-+  // be put there instead of here.
-+  template<>
-+    int 
-+    collate<char>::_M_compare(const char* __one, const char* __two) const
-+    { 
-+      int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+  
-+  template<>
-+    size_t
-+    collate<char>::_M_transform(char* __to, const char* __from, 
-+				size_t __n) const 
-+    { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    int 
-+    collate<wchar_t>::_M_compare(const wchar_t* __one, 
-+				 const wchar_t* __two) const
-+    {
-+      int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+  
-+  template<>
-+    size_t
-+    collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
-+				   size_t __n) const
-+    { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,300 @@
-+// std::ctype implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __wctype_l(S, L)           wctype((S))
-+#define __towupper_l(C, L)         towupper((C))
-+#define __towlower_l(C, L)         towlower((C))
-+#define __iswctype_l(C, M, L)      iswctype((C), (M))
-+#endif
-+
-+namespace std
-+{
-+  // NB: The other ctype<char> specializations are in src/locale.cc and
-+  // various /config/os/* files.
-+  template<>
-+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
-+    : ctype<char>(0, false, __refs) 
-+    { 		
-+      if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	{
-+	  this->_S_destroy_c_locale(this->_M_c_locale_ctype);
-+	  this->_S_create_c_locale(this->_M_c_locale_ctype, __s); 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
-+	  this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
-+	  this->_M_table = this->_M_c_locale_ctype->__ctype_b;
-+#endif
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T  
-+  ctype<wchar_t>::__wmask_type
-+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
-+  {
-+    __wmask_type __ret;
-+    switch (__m)
-+      {
-+      case space:
-+	__ret = __wctype_l("space", _M_c_locale_ctype);
-+	break;
-+      case print:
-+	__ret = __wctype_l("print", _M_c_locale_ctype);
-+	break;
-+      case cntrl:
-+	__ret = __wctype_l("cntrl", _M_c_locale_ctype);
-+	break;
-+      case upper:
-+	__ret = __wctype_l("upper", _M_c_locale_ctype);
-+	break;
-+      case lower:
-+	__ret = __wctype_l("lower", _M_c_locale_ctype);
-+	break;
-+      case alpha:
-+	__ret = __wctype_l("alpha", _M_c_locale_ctype);
-+	break;
-+      case digit:
-+	__ret = __wctype_l("digit", _M_c_locale_ctype);
-+	break;
-+      case punct:
-+	__ret = __wctype_l("punct", _M_c_locale_ctype);
-+	break;
-+      case xdigit:
-+	__ret = __wctype_l("xdigit", _M_c_locale_ctype);
-+	break;
-+      case alnum:
-+	__ret = __wctype_l("alnum", _M_c_locale_ctype);
-+	break;
-+      case graph:
-+	__ret = __wctype_l("graph", _M_c_locale_ctype);
-+	break;
-+      default:
-+	__ret = 0;
-+      }
-+    return __ret;
-+  }
-+  
-+  wchar_t
-+  ctype<wchar_t>::do_toupper(wchar_t __c) const
-+  { return __towupper_l(__c, _M_c_locale_ctype); }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+  
-+  wchar_t
-+  ctype<wchar_t>::do_tolower(wchar_t __c) const
-+  { return __towlower_l(__c, _M_c_locale_ctype); }
-+  
-+  const wchar_t*
-+  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+
-+  bool
-+  ctype<wchar_t>::
-+  do_is(mask __m, wchar_t __c) const
-+  { 
-+    // Highest bitmask in ctype_base == 10, but extra in "C"
-+    // library for blank.
-+    bool __ret = false;
-+    const size_t __bitmasksize = 11; 
-+    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+      if (__m & _M_bit[__bitcur]
-+	  && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	{
-+	  __ret = true;
-+	  break;
-+	}
-+    return __ret;    
-+  }
-+  
-+  const wchar_t* 
-+  ctype<wchar_t>::
-+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
-+  {
-+    for (; __lo < __hi; ++__vec, ++__lo)
-+      {
-+	// Highest bitmask in ctype_base == 10, but extra in "C"
-+	// library for blank.
-+	const size_t __bitmasksize = 11; 
-+	mask __m = 0;
-+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+	  if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	    __m |= _M_bit[__bitcur];
-+	*__vec = __m;
-+      }
-+    return __hi;
-+  }
-+  
-+  const wchar_t* 
-+  ctype<wchar_t>::
-+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi && !this->do_is(__m, *__lo))
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
-+  {
-+    while (__lo < __hi && this->do_is(__m, *__lo) != 0)
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  wchar_t
-+  ctype<wchar_t>::
-+  do_widen(char __c) const
-+  { return _M_widen[static_cast<unsigned char>(__c)]; }
-+
-+  const char* 
-+  ctype<wchar_t>::
-+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
-+  {
-+    while (__lo < __hi)
-+      {
-+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
-+	++__lo;
-+	++__dest;
-+      }
-+    return __hi;
-+  }
-+
-+  char
-+  ctype<wchar_t>::
-+  do_narrow(wchar_t __wc, char __dfault) const
-+  {
-+    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
-+      return _M_narrow[__wc];
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    const int __c = wctob(__wc);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return (__c == EOF ? __dfault : static_cast<char>(__c)); 
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, 
-+	    char* __dest) const
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    if (_M_narrow_ok)
-+      while (__lo < __hi)
-+	{
-+	  if (*__lo >= 0 && *__lo < 128)
-+	    *__dest = _M_narrow[*__lo];
-+	  else
-+	    {
-+	      const int __c = wctob(*__lo);
-+	      *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	    }
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+    else
-+      while (__lo < __hi)
-+	{
-+	  const int __c = wctob(*__lo);
-+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __hi;
-+  }
-+
-+  void
-+  ctype<wchar_t>::_M_initialize_ctype()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    wint_t __i;
-+    for (__i = 0; __i < 128; ++__i)
-+      {
-+	const int __c = wctob(__i);
-+	if (__c == EOF)
-+	  break;
-+	else
-+	  _M_narrow[__i] = static_cast<char>(__c);
-+      }
-+    if (__i == 128)
-+      _M_narrow_ok = true;
-+    else
-+      _M_narrow_ok = false;
-+    for (size_t __j = 0;
-+	 __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
-+      _M_widen[__j] = btowc(__j);
-+
-+    for (size_t __k = 0; __k <= 11; ++__k)
-+      { 
-+	_M_bit[__k] = static_cast<mask>(_ISbit(__k));
-+	_M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
-+      }
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+  }
-+#endif //  _GLIBCXX_USE_WCHAR_T
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,100 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix gettext stuff
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__dcgettext(const char *domainname,
-+			     const char *msgid, int category);
-+#undef gettext
-+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
-+#else
-+#undef gettext
-+#define gettext(msgid) (msgid)
-+#endif
-+
-+namespace std
-+{
-+  // Specializations.
-+  template<>
-+    string
-+    messages<char>::do_get(catalog, int, int, const string& __dfault) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      const char* __msg = const_cast<const char*>(gettext(__dfault.c_str()));
-+      __uselocale(__old);
-+      return string(__msg);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      const char* __msg = gettext(__dfault.c_str());
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return string(__msg);
-+#else
-+      const char* __msg = gettext(__dfault.c_str());
-+      return string(__msg);
-+#endif
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    wstring
-+    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
-+    {
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      __uselocale(__old);
-+      return _M_convert_from_char(__msg);
-+# elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return _M_convert_from_char(__msg);
-+# else
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      return _M_convert_from_char(__msg);
-+# endif
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,118 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix prototypes for *textdomain funcs
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__textdomain(const char *domainname);
-+extern "C" char *__bindtextdomain(const char *domainname,
-+				  const char *dirname);
-+#else
-+#undef __textdomain
-+#undef __bindtextdomain
-+#define __textdomain(D)           ((void)0)
-+#define __bindtextdomain(D,P)     ((void)0)
-+#endif
-+
-+  // Non-virtual member functions.
-+  template<typename _CharT>
-+     messages<_CharT>::messages(size_t __refs)
-+     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 
-+     _M_name_messages(_S_get_c_name())
-+     { }
-+
-+  template<typename _CharT>
-+     messages<_CharT>::messages(__c_locale __cloc, const char* __s, 
-+				size_t __refs) 
-+     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
-+     _M_name_messages(__s)
-+     {
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       _M_name_messages = __tmp;
-+     }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog 
-+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 
-+			   const char* __dir) const
-+    { 
-+      __bindtextdomain(__s.c_str(), __dir);
-+      return this->do_open(__s, __loc); 
-+    }
-+
-+  // Virtual member functions.
-+  template<typename _CharT>
-+    messages<_CharT>::~messages()
-+    { 
-+      if (_M_name_messages != _S_get_c_name())
-+	delete [] _M_name_messages;
-+      _S_destroy_c_locale(_M_c_locale_messages); 
-+    }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog 
-+    messages<_CharT>::do_open(const basic_string<char>& __s, 
-+			      const locale&) const
-+    { 
-+      // No error checking is done, assume the catalog exists and can
-+      // be used.
-+      __textdomain(__s.c_str());
-+      return 0;
-+    }
-+
-+  template<typename _CharT>
-+    void    
-+    messages<_CharT>::do_close(catalog) const 
-+    { }
-+
-+   // messages_byname
-+   template<typename _CharT>
-+     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
-+     : messages<_CharT>(__refs) 
-+     { 
-+       if (this->_M_name_messages != locale::facet::_S_get_c_name())
-+	 delete [] this->_M_name_messages;
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       this->_M_name_messages = __tmp;
-+
-+       if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	 {
-+	   this->_S_destroy_c_locale(this->_M_c_locale_messages);
-+	   this->_S_create_c_locale(this->_M_c_locale_messages, __s); 
-+	 }
-+     }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,698 @@
-+// std::moneypunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning optimize this for uclibc
-+#warning tailor for stub locale support
-+#endif
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  // Construct and return valid pattern consisting of some combination of:
-+  // space none symbol sign value
-+  money_base::pattern
-+  money_base::_S_construct_pattern(char __precedes, char __space, char __posn)
-+  { 
-+    pattern __ret;
-+
-+    // This insanely complicated routine attempts to construct a valid
-+    // pattern for use with monyepunct. A couple of invariants:
-+
-+    // if (__precedes) symbol -> value
-+    // else value -> symbol
-+    
-+    // if (__space) space
-+    // else none
-+
-+    // none == never first
-+    // space never first or last
-+
-+    // Any elegant implementations of this are welcome.
-+    switch (__posn)
-+      {
-+      case 0:
-+      case 1:
-+	// 1 The sign precedes the value and symbol.
-+	__ret.field[0] = sign;
-+	if (__space)
-+	  {
-+	    // Pattern starts with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[3] = symbol;
-+	      }
-+	    __ret.field[2] = space;
-+	  }
-+	else
-+	  {
-+	    // Pattern starts with sign and ends with none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 2:
-+	// 2 The sign follows the value and symbol.
-+	if (__space)
-+	  {
-+	    // Pattern either ends with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[1] = space;
-+	    __ret.field[3] = sign;
-+	  }
-+	else
-+	  {
-+	    // Pattern ends with sign then none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[1] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[1] = symbol;
-+	      }
-+	    __ret.field[2] = sign;
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 3:
-+	// 3 The sign immediately precedes the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = sign;
-+	    __ret.field[1] = symbol;	    
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;		
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = symbol;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = sign;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      case 4:
-+	// 4 The sign immediately follows the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = symbol;
-+	    __ret.field[1] = sign;
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = sign;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      default:
-+	;
-+      }
-+    return __ret;
-+  }
-+
-+  template<> 
-+    void
-+    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, 
-+						     const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, 
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == true
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+	}
-+    }
-+
-+  template<> 
-+    void
-+    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, 
-+						      const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, false>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == false
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+	}
-+    }
-+
-+  template<> 
-+    moneypunct<char, true>::~moneypunct()
-+    { delete _M_data; }
-+
-+  template<> 
-+    moneypunct<char, false>::~moneypunct()
-+    { delete _M_data; }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<> 
-+    void
-+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+							const char*)
-+#else
-+							const char* __name)
-+#endif
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<wchar_t, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
-+	      _M_data->_M_atoms[__i] = btowc(uc);
-+	    }
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  try
-+	    {
-+	      mbstate_t __state;
-+	      size_t __len = strlen(__cpossign);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+	      _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+	      
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{ 
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+	      _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+	      
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+	      _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+	  catch (...)
-+	    {
-+	      delete _M_data;
-+	      _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;	      
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+	      __throw_exception_again;
-+	    } 
-+	  
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<> 
-+  void
-+  moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+						       const char*)
-+#else
-+                                                       const char* __name)
-+#endif
-+  {
-+    if (!_M_data)
-+      _M_data = new __moneypunct_cache<wchar_t, false>;
-+
-+    if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+          _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
-+	      _M_data->_M_atoms[__i] = btowc(uc);
-+	    }
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+          _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  try
-+            {
-+              mbstate_t __state;
-+              size_t __len;
-+              __len = strlen(__cpossign);
-+              if (__len)
-+                {
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+              _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+	      
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{ 
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+              _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+              _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+          catch (...)
-+	    {
-+	      delete _M_data;
-+              _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;	      
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+              __throw_exception_again;
-+	    }
-+
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+	                                                __pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+	                                                __nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<> 
-+    moneypunct<wchar_t, true>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+
-+  template<> 
-+    moneypunct<wchar_t, false>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,183 @@
-+// std::numpunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<> 
-+    void
-+    numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, 
-+							__cloc));
-+
-+	  // Check for NULL, which implies no grouping.
-+	  if (_M_data->_M_thousands_sep == '\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = "true";
-+      _M_data->_M_truename_size = strlen(_M_data->_M_truename);
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = strlen(_M_data->_M_falsename);
-+    }
-+ 
-+  template<> 
-+    numpunct<char>::~numpunct()
-+    { delete _M_data; }
-+   
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<> 
-+    void
-+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<wchar_t>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(_S_get_c_locale());
-+#endif
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(__num_base::_S_atoms_out[__i]);
-+	      _M_data->_M_atoms_out[__i] = btowc(uc);
-+	    }
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    {
-+	      uc = static_cast<unsigned char>(__num_base::_S_atoms_in[__j]);
-+	      _M_data->_M_atoms_in[__j] = btowc(uc);
-+	    }
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#endif
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+
-+	  if (_M_data->_M_thousands_sep == L'\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = L"true";
-+      _M_data->_M_truename_size = wcslen(_M_data->_M_truename);
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = wcslen(_M_data->_M_falsename);
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc	2004-09-10 10:48:00.000000000 -0500
-@@ -0,0 +1,356 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc));
-+	  _M_data->_M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc));
-+	  _M_data->_M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc));
-+	  _M_data->_M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc));
-+	  _M_data->_M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc));
-+	  _M_data->_M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc));
-+	  _M_data->_M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc));
-+	  _M_data->_M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc));
-+	  _M_data->_M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc));
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc));
-+	  _M_data->_M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc));
-+	  _M_data->_M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc));
-+	  _M_data->_M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc));
-+	  _M_data->_M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc));
-+	  _M_data->_M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc));
-+	  _M_data->_M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc));
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc));
-+	  _M_data->_M_aday2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc));
-+	  _M_data->_M_aday3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc));
-+	  _M_data->_M_aday4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc));
-+	  _M_data->_M_aday5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc));
-+	  _M_data->_M_aday6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc));
-+	  _M_data->_M_aday7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc));
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc));
-+	  _M_data->_M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc));
-+	  _M_data->_M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc));
-+	  _M_data->_M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc));
-+	  _M_data->_M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc));
-+	  _M_data->_M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc));
-+	  _M_data->_M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc));
-+	  _M_data->_M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc));
-+	  _M_data->_M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc));
-+	  _M_data->_M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc));
-+	  _M_data->_M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc));
-+	  _M_data->_M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc));
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc));
-+	  _M_data->_M_amonth02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc));
-+	  _M_data->_M_amonth03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc));
-+	  _M_data->_M_amonth04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc));
-+	  _M_data->_M_amonth05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc));
-+	  _M_data->_M_amonth06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc));
-+	  _M_data->_M_amonth07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc));
-+	  _M_data->_M_amonth08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc));
-+	  _M_data->_M_amonth09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc));
-+	  _M_data->_M_amonth10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc));
-+	  _M_data->_M_amonth11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc));
-+	  _M_data->_M_amonth12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_12, __cloc));
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,68 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(size_t __refs) 
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 
-+    : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
-+				     size_t __refs) 
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(__s)
-+    { 
-+      char* __tmp = new char[std::strlen(__s) + 1];
-+      std::strcpy(__tmp, __s);
-+      _M_name_timepunct = __tmp;
-+      _M_initialize_timepunct(__cloc); 
-+    }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::~__timepunct()
-+    { 
-+      if (_M_name_timepunct != _S_get_c_name())
-+	delete [] _M_name_timepunct;
-+      delete _M_data; 
-+      _S_destroy_c_locale(_M_c_locale_timepunct); 
-+    }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,58 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003
-+// Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  struct ctype_base
-+  {
-+    // Note: In uClibc, the following two types depend on configuration.
-+ 
-+    // Non-standard typedefs.
-+    typedef const __ctype_touplow_t* __to_type;
-+
-+    // NB: Offsets into ctype<char>::_M_table force a particular size
-+    // on the mask type. Because of this, we don't use an enum.
-+    typedef __ctype_mask_t	mask;   
-+    static const mask upper    	= _ISupper;
-+    static const mask lower 	= _ISlower;
-+    static const mask alpha 	= _ISalpha;
-+    static const mask digit 	= _ISdigit;
-+    static const mask xdigit 	= _ISxdigit;
-+    static const mask space 	= _ISspace;
-+    static const mask print 	= _ISprint;
-+    static const mask graph 	= _ISalpha | _ISdigit | _ISpunct;
-+    static const mask cntrl 	= _IScntrl;
-+    static const mask punct 	= _ISpunct;
-+    static const mask alnum 	= _ISalpha | _ISdigit;
-+  };
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,69 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-+// functions go in ctype.cc
-+  
-+  bool
-+  ctype<char>::
-+  is(mask __m, char __c) const
-+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
-+
-+  const char*
-+  ctype<char>::
-+  is(const char* __low, const char* __high, mask* __vec) const
-+  {
-+    while (__low < __high)
-+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
-+    return __high;
-+  }
-+
-+  const char*
-+  ctype<char>::
-+  scan_is(mask __m, const char* __low, const char* __high) const
-+  {
-+    while (__low < __high 
-+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
-+      ++__low;
-+    return __low;
-+  }
-+
-+  const char*
-+  ctype<char>::
-+  scan_not(mask __m, const char* __low, const char* __high) const
-+  {
-+    while (__low < __high 
-+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
-+      ++__low;
-+    return __low;
-+  }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,92 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
-+// Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// Information as gleaned from /usr/include/ctype.h
-+
-+  const ctype_base::mask*
-+  ctype<char>::classic_table() throw()
-+  { return __C_ctype_b; }
-+
-+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
-+		     size_t __refs) 
-+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
-+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
-+  {
-+    _M_toupper = __C_ctype_toupper;
-+    _M_tolower = __C_ctype_tolower;
-+    _M_table = __table ? __table : __C_ctype_b;
-+    memset(_M_widen, 0, sizeof(_M_widen));
-+    memset(_M_narrow, 0, sizeof(_M_narrow));
-+  }
-+
-+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
-+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
-+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
-+  {
-+    _M_toupper = __C_ctype_toupper;
-+    _M_tolower = __C_ctype_tolower;
-+    _M_table = __table ? __table : __C_ctype_b;
-+    memset(_M_widen, 0, sizeof(_M_widen));
-+    memset(_M_narrow, 0, sizeof(_M_narrow));
-+  }
-+
-+  char
-+  ctype<char>::do_toupper(char __c) const
-+  { return _M_toupper[static_cast<unsigned char>(__c)]; }
-+
-+  const char*
-+  ctype<char>::do_toupper(char* __low, const char* __high) const
-+  {
-+    while (__low < __high)
-+      {
-+	*__low = _M_toupper[static_cast<unsigned char>(*__low)];
-+	++__low;
-+      }
-+    return __high;
-+  }
-+
-+  char
-+  ctype<char>::do_tolower(char __c) const
-+  { return _M_tolower[static_cast<unsigned char>(__c)]; }
-+
-+  const char* 
-+  ctype<char>::do_tolower(char* __low, const char* __high) const
-+  {
-+    while (__low < __high)
-+      {
-+	*__low = _M_tolower[static_cast<unsigned char>(*__low)];
-+	++__low;
-+      }
-+    return __high;
-+  }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,44 @@
-+// Specific definitions for GNU/Linux  -*- C++ -*-
-+
-+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+#ifndef _GLIBCXX_OS_DEFINES
-+#define _GLIBCXX_OS_DEFINES 1
-+
-+// System-specific #define, typedefs, corrections, etc, go here.  This
-+// file will come before all others.
-+
-+// This keeps isanum, et al from being propagated as macros.
-+#define __NO_CTYPE 1
-+
-+#include <features.h>
-+
-+// We must not see the optimized string functions GNU libc defines.
-+#define __NO_STRING_INLINES
-+
-+#endif
-diff -urN gcc-3.4.2-dist/libstdc++-v3/configure gcc-3.4.2/libstdc++-v3/configure
---- gcc-3.4.2-dist/libstdc++-v3/configure	2004-08-13 15:44:04.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/configure	2004-09-10 10:47:40.000000000 -0500
-@@ -3878,6 +3878,11 @@
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd*)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5479,7 +5479,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5545,6 +5550,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      xlinux-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
-@@ -5759,6 +5767,77 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      echo "$as_me:$LINENO: result: uclibc" >&5
-+echo "${ECHO_T}uclibc" >&6
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      # Extract the first word of "msgfmt", so it can be a program name with args.
-+set dummy msgfmt; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_check_msgfmt+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test -n "$check_msgfmt"; then
-+  ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+  for ac_exec_ext in '' $ac_executable_extensions; do
-+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_check_msgfmt="yes"
-+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+done
-+
-+  test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
-+fi
-+fi
-+check_msgfmt=$ac_cv_prog_check_msgfmt
-+if test -n "$check_msgfmt"; then
-+  echo "$as_me:$LINENO: result: $check_msgfmt" >&5
-+echo "${ECHO_T}$check_msgfmt" >&6
-+else
-+  echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+
-+
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/configure.host gcc-3.4.2/libstdc++-v3/configure.host
---- gcc-3.4.2-dist/libstdc++-v3/configure.host	2004-08-27 14:52:30.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/configure.host	2004-09-10 10:47:40.000000000 -0500
-@@ -217,6 +217,12 @@
-     ;;
- esac
- 
-+# Override for uClibc since linux-uclibc gets mishandled above.
-+case "${host_os}" in
-+  *-uclibc*)
-+    os_include_dir="os/uclibc"
-+    ;;
-+esac
- 
- # Set any OS-dependent and CPU-dependent bits.
- # THIS TABLE IS SORTED.  KEEP IT THAT WAY.
-diff -urN gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4 gcc-3.4.2/libstdc++-v3/crossconfig.m4
---- gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4	2004-07-06 20:23:49.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/crossconfig.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -138,6 +138,99 @@
- 	;;
-     esac
-     ;;
-+  *-uclibc*)
-+# Temporary hack until we implement the float versions of the libm funcs
-+    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-+      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-+      fp.h float.h endian.h inttypes.h locale.h float.h stdint.h])
-+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-+    AC_SUBST(SECTION_FLAGS)
-+    GLIBCXX_CHECK_LINKER_FEATURES
-+    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-+    GLIBCXX_CHECK_WCHAR_T_SUPPORT
-+
-+    # For LFS.
-+    AC_DEFINE(HAVE_INT64_T)
-+    case "$target" in
-+      *-uclinux*)
-+        # Don't enable LFS with uClinux
-+        ;;
-+      *)
-+        AC_DEFINE(_GLIBCXX_USE_LFS)
-+    esac
-+
-+    # For showmanyc_helper().
-+    AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
-+    GLIBCXX_CHECK_POLL
-+    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
-+
-+    # For xsputn_2().
-+    AC_CHECK_HEADERS(sys/uio.h)
-+    GLIBCXX_CHECK_WRITEV
-+
-+#     AC_DEFINE(HAVE_ACOSF)
-+#     AC_DEFINE(HAVE_ASINF)
-+#     AC_DEFINE(HAVE_ATANF)
-+#     AC_DEFINE(HAVE_ATAN2F)
-+    AC_DEFINE(HAVE_CEILF)
-+    AC_DEFINE(HAVE_COPYSIGN)
-+#     AC_DEFINE(HAVE_COPYSIGNF)
-+#     AC_DEFINE(HAVE_COSF)
-+#     AC_DEFINE(HAVE_COSHF)
-+#     AC_DEFINE(HAVE_EXPF)
-+#     AC_DEFINE(HAVE_FABSF)
-+    AC_DEFINE(HAVE_FINITE)
-+    AC_DEFINE(HAVE_FINITEF)
-+    AC_DEFINE(HAVE_FLOORF)
-+#     AC_DEFINE(HAVE_FMODF)
-+#     AC_DEFINE(HAVE_FREXPF)
-+    AC_DEFINE(HAVE_HYPOT)
-+#     AC_DEFINE(HAVE_HYPOTF)
-+    AC_DEFINE(HAVE_ISINF)
-+    AC_DEFINE(HAVE_ISINFF)
-+    AC_DEFINE(HAVE_ISNAN)
-+    AC_DEFINE(HAVE_ISNANF)
-+#     AC_DEFINE(HAVE_LOGF)
-+#     AC_DEFINE(HAVE_LOG10F)
-+#     AC_DEFINE(HAVE_MODFF)
-+#     AC_DEFINE(HAVE_SINF)
-+#     AC_DEFINE(HAVE_SINHF)
-+#     AC_DEFINE(HAVE_SINCOS)
-+#     AC_DEFINE(HAVE_SINCOSF)
-+    AC_DEFINE(HAVE_SQRTF)
-+#     AC_DEFINE(HAVE_TANF)
-+#     AC_DEFINE(HAVE_TANHF)
-+    if test x"long_double_math_on_this_cpu" = x"yes"; then
-+      AC_MSG_ERROR([long_double_math_on_this_cpu is yes!])
-+#       AC_DEFINE(HAVE_ACOSL)
-+#       AC_DEFINE(HAVE_ASINL)
-+#       AC_DEFINE(HAVE_ATANL)
-+#       AC_DEFINE(HAVE_ATAN2L)
-+#       AC_DEFINE(HAVE_CEILL)
-+#       AC_DEFINE(HAVE_COPYSIGNL)
-+#       AC_DEFINE(HAVE_COSL)
-+#       AC_DEFINE(HAVE_COSHL)
-+#       AC_DEFINE(HAVE_EXPL)
-+#       AC_DEFINE(HAVE_FABSL)
-+#       AC_DEFINE(HAVE_FINITEL)
-+#       AC_DEFINE(HAVE_FLOORL)
-+#       AC_DEFINE(HAVE_FMODL)
-+#       AC_DEFINE(HAVE_FREXPL)
-+#       AC_DEFINE(HAVE_HYPOTL)
-+#       AC_DEFINE(HAVE_ISINFL)
-+#       AC_DEFINE(HAVE_ISNANL)
-+#       AC_DEFINE(HAVE_LOGL)
-+#       AC_DEFINE(HAVE_LOG10L)
-+#       AC_DEFINE(HAVE_MODFL)
-+#       AC_DEFINE(HAVE_POWL)
-+#       AC_DEFINE(HAVE_SINL)
-+#       AC_DEFINE(HAVE_SINHL)
-+#       AC_DEFINE(HAVE_SINCOSL)
-+#       AC_DEFINE(HAVE_SQRTL)
-+#       AC_DEFINE(HAVE_TANL)
-+#       AC_DEFINE(HAVE_TANHL)
-+    fi
-+    ;;
-   *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
-     AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-       machine/endian.h machine/param.h sys/machine.h sys/types.h \
-@@ -152,7 +245,7 @@
-     AC_DEFINE(HAVE_INT64_T)
-     case "$target" in
-       *-uclinux*)
--        # Don't enable LFS with uClibc
-+        # Don't enable LFS with uClinux
-         ;;
-       *)
-         AC_DEFINE(_GLIBCXX_USE_LFS)
-diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h
---- gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h	2003-12-08 21:51:45.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h	2004-09-10 10:47:40.000000000 -0500
-@@ -101,7 +101,9 @@
- using std::wmemcpy;
- using std::wmemmove;
- using std::wmemset;
-+#if _GLIBCXX_HAVE_WCSFTIME
- using std::wcsftime;
-+#endif
- 
- #if _GLIBCXX_USE_C99
- using std::wcstold;
-diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h
---- gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h	2004-07-20 03:52:12.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h	2004-09-10 10:47:40.000000000 -0500
-@@ -179,7 +179,9 @@
-   using ::wcscoll;
-   using ::wcscpy;
-   using ::wcscspn;
-+#if _GLIBCXX_HAVE_WCSFTIME
-   using ::wcsftime;
-+#endif
-   using ::wcslen;
-   using ::wcsncat;
-   using ::wcsncmp;
Index: toolchain/gcc/3.4.2/601-gcc34-arm-ldm.patch
===================================================================
--- toolchain/gcc/3.4.2/601-gcc34-arm-ldm.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/601-gcc34-arm-ldm.patch	(working copy)
@@ -1,119 +0,0 @@
---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm	2004-02-27 09:51:05.000000000 -0500
-+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:16:25.000000000 -0400
-@@ -8520,6 +8520,26 @@
-   return_used_this_function = 0;  
- }
- 
-+/* Return the number (counting from 0) of
-+   the least significant set bit in MASK.  */
-+
-+#ifdef __GNUC__
-+inline
-+#endif
-+static int
-+number_of_first_bit_set (mask)
-+     int mask;
-+{
-+  int bit;
-+
-+  for (bit = 0;
-+       (mask & (1 << bit)) == 0;
-+       ++bit)
-+    continue;
-+
-+  return bit;
-+}
-+
- const char *
- arm_output_epilogue (rtx sibling)
- {
-@@ -8753,27 +8773,47 @@
- 	  saved_regs_mask |=   (1 << PC_REGNUM);
- 	}
- 
--      /* Load the registers off the stack.  If we only have one register
--	 to load use the LDR instruction - it is faster.  */
--      if (saved_regs_mask == (1 << LR_REGNUM))
--	{
--	  /* The exception handler ignores the LR, so we do
--	     not really need to load it off the stack.  */
--	  if (eh_ofs)
--	    asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM);
--	  else
--	    asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM);
--	}
--      else if (saved_regs_mask)
-+      if (saved_regs_mask)
- 	{
--	  if (saved_regs_mask & (1 << SP_REGNUM))
--	    /* Note - write back to the stack register is not enabled
--	       (ie "ldmfd sp!...").  We know that the stack pointer is
--	       in the list of registers and if we add writeback the
--	       instruction becomes UNPREDICTABLE.  */
--	    print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask);
-+	  /* Load the registers off the stack.  If we only have one register
-+	     to load use the LDR instruction - it is faster.  */
-+	  if (bit_count (saved_regs_mask) == 1)
-+	    {
-+	      int reg = number_of_first_bit_set (saved_regs_mask);
-+
-+	      switch (reg)
-+		{
-+		case SP_REGNUM:
-+		  /* Mustn't use base writeback when loading SP.  */
-+		  asm_fprintf (f, "\tldr\t%r, [%r]\n", SP_REGNUM, SP_REGNUM);
-+		  break;
-+		  
-+		case LR_REGNUM:
-+		  if (eh_ofs)
-+		    {
-+		      /* The exception handler ignores the LR, so we do
-+			 not really need to load it off the stack.  */
-+		      asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM);
-+		      break;
-+		    }
-+		  /* else fall through */
-+		  
-+		default:
-+		  asm_fprintf (f, "\tldr\t%r, [%r], #4\n", reg, SP_REGNUM);
-+		  break;
-+		}
-+	    }
- 	  else
--	    print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask);
-+	    {
-+	      if (saved_regs_mask & (1 << SP_REGNUM))
-+		/* Note - write back to the stack register is not enabled
-+		   (ie "ldmfd sp!...").  We know that the stack pointer is
-+		   in the list of registers and if we add writeback the
-+		   instruction becomes UNPREDICTABLE.  */
-+		print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask);
-+	      else
-+		print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask);
-+	    }
- 	}
- 
-       if (current_function_pretend_args_size)
-@@ -11401,22 +11441,6 @@
-     }
- }
- 
--/* Return the number (counting from 0) of
--   the least significant set bit in MASK.  */
--
--inline static int
--number_of_first_bit_set (int mask)
--{
--  int bit;
--
--  for (bit = 0;
--       (mask & (1 << bit)) == 0;
--       ++bit)
--    continue;
--
--  return bit;
--}
--
- /* Generate code to return from a thumb function.
-    If 'reg_containing_return_addr' is -1, then the return address is
-    actually on the stack, at the stack pointer.  */
Index: toolchain/gcc/3.4.2/300-pr17976.patch
===================================================================
--- toolchain/gcc/3.4.2/300-pr17976.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/300-pr17976.patch	(working copy)
@@ -1,106 +0,0 @@
-From: Mark Mitchell <mark@codesourcery.com>
-Sender: gcc-patches-owner@gcc.gnu.org
-To: gcc-patches@gcc.gnu.org
-Subject: C++ PATCH: PR 17976
-Date: Thu, 14 Oct 2004 21:24:41 -0700
-
-
-This was a case where we generated multiple destructor calls for the
-same global variable, in the (probably rare) situation that an
-"extern" declaration followed the definition.
-
-Tested on i686-pc-linux-gnu, applied on the mainline and on the 3.4
-branch.
-
---
-Mark Mitchell
-CodeSourcery, LLC
-mark@codesourcery.com
-
-# DP: 2004-10-14  Mark Mitchell  <mark@codesourcery.com>
-# DP: 
-# DP: 	PR c++/17976
-# DP: 	* decl.c (cp_finish_decl): Do not call expand_static_init more
-# DP: 	than once for a single variable.
-# DP: 
-# DP: 2004-10-14  Mark Mitchell  <mark@codesourcery.com>
-# DP: 
-# DP: 	PR c++/17976
-# DP: 	* g++.dg/init/dtor3.C: New test.
-
-Index: testsuite/g++.dg/init/dtor3.C
-===================================================================
-RCS file: testsuite/g++.dg/init/dtor3.C
-diff -N testsuite/g++.dg/init/dtor3.C
-*** /dev/null	1 Jan 1970 00:00:00 -0000
---- gcc/gcc/testsuite/g++.dg/init/dtor3.C	15 Oct 2004 04:02:22 -0000
-***************
-*** 0 ****
---- 1,21 ----
-+ // PR c++/17976
-+ // { dg-do run }
-+ 
-+ extern "C" void abort();
-+ struct A
-+ {
-+   static int i;
-+   A(){}
-+   ~A(){i++;if(i>1)abort();}
-+ };
-+ 
-+ int A::i = 0;
-+ 
-+ A a;
-+ extern A a;
-+ 
-+ int main()
-+ {
-+   return 0;
-+ }
-+ 
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/cp/decl.c,v
-retrieving revision 1.1174.2.26
-retrieving revision 1.1174.2.27
-diff -u -r1.1174.2.26 -r1.1174.2.27
---- gcc/gcc/cp/decl.c	2004/10/10 21:54:59	1.1174.2.26
-+++ gcc/gcc/cp/decl.c	2004/10/15 04:23:46	1.1174.2.27
-@@ -4778,6 +4778,7 @@
-   tree cleanup;
-   const char *asmspec = NULL;
-   int was_readonly = 0;
-+  bool var_definition_p = false;
- 
-   if (decl == error_mark_node)
-     return;
-@@ -4930,6 +4931,11 @@
- 	  /* Remember that the initialization for this variable has
- 	     taken place.  */
- 	  DECL_INITIALIZED_P (decl) = 1;
-+	  /* This declaration is the definition of this variable,
-+	     unless we are initializing a static data member within
-+	     the class specifier.  */
-+	  if (!DECL_EXTERNAL (decl))
-+	    var_definition_p = true;
- 	}
-       /* If the variable has an array type, lay out the type, even if
- 	 there is no initializer.  It is valid to index through the
-@@ -5004,8 +5010,16 @@
- 		initialize_local_var (decl, init);
- 	    }
- 
--	  if (TREE_STATIC (decl))
--	    expand_static_init (decl, init);
-+	  /* If a variable is defined, and then a subsequent
-+	     definintion with external linkage is encountered, we will
-+	     get here twice for the same variable.  We want to avoid
-+	     calling expand_static_init more than once.  For variables
-+	     that are not static data members, we can call
-+	     expand_static_init only when we actually process the
-+	     initializer.  It is not legal to redeclare a static data
-+	     member, so this issue does not arise in that case.  */
-+	  if (var_definition_p && TREE_STATIC (decl))
-+	    expand_static_init (decl, init); 
- 	}
-     finish_end0:
- 
Index: toolchain/gcc/3.4.2/400-mips-pr17565.patch
===================================================================
--- toolchain/gcc/3.4.2/400-mips-pr17565.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/400-mips-pr17565.patch	(working copy)
@@ -1,102 +0,0 @@
-[committed] Fix target/17565: asms in delay slots
-
-    * From: Richard Sandiford <rsandifo at redhat dot com>
-    * To: gcc-patches at gcc dot gnu dot org
-    * Date: Mon, 20 Sep 2004 07:55:58 +0100
-    * Subject: [committed] Fix target/17565: asms in delay slots
-
-The MIPS port was allowing asms to be put into delay slots if the
-compiler guesses they are only one instruction long.  This is wrong
-because of the possibility of it containing macros.
-
-The problem can be reproduced as an assembler warning
-in the following testcase:
-
-int foo (int n)
-{
-  register int k asm ("$16") = n;
-  if (k > 0)
-    {
-      bar ();
-      asm ("li %0,0x12345678" : "=r" (k));
-    }
-  return k;
-}
-
-because the multi-instruction asm statement goes into the delay
-slot of the call to bar().
-
-This is reduced from a much more serious linux problem.  Linux is fond
-of using empty asm statements, and since gcc estimates empty asms to be
-one instruction long, they too might be put into delay slots.  This
-actually has the effect of putting the following instruction into the
-delay slot instead.  Since there's no assembler warning, the problem was
-only detected as a run-time failure.
-
-The fix is simple: set the asm value of "can_delay" to "no".
-Tested on mipsisa64-elf, applied to mainline.
-
-This problem goes back to at least 2.95, so it isn't technically a
-regression.  On the other hand, it's the kind of bug that could trigger
-for different types of code in different releases, so I'm sure there's
-a testcase that fails (say) in 3.4 and not in 2.95.  Will probably ask
-Mark for permission to backport to 3.4.
-
-Richard
-
-
-	PR target/17565
-	* config/mips/mips.md (define_asm_attributes): Set can_delay to no.
-
-testsuite/
-	* gcc.target/mips/asm-1.c: New test.
-
-Index: config/mips/mips.md
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/mips/mips.md,v
-retrieving revision 1.306
-diff -c -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.306 mips.md
-*** gcc/gcc/config/mips/mips.md	13 Sep 2004 19:32:05 -0000	1.306
---- gcc/gcc/config/mips/mips.md	20 Sep 2004 06:52:31 -0000
-*************** (define_attr "may_clobber_hilo" "no,yes"
-*** 266,272 ****
-  
-  ;; Describe a user's asm statement.
-  (define_asm_attributes
-!   [(set_attr "type" "multi")])
-  
-  ;; .........................
-  ;;
---- 266,273 ----
-  
-  ;; Describe a user's asm statement.
-  (define_asm_attributes
-!   [(set_attr "type" "multi")
-!    (set_attr "can_delay" "no")])
-  
-  ;; .........................
-  ;;
-Index: testsuite/gcc.target/mips/asm-1.c
-===================================================================
-RCS file: testsuite/gcc.target/mips/asm-1.c
-diff -N testsuite/gcc.target/mips/asm-1.c
-*** gcc/gcc/testsuite/gcc.target/mips/asm-1.c	1 Jan 1970 00:00:00 -0000
---- gcc/gcc/testsuite/gcc.target/mips/asm-1.c	20 Sep 2004 06:52:31 -0000
-***************
-*** 0 ****
---- 1,14 ----
-+ /* PR target/17565.  GCC used to put the asm into the delay slot
-+    of the call.  */
-+ /* { dg-do assemble } */
-+ /* { dg-options "-O" } */
-+ int foo (int n)
-+ {
-+   register int k asm ("$16") = n;
-+   if (k > 0)
-+     {
-+       bar ();
-+       asm ("li %0,0x12345678" : "=r" (k));
-+     }
-+   return k;
-+ }
-
Index: toolchain/gcc/3.4.2/402-mips-pr17770.patch
===================================================================
--- toolchain/gcc/3.4.2/402-mips-pr17770.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/402-mips-pr17770.patch	(working copy)
@@ -1,12 +0,0 @@
---- gcc-3.4.2/gcc/config/mips/mips.md	2004-06-25 02:35:30.000000000 -0500
-+++ gcc-3.4-cvs/gcc/config/mips/mips.md	2004-10-26 01:54:56.000000000 -0500
-@@ -4073,8 +4073,7 @@
-   "!TARGET_MIPS16"
-   "lwl\t%0,%2"
-   [(set_attr "type" "load")
--   (set_attr "mode" "SI")
--   (set_attr "hazard" "none")])
-+   (set_attr "mode" "SI")])
- 
- (define_insn "mov_lwr"
-   [(set (match_operand:SI 0 "register_operand" "=d")
Index: toolchain/gcc/3.4.2/900-nios2.patch
===================================================================
--- toolchain/gcc/3.4.2/900-nios2.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/900-nios2.patch	(working copy)
@@ -1,10211 +0,0 @@
---- gcc-3.4.3/gcc/Makefile.in
-+++ gcc-3.4.3-nios2/gcc/Makefile.in
-@@ -3085,7 +3085,7 @@ install-mkheaders: stmp-int-hdrs $(STMP_
- 	  $(INSTALL_DATA) $(srcdir)/README-fixinc \
- 	    $(DESTDIR)$(itoolsdatadir)/include/README ; \
- 	  $(INSTALL_SCRIPT) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh ; \
--	  $(INSTALL_PROGRAM) fixinc/fixincl $(DESTDIR)$(itoolsdir)/fixincl ; \
-+	  $(INSTALL_PROGRAM) fixinc/fixincl$(build_exeext) $(DESTDIR)$(itoolsdir)/fixincl$(build_exeext) ; \
- 	  $(INSTALL_DATA) $(srcdir)/gsyslimits.h \
- 	    $(DESTDIR)$(itoolsdatadir)/gsyslimits.h ; \
- 	else :; fi
---- gcc-3.4.3/gcc/combine.c
-+++ gcc-3.4.3-nios2/gcc/combine.c
-@@ -4380,6 +4380,14 @@ combine_simplify_rtx (rtx x, enum machin
- 					 mode);
- 	    }
- 
-+#ifndef __nios2__
-+/* This screws up Nios II in this test case:
-+
-+if (x & 1)
-+  return 2;
-+else
-+  return 3;
-+*/
- 	  else if (STORE_FLAG_VALUE == 1
- 		   && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
- 		   && op1 == const0_rtx
-@@ -4391,6 +4399,7 @@ combine_simplify_rtx (rtx x, enum machin
- 				 gen_lowpart_for_combine (mode, op0),
- 				 const1_rtx);
- 	    }
-+#endif
- 
- 	  else if (STORE_FLAG_VALUE == 1
- 		   && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
---- gcc-3.4.3/gcc/config/nios2/crti.asm
-+++ gcc-3.4.3-nios2/gcc/config/nios2/crti.asm
-@@ -0,0 +1,88 @@
-+/*
-+  Copyright (C) 2003 
-+ by Jonah Graham (jgraham@altera.com)
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with files
-+   compiled with GCC to produce an executable, this does not 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.
-+
-+
-+This file just make a stack frame for the contents of the .fini and
-+.init sections.  Users may put any desired instructions in those
-+sections.
-+
-+
-+While technically any code can be put in the init and fini sections
-+most stuff will not work other than stuff which obeys the call frame
-+and ABI. All the call-preserved registers are saved, the call clobbered
-+registers should have been saved by the code calling init and fini.
-+
-+See crtstuff.c for an example of code that inserts itself in the 
-+init and fini sections. 
-+
-+See crt0.s for the code that calls init and fini.
-+*/
-+
-+	.file	"crti.asm"
-+
-+	.section	".init"
-+	.align 2
-+	.global	_init
-+_init:
-+	addi	sp, sp, -48
-+	stw	ra, 44(sp)
-+	stw	r23, 40(sp)
-+	stw	r22, 36(sp)
-+	stw	r21, 32(sp)
-+	stw	r20, 28(sp)
-+	stw	r19, 24(sp)
-+	stw	r18, 20(sp)
-+	stw	r17, 16(sp)
-+	stw	r16, 12(sp)
-+	stw	fp, 8(sp)
-+	mov	fp, sp
-+	
-+	
-+	.section	".fini"
-+	.align	2
-+	.global	_fini
-+_fini:
-+	addi	sp, sp, -48
-+	stw	ra, 44(sp)
-+	stw	r23, 40(sp)
-+	stw	r22, 36(sp)
-+	stw	r21, 32(sp)
-+	stw	r20, 28(sp)
-+	stw	r19, 24(sp)
-+	stw	r18, 20(sp)
-+	stw	r17, 16(sp)
-+	stw	r16, 12(sp)
-+	stw	fp, 8(sp)
-+	mov	fp, sp
-+	
-+
---- gcc-3.4.3/gcc/config/nios2/crtn.asm
-+++ gcc-3.4.3-nios2/gcc/config/nios2/crtn.asm
-@@ -0,0 +1,70 @@
-+/*
-+  Copyright (C) 2003 
-+ by Jonah Graham (jgraham@altera.com)
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with files
-+   compiled with GCC to produce an executable, this does not 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.
-+
-+
-+This file just makes sure that the .fini and .init sections do in
-+fact return.  Users may put any desired instructions in those sections.
-+This file is the last thing linked into any executable.
-+*/	
-+	.file	"crtn.asm"
-+
-+
-+
-+	.section	".init"
-+	ldw	ra, 44(sp)
-+	ldw	r23, 40(sp)
-+	ldw	r22, 36(sp)
-+	ldw	r21, 32(sp)
-+	ldw	r20, 28(sp)
-+	ldw	r19, 24(sp)
-+	ldw	r18, 20(sp)
-+	ldw	r17, 16(sp)
-+	ldw	r16, 12(sp)
-+	ldw	fp, 8(sp)
-+	addi	sp, sp, -48
-+	ret
-+	
-+	.section	".fini"
-+	ldw	ra, 44(sp)
-+	ldw	r23, 40(sp)
-+	ldw	r22, 36(sp)
-+	ldw	r21, 32(sp)
-+	ldw	r20, 28(sp)
-+	ldw	r19, 24(sp)
-+	ldw	r18, 20(sp)
-+	ldw	r17, 16(sp)
-+	ldw	r16, 12(sp)
-+	ldw	fp, 8(sp)
-+	addi	sp, sp, -48
-+	ret
-+	
---- gcc-3.4.3/gcc/config/nios2/lib2-divmod-hi.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod-hi.c
-@@ -0,0 +1,123 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+extern HItype __modhi3 (HItype, HItype);
-+extern HItype __divhi3 (HItype, HItype);
-+extern HItype __umodhi3 (HItype, HItype);
-+extern HItype __udivhi3 (HItype, HItype);
-+
-+static UHItype udivmodhi4(UHItype, UHItype, word_type);
-+
-+static UHItype
-+udivmodhi4(UHItype num, UHItype den, word_type modwanted)
-+{
-+  UHItype bit = 1;
-+  UHItype res = 0;
-+
-+  while (den < num && bit && !(den & (1L<<15)))
-+    {
-+      den <<=1;
-+      bit <<=1;
-+    }
-+  while (bit)
-+    {
-+      if (num >= den)
-+	{
-+	  num -= den;
-+	  res |= bit;
-+	}
-+      bit >>=1;
-+      den >>=1;
-+    }
-+  if (modwanted) return num;
-+  return res;
-+}
-+
-+
-+HItype
-+__divhi3 (HItype a, HItype b)
-+{
-+  word_type neg = 0;
-+  HItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = !neg;
-+    }
-+
-+  if (b < 0)
-+    {
-+      b = -b;
-+      neg = !neg;
-+    }
-+
-+  res = udivmodhi4 (a, b, 0);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+HItype
-+__modhi3 (HItype a, HItype b)
-+{
-+  word_type neg = 0;
-+  HItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = 1;
-+    }
-+
-+  if (b < 0)
-+    b = -b;
-+
-+  res = udivmodhi4 (a, b, 1);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+HItype
-+__udivhi3 (HItype a, HItype b)
-+{
-+  return udivmodhi4 (a, b, 0);
-+}
-+
-+
-+HItype
-+__umodhi3 (HItype a, HItype b)
-+{
-+  return udivmodhi4 (a, b, 1);
-+}
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-divmod.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod.c
-@@ -0,0 +1,126 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+extern SItype __modsi3 (SItype, SItype);
-+extern SItype __divsi3 (SItype, SItype);
-+extern SItype __umodsi3 (SItype, SItype);
-+extern SItype __udivsi3 (SItype, SItype);
-+
-+static USItype udivmodsi4(USItype, USItype, word_type);
-+
-+/* 16-bit SI divide and modulo as used in NIOS */
-+
-+
-+static USItype
-+udivmodsi4(USItype num, USItype den, word_type modwanted)
-+{
-+  USItype bit = 1;
-+  USItype res = 0;
-+
-+  while (den < num && bit && !(den & (1L<<31)))
-+    {
-+      den <<=1;
-+      bit <<=1;
-+    }
-+  while (bit)
-+    {
-+      if (num >= den)
-+	{
-+	  num -= den;
-+	  res |= bit;
-+	}
-+      bit >>=1;
-+      den >>=1;
-+    }
-+  if (modwanted) return num;
-+  return res;
-+}
-+
-+
-+SItype
-+__divsi3 (SItype a, SItype b)
-+{
-+  word_type neg = 0;
-+  SItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = !neg;
-+    }
-+
-+  if (b < 0)
-+    {
-+      b = -b;
-+      neg = !neg;
-+    }
-+
-+  res = udivmodsi4 (a, b, 0);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+SItype
-+__modsi3 (SItype a, SItype b)
-+{
-+  word_type neg = 0;
-+  SItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = 1;
-+    }
-+
-+  if (b < 0)
-+    b = -b;
-+
-+  res = udivmodsi4 (a, b, 1);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+SItype
-+__udivsi3 (SItype a, SItype b)
-+{
-+  return udivmodsi4 (a, b, 0);
-+}
-+
-+
-+SItype
-+__umodsi3 (SItype a, SItype b)
-+{
-+  return udivmodsi4 (a, b, 1);
-+}
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-divtable.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divtable.c
-@@ -0,0 +1,46 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+UQItype __divsi3_table[] =
-+{
-+  0, 0/1, 0/2, 0/3, 0/4, 0/5, 0/6, 0/7, 0/8, 0/9, 0/10, 0/11, 0/12, 0/13, 0/14, 0/15,
-+  0, 1/1, 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15,
-+  0, 2/1, 2/2, 2/3, 2/4, 2/5, 2/6, 2/7, 2/8, 2/9, 2/10, 2/11, 2/12, 2/13, 2/14, 2/15,
-+  0, 3/1, 3/2, 3/3, 3/4, 3/5, 3/6, 3/7, 3/8, 3/9, 3/10, 3/11, 3/12, 3/13, 3/14, 3/15,
-+  0, 4/1, 4/2, 4/3, 4/4, 4/5, 4/6, 4/7, 4/8, 4/9, 4/10, 4/11, 4/12, 4/13, 4/14, 4/15,
-+  0, 5/1, 5/2, 5/3, 5/4, 5/5, 5/6, 5/7, 5/8, 5/9, 5/10, 5/11, 5/12, 5/13, 5/14, 5/15,
-+  0, 6/1, 6/2, 6/3, 6/4, 6/5, 6/6, 6/7, 6/8, 6/9, 6/10, 6/11, 6/12, 6/13, 6/14, 6/15,
-+  0, 7/1, 7/2, 7/3, 7/4, 7/5, 7/6, 7/7, 7/8, 7/9, 7/10, 7/11, 7/12, 7/13, 7/14, 7/15,
-+  0, 8/1, 8/2, 8/3, 8/4, 8/5, 8/6, 8/7, 8/8, 8/9, 8/10, 8/11, 8/12, 8/13, 8/14, 8/15,
-+  0, 9/1, 9/2, 9/3, 9/4, 9/5, 9/6, 9/7, 9/8, 9/9, 9/10, 9/11, 9/12, 9/13, 9/14, 9/15,
-+  0, 10/1, 10/2, 10/3, 10/4, 10/5, 10/6, 10/7, 10/8, 10/9, 10/10, 10/11, 10/12, 10/13, 10/14, 10/15,
-+  0, 11/1, 11/2, 11/3, 11/4, 11/5, 11/6, 11/7, 11/8, 11/9, 11/10, 11/11, 11/12, 11/13, 11/14, 11/15,
-+  0, 12/1, 12/2, 12/3, 12/4, 12/5, 12/6, 12/7, 12/8, 12/9, 12/10, 12/11, 12/12, 12/13, 12/14, 12/15,
-+  0, 13/1, 13/2, 13/3, 13/4, 13/5, 13/6, 13/7, 13/8, 13/9, 13/10, 13/11, 13/12, 13/13, 13/14, 13/15,
-+  0, 14/1, 14/2, 14/3, 14/4, 14/5, 14/6, 14/7, 14/8, 14/9, 14/10, 14/11, 14/12, 14/13, 14/14, 14/15,
-+  0, 15/1, 15/2, 15/3, 15/4, 15/5, 15/6, 15/7, 15/8, 15/9, 15/10, 15/11, 15/12, 15/13, 15/14, 15/15,
-+};
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-mul.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-mul.c
-@@ -0,0 +1,103 @@
-+/* while we are debugging (ie compile outside of gcc build) 
-+   disable gcc specific headers */
-+#ifndef DEBUG_MULSI3
-+
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+#else
-+#define SItype int
-+#define USItype unsigned int
-+#endif
-+
-+
-+extern SItype __mulsi3 (SItype, SItype);
-+
-+SItype
-+__mulsi3 (SItype a, SItype b)
-+{
-+  SItype res = 0;
-+  USItype cnt = a;
-+  
-+  while (cnt)
-+    {
-+      if (cnt & 1)
-+        {
-+	  res += b;	  
-+	}
-+      b <<= 1;
-+      cnt >>= 1;
-+    }
-+    
-+  return res;
-+}
-+/*
-+TODO: Choose best alternative implementation.
-+
-+SItype
-+__divsi3 (SItype a, SItype b)
-+{
-+  SItype res = 0;
-+  USItype cnt = 0;
-+  
-+  while (cnt < 32)
-+    {
-+      if (a & (1L << cnt))
-+        {
-+	  res += b;	  
-+	}
-+      b <<= 1;
-+      cnt++;
-+    }
-+    
-+  return res;
-+}
-+*/
-+
-+
-+#ifdef DEBUG_MULSI3
-+
-+int
-+main ()
-+{
-+  int i, j;
-+  int error = 0;
-+  
-+  for (i = -1000; i < 1000; i++)
-+    for (j = -1000; j < 1000; j++)
-+      {
-+	int expect = i * j;
-+	int actual = A__divsi3 (i, j);
-+	if (expect != actual)
-+	  {
-+	    printf ("error: %d * %d = %d not %d\n", i, j, expect, actual);
-+	    error = 1;
-+	  }
-+      }
-+
-+  return error;
-+}
-+#endif
---- gcc-3.4.3/gcc/config/nios2/nios2-dp-bit.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-dp-bit.c
-@@ -0,0 +1,1652 @@
-+
-+/* This is a software floating point library which can be used
-+   for targets without hardware floating point. 
-+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
-+   Free Software Foundation, Inc.
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with other files,
-+   some of which are compiled with GCC, to produce an executable,
-+   this library 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.  */
-+
-+/* This implements IEEE 754 format arithmetic, but does not provide a
-+   mechanism for setting the rounding mode, or for generating or handling
-+   exceptions.
-+
-+   The original code by Steve Chamberlain, hacked by Mark Eichin and Jim
-+   Wilson, all of Cygnus Support.  */
-+
-+/* The intended way to use this file is to make two copies, add `#define FLOAT'
-+   to one copy, then compile both copies and add them to libgcc.a.  */
-+
-+#include "tconfig.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "config/fp-bit.h"
-+
-+/* The following macros can be defined to change the behavior of this file:
-+   FLOAT: Implement a `float', aka SFmode, fp library.  If this is not
-+     defined, then this file implements a `double', aka DFmode, fp library.
-+   FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e.
-+     don't include float->double conversion which requires the double library.
-+     This is useful only for machines which can't support doubles, e.g. some
-+     8-bit processors.
-+   CMPtype: Specify the type that floating point compares should return.
-+     This defaults to SItype, aka int.
-+   US_SOFTWARE_GOFAST: This makes all entry points use the same names as the
-+     US Software goFast library.
-+   _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding
-+     two integers to the FLO_union_type.
-+   NO_DENORMALS: Disable handling of denormals.
-+   NO_NANS: Disable nan and infinity handling
-+   SMALL_MACHINE: Useful when operations on QIs and HIs are faster
-+     than on an SI */
-+
-+/* We don't currently support extended floats (long doubles) on machines
-+   without hardware to deal with them.
-+
-+   These stubs are just to keep the linker from complaining about unresolved
-+   references which can be pulled in from libio & libstdc++, even if the
-+   user isn't using long doubles.  However, they may generate an unresolved
-+   external to abort if abort is not used by the function, and the stubs
-+   are referenced from within libc, since libgcc goes before and after the
-+   system library.  */
-+
-+#ifdef DECLARE_LIBRARY_RENAMES
-+  DECLARE_LIBRARY_RENAMES
-+#endif
-+
-+#ifdef EXTENDED_FLOAT_STUBS
-+extern void abort (void);
-+void __extendsfxf2 (void) { abort(); }
-+void __extenddfxf2 (void) { abort(); }
-+void __truncxfdf2 (void) { abort(); }
-+void __truncxfsf2 (void) { abort(); }
-+void __fixxfsi (void) { abort(); }
-+void __floatsixf (void) { abort(); }
-+void __addxf3 (void) { abort(); }
-+void __subxf3 (void) { abort(); }
-+void __mulxf3 (void) { abort(); }
-+void __divxf3 (void) { abort(); }
-+void __negxf2 (void) { abort(); }
-+void __eqxf2 (void) { abort(); }
-+void __nexf2 (void) { abort(); }
-+void __gtxf2 (void) { abort(); }
-+void __gexf2 (void) { abort(); }
-+void __lexf2 (void) { abort(); }
-+void __ltxf2 (void) { abort(); }
-+
-+void __extendsftf2 (void) { abort(); }
-+void __extenddftf2 (void) { abort(); }
-+void __trunctfdf2 (void) { abort(); }
-+void __trunctfsf2 (void) { abort(); }
-+void __fixtfsi (void) { abort(); }
-+void __floatsitf (void) { abort(); }
-+void __addtf3 (void) { abort(); }
-+void __subtf3 (void) { abort(); }
-+void __multf3 (void) { abort(); }
-+void __divtf3 (void) { abort(); }
-+void __negtf2 (void) { abort(); }
-+void __eqtf2 (void) { abort(); }
-+void __netf2 (void) { abort(); }
-+void __gttf2 (void) { abort(); }
-+void __getf2 (void) { abort(); }
-+void __letf2 (void) { abort(); }
-+void __lttf2 (void) { abort(); }
-+#else	/* !EXTENDED_FLOAT_STUBS, rest of file */
-+
-+/* IEEE "special" number predicates */
-+
-+#ifdef NO_NANS
-+
-+#define nan() 0
-+#define isnan(x) 0
-+#define isinf(x) 0
-+#else
-+
-+#if   defined L_thenan_sf
-+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_df
-+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_tf
-+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined TFLOAT
-+extern const fp_number_type __thenan_tf;
-+#elif defined FLOAT
-+extern const fp_number_type __thenan_sf;
-+#else
-+extern const fp_number_type __thenan_df;
-+#endif
-+
-+INLINE
-+static fp_number_type *
-+nan (void)
-+{
-+  /* Discard the const qualifier...  */
-+#ifdef TFLOAT
-+  return (fp_number_type *) (& __thenan_tf);
-+#elif defined FLOAT  
-+  return (fp_number_type *) (& __thenan_sf);
-+#else
-+  return (fp_number_type *) (& __thenan_df);
-+#endif
-+}
-+
-+INLINE
-+static int
-+isnan ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_SNAN || x->class == CLASS_QNAN;
-+}
-+
-+INLINE
-+static int
-+isinf ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_INFINITY;
-+}
-+
-+#endif /* NO_NANS */
-+
-+INLINE
-+static int
-+iszero ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_ZERO;
-+}
-+
-+INLINE 
-+static void
-+flip_sign ( fp_number_type *  x)
-+{
-+  x->sign = !x->sign;
-+}
-+
-+extern FLO_type pack_d ( fp_number_type * );
-+
-+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf)
-+FLO_type
-+pack_d ( fp_number_type *  src)
-+{
-+  FLO_union_type dst;
-+  fractype fraction = src->fraction.ll;	/* wasn't unsigned before? */
-+  int sign = src->sign;
-+  int exp = 0;
-+
-+  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src)))
-+    {
-+      /* We can't represent these values accurately.  By using the
-+	 largest possible magnitude, we guarantee that the conversion
-+	 of infinity is at least as big as any finite number.  */
-+      exp = EXPMAX;
-+      fraction = ((fractype) 1 << FRACBITS) - 1;
-+    }
-+  else if (isnan (src))
-+    {
-+      exp = EXPMAX;
-+      if (src->class == CLASS_QNAN || 1)
-+	{
-+#ifdef QUIET_NAN_NEGATED
-+	  fraction |= QUIET_NAN - 1;
-+#else
-+	  fraction |= QUIET_NAN;
-+#endif
-+	}
-+    }
-+  else if (isinf (src))
-+    {
-+      exp = EXPMAX;
-+      fraction = 0;
-+    }
-+  else if (iszero (src))
-+    {
-+      exp = 0;
-+      fraction = 0;
-+    }
-+  else if (fraction == 0)
-+    {
-+      exp = 0;
-+    }
-+  else
-+    {
-+      if (src->normal_exp < NORMAL_EXPMIN)
-+	{
-+#ifdef NO_DENORMALS
-+	  /* Go straight to a zero representation if denormals are not
-+ 	     supported.  The denormal handling would be harmless but
-+ 	     isn't unnecessary.  */
-+	  exp = 0;
-+	  fraction = 0;
-+#else /* NO_DENORMALS */
-+	  /* This number's exponent is too low to fit into the bits
-+	     available in the number, so we'll store 0 in the exponent and
-+	     shift the fraction to the right to make up for it.  */
-+
-+	  int shift = NORMAL_EXPMIN - src->normal_exp;
-+
-+	  exp = 0;
-+
-+	  if (shift > FRAC_NBITS - NGARDS)
-+	    {
-+	      /* No point shifting, since it's more that 64 out.  */
-+	      fraction = 0;
-+	    }
-+	  else
-+	    {
-+	      int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0;
-+	      fraction = (fraction >> shift) | lowbit;
-+	    }
-+	  if ((fraction & GARDMASK) == GARDMSB)
-+	    {
-+	      if ((fraction & (1 << NGARDS)))
-+		fraction += GARDROUND + 1;
-+	    }
-+	  else
-+	    {
-+	      /* Add to the guards to round up.  */
-+	      fraction += GARDROUND;
-+	    }
-+	  /* Perhaps the rounding means we now need to change the
-+             exponent, because the fraction is no longer denormal.  */
-+	  if (fraction >= IMPLICIT_1)
-+	    {
-+	      exp += 1;
-+	    }
-+	  fraction >>= NGARDS;
-+#endif /* NO_DENORMALS */
-+	}
-+      else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS)
-+	       && src->normal_exp > EXPBIAS)
-+	{
-+	  exp = EXPMAX;
-+	  fraction = 0;
-+	}
-+      else
-+	{
-+	  exp = src->normal_exp + EXPBIAS;
-+	  if (!ROUND_TOWARDS_ZERO)
-+	    {
-+	      /* IF the gard bits are the all zero, but the first, then we're
-+		 half way between two numbers, choose the one which makes the
-+		 lsb of the answer 0.  */
-+	      if ((fraction & GARDMASK) == GARDMSB)
-+		{
-+		  if (fraction & (1 << NGARDS))
-+		    fraction += GARDROUND + 1;
-+		}
-+	      else
-+		{
-+		  /* Add a one to the guards to round up */
-+		  fraction += GARDROUND;
-+		}
-+	      if (fraction >= IMPLICIT_2)
-+		{
-+		  fraction >>= 1;
-+		  exp += 1;
-+		}
-+	    }
-+	  fraction >>= NGARDS;
-+
-+	  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX)
-+	    {
-+	      /* Saturate on overflow.  */
-+	      exp = EXPMAX;
-+	      fraction = ((fractype) 1 << FRACBITS) - 1;
-+	    }
-+	}
-+    }
-+
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  dst.bits.fraction = fraction;
-+  dst.bits.exp = exp;
-+  dst.bits.sign = sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low, unity;
-+   int lowsign, lowexp;
-+
-+   unity = (halffractype) 1 << HALFFRACBITS;
-+
-+   /* Set HIGH to the high double's significand, masking out the implicit 1.
-+      Set LOW to the low double's full significand.  */
-+   high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1);
-+   low = fraction & (unity * 2 - 1);
-+
-+   /* Get the initial sign and exponent of the low double.  */
-+   lowexp = exp - HALFFRACBITS - 1;
-+   lowsign = sign;
-+
-+   /* HIGH should be rounded like a normal double, making |LOW| <=
-+      0.5 ULP of HIGH.  Assume round-to-nearest.  */
-+   if (exp < EXPMAX)
-+     if (low > unity || (low == unity && (high & 1) == 1))
-+       {
-+	 /* Round HIGH up and adjust LOW to match.  */
-+	 high++;
-+	 if (high == unity)
-+	   {
-+	     /* May make it infinite, but that's OK.  */
-+	     high = 0;
-+	     exp++;
-+	   }
-+	 low = unity * 2 - low;
-+	 lowsign ^= 1;
-+       }
-+
-+   high |= (halffractype) exp << HALFFRACBITS;
-+   high |= (halffractype) sign << (HALFFRACBITS + EXPBITS);
-+
-+   if (exp == EXPMAX || exp == 0 || low == 0)
-+     low = 0;
-+   else
-+     {
-+       while (lowexp > 0 && low < unity)
-+	 {
-+	   low <<= 1;
-+	   lowexp--;
-+	 }
-+
-+       if (lowexp <= 0)
-+	 {
-+	   halffractype roundmsb, round;
-+	   int shift;
-+
-+	   shift = 1 - lowexp;
-+	   roundmsb = (1 << (shift - 1));
-+	   round = low & ((roundmsb << 1) - 1);
-+
-+	   low >>= shift;
-+	   lowexp = 0;
-+
-+	   if (round > roundmsb || (round == roundmsb && (low & 1) == 1))
-+	     {
-+	       low++;
-+	       if (low == unity)
-+		 /* LOW rounds up to the smallest normal number.  */
-+		 lowexp++;
-+	     }
-+	 }
-+
-+       low &= unity - 1;
-+       low |= (halffractype) lowexp << HALFFRACBITS;
-+       low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS);
-+     }
-+   dst.value_raw = ((fractype) high << HALFSHIFT) | low;
-+ }
-+# else
-+  dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
-+  dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS;
-+  dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS);
-+# endif
-+#endif
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+#ifdef TFLOAT
-+  {
-+    qrtrfractype tmp1 = dst.words[0];
-+    qrtrfractype tmp2 = dst.words[1];
-+    dst.words[0] = dst.words[3];
-+    dst.words[1] = dst.words[2];
-+    dst.words[2] = tmp2;
-+    dst.words[3] = tmp1;
-+  }
-+#else
-+  {
-+    halffractype tmp = dst.words[0];
-+    dst.words[0] = dst.words[1];
-+    dst.words[1] = tmp;
-+  }
-+#endif
-+#endif
-+
-+  return dst.value;
-+}
-+#endif
-+
-+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf)
-+void
-+unpack_d (FLO_union_type * src, fp_number_type * dst)
-+{
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+  fractype fraction;
-+  int exp;
-+  int sign;
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+  FLO_union_type swapped;
-+
-+#ifdef TFLOAT
-+  swapped.words[0] = src->words[3];
-+  swapped.words[1] = src->words[2];
-+  swapped.words[2] = src->words[1];
-+  swapped.words[3] = src->words[0];
-+#else
-+  swapped.words[0] = src->words[1];
-+  swapped.words[1] = src->words[0];
-+#endif
-+  src = &swapped;
-+#endif
-+  
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  fraction = src->bits.fraction;
-+  exp = src->bits.exp;
-+  sign = src->bits.sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low;
-+   
-+   high = src->value_raw >> HALFSHIFT;
-+   low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1);
-+
-+   fraction = high & ((((fractype)1) << HALFFRACBITS) - 1);
-+   fraction <<= FRACBITS - HALFFRACBITS;
-+   exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+   sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+
-+   if (exp != EXPMAX && exp != 0 && low != 0)
-+     {
-+       int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+       int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+       int shift;
-+       fractype xlow;
-+
-+       xlow = low & ((((fractype)1) << HALFFRACBITS) - 1);
-+       if (lowexp)
-+	 xlow |= (((halffractype)1) << HALFFRACBITS);
-+       else
-+	 lowexp = 1;
-+       shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp);
-+       if (shift > 0)
-+	 xlow <<= shift;
-+       else if (shift < 0)
-+	 xlow >>= -shift;
-+       if (sign == lowsign)
-+	 fraction += xlow;
-+       else if (fraction >= xlow)
-+	 fraction -= xlow;
-+       else
-+	 {
-+	   /* The high part is a power of two but the full number is lower.
-+	      This code will leave the implicit 1 in FRACTION, but we'd
-+	      have added that below anyway.  */
-+	   fraction = (((fractype) 1 << FRACBITS) - xlow) << 1;
-+	   exp--;
-+	 }
-+     }
-+ }
-+# else
-+  fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1);
-+  exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1);
-+  sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1;
-+# endif
-+#endif
-+
-+  dst->sign = sign;
-+  if (exp == 0)
-+    {
-+      /* Hmm.  Looks like 0 */
-+      if (fraction == 0
-+#ifdef NO_DENORMALS
-+	  || 1
-+#endif
-+	  )
-+	{
-+	  /* tastes like zero */
-+	  dst->class = CLASS_ZERO;
-+	}
-+      else
-+	{
-+	  /* Zero exponent with nonzero fraction - it's denormalized,
-+	     so there isn't a leading implicit one - we'll shift it so
-+	     it gets one.  */
-+	  dst->normal_exp = exp - EXPBIAS + 1;
-+	  fraction <<= NGARDS;
-+
-+	  dst->class = CLASS_NUMBER;
-+#if 1
-+	  while (fraction < IMPLICIT_1)
-+	    {
-+	      fraction <<= 1;
-+	      dst->normal_exp--;
-+	    }
-+#endif
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX)
-+    {
-+      /* Huge exponent*/
-+      if (fraction == 0)
-+	{
-+	  /* Attached to a zero fraction - means infinity */
-+	  dst->class = CLASS_INFINITY;
-+	}
-+      else
-+	{
-+	  /* Nonzero fraction, means nan */
-+#ifdef QUIET_NAN_NEGATED
-+	  if ((fraction & QUIET_NAN) == 0)
-+#else
-+	  if (fraction & QUIET_NAN)
-+#endif
-+	    {
-+	      dst->class = CLASS_QNAN;
-+	    }
-+	  else
-+	    {
-+	      dst->class = CLASS_SNAN;
-+	    }
-+	  /* Keep the fraction part as the nan number */
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else
-+    {
-+      /* Nothing strange about this number */
-+      dst->normal_exp = exp - EXPBIAS;
-+      dst->class = CLASS_NUMBER;
-+      dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1;
-+    }
-+}
-+#endif /* L_unpack_df || L_unpack_sf */
-+
-+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf)
-+static fp_number_type *
-+_fpadd_parts (fp_number_type * a,
-+	      fp_number_type * b,
-+	      fp_number_type * tmp)
-+{
-+  intfrac tfraction;
-+
-+  /* Put commonly used fields in local variables.  */
-+  int a_normal_exp;
-+  int b_normal_exp;
-+  fractype a_fraction;
-+  fractype b_fraction;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      /* Adding infinities with opposite signs yields a NaN.  */
-+      if (isinf (b) && a->sign != b->sign)
-+	return nan ();
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      return b;
-+    }
-+  if (iszero (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  *tmp = *a;
-+	  tmp->sign = a->sign & b->sign;
-+	  return tmp;
-+	}
-+      return a;
-+    }
-+  if (iszero (a))
-+    {
-+      return b;
-+    }
-+
-+  /* Got two numbers. shift the smaller and increment the exponent till
-+     they're the same */
-+  {
-+    int diff;
-+
-+    a_normal_exp = a->normal_exp;
-+    b_normal_exp = b->normal_exp;
-+    a_fraction = a->fraction.ll;
-+    b_fraction = b->fraction.ll;
-+
-+    diff = a_normal_exp - b_normal_exp;
-+
-+    if (diff < 0)
-+      diff = -diff;
-+    if (diff < FRAC_NBITS)
-+      {
-+	/* ??? This does shifts one bit at a time.  Optimize.  */
-+	while (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp++;
-+	    LSHIFT (b_fraction);
-+	  }
-+	while (b_normal_exp > a_normal_exp)
-+	  {
-+	    a_normal_exp++;
-+	    LSHIFT (a_fraction);
-+	  }
-+      }
-+    else
-+      {
-+	/* Somethings's up.. choose the biggest */
-+	if (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp = a_normal_exp;
-+	    b_fraction = 0;
-+	  }
-+	else
-+	  {
-+	    a_normal_exp = b_normal_exp;
-+	    a_fraction = 0;
-+	  }
-+      }
-+  }
-+
-+  if (a->sign != b->sign)
-+    {
-+      if (a->sign)
-+	{
-+	  tfraction = -a_fraction + b_fraction;
-+	}
-+      else
-+	{
-+	  tfraction = a_fraction - b_fraction;
-+	}
-+      if (tfraction >= 0)
-+	{
-+	  tmp->sign = 0;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = tfraction;
-+	}
-+      else
-+	{
-+	  tmp->sign = 1;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = -tfraction;
-+	}
-+      /* and renormalize it */
-+
-+      while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll)
-+	{
-+	  tmp->fraction.ll <<= 1;
-+	  tmp->normal_exp--;
-+	}
-+    }
-+  else
-+    {
-+      tmp->sign = a->sign;
-+      tmp->normal_exp = a_normal_exp;
-+      tmp->fraction.ll = a_fraction + b_fraction;
-+    }
-+  tmp->class = CLASS_NUMBER;
-+  /* Now the fraction is added, we have to shift down to renormalize the
-+     number */
-+
-+  if (tmp->fraction.ll >= IMPLICIT_2)
-+    {
-+      LSHIFT (tmp->fraction.ll);
-+      tmp->normal_exp++;
-+    }
-+  return tmp;
-+
-+}
-+
-+FLO_type
-+add (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+
-+FLO_type
-+sub (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  b.sign ^= 1;
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_addsub_sf || L_addsub_df */
-+
-+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpmul_parts ( fp_number_type *  a,
-+	       fp_number_type *  b,
-+	       fp_number_type * tmp)
-+{
-+  fractype low = 0;
-+  fractype high = 0;
-+
-+  if (isnan (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      if (iszero (b))
-+	return nan ();
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  return nan ();
-+	}
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (iszero (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both numbers to get a
-+     twice-as-wide number.  */
-+  {
-+#if defined(NO_DI_MODE) || defined(TFLOAT)
-+    {
-+      fractype x = a->fraction.ll;
-+      fractype ylow = b->fraction.ll;
-+      fractype yhigh = 0;
-+      int bit;
-+
-+      /* ??? This does multiplies one bit at a time.  Optimize.  */
-+      for (bit = 0; bit < FRAC_NBITS; bit++)
-+	{
-+	  int carry;
-+
-+	  if (x & 1)
-+	    {
-+	      carry = (low += ylow) < ylow;
-+	      high += yhigh + carry;
-+	    }
-+	  yhigh <<= 1;
-+	  if (ylow & FRACHIGH)
-+	    {
-+	      yhigh |= 1;
-+	    }
-+	  ylow <<= 1;
-+	  x >>= 1;
-+	}
-+    }
-+#elif defined(FLOAT) 
-+    /* Multiplying two USIs to get a UDI, we're safe.  */
-+    {
-+      UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll;
-+      
-+      high = answer >> BITS_PER_SI;
-+      low = answer;
-+    }
-+#else
-+    /* fractype is DImode, but we need the result to be twice as wide.
-+       Assuming a widening multiply from DImode to TImode is not
-+       available, build one by hand.  */
-+    {
-+      USItype nl = a->fraction.ll;
-+      USItype nh = a->fraction.ll >> BITS_PER_SI;
-+      USItype ml = b->fraction.ll;
-+      USItype mh = b->fraction.ll >> BITS_PER_SI;
-+      UDItype pp_ll = (UDItype) ml * nl;
-+      UDItype pp_hl = (UDItype) mh * nl;
-+      UDItype pp_lh = (UDItype) ml * nh;
-+      UDItype pp_hh = (UDItype) mh * nh;
-+      UDItype res2 = 0;
-+      UDItype res0 = 0;
-+      UDItype ps_hh__ = pp_hl + pp_lh;
-+      if (ps_hh__ < pp_hl)
-+	res2 += (UDItype)1 << BITS_PER_SI;
-+      pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI;
-+      res0 = pp_ll + pp_hl;
-+      if (res0 < pp_ll)
-+	res2++;
-+      res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh;
-+      high = res2;
-+      low = res0;
-+    }
-+#endif
-+  }
-+
-+  tmp->normal_exp = a->normal_exp + b->normal_exp
-+    + FRAC_NBITS - (FRACBITS + NGARDS);
-+  tmp->sign = a->sign != b->sign;
-+  while (high >= IMPLICIT_2)
-+    {
-+      tmp->normal_exp++;
-+      if (high & 1)
-+	{
-+	  low >>= 1;
-+	  low |= FRACHIGH;
-+	}
-+      high >>= 1;
-+    }
-+  while (high < IMPLICIT_1)
-+    {
-+      tmp->normal_exp--;
-+
-+      high <<= 1;
-+      if (low & FRACHIGH)
-+	high |= 1;
-+      low <<= 1;
-+    }
-+  /* rounding is tricky. if we only round if it won't make us round later.  */
-+#if 0
-+  if (low & FRACHIGH2)
-+    {
-+      if (((high & GARDMASK) != GARDMSB)
-+	  && (((high + 1) & GARDMASK) == GARDMSB))
-+	{
-+	  /* don't round, it gets done again later.  */
-+	}
-+      else
-+	{
-+	  high++;
-+	}
-+    }
-+#endif
-+  if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB)
-+    {
-+      if (high & (1 << NGARDS))
-+	{
-+	  /* half way, so round to even */
-+	  high += GARDROUND + 1;
-+	}
-+      else if (low)
-+	{
-+	  /* but we really weren't half way */
-+	  high += GARDROUND + 1;
-+	}
-+    }
-+  tmp->fraction.ll = high;
-+  tmp->class = CLASS_NUMBER;
-+  return tmp;
-+}
-+
-+FLO_type
-+multiply (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpmul_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_mul_sf || L_mul_df */
-+
-+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpdiv_parts (fp_number_type * a,
-+	      fp_number_type * b)
-+{
-+  fractype bit;
-+  fractype numerator;
-+  fractype denominator;
-+  fractype quotient;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+
-+  a->sign = a->sign ^ b->sign;
-+
-+  if (isinf (a) || iszero (a))
-+    {
-+      if (a->class == b->class)
-+	return nan ();
-+      return a;
-+    }
-+
-+  if (isinf (b))
-+    {
-+      a->fraction.ll = 0;
-+      a->normal_exp = 0;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      a->class = CLASS_INFINITY;
-+      return a;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both 64bit numbers to get a
-+     128 bit number */
-+  {
-+    /* quotient =
-+       ( numerator / denominator) * 2^(numerator exponent -  denominator exponent)
-+     */
-+
-+    a->normal_exp = a->normal_exp - b->normal_exp;
-+    numerator = a->fraction.ll;
-+    denominator = b->fraction.ll;
-+
-+    if (numerator < denominator)
-+      {
-+	/* Fraction will be less than 1.0 */
-+	numerator *= 2;
-+	a->normal_exp--;
-+      }
-+    bit = IMPLICIT_1;
-+    quotient = 0;
-+    /* ??? Does divide one bit at a time.  Optimize.  */
-+    while (bit)
-+      {
-+	if (numerator >= denominator)
-+	  {
-+	    quotient |= bit;
-+	    numerator -= denominator;
-+	  }
-+	bit >>= 1;
-+	numerator *= 2;
-+      }
-+
-+    if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB)
-+      {
-+	if (quotient & (1 << NGARDS))
-+	  {
-+	    /* half way, so round to even */
-+	    quotient += GARDROUND + 1;
-+	  }
-+	else if (numerator)
-+	  {
-+	    /* but we really weren't half way, more bits exist */
-+	    quotient += GARDROUND + 1;
-+	  }
-+      }
-+
-+    a->fraction.ll = quotient;
-+    return (a);
-+  }
-+}
-+
-+FLO_type
-+divide (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpdiv_parts (&a, &b);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_div_sf || L_div_df */
-+
-+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \
-+    || defined(L_fpcmp_parts_tf)
-+/* according to the demo, fpcmp returns a comparison with 0... thus
-+   a<b -> -1
-+   a==b -> 0
-+   a>b -> +1
-+ */
-+
-+int
-+__fpcmp_parts (fp_number_type * a, fp_number_type * b)
-+{
-+#if 0
-+  /* either nan -> unordered. Must be checked outside of this routine.  */
-+  if (isnan (a) && isnan (b))
-+    {
-+      return 1;			/* still unordered! */
-+    }
-+#endif
-+
-+  if (isnan (a) || isnan (b))
-+    {
-+      return 1;			/* how to indicate unordered compare? */
-+    }
-+  if (isinf (a) && isinf (b))
-+    {
-+      /* +inf > -inf, but +inf != +inf */
-+      /* b    \a| +inf(0)| -inf(1)
-+       ______\+--------+--------
-+       +inf(0)| a==b(0)| a<b(-1)
-+       -------+--------+--------
-+       -inf(1)| a>b(1) | a==b(0)
-+       -------+--------+--------
-+       So since unordered must be nonzero, just line up the columns...
-+       */
-+      return b->sign - a->sign;
-+    }
-+  /* but not both...  */
-+  if (isinf (a))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (isinf (b))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (a) && iszero (b))
-+    {
-+      return 0;
-+    }
-+  if (iszero (a))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (b))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  /* now both are "normal".  */
-+  if (a->sign != b->sign)
-+    {
-+      /* opposite signs */
-+      return a->sign ? -1 : 1;
-+    }
-+  /* same sign; exponents? */
-+  if (a->normal_exp > b->normal_exp)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->normal_exp < b->normal_exp)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* same exponents; check size.  */
-+  if (a->fraction.ll > b->fraction.ll)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->fraction.ll < b->fraction.ll)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* after all that, they're equal.  */
-+  return 0;
-+}
-+#endif
-+
-+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf)
-+CMPtype
-+compare (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_compare_sf || L_compare_df */
-+
-+#ifndef US_SOFTWARE_GOFAST
-+
-+/* These should be optimized for their specific tasks someday.  */
-+
-+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf)
-+CMPtype
-+_eq_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth == 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_eq_sf || L_eq_df */
-+
-+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf)
-+CMPtype
-+_ne_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* true, truth != 0 */
-+
-+  return  __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ne_sf || L_ne_df */
-+
-+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf)
-+CMPtype
-+_gt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth > 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_gt_sf || L_gt_df */
-+
-+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf)
-+CMPtype
-+_ge_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth >= 0 */
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ge_sf || L_ge_df */
-+
-+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf)
-+CMPtype
-+_lt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth < 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_lt_sf || L_lt_df */
-+
-+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf)
-+CMPtype
-+_le_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth <= 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_le_sf || L_le_df */
-+
-+#endif /* ! US_SOFTWARE_GOFAST */
-+
-+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf)
-+CMPtype
-+_unord_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return (isnan (&a) || isnan (&b));
-+}
-+#endif /* L_unord_sf || L_unord_df */
-+
-+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf)
-+FLO_type
-+si_to_float (SItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.class = CLASS_NUMBER;
-+  in.sign = arg_a < 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.normal_exp = FRACBITS + NGARDS;
-+      if (in.sign) 
-+	{
-+	  /* Special case for minint, since there is no +ve integer
-+	     representation for it */
-+	  if (arg_a == (- MAX_SI_INT - 1))
-+	    {
-+	      return (FLO_type)(- MAX_SI_INT - 1);
-+	    }
-+	  in.fraction.ll = (-arg_a);
-+	}
-+      else
-+	in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif /* L_si_to_sf || L_si_to_df */
-+
-+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf)
-+FLO_type
-+usi_to_float (USItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.sign = 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.class = CLASS_NUMBER;
-+      in.normal_exp = FRACBITS + NGARDS;
-+      in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS)))
-+        {
-+          in.fraction.ll >>= 1;
-+          in.normal_exp += 1;
-+        }
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif
-+
-+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si)
-+SItype
-+float_to_si (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  SItype tmp;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* get reasonable MAX_SI_INT...  */
-+  if (isinf (&a))
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 2)
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+  return a.sign ? (-tmp) : (tmp);
-+}
-+#endif /* L_sf_to_si || L_df_to_si */
-+
-+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi)
-+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi)
-+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines,
-+   we also define them for GOFAST because the ones in libgcc2.c have the
-+   wrong names and I'd rather define these here and keep GOFAST CYG-LOC's
-+   out of libgcc2.c.  We can't define these here if not GOFAST because then
-+   there'd be duplicate copies.  */
-+
-+USItype
-+float_to_usi (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* it is a negative number */
-+  if (a.sign)
-+    return 0;
-+  /* get reasonable MAX_USI_INT...  */
-+  if (isinf (&a))
-+    return MAX_USI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 1)
-+    return MAX_USI_INT;
-+  else if (a.normal_exp > (FRACBITS + NGARDS))
-+    return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS));
-+  else
-+    return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+}
-+#endif /* US_SOFTWARE_GOFAST */
-+#endif /* L_sf_to_usi || L_df_to_usi */
-+
-+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf)
-+FLO_type
-+negate (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  flip_sign (&a);
-+  return pack_d (&a);
-+}
-+#endif /* L_negate_sf || L_negate_df */
-+
-+#ifdef FLOAT
-+
-+#if defined(L_make_sf)
-+SFtype
-+__make_fp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     USItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_sf */
-+
-+#ifndef FLOAT_ONLY
-+
-+/* This enables one to build an fp library that supports float but not double.
-+   Otherwise, we would get an undefined reference to __make_dp.
-+   This is needed for some 8-bit ports that can't handle well values that
-+   are 8-bytes in size, so we just don't support double for them at all.  */
-+
-+#if defined(L_sf_to_df)
-+DFtype
-+sf_to_df (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp,
-+		    ((UDItype) in.fraction.ll) << F_D_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#if defined(L_sf_to_tf) && defined(TMODES)
-+TFtype
-+sf_to_tf (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << F_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#endif /* ! FLOAT_ONLY */
-+#endif /* FLOAT */
-+
-+#ifndef FLOAT
-+
-+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);
-+
-+#if defined(L_make_df)
-+DFtype
-+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_df */
-+
-+#if defined(L_df_to_sf)
-+SFtype
-+df_to_sf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_D_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_df_to_sf */
-+
-+#if defined(L_df_to_tf) && defined(TMODES) \
-+    && !defined(FLOAT) && !defined(TFLOAT)
-+TFtype
-+df_to_tf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << D_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#ifdef TFLOAT
-+#if defined(L_make_tf)
-+TFtype
-+__make_tp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     UTItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_tf */
-+
-+#if defined(L_tf_to_df)
-+DFtype
-+tf_to_df (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  UDItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> D_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_df */
-+
-+#if defined(L_tf_to_sf)
-+SFtype
-+tf_to_sf (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_sf */
-+#endif /* TFLOAT */
-+
-+#endif /* ! FLOAT */
-+#endif /* !EXTENDED_FLOAT_STUBS */
---- gcc-3.4.3/gcc/config/nios2/nios2-fp-bit.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-fp-bit.c
-@@ -0,0 +1,1652 @@
-+#define FLOAT
-+/* This is a software floating point library which can be used
-+   for targets without hardware floating point. 
-+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
-+   Free Software Foundation, Inc.
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with other files,
-+   some of which are compiled with GCC, to produce an executable,
-+   this library 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.  */
-+
-+/* This implements IEEE 754 format arithmetic, but does not provide a
-+   mechanism for setting the rounding mode, or for generating or handling
-+   exceptions.
-+
-+   The original code by Steve Chamberlain, hacked by Mark Eichin and Jim
-+   Wilson, all of Cygnus Support.  */
-+
-+/* The intended way to use this file is to make two copies, add `#define FLOAT'
-+   to one copy, then compile both copies and add them to libgcc.a.  */
-+
-+#include "tconfig.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "config/fp-bit.h"
-+
-+/* The following macros can be defined to change the behavior of this file:
-+   FLOAT: Implement a `float', aka SFmode, fp library.  If this is not
-+     defined, then this file implements a `double', aka DFmode, fp library.
-+   FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e.
-+     don't include float->double conversion which requires the double library.
-+     This is useful only for machines which can't support doubles, e.g. some
-+     8-bit processors.
-+   CMPtype: Specify the type that floating point compares should return.
-+     This defaults to SItype, aka int.
-+   US_SOFTWARE_GOFAST: This makes all entry points use the same names as the
-+     US Software goFast library.
-+   _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding
-+     two integers to the FLO_union_type.
-+   NO_DENORMALS: Disable handling of denormals.
-+   NO_NANS: Disable nan and infinity handling
-+   SMALL_MACHINE: Useful when operations on QIs and HIs are faster
-+     than on an SI */
-+
-+/* We don't currently support extended floats (long doubles) on machines
-+   without hardware to deal with them.
-+
-+   These stubs are just to keep the linker from complaining about unresolved
-+   references which can be pulled in from libio & libstdc++, even if the
-+   user isn't using long doubles.  However, they may generate an unresolved
-+   external to abort if abort is not used by the function, and the stubs
-+   are referenced from within libc, since libgcc goes before and after the
-+   system library.  */
-+
-+#ifdef DECLARE_LIBRARY_RENAMES
-+  DECLARE_LIBRARY_RENAMES
-+#endif
-+
-+#ifdef EXTENDED_FLOAT_STUBS
-+extern void abort (void);
-+void __extendsfxf2 (void) { abort(); }
-+void __extenddfxf2 (void) { abort(); }
-+void __truncxfdf2 (void) { abort(); }
-+void __truncxfsf2 (void) { abort(); }
-+void __fixxfsi (void) { abort(); }
-+void __floatsixf (void) { abort(); }
-+void __addxf3 (void) { abort(); }
-+void __subxf3 (void) { abort(); }
-+void __mulxf3 (void) { abort(); }
-+void __divxf3 (void) { abort(); }
-+void __negxf2 (void) { abort(); }
-+void __eqxf2 (void) { abort(); }
-+void __nexf2 (void) { abort(); }
-+void __gtxf2 (void) { abort(); }
-+void __gexf2 (void) { abort(); }
-+void __lexf2 (void) { abort(); }
-+void __ltxf2 (void) { abort(); }
-+
-+void __extendsftf2 (void) { abort(); }
-+void __extenddftf2 (void) { abort(); }
-+void __trunctfdf2 (void) { abort(); }
-+void __trunctfsf2 (void) { abort(); }
-+void __fixtfsi (void) { abort(); }
-+void __floatsitf (void) { abort(); }
-+void __addtf3 (void) { abort(); }
-+void __subtf3 (void) { abort(); }
-+void __multf3 (void) { abort(); }
-+void __divtf3 (void) { abort(); }
-+void __negtf2 (void) { abort(); }
-+void __eqtf2 (void) { abort(); }
-+void __netf2 (void) { abort(); }
-+void __gttf2 (void) { abort(); }
-+void __getf2 (void) { abort(); }
-+void __letf2 (void) { abort(); }
-+void __lttf2 (void) { abort(); }
-+#else	/* !EXTENDED_FLOAT_STUBS, rest of file */
-+
-+/* IEEE "special" number predicates */
-+
-+#ifdef NO_NANS
-+
-+#define nan() 0
-+#define isnan(x) 0
-+#define isinf(x) 0
-+#else
-+
-+#if   defined L_thenan_sf
-+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_df
-+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_tf
-+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined TFLOAT
-+extern const fp_number_type __thenan_tf;
-+#elif defined FLOAT
-+extern const fp_number_type __thenan_sf;
-+#else
-+extern const fp_number_type __thenan_df;
-+#endif
-+
-+INLINE
-+static fp_number_type *
-+nan (void)
-+{
-+  /* Discard the const qualifier...  */
-+#ifdef TFLOAT
-+  return (fp_number_type *) (& __thenan_tf);
-+#elif defined FLOAT  
-+  return (fp_number_type *) (& __thenan_sf);
-+#else
-+  return (fp_number_type *) (& __thenan_df);
-+#endif
-+}
-+
-+INLINE
-+static int
-+isnan ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_SNAN || x->class == CLASS_QNAN;
-+}
-+
-+INLINE
-+static int
-+isinf ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_INFINITY;
-+}
-+
-+#endif /* NO_NANS */
-+
-+INLINE
-+static int
-+iszero ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_ZERO;
-+}
-+
-+INLINE 
-+static void
-+flip_sign ( fp_number_type *  x)
-+{
-+  x->sign = !x->sign;
-+}
-+
-+extern FLO_type pack_d ( fp_number_type * );
-+
-+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf)
-+FLO_type
-+pack_d ( fp_number_type *  src)
-+{
-+  FLO_union_type dst;
-+  fractype fraction = src->fraction.ll;	/* wasn't unsigned before? */
-+  int sign = src->sign;
-+  int exp = 0;
-+
-+  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src)))
-+    {
-+      /* We can't represent these values accurately.  By using the
-+	 largest possible magnitude, we guarantee that the conversion
-+	 of infinity is at least as big as any finite number.  */
-+      exp = EXPMAX;
-+      fraction = ((fractype) 1 << FRACBITS) - 1;
-+    }
-+  else if (isnan (src))
-+    {
-+      exp = EXPMAX;
-+      if (src->class == CLASS_QNAN || 1)
-+	{
-+#ifdef QUIET_NAN_NEGATED
-+	  fraction |= QUIET_NAN - 1;
-+#else
-+	  fraction |= QUIET_NAN;
-+#endif
-+	}
-+    }
-+  else if (isinf (src))
-+    {
-+      exp = EXPMAX;
-+      fraction = 0;
-+    }
-+  else if (iszero (src))
-+    {
-+      exp = 0;
-+      fraction = 0;
-+    }
-+  else if (fraction == 0)
-+    {
-+      exp = 0;
-+    }
-+  else
-+    {
-+      if (src->normal_exp < NORMAL_EXPMIN)
-+	{
-+#ifdef NO_DENORMALS
-+	  /* Go straight to a zero representation if denormals are not
-+ 	     supported.  The denormal handling would be harmless but
-+ 	     isn't unnecessary.  */
-+	  exp = 0;
-+	  fraction = 0;
-+#else /* NO_DENORMALS */
-+	  /* This number's exponent is too low to fit into the bits
-+	     available in the number, so we'll store 0 in the exponent and
-+	     shift the fraction to the right to make up for it.  */
-+
-+	  int shift = NORMAL_EXPMIN - src->normal_exp;
-+
-+	  exp = 0;
-+
-+	  if (shift > FRAC_NBITS - NGARDS)
-+	    {
-+	      /* No point shifting, since it's more that 64 out.  */
-+	      fraction = 0;
-+	    }
-+	  else
-+	    {
-+	      int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0;
-+	      fraction = (fraction >> shift) | lowbit;
-+	    }
-+	  if ((fraction & GARDMASK) == GARDMSB)
-+	    {
-+	      if ((fraction & (1 << NGARDS)))
-+		fraction += GARDROUND + 1;
-+	    }
-+	  else
-+	    {
-+	      /* Add to the guards to round up.  */
-+	      fraction += GARDROUND;
-+	    }
-+	  /* Perhaps the rounding means we now need to change the
-+             exponent, because the fraction is no longer denormal.  */
-+	  if (fraction >= IMPLICIT_1)
-+	    {
-+	      exp += 1;
-+	    }
-+	  fraction >>= NGARDS;
-+#endif /* NO_DENORMALS */
-+	}
-+      else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS)
-+	       && src->normal_exp > EXPBIAS)
-+	{
-+	  exp = EXPMAX;
-+	  fraction = 0;
-+	}
-+      else
-+	{
-+	  exp = src->normal_exp + EXPBIAS;
-+	  if (!ROUND_TOWARDS_ZERO)
-+	    {
-+	      /* IF the gard bits are the all zero, but the first, then we're
-+		 half way between two numbers, choose the one which makes the
-+		 lsb of the answer 0.  */
-+	      if ((fraction & GARDMASK) == GARDMSB)
-+		{
-+		  if (fraction & (1 << NGARDS))
-+		    fraction += GARDROUND + 1;
-+		}
-+	      else
-+		{
-+		  /* Add a one to the guards to round up */
-+		  fraction += GARDROUND;
-+		}
-+	      if (fraction >= IMPLICIT_2)
-+		{
-+		  fraction >>= 1;
-+		  exp += 1;
-+		}
-+	    }
-+	  fraction >>= NGARDS;
-+
-+	  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX)
-+	    {
-+	      /* Saturate on overflow.  */
-+	      exp = EXPMAX;
-+	      fraction = ((fractype) 1 << FRACBITS) - 1;
-+	    }
-+	}
-+    }
-+
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  dst.bits.fraction = fraction;
-+  dst.bits.exp = exp;
-+  dst.bits.sign = sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low, unity;
-+   int lowsign, lowexp;
-+
-+   unity = (halffractype) 1 << HALFFRACBITS;
-+
-+   /* Set HIGH to the high double's significand, masking out the implicit 1.
-+      Set LOW to the low double's full significand.  */
-+   high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1);
-+   low = fraction & (unity * 2 - 1);
-+
-+   /* Get the initial sign and exponent of the low double.  */
-+   lowexp = exp - HALFFRACBITS - 1;
-+   lowsign = sign;
-+
-+   /* HIGH should be rounded like a normal double, making |LOW| <=
-+      0.5 ULP of HIGH.  Assume round-to-nearest.  */
-+   if (exp < EXPMAX)
-+     if (low > unity || (low == unity && (high & 1) == 1))
-+       {
-+	 /* Round HIGH up and adjust LOW to match.  */
-+	 high++;
-+	 if (high == unity)
-+	   {
-+	     /* May make it infinite, but that's OK.  */
-+	     high = 0;
-+	     exp++;
-+	   }
-+	 low = unity * 2 - low;
-+	 lowsign ^= 1;
-+       }
-+
-+   high |= (halffractype) exp << HALFFRACBITS;
-+   high |= (halffractype) sign << (HALFFRACBITS + EXPBITS);
-+
-+   if (exp == EXPMAX || exp == 0 || low == 0)
-+     low = 0;
-+   else
-+     {
-+       while (lowexp > 0 && low < unity)
-+	 {
-+	   low <<= 1;
-+	   lowexp--;
-+	 }
-+
-+       if (lowexp <= 0)
-+	 {
-+	   halffractype roundmsb, round;
-+	   int shift;
-+
-+	   shift = 1 - lowexp;
-+	   roundmsb = (1 << (shift - 1));
-+	   round = low & ((roundmsb << 1) - 1);
-+
-+	   low >>= shift;
-+	   lowexp = 0;
-+
-+	   if (round > roundmsb || (round == roundmsb && (low & 1) == 1))
-+	     {
-+	       low++;
-+	       if (low == unity)
-+		 /* LOW rounds up to the smallest normal number.  */
-+		 lowexp++;
-+	     }
-+	 }
-+
-+       low &= unity - 1;
-+       low |= (halffractype) lowexp << HALFFRACBITS;
-+       low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS);
-+     }
-+   dst.value_raw = ((fractype) high << HALFSHIFT) | low;
-+ }
-+# else
-+  dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
-+  dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS;
-+  dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS);
-+# endif
-+#endif
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+#ifdef TFLOAT
-+  {
-+    qrtrfractype tmp1 = dst.words[0];
-+    qrtrfractype tmp2 = dst.words[1];
-+    dst.words[0] = dst.words[3];
-+    dst.words[1] = dst.words[2];
-+    dst.words[2] = tmp2;
-+    dst.words[3] = tmp1;
-+  }
-+#else
-+  {
-+    halffractype tmp = dst.words[0];
-+    dst.words[0] = dst.words[1];
-+    dst.words[1] = tmp;
-+  }
-+#endif
-+#endif
-+
-+  return dst.value;
-+}
-+#endif
-+
-+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf)
-+void
-+unpack_d (FLO_union_type * src, fp_number_type * dst)
-+{
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+  fractype fraction;
-+  int exp;
-+  int sign;
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+  FLO_union_type swapped;
-+
-+#ifdef TFLOAT
-+  swapped.words[0] = src->words[3];
-+  swapped.words[1] = src->words[2];
-+  swapped.words[2] = src->words[1];
-+  swapped.words[3] = src->words[0];
-+#else
-+  swapped.words[0] = src->words[1];
-+  swapped.words[1] = src->words[0];
-+#endif
-+  src = &swapped;
-+#endif
-+  
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  fraction = src->bits.fraction;
-+  exp = src->bits.exp;
-+  sign = src->bits.sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low;
-+   
-+   high = src->value_raw >> HALFSHIFT;
-+   low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1);
-+
-+   fraction = high & ((((fractype)1) << HALFFRACBITS) - 1);
-+   fraction <<= FRACBITS - HALFFRACBITS;
-+   exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+   sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+
-+   if (exp != EXPMAX && exp != 0 && low != 0)
-+     {
-+       int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+       int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+       int shift;
-+       fractype xlow;
-+
-+       xlow = low & ((((fractype)1) << HALFFRACBITS) - 1);
-+       if (lowexp)
-+	 xlow |= (((halffractype)1) << HALFFRACBITS);
-+       else
-+	 lowexp = 1;
-+       shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp);
-+       if (shift > 0)
-+	 xlow <<= shift;
-+       else if (shift < 0)
-+	 xlow >>= -shift;
-+       if (sign == lowsign)
-+	 fraction += xlow;
-+       else if (fraction >= xlow)
-+	 fraction -= xlow;
-+       else
-+	 {
-+	   /* The high part is a power of two but the full number is lower.
-+	      This code will leave the implicit 1 in FRACTION, but we'd
-+	      have added that below anyway.  */
-+	   fraction = (((fractype) 1 << FRACBITS) - xlow) << 1;
-+	   exp--;
-+	 }
-+     }
-+ }
-+# else
-+  fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1);
-+  exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1);
-+  sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1;
-+# endif
-+#endif
-+
-+  dst->sign = sign;
-+  if (exp == 0)
-+    {
-+      /* Hmm.  Looks like 0 */
-+      if (fraction == 0
-+#ifdef NO_DENORMALS
-+	  || 1
-+#endif
-+	  )
-+	{
-+	  /* tastes like zero */
-+	  dst->class = CLASS_ZERO;
-+	}
-+      else
-+	{
-+	  /* Zero exponent with nonzero fraction - it's denormalized,
-+	     so there isn't a leading implicit one - we'll shift it so
-+	     it gets one.  */
-+	  dst->normal_exp = exp - EXPBIAS + 1;
-+	  fraction <<= NGARDS;
-+
-+	  dst->class = CLASS_NUMBER;
-+#if 1
-+	  while (fraction < IMPLICIT_1)
-+	    {
-+	      fraction <<= 1;
-+	      dst->normal_exp--;
-+	    }
-+#endif
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX)
-+    {
-+      /* Huge exponent*/
-+      if (fraction == 0)
-+	{
-+	  /* Attached to a zero fraction - means infinity */
-+	  dst->class = CLASS_INFINITY;
-+	}
-+      else
-+	{
-+	  /* Nonzero fraction, means nan */
-+#ifdef QUIET_NAN_NEGATED
-+	  if ((fraction & QUIET_NAN) == 0)
-+#else
-+	  if (fraction & QUIET_NAN)
-+#endif
-+	    {
-+	      dst->class = CLASS_QNAN;
-+	    }
-+	  else
-+	    {
-+	      dst->class = CLASS_SNAN;
-+	    }
-+	  /* Keep the fraction part as the nan number */
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else
-+    {
-+      /* Nothing strange about this number */
-+      dst->normal_exp = exp - EXPBIAS;
-+      dst->class = CLASS_NUMBER;
-+      dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1;
-+    }
-+}
-+#endif /* L_unpack_df || L_unpack_sf */
-+
-+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf)
-+static fp_number_type *
-+_fpadd_parts (fp_number_type * a,
-+	      fp_number_type * b,
-+	      fp_number_type * tmp)
-+{
-+  intfrac tfraction;
-+
-+  /* Put commonly used fields in local variables.  */
-+  int a_normal_exp;
-+  int b_normal_exp;
-+  fractype a_fraction;
-+  fractype b_fraction;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      /* Adding infinities with opposite signs yields a NaN.  */
-+      if (isinf (b) && a->sign != b->sign)
-+	return nan ();
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      return b;
-+    }
-+  if (iszero (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  *tmp = *a;
-+	  tmp->sign = a->sign & b->sign;
-+	  return tmp;
-+	}
-+      return a;
-+    }
-+  if (iszero (a))
-+    {
-+      return b;
-+    }
-+
-+  /* Got two numbers. shift the smaller and increment the exponent till
-+     they're the same */
-+  {
-+    int diff;
-+
-+    a_normal_exp = a->normal_exp;
-+    b_normal_exp = b->normal_exp;
-+    a_fraction = a->fraction.ll;
-+    b_fraction = b->fraction.ll;
-+
-+    diff = a_normal_exp - b_normal_exp;
-+
-+    if (diff < 0)
-+      diff = -diff;
-+    if (diff < FRAC_NBITS)
-+      {
-+	/* ??? This does shifts one bit at a time.  Optimize.  */
-+	while (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp++;
-+	    LSHIFT (b_fraction);
-+	  }
-+	while (b_normal_exp > a_normal_exp)
-+	  {
-+	    a_normal_exp++;
-+	    LSHIFT (a_fraction);
-+	  }
-+      }
-+    else
-+      {
-+	/* Somethings's up.. choose the biggest */
-+	if (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp = a_normal_exp;
-+	    b_fraction = 0;
-+	  }
-+	else
-+	  {
-+	    a_normal_exp = b_normal_exp;
-+	    a_fraction = 0;
-+	  }
-+      }
-+  }
-+
-+  if (a->sign != b->sign)
-+    {
-+      if (a->sign)
-+	{
-+	  tfraction = -a_fraction + b_fraction;
-+	}
-+      else
-+	{
-+	  tfraction = a_fraction - b_fraction;
-+	}
-+      if (tfraction >= 0)
-+	{
-+	  tmp->sign = 0;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = tfraction;
-+	}
-+      else
-+	{
-+	  tmp->sign = 1;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = -tfraction;
-+	}
-+      /* and renormalize it */
-+
-+      while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll)
-+	{
-+	  tmp->fraction.ll <<= 1;
-+	  tmp->normal_exp--;
-+	}
-+    }
-+  else
-+    {
-+      tmp->sign = a->sign;
-+      tmp->normal_exp = a_normal_exp;
-+      tmp->fraction.ll = a_fraction + b_fraction;
-+    }
-+  tmp->class = CLASS_NUMBER;
-+  /* Now the fraction is added, we have to shift down to renormalize the
-+     number */
-+
-+  if (tmp->fraction.ll >= IMPLICIT_2)
-+    {
-+      LSHIFT (tmp->fraction.ll);
-+      tmp->normal_exp++;
-+    }
-+  return tmp;
-+
-+}
-+
-+FLO_type
-+add (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+
-+FLO_type
-+sub (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  b.sign ^= 1;
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_addsub_sf || L_addsub_df */
-+
-+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpmul_parts ( fp_number_type *  a,
-+	       fp_number_type *  b,
-+	       fp_number_type * tmp)
-+{
-+  fractype low = 0;
-+  fractype high = 0;
-+
-+  if (isnan (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      if (iszero (b))
-+	return nan ();
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  return nan ();
-+	}
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (iszero (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both numbers to get a
-+     twice-as-wide number.  */
-+  {
-+#if defined(NO_DI_MODE) || defined(TFLOAT)
-+    {
-+      fractype x = a->fraction.ll;
-+      fractype ylow = b->fraction.ll;
-+      fractype yhigh = 0;
-+      int bit;
-+
-+      /* ??? This does multiplies one bit at a time.  Optimize.  */
-+      for (bit = 0; bit < FRAC_NBITS; bit++)
-+	{
-+	  int carry;
-+
-+	  if (x & 1)
-+	    {
-+	      carry = (low += ylow) < ylow;
-+	      high += yhigh + carry;
-+	    }
-+	  yhigh <<= 1;
-+	  if (ylow & FRACHIGH)
-+	    {
-+	      yhigh |= 1;
-+	    }
-+	  ylow <<= 1;
-+	  x >>= 1;
-+	}
-+    }
-+#elif defined(FLOAT) 
-+    /* Multiplying two USIs to get a UDI, we're safe.  */
-+    {
-+      UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll;
-+      
-+      high = answer >> BITS_PER_SI;
-+      low = answer;
-+    }
-+#else
-+    /* fractype is DImode, but we need the result to be twice as wide.
-+       Assuming a widening multiply from DImode to TImode is not
-+       available, build one by hand.  */
-+    {
-+      USItype nl = a->fraction.ll;
-+      USItype nh = a->fraction.ll >> BITS_PER_SI;
-+      USItype ml = b->fraction.ll;
-+      USItype mh = b->fraction.ll >> BITS_PER_SI;
-+      UDItype pp_ll = (UDItype) ml * nl;
-+      UDItype pp_hl = (UDItype) mh * nl;
-+      UDItype pp_lh = (UDItype) ml * nh;
-+      UDItype pp_hh = (UDItype) mh * nh;
-+      UDItype res2 = 0;
-+      UDItype res0 = 0;
-+      UDItype ps_hh__ = pp_hl + pp_lh;
-+      if (ps_hh__ < pp_hl)
-+	res2 += (UDItype)1 << BITS_PER_SI;
-+      pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI;
-+      res0 = pp_ll + pp_hl;
-+      if (res0 < pp_ll)
-+	res2++;
-+      res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh;
-+      high = res2;
-+      low = res0;
-+    }
-+#endif
-+  }
-+
-+  tmp->normal_exp = a->normal_exp + b->normal_exp
-+    + FRAC_NBITS - (FRACBITS + NGARDS);
-+  tmp->sign = a->sign != b->sign;
-+  while (high >= IMPLICIT_2)
-+    {
-+      tmp->normal_exp++;
-+      if (high & 1)
-+	{
-+	  low >>= 1;
-+	  low |= FRACHIGH;
-+	}
-+      high >>= 1;
-+    }
-+  while (high < IMPLICIT_1)
-+    {
-+      tmp->normal_exp--;
-+
-+      high <<= 1;
-+      if (low & FRACHIGH)
-+	high |= 1;
-+      low <<= 1;
-+    }
-+  /* rounding is tricky. if we only round if it won't make us round later.  */
-+#if 0
-+  if (low & FRACHIGH2)
-+    {
-+      if (((high & GARDMASK) != GARDMSB)
-+	  && (((high + 1) & GARDMASK) == GARDMSB))
-+	{
-+	  /* don't round, it gets done again later.  */
-+	}
-+      else
-+	{
-+	  high++;
-+	}
-+    }
-+#endif
-+  if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB)
-+    {
-+      if (high & (1 << NGARDS))
-+	{
-+	  /* half way, so round to even */
-+	  high += GARDROUND + 1;
-+	}
-+      else if (low)
-+	{
-+	  /* but we really weren't half way */
-+	  high += GARDROUND + 1;
-+	}
-+    }
-+  tmp->fraction.ll = high;
-+  tmp->class = CLASS_NUMBER;
-+  return tmp;
-+}
-+
-+FLO_type
-+multiply (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpmul_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_mul_sf || L_mul_df */
-+
-+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpdiv_parts (fp_number_type * a,
-+	      fp_number_type * b)
-+{
-+  fractype bit;
-+  fractype numerator;
-+  fractype denominator;
-+  fractype quotient;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+
-+  a->sign = a->sign ^ b->sign;
-+
-+  if (isinf (a) || iszero (a))
-+    {
-+      if (a->class == b->class)
-+	return nan ();
-+      return a;
-+    }
-+
-+  if (isinf (b))
-+    {
-+      a->fraction.ll = 0;
-+      a->normal_exp = 0;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      a->class = CLASS_INFINITY;
-+      return a;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both 64bit numbers to get a
-+     128 bit number */
-+  {
-+    /* quotient =
-+       ( numerator / denominator) * 2^(numerator exponent -  denominator exponent)
-+     */
-+
-+    a->normal_exp = a->normal_exp - b->normal_exp;
-+    numerator = a->fraction.ll;
-+    denominator = b->fraction.ll;
-+
-+    if (numerator < denominator)
-+      {
-+	/* Fraction will be less than 1.0 */
-+	numerator *= 2;
-+	a->normal_exp--;
-+      }
-+    bit = IMPLICIT_1;
-+    quotient = 0;
-+    /* ??? Does divide one bit at a time.  Optimize.  */
-+    while (bit)
-+      {
-+	if (numerator >= denominator)
-+	  {
-+	    quotient |= bit;
-+	    numerator -= denominator;
-+	  }
-+	bit >>= 1;
-+	numerator *= 2;
-+      }
-+
-+    if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB)
-+      {
-+	if (quotient & (1 << NGARDS))
-+	  {
-+	    /* half way, so round to even */
-+	    quotient += GARDROUND + 1;
-+	  }
-+	else if (numerator)
-+	  {
-+	    /* but we really weren't half way, more bits exist */
-+	    quotient += GARDROUND + 1;
-+	  }
-+      }
-+
-+    a->fraction.ll = quotient;
-+    return (a);
-+  }
-+}
-+
-+FLO_type
-+divide (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpdiv_parts (&a, &b);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_div_sf || L_div_df */
-+
-+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \
-+    || defined(L_fpcmp_parts_tf)
-+/* according to the demo, fpcmp returns a comparison with 0... thus
-+   a<b -> -1
-+   a==b -> 0
-+   a>b -> +1
-+ */
-+
-+int
-+__fpcmp_parts (fp_number_type * a, fp_number_type * b)
-+{
-+#if 0
-+  /* either nan -> unordered. Must be checked outside of this routine.  */
-+  if (isnan (a) && isnan (b))
-+    {
-+      return 1;			/* still unordered! */
-+    }
-+#endif
-+
-+  if (isnan (a) || isnan (b))
-+    {
-+      return 1;			/* how to indicate unordered compare? */
-+    }
-+  if (isinf (a) && isinf (b))
-+    {
-+      /* +inf > -inf, but +inf != +inf */
-+      /* b    \a| +inf(0)| -inf(1)
-+       ______\+--------+--------
-+       +inf(0)| a==b(0)| a<b(-1)
-+       -------+--------+--------
-+       -inf(1)| a>b(1) | a==b(0)
-+       -------+--------+--------
-+       So since unordered must be nonzero, just line up the columns...
-+       */
-+      return b->sign - a->sign;
-+    }
-+  /* but not both...  */
-+  if (isinf (a))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (isinf (b))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (a) && iszero (b))
-+    {
-+      return 0;
-+    }
-+  if (iszero (a))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (b))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  /* now both are "normal".  */
-+  if (a->sign != b->sign)
-+    {
-+      /* opposite signs */
-+      return a->sign ? -1 : 1;
-+    }
-+  /* same sign; exponents? */
-+  if (a->normal_exp > b->normal_exp)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->normal_exp < b->normal_exp)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* same exponents; check size.  */
-+  if (a->fraction.ll > b->fraction.ll)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->fraction.ll < b->fraction.ll)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* after all that, they're equal.  */
-+  return 0;
-+}
-+#endif
-+
-+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf)
-+CMPtype
-+compare (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_compare_sf || L_compare_df */
-+
-+#ifndef US_SOFTWARE_GOFAST
-+
-+/* These should be optimized for their specific tasks someday.  */
-+
-+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf)
-+CMPtype
-+_eq_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth == 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_eq_sf || L_eq_df */
-+
-+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf)
-+CMPtype
-+_ne_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* true, truth != 0 */
-+
-+  return  __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ne_sf || L_ne_df */
-+
-+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf)
-+CMPtype
-+_gt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth > 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_gt_sf || L_gt_df */
-+
-+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf)
-+CMPtype
-+_ge_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth >= 0 */
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ge_sf || L_ge_df */
-+
-+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf)
-+CMPtype
-+_lt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth < 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_lt_sf || L_lt_df */
-+
-+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf)
-+CMPtype
-+_le_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth <= 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_le_sf || L_le_df */
-+
-+#endif /* ! US_SOFTWARE_GOFAST */
-+
-+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf)
-+CMPtype
-+_unord_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return (isnan (&a) || isnan (&b));
-+}
-+#endif /* L_unord_sf || L_unord_df */
-+
-+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf)
-+FLO_type
-+si_to_float (SItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.class = CLASS_NUMBER;
-+  in.sign = arg_a < 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.normal_exp = FRACBITS + NGARDS;
-+      if (in.sign) 
-+	{
-+	  /* Special case for minint, since there is no +ve integer
-+	     representation for it */
-+	  if (arg_a == (- MAX_SI_INT - 1))
-+	    {
-+	      return (FLO_type)(- MAX_SI_INT - 1);
-+	    }
-+	  in.fraction.ll = (-arg_a);
-+	}
-+      else
-+	in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif /* L_si_to_sf || L_si_to_df */
-+
-+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf)
-+FLO_type
-+usi_to_float (USItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.sign = 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.class = CLASS_NUMBER;
-+      in.normal_exp = FRACBITS + NGARDS;
-+      in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS)))
-+        {
-+          in.fraction.ll >>= 1;
-+          in.normal_exp += 1;
-+        }
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif
-+
-+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si)
-+SItype
-+float_to_si (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  SItype tmp;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* get reasonable MAX_SI_INT...  */
-+  if (isinf (&a))
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 2)
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+  return a.sign ? (-tmp) : (tmp);
-+}
-+#endif /* L_sf_to_si || L_df_to_si */
-+
-+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi)
-+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi)
-+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines,
-+   we also define them for GOFAST because the ones in libgcc2.c have the
-+   wrong names and I'd rather define these here and keep GOFAST CYG-LOC's
-+   out of libgcc2.c.  We can't define these here if not GOFAST because then
-+   there'd be duplicate copies.  */
-+
-+USItype
-+float_to_usi (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* it is a negative number */
-+  if (a.sign)
-+    return 0;
-+  /* get reasonable MAX_USI_INT...  */
-+  if (isinf (&a))
-+    return MAX_USI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 1)
-+    return MAX_USI_INT;
-+  else if (a.normal_exp > (FRACBITS + NGARDS))
-+    return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS));
-+  else
-+    return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+}
-+#endif /* US_SOFTWARE_GOFAST */
-+#endif /* L_sf_to_usi || L_df_to_usi */
-+
-+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf)
-+FLO_type
-+negate (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  flip_sign (&a);
-+  return pack_d (&a);
-+}
-+#endif /* L_negate_sf || L_negate_df */
-+
-+#ifdef FLOAT
-+
-+#if defined(L_make_sf)
-+SFtype
-+__make_fp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     USItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_sf */
-+
-+#ifndef FLOAT_ONLY
-+
-+/* This enables one to build an fp library that supports float but not double.
-+   Otherwise, we would get an undefined reference to __make_dp.
-+   This is needed for some 8-bit ports that can't handle well values that
-+   are 8-bytes in size, so we just don't support double for them at all.  */
-+
-+#if defined(L_sf_to_df)
-+DFtype
-+sf_to_df (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp,
-+		    ((UDItype) in.fraction.ll) << F_D_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#if defined(L_sf_to_tf) && defined(TMODES)
-+TFtype
-+sf_to_tf (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << F_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#endif /* ! FLOAT_ONLY */
-+#endif /* FLOAT */
-+
-+#ifndef FLOAT
-+
-+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);
-+
-+#if defined(L_make_df)
-+DFtype
-+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_df */
-+
-+#if defined(L_df_to_sf)
-+SFtype
-+df_to_sf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_D_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_df_to_sf */
-+
-+#if defined(L_df_to_tf) && defined(TMODES) \
-+    && !defined(FLOAT) && !defined(TFLOAT)
-+TFtype
-+df_to_tf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << D_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#ifdef TFLOAT
-+#if defined(L_make_tf)
-+TFtype
-+__make_tp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     UTItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_tf */
-+
-+#if defined(L_tf_to_df)
-+DFtype
-+tf_to_df (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  UDItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> D_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_df */
-+
-+#if defined(L_tf_to_sf)
-+SFtype
-+tf_to_sf (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_sf */
-+#endif /* TFLOAT */
-+
-+#endif /* ! FLOAT */
-+#endif /* !EXTENDED_FLOAT_STUBS */
---- gcc-3.4.3/gcc/config/nios2/nios2-protos.h
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-protos.h
-@@ -0,0 +1,70 @@
-+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera 
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+extern void dump_frame_size (FILE *);
-+extern HOST_WIDE_INT compute_frame_size (void);
-+extern int nios2_initial_elimination_offset (int, int);
-+extern void override_options (void);
-+extern void optimization_options (int, int);
-+extern int nios2_can_use_return_insn (void);
-+extern void expand_prologue (void);
-+extern void expand_epilogue (bool);
-+extern void function_profiler (FILE *, int);
-+
-+
-+#ifdef RTX_CODE
-+extern int nios2_legitimate_address (rtx, enum machine_mode, int);
-+extern void nios2_print_operand (FILE *, rtx, int);
-+extern void nios2_print_operand_address (FILE *, rtx);
-+
-+extern int nios2_emit_move_sequence (rtx *, enum machine_mode);
-+extern int nios2_emit_expensive_div (rtx *, enum machine_mode);
-+
-+extern void gen_int_relational (enum rtx_code, rtx, rtx, rtx, rtx);
-+extern void gen_conditional_move (rtx *, enum machine_mode);
-+extern const char *asm_output_opcode (FILE *, const char *);
-+
-+/* predicates */
-+extern int arith_operand (rtx, enum machine_mode);
-+extern int uns_arith_operand (rtx, enum machine_mode);
-+extern int logical_operand (rtx, enum machine_mode);
-+extern int shift_operand (rtx, enum machine_mode);
-+extern int reg_or_0_operand (rtx, enum machine_mode);
-+extern int equality_op (rtx, enum machine_mode);
-+extern int custom_insn_opcode (rtx, enum machine_mode);
-+extern int rdwrctl_operand (rtx, enum machine_mode);
-+
-+# ifdef HAVE_MACHINE_MODES
-+#  if defined TREE_CODE
-+extern void function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern rtx function_arg (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern int function_arg_partial_nregs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
-+extern int nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+
-+#  endif /* TREE_CODE */
-+# endif	/* HAVE_MACHINE_MODES */
-+#endif
-+
-+#ifdef TREE_CODE
-+extern int nios2_return_in_memory (tree);
-+
-+#endif /* TREE_CODE */
---- gcc-3.4.3/gcc/config/nios2/nios2.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.c
-@@ -0,0 +1,2853 @@
-+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+
-+#include <stdio.h>
-+#include "config.h"
-+#include "system.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "rtl.h"
-+#include "tree.h"
-+#include "tm_p.h"
-+#include "regs.h"
-+#include "hard-reg-set.h"
-+#include "real.h"
-+#include "insn-config.h"
-+#include "conditions.h"
-+#include "output.h"
-+#include "insn-attr.h"
-+#include "flags.h"
-+#include "recog.h"
-+#include "expr.h"
-+#include "toplev.h"
-+#include "basic-block.h"
-+#include "function.h"
-+#include "ggc.h"
-+#include "reload.h"
-+#include "debug.h"
-+#include "optabs.h"
-+#include "target.h"
-+#include "target-def.h"
-+
-+/* local prototypes */
-+static bool nios2_rtx_costs (rtx, int, int, int *);
-+
-+static void nios2_asm_function_prologue (FILE *, HOST_WIDE_INT);
-+static int nios2_use_dfa_pipeline_interface (void);
-+static int nios2_issue_rate (void);
-+static struct machine_function *nios2_init_machine_status (void);
-+static bool nios2_in_small_data_p (tree);
-+static rtx save_reg (int, HOST_WIDE_INT, rtx);
-+static rtx restore_reg (int, HOST_WIDE_INT);
-+static unsigned int nios2_section_type_flags (tree, const char *, int);
-+static void nios2_init_builtins (void);
-+static rtx nios2_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
-+static bool nios2_function_ok_for_sibcall (tree, tree);
-+static void nios2_encode_section_info (tree, rtx, int);
-+
-+/* Initialize the GCC target structure.  */
-+#undef TARGET_ASM_FUNCTION_PROLOGUE
-+#define TARGET_ASM_FUNCTION_PROLOGUE nios2_asm_function_prologue
-+
-+#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE
-+#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE \
-+ nios2_use_dfa_pipeline_interface
-+#undef TARGET_SCHED_ISSUE_RATE
-+#define TARGET_SCHED_ISSUE_RATE nios2_issue_rate
-+#undef TARGET_IN_SMALL_DATA_P
-+#define TARGET_IN_SMALL_DATA_P nios2_in_small_data_p
-+#undef  TARGET_ENCODE_SECTION_INFO
-+#define TARGET_ENCODE_SECTION_INFO nios2_encode_section_info
-+#undef  TARGET_SECTION_TYPE_FLAGS
-+#define TARGET_SECTION_TYPE_FLAGS  nios2_section_type_flags
-+
-+#undef TARGET_INIT_BUILTINS
-+#define TARGET_INIT_BUILTINS nios2_init_builtins
-+#undef TARGET_EXPAND_BUILTIN
-+#define TARGET_EXPAND_BUILTIN nios2_expand_builtin
-+
-+#undef TARGET_FUNCTION_OK_FOR_SIBCALL
-+#define TARGET_FUNCTION_OK_FOR_SIBCALL nios2_function_ok_for_sibcall
-+
-+#undef TARGET_RTX_COSTS
-+#define TARGET_RTX_COSTS nios2_rtx_costs
-+
-+
-+struct gcc_target targetm = TARGET_INITIALIZER;
-+
-+
-+
-+/* Threshold for data being put into the small data/bss area, instead
-+   of the normal data area (references to the small data/bss area take
-+   1 instruction, and use the global pointer, references to the normal
-+   data area takes 2 instructions).  */
-+unsigned HOST_WIDE_INT nios2_section_threshold = NIOS2_DEFAULT_GVALUE;
-+
-+
-+/* Structure to be filled in by compute_frame_size with register
-+   save masks, and offsets for the current function.  */
-+
-+struct nios2_frame_info
-+GTY (())
-+{
-+  long total_size;		/* # bytes that the entire frame takes up */
-+  long var_size;		/* # bytes that variables take up */
-+  long args_size;		/* # bytes that outgoing arguments take up */
-+  int save_reg_size;		/* # bytes needed to store gp regs */
-+  int save_reg_rounded;		/* # bytes needed to store gp regs */
-+  long save_regs_offset;	/* offset from new sp to store gp registers */
-+  int initialized;		/* != 0 if frame size already calculated */
-+  int num_regs;			/* number of gp registers saved */
-+};
-+
-+struct machine_function
-+GTY (())
-+{
-+
-+  /* Current frame information, calculated by compute_frame_size.  */
-+  struct nios2_frame_info frame;
-+};
-+
-+
-+/***************************************
-+ * Section encodings
-+ ***************************************/
-+
-+
-+
-+
-+
-+/***************************************
-+ * Stack Layout and Calling Conventions
-+ ***************************************/
-+
-+
-+#define TOO_BIG_OFFSET(X) ((X) > ((1 << 15) - 1))
-+#define TEMP_REG_NUM 8
-+
-+static void
-+nios2_asm_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
-+{
-+  if (flag_verbose_asm || flag_debug_asm)
-+    {
-+      compute_frame_size ();
-+      dump_frame_size (file);
-+    }
-+}
-+
-+static rtx
-+save_reg (int regno, HOST_WIDE_INT offset, rtx cfa_store_reg)
-+{
-+  rtx insn, stack_slot;
-+
-+  stack_slot = gen_rtx_PLUS (SImode,
-+			     cfa_store_reg,
-+			     GEN_INT (offset));
-+
-+  insn = emit_insn (gen_rtx_SET (SImode,
-+				 gen_rtx_MEM (SImode, stack_slot),
-+				 gen_rtx_REG (SImode, regno)));
-+
-+  RTX_FRAME_RELATED_P (insn) = 1;
-+
-+  return insn;
-+}
-+
-+static rtx
-+restore_reg (int regno, HOST_WIDE_INT offset)
-+{
-+  rtx insn, stack_slot;
-+
-+  if (TOO_BIG_OFFSET (offset))
-+    {
-+      stack_slot = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     stack_slot,
-+				     GEN_INT (offset)));
-+
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     stack_slot,
-+                                     gen_rtx_PLUS (SImode,
-+				                   stack_slot,
-+				                   stack_pointer_rtx)));
-+    }
-+  else
-+    {
-+      stack_slot = gen_rtx_PLUS (SImode,
-+			         stack_pointer_rtx,
-+				 GEN_INT (offset));
-+    }
-+
-+  stack_slot = gen_rtx_MEM (SImode, stack_slot);
-+
-+  insn = emit_move_insn (gen_rtx_REG (SImode, regno), stack_slot);
-+
-+  return insn;
-+}
-+
-+
-+/* There are two possible paths for prologue expansion,
-+- the first is if the total frame size is < 2^15-1. In that
-+case all the immediates will fit into the 16-bit immediate
-+fields.
-+- the second is when the frame size is too big, in that
-+case an additional temporary register is used, first 
-+as a cfa_temp to offset the sp, second as the cfa_store
-+register.
-+
-+See the comment above dwarf2out_frame_debug_expr in 
-+dwarf2out.c for more explanation of the "rules."
-+
-+
-+Case 1:
-+Rule #  Example Insn                       Effect
-+2  	addi	sp, sp, -total_frame_size  cfa.reg=sp, cfa.offset=total_frame_size
-+                                           cfa_store.reg=sp, cfa_store.offset=total_frame_size
-+12  	stw	ra, offset(sp)		   
-+12  	stw	r16, offset(sp)
-+1  	mov	fp, sp
-+  
-+Case 2: 
-+Rule #  Example Insn                       Effect
-+6 	movi	r8, total_frame_size       cfa_temp.reg=r8, cfa_temp.offset=total_frame_size
-+2  	sub	sp, sp, r8                 cfa.reg=sp, cfa.offset=total_frame_size
-+                                           cfa_store.reg=sp, cfa_store.offset=total_frame_size
-+5   	add	r8, r8, sp                 cfa_store.reg=r8, cfa_store.offset=0
-+12  	stw	ra, offset(r8)
-+12  	stw	r16, offset(r8)
-+1  	mov	fp, sp
-+
-+*/
-+
-+void
-+expand_prologue ()
-+{
-+  int i;
-+  HOST_WIDE_INT total_frame_size;
-+  int cfa_store_offset;
-+  rtx insn;
-+  rtx cfa_store_reg = 0;
-+
-+  total_frame_size = compute_frame_size ();
-+
-+  if (total_frame_size)
-+    {
-+
-+      if (TOO_BIG_OFFSET (total_frame_size)) 
-+	{
-+	    /* cfa_temp and cfa_store_reg are the same register,
-+	       cfa_store_reg overwrites cfa_temp */
-+	    cfa_store_reg = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+	    insn = emit_insn (gen_rtx_SET (SImode,
-+					   cfa_store_reg,
-+					   GEN_INT (total_frame_size)));
-+
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+
-+	    insn = gen_rtx_SET (SImode,
-+				stack_pointer_rtx,
-+				gen_rtx_MINUS (SImode,
-+					       stack_pointer_rtx,
-+					       cfa_store_reg));
-+
-+	    insn = emit_insn (insn);
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+
-+	    /* if there are no registers to save, I don't need to
-+	       create a cfa_store */
-+	    if (cfun->machine->frame.save_reg_size) 
-+	      {
-+		insn = gen_rtx_SET (SImode,
-+				    cfa_store_reg,
-+				    gen_rtx_PLUS (SImode,
-+						  cfa_store_reg,
-+						  stack_pointer_rtx));
-+
-+		insn = emit_insn (insn);
-+		RTX_FRAME_RELATED_P (insn) = 1;
-+	      }
-+
-+	    cfa_store_offset 
-+	      = total_frame_size 
-+		- (cfun->machine->frame.save_regs_offset
-+		   + cfun->machine->frame.save_reg_rounded);
-+	}
-+      else
-+	{
-+	    insn = gen_rtx_SET (SImode,
-+				stack_pointer_rtx,
-+				gen_rtx_PLUS (SImode,
-+					      stack_pointer_rtx,
-+					      GEN_INT (-total_frame_size)));
-+	    insn = emit_insn (insn);
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+	    cfa_store_reg = stack_pointer_rtx;
-+	    cfa_store_offset 
-+	      = cfun->machine->frame.save_regs_offset
-+		+ cfun->machine->frame.save_reg_rounded;
-+	}
-+    }
-+
-+  if (MUST_SAVE_REGISTER (RA_REGNO))
-+    {
-+      cfa_store_offset -= 4;
-+      save_reg (RA_REGNO, cfa_store_offset, cfa_store_reg);
-+    }
-+  if (MUST_SAVE_REGISTER (FP_REGNO))
-+    {
-+      cfa_store_offset -= 4;
-+      save_reg (FP_REGNO, cfa_store_offset, cfa_store_reg);
-+    }
-+
-+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+    {
-+      if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO)
-+	{
-+	  cfa_store_offset -= 4;
-+	  save_reg (i, cfa_store_offset, cfa_store_reg);
-+	}
-+    }
-+
-+  if (frame_pointer_needed)
-+    {
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     gen_rtx_REG (SImode, FP_REGNO),
-+				     gen_rtx_REG (SImode, SP_REGNO)));
-+
-+      RTX_FRAME_RELATED_P (insn) = 1;
-+    }
-+
-+  /* If we are profiling, make sure no instructions are scheduled before
-+     the call to mcount.  */
-+  if (current_function_profile)
-+    emit_insn (gen_blockage ());
-+}
-+
-+void
-+expand_epilogue (bool sibcall_p)
-+{
-+  rtx insn;
-+  int i;
-+  HOST_WIDE_INT total_frame_size;
-+  int register_store_offset;
-+
-+  total_frame_size = compute_frame_size ();
-+
-+  if (!sibcall_p && nios2_can_use_return_insn ())
-+    {
-+      insn = emit_jump_insn (gen_return ());
-+      return;
-+    }
-+
-+  emit_insn (gen_blockage ());
-+
-+  register_store_offset =
-+    cfun->machine->frame.save_regs_offset +
-+    cfun->machine->frame.save_reg_rounded;
-+
-+  if (MUST_SAVE_REGISTER (RA_REGNO))
-+    {
-+      register_store_offset -= 4;
-+      restore_reg (RA_REGNO, register_store_offset);
-+    }
-+
-+  if (MUST_SAVE_REGISTER (FP_REGNO))
-+    {
-+      register_store_offset -= 4;
-+      restore_reg (FP_REGNO, register_store_offset);
-+    }
-+
-+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+    {
-+      if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO)
-+	{
-+	  register_store_offset -= 4;
-+	  restore_reg (i, register_store_offset);
-+	}
-+    }
-+
-+  if (total_frame_size)
-+    {
-+      rtx sp_adjust;
-+
-+      if (TOO_BIG_OFFSET (total_frame_size))
-+        {
-+	  sp_adjust = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+	  insn = emit_insn (gen_rtx_SET (SImode,
-+					 sp_adjust,
-+					 GEN_INT (total_frame_size)));
-+
-+      	}
-+      else
-+        {
-+	  sp_adjust = GEN_INT (total_frame_size);
-+	}
-+
-+      insn = gen_rtx_SET (SImode,
-+			  stack_pointer_rtx,
-+			  gen_rtx_PLUS (SImode,
-+					stack_pointer_rtx,
-+					sp_adjust));
-+      insn = emit_insn (insn);
-+    }
-+
-+
-+  if (!sibcall_p)
-+    {
-+      insn = emit_jump_insn (gen_return_from_epilogue (gen_rtx (REG, Pmode,
-+								RA_REGNO)));
-+    }
-+}
-+
-+
-+bool
-+nios2_function_ok_for_sibcall (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
-+{
-+  return true;
-+}
-+
-+
-+
-+
-+
-+/* ----------------------- *
-+ * Profiling
-+ * ----------------------- */
-+
-+void
-+function_profiler (FILE *file, int labelno)
-+{
-+  fprintf (file, "\t%s mcount begin, label: .LP%d\n", 
-+           ASM_COMMENT_START, labelno);
-+  fprintf (file, "\tnextpc\tr8\n");
-+  fprintf (file, "\tmov\tr9, ra\n");
-+  fprintf (file, "\tmovhi\tr10, %%hiadj(.LP%d)\n", labelno);
-+  fprintf (file, "\taddi\tr10, r10, %%lo(.LP%d)\n", labelno);
-+  fprintf (file, "\tcall\tmcount\n");
-+  fprintf (file, "\tmov\tra, r9\n");
-+  fprintf (file, "\t%s mcount end\n", ASM_COMMENT_START);
-+}
-+
-+
-+/***************************************
-+ * Stack Layout
-+ ***************************************/
-+
-+
-+void
-+dump_frame_size (FILE *file)
-+{
-+  fprintf (file, "\t%s Current Frame Info\n", ASM_COMMENT_START);
-+
-+  fprintf (file, "\t%s total_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.total_size);
-+  fprintf (file, "\t%s var_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.var_size);
-+  fprintf (file, "\t%s args_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.args_size);
-+  fprintf (file, "\t%s save_reg_size = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_reg_size);
-+  fprintf (file, "\t%s save_reg_rounded = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_reg_rounded);
-+  fprintf (file, "\t%s initialized = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.initialized);
-+  fprintf (file, "\t%s num_regs = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.num_regs);
-+  fprintf (file, "\t%s save_regs_offset = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_regs_offset);
-+  fprintf (file, "\t%s current_function_is_leaf = %d\n", ASM_COMMENT_START,
-+	   current_function_is_leaf);
-+  fprintf (file, "\t%s frame_pointer_needed = %d\n", ASM_COMMENT_START,
-+	   frame_pointer_needed);
-+  fprintf (file, "\t%s pretend_args_size = %d\n", ASM_COMMENT_START,
-+	   current_function_pretend_args_size);
-+
-+}
-+
-+
-+/* Return the bytes needed to compute the frame pointer from the current
-+   stack pointer.
-+*/
-+
-+HOST_WIDE_INT
-+compute_frame_size ()
-+{
-+  unsigned int regno;
-+  HOST_WIDE_INT var_size;	/* # of var. bytes allocated */
-+  HOST_WIDE_INT total_size;	/* # bytes that the entire frame takes up */
-+  HOST_WIDE_INT save_reg_size;	/* # bytes needed to store callee save regs */
-+  HOST_WIDE_INT save_reg_rounded;	
-+    /* # bytes needed to store callee save regs (rounded) */
-+  HOST_WIDE_INT out_args_size;	/* # bytes needed for outgoing args */
-+
-+  save_reg_size = 0;
-+  var_size = STACK_ALIGN (get_frame_size ());
-+  out_args_size = STACK_ALIGN (current_function_outgoing_args_size);
-+
-+  total_size = var_size + out_args_size;
-+
-+  /* Calculate space needed for gp registers.  */
-+  for (regno = 0; regno <= FIRST_PSEUDO_REGISTER; regno++)
-+    {
-+      if (MUST_SAVE_REGISTER (regno))
-+	{
-+	  save_reg_size += 4;
-+	}
-+    }
-+
-+  save_reg_rounded = STACK_ALIGN (save_reg_size);
-+  total_size += save_reg_rounded;
-+
-+  total_size += STACK_ALIGN (current_function_pretend_args_size);
-+
-+  /* Save other computed information.  */
-+  cfun->machine->frame.total_size = total_size;
-+  cfun->machine->frame.var_size = var_size;
-+  cfun->machine->frame.args_size = current_function_outgoing_args_size;
-+  cfun->machine->frame.save_reg_size = save_reg_size;
-+  cfun->machine->frame.save_reg_rounded = save_reg_rounded;
-+  cfun->machine->frame.initialized = reload_completed;
-+  cfun->machine->frame.num_regs = save_reg_size / UNITS_PER_WORD;
-+
-+  cfun->machine->frame.save_regs_offset
-+    = save_reg_rounded ? current_function_outgoing_args_size + var_size : 0;
-+
-+  return total_size;
-+}
-+
-+
-+int
-+nios2_initial_elimination_offset (int from, int to ATTRIBUTE_UNUSED)
-+{
-+  int offset;
-+
-+  /* Set OFFSET to the offset from the stack pointer.  */
-+  switch (from)
-+    {
-+    case FRAME_POINTER_REGNUM:
-+      offset = 0;
-+      break;
-+
-+    case ARG_POINTER_REGNUM:
-+      compute_frame_size ();
-+      offset = cfun->machine->frame.total_size;
-+      offset -= current_function_pretend_args_size;
-+      break;
-+
-+    case RETURN_ADDRESS_POINTER_REGNUM:
-+      compute_frame_size ();
-+      /* since the return address is always the first of the
-+         saved registers, return the offset to the beginning
-+         of the saved registers block */
-+      offset = cfun->machine->frame.save_regs_offset;
-+      break;
-+
-+    default:
-+      abort ();
-+    }
-+
-+  return offset;
-+}
-+
-+/* Return nonzero if this function is known to have a null epilogue.
-+   This allows the optimizer to omit jumps to jumps if no stack
-+   was created.  */
-+int
-+nios2_can_use_return_insn ()
-+{
-+  if (!reload_completed)
-+    return 0;
-+
-+  if (regs_ever_live[RA_REGNO] || current_function_profile)
-+    return 0;
-+
-+  if (cfun->machine->frame.initialized)
-+    return cfun->machine->frame.total_size == 0;
-+
-+  return compute_frame_size () == 0;
-+}
-+
-+
-+
-+
-+
-+/***************************************
-+ *
-+ ***************************************/
-+
-+const char *nios2_sys_nosys_string;    /* for -msys=nosys */
-+const char *nios2_sys_lib_string;    /* for -msys-lib= */
-+const char *nios2_sys_crt0_string;    /* for -msys-crt0= */
-+
-+void
-+override_options ()
-+{
-+  /* Function to allocate machine-dependent function status.  */
-+  init_machine_status = &nios2_init_machine_status;
-+
-+  nios2_section_threshold 
-+    = g_switch_set ? g_switch_value : NIOS2_DEFAULT_GVALUE;
-+
-+  if (nios2_sys_nosys_string && *nios2_sys_nosys_string)
-+    {
-+      error ("invalid option '-msys=nosys%s'", nios2_sys_nosys_string);
-+    }
-+
-+  /* If we don't have mul, we don't have mulx either! */
-+  if (!TARGET_HAS_MUL && TARGET_HAS_MULX) 
-+    {
-+      target_flags &= ~HAS_MULX_FLAG;
-+    }
-+
-+}
-+
-+void
-+optimization_options (int level, int size)
-+{
-+  if (level || size)
-+    {
-+      target_flags |= INLINE_MEMCPY_FLAG;
-+    }
-+
-+  if (level >= 3 && !size)
-+    {
-+      target_flags |= FAST_SW_DIV_FLAG;
-+    }
-+}
-+
-+/* Allocate a chunk of memory for per-function machine-dependent data.  */
-+static struct machine_function *
-+nios2_init_machine_status ()
-+{
-+  return ((struct machine_function *)
-+	  ggc_alloc_cleared (sizeof (struct machine_function)));
-+}
-+
-+
-+
-+/*****************
-+ * Describing Relative Costs of Operations
-+ *****************/
-+
-+/* Compute a (partial) cost for rtx X.  Return true if the complete
-+   cost has been computed, and false if subexpressions should be
-+   scanned.  In either case, *TOTAL contains the cost result.  */
-+
-+
-+
-+static bool
-+nios2_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, int *total)
-+{
-+  switch (code)
-+    {
-+      case CONST_INT:
-+	if (INTVAL (x) == 0)
-+	  {
-+	    *total = COSTS_N_INSNS (0);
-+	    return true;
-+	  }
-+	else if (SMALL_INT (INTVAL (x))
-+		|| SMALL_INT_UNSIGNED (INTVAL (x))
-+		|| UPPER16_INT (INTVAL (x)))
-+	  {
-+	    *total = COSTS_N_INSNS (2);
-+	    return true;
-+	  }
-+	else
-+	  {
-+	    *total = COSTS_N_INSNS (4);
-+	    return true;
-+	  }
-+
-+      case LABEL_REF:
-+      case SYMBOL_REF:
-+	/* ??? gp relative stuff will fit in here */
-+	/* fall through */
-+      case CONST:
-+      case CONST_DOUBLE:
-+	{
-+	  *total = COSTS_N_INSNS (4);
-+	  return true;
-+	}
-+
-+      case MULT:
-+	{
-+	  *total = COSTS_N_INSNS (1);
-+	  return false;
-+	}
-+      case SIGN_EXTEND:
-+	{
-+	  *total = COSTS_N_INSNS (3);
-+	  return false;
-+	}
-+      case ZERO_EXTEND:
-+	{
-+	  *total = COSTS_N_INSNS (1);
-+	  return false;
-+	}
-+
-+    default:
-+      return false;
-+    }
-+}
-+
-+
-+/***************************************
-+ * INSTRUCTION SUPPORT
-+ *
-+ * These functions are used within the Machine Description to
-+ * handle common or complicated output and expansions from
-+ * instructions.
-+ ***************************************/
-+
-+int
-+nios2_emit_move_sequence (rtx *operands, enum machine_mode mode)
-+{
-+  rtx to = operands[0];
-+  rtx from = operands[1];
-+
-+  if (!register_operand (to, mode) && !reg_or_0_operand (from, mode))
-+    {
-+      if (no_new_pseudos)
-+	internal_error ("Trying to force_reg no_new_pseudos == 1");
-+      from = copy_to_mode_reg (mode, from);
-+    }
-+
-+  operands[0] = to;
-+  operands[1] = from;
-+  return 0;
-+}
-+
-+/* Divide Support */
-+
-+/*
-+  If -O3 is used, we want to output a table lookup for
-+  divides between small numbers (both num and den >= 0
-+  and < 0x10). The overhead of this method in the worse
-+  case is 40 bytes in the text section (10 insns) and
-+  256 bytes in the data section. Additional divides do
-+  not incur additional penalties in the data section.
-+
-+  Code speed is improved for small divides by about 5x
-+  when using this method in the worse case (~9 cycles
-+  vs ~45). And in the worse case divides not within the
-+  table are penalized by about 10% (~5 cycles vs ~45).
-+  However in the typical case the penalty is not as bad
-+  because doing the long divide in only 45 cycles is
-+  quite optimistic.
-+
-+  ??? It would be nice to have some benchmarks other
-+  than Dhrystone to back this up.
-+
-+  This bit of expansion is to create this instruction
-+  sequence as rtl.
-+	or	$8, $4, $5
-+	slli	$9, $4, 4
-+	cmpgeui	$3, $8, 16
-+	beq	$3, $0, .L3
-+	or	$10, $9, $5
-+	add	$12, $11, divide_table
-+	ldbu	$2, 0($12)
-+	br	.L1
-+.L3:
-+	call	slow_div
-+.L1:
-+#	continue here with result in $2
-+
-+  ??? Ideally I would like the emit libcall block to contain
-+  all of this code, but I don't know how to do that. What it
-+  means is that if the divide can be eliminated, it may not
-+  completely disappear.
-+
-+  ??? The __divsi3_table label should ideally be moved out
-+  of this block and into a global. If it is placed into the
-+  sdata section we can save even more cycles by doing things
-+  gp relative.
-+*/
-+int
-+nios2_emit_expensive_div (rtx *operands, enum machine_mode mode)
-+{
-+  rtx or_result, shift_left_result;
-+  rtx lookup_value;
-+  rtx lab1, lab3;
-+  rtx insns;
-+  rtx libfunc;
-+  rtx final_result;
-+  rtx tmp;
-+
-+  /* it may look a little generic, but only SImode
-+     is supported for now */
-+  if (mode != SImode)
-+    abort ();
-+
-+  libfunc = sdiv_optab->handlers[(int) SImode].libfunc;
-+
-+
-+
-+  lab1 = gen_label_rtx ();
-+  lab3 = gen_label_rtx ();
-+
-+  or_result = expand_simple_binop (SImode, IOR,
-+				   operands[1], operands[2],
-+				   0, 0, OPTAB_LIB_WIDEN);
-+
-+  emit_cmp_and_jump_insns (or_result, GEN_INT (15), GTU, 0,
-+			   GET_MODE (or_result), 0, lab3);
-+  JUMP_LABEL (get_last_insn ()) = lab3;
-+
-+  shift_left_result = expand_simple_binop (SImode, ASHIFT,
-+					   operands[1], GEN_INT (4),
-+					   0, 0, OPTAB_LIB_WIDEN);
-+
-+  lookup_value = expand_simple_binop (SImode, IOR,
-+				      shift_left_result, operands[2],
-+				      0, 0, OPTAB_LIB_WIDEN);
-+
-+  convert_move (operands[0],
-+		gen_rtx (MEM, QImode,
-+			 gen_rtx (PLUS, SImode,
-+				  lookup_value,
-+				  gen_rtx_SYMBOL_REF (SImode, "__divsi3_table"))),
-+		1);
-+
-+
-+  tmp = emit_jump_insn (gen_jump (lab1));
-+  JUMP_LABEL (tmp) = lab1;
-+  emit_barrier ();
-+
-+  emit_label (lab3);
-+  LABEL_NUSES (lab3) = 1;
-+
-+  start_sequence ();
-+  final_result = emit_library_call_value (libfunc, NULL_RTX,
-+					  LCT_CONST, SImode, 2,
-+					  operands[1], SImode,
-+					  operands[2], SImode);
-+
-+
-+  insns = get_insns ();
-+  end_sequence ();
-+  emit_libcall_block (insns, operands[0], final_result,
-+		      gen_rtx (DIV, SImode, operands[1], operands[2]));
-+
-+  emit_label (lab1);
-+  LABEL_NUSES (lab1) = 1;
-+  return 1;
-+}
-+
-+/* Branches/Compares */
-+
-+/* the way of handling branches/compares
-+   in gcc is heavily borrowed from MIPS */
-+
-+enum internal_test
-+{
-+  ITEST_EQ,
-+  ITEST_NE,
-+  ITEST_GT,
-+  ITEST_GE,
-+  ITEST_LT,
-+  ITEST_LE,
-+  ITEST_GTU,
-+  ITEST_GEU,
-+  ITEST_LTU,
-+  ITEST_LEU,
-+  ITEST_MAX
-+};
-+
-+static enum internal_test map_test_to_internal_test (enum rtx_code);
-+
-+/* Cached operands, and operator to compare for use in set/branch/trap
-+   on condition codes.  */
-+rtx branch_cmp[2];
-+enum cmp_type branch_type;
-+
-+/* Make normal rtx_code into something we can index from an array */
-+
-+static enum internal_test
-+map_test_to_internal_test (enum rtx_code test_code)
-+{
-+  enum internal_test test = ITEST_MAX;
-+
-+  switch (test_code)
-+    {
-+    case EQ:
-+      test = ITEST_EQ;
-+      break;
-+    case NE:
-+      test = ITEST_NE;
-+      break;
-+    case GT:
-+      test = ITEST_GT;
-+      break;
-+    case GE:
-+      test = ITEST_GE;
-+      break;
-+    case LT:
-+      test = ITEST_LT;
-+      break;
-+    case LE:
-+      test = ITEST_LE;
-+      break;
-+    case GTU:
-+      test = ITEST_GTU;
-+      break;
-+    case GEU:
-+      test = ITEST_GEU;
-+      break;
-+    case LTU:
-+      test = ITEST_LTU;
-+      break;
-+    case LEU:
-+      test = ITEST_LEU;
-+      break;
-+    default:
-+      break;
-+    }
-+
-+  return test;
-+}
-+
-+/* Generate the code to compare (and possibly branch) two integer values
-+   TEST_CODE is the comparison code we are trying to emulate 
-+     (or implement directly)
-+   RESULT is where to store the result of the comparison, 
-+     or null to emit a branch
-+   CMP0 CMP1 are the two comparison operands
-+   DESTINATION is the destination of the branch, or null to only compare
-+   */
-+
-+void
-+gen_int_relational (enum rtx_code test_code, /* relational test (EQ, etc) */
-+		    rtx result,		/* result to store comp. or 0 if branch */
-+		    rtx cmp0,		/* first operand to compare */
-+		    rtx cmp1,		/* second operand to compare */
-+		    rtx destination)	/* destination of the branch, or 0 if compare */
-+{
-+  struct cmp_info
-+  {
-+    /* for register (or 0) compares */
-+    enum rtx_code test_code_reg;	/* code to use in instruction (LT vs. LTU) */
-+    int reverse_regs;		/* reverse registers in test */
-+
-+    /* for immediate compares */
-+    enum rtx_code test_code_const;	
-+         /* code to use in instruction (LT vs. LTU) */
-+    int const_low;		/* low bound of constant we can accept */
-+    int const_high;		/* high bound of constant we can accept */
-+    int const_add;		/* constant to add */
-+
-+    /* generic info */
-+    int unsignedp;		/* != 0 for unsigned comparisons.  */
-+  };
-+
-+  static const struct cmp_info info[(int) ITEST_MAX] = {
-+
-+    {EQ, 0, EQ, -32768, 32767, 0, 0}, /* EQ  */
-+    {NE, 0, NE, -32768, 32767, 0, 0}, /* NE  */
-+
-+    {LT, 1, GE, -32769, 32766, 1, 0}, /* GT  */
-+    {GE, 0, GE, -32768, 32767, 0, 0}, /* GE  */
-+    {LT, 0, LT, -32768, 32767, 0, 0}, /* LT  */
-+    {GE, 1, LT, -32769, 32766, 1, 0}, /* LE  */
-+
-+    {LTU, 1, GEU, 0, 65534, 1, 0}, /* GTU */
-+    {GEU, 0, GEU, 0, 65535, 0, 0}, /* GEU */
-+    {LTU, 0, LTU, 0, 65535, 0, 0}, /* LTU */
-+    {GEU, 1, LTU, 0, 65534, 1, 0}, /* LEU */
-+  };
-+
-+  enum internal_test test;
-+  enum machine_mode mode;
-+  const struct cmp_info *p_info;
-+  int branch_p;
-+
-+
-+
-+
-+  test = map_test_to_internal_test (test_code);
-+  if (test == ITEST_MAX)
-+    abort ();
-+
-+  p_info = &info[(int) test];
-+
-+  mode = GET_MODE (cmp0);
-+  if (mode == VOIDmode)
-+    mode = GET_MODE (cmp1);
-+
-+  branch_p = (destination != 0);
-+
-+  /* We can't, under any circumstances, have const_ints in cmp0
-+     ??? Actually we could have const0 */
-+  if (GET_CODE (cmp0) == CONST_INT)
-+    cmp0 = force_reg (mode, cmp0);
-+
-+  /* if the comparison is against an int not in legal range
-+     move it into a register */
-+  if (GET_CODE (cmp1) == CONST_INT)
-+    {
-+      HOST_WIDE_INT value = INTVAL (cmp1);
-+
-+      if (value < p_info->const_low || value > p_info->const_high)
-+	cmp1 = force_reg (mode, cmp1);
-+    }
-+
-+  /* Comparison to constants, may involve adding 1 to change a GT into GE.
-+     Comparison between two registers, may involve switching operands.  */
-+  if (GET_CODE (cmp1) == CONST_INT)
-+    {
-+      if (p_info->const_add != 0)
-+	{
-+	  HOST_WIDE_INT new = INTVAL (cmp1) + p_info->const_add;
-+
-+	  /* If modification of cmp1 caused overflow,
-+	     we would get the wrong answer if we follow the usual path;
-+	     thus, x > 0xffffffffU would turn into x > 0U.  */
-+	  if ((p_info->unsignedp
-+	       ? (unsigned HOST_WIDE_INT) new >
-+	       (unsigned HOST_WIDE_INT) INTVAL (cmp1)
-+	       : new > INTVAL (cmp1)) != (p_info->const_add > 0))
-+	    {
-+	      /* ??? This case can never happen with the current numbers,
-+	         but I am paranoid and would rather an abort than
-+	         a bug I will never find */
-+	      abort ();
-+	    }
-+	  else
-+	    cmp1 = GEN_INT (new);
-+	}
-+    }
-+
-+  else if (p_info->reverse_regs)
-+    {
-+      rtx temp = cmp0;
-+      cmp0 = cmp1;
-+      cmp1 = temp;
-+    }
-+
-+
-+
-+  if (branch_p)
-+    {
-+      if (register_operand (cmp0, mode) && register_operand (cmp1, mode))
-+	{
-+	  rtx insn;
-+	  rtx cond = gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1);
-+	  rtx label = gen_rtx_LABEL_REF (VOIDmode, destination);
-+
-+	  insn = gen_rtx_SET (VOIDmode, pc_rtx,
-+			      gen_rtx_IF_THEN_ELSE (VOIDmode,
-+						    cond, label, pc_rtx));
-+	  emit_jump_insn (insn);
-+	}
-+      else
-+	{
-+	  rtx cond, label;
-+
-+	  result = gen_reg_rtx (mode);
-+
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_const, mode, cmp0,
-+				   cmp1));
-+
-+	  cond = gen_rtx (NE, mode, result, const0_rtx);
-+	  label = gen_rtx_LABEL_REF (VOIDmode, destination);
-+
-+	  emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx,
-+				       gen_rtx_IF_THEN_ELSE (VOIDmode,
-+							     cond,
-+							     label, pc_rtx)));
-+	}
-+    }
-+  else
-+    {
-+      if (register_operand (cmp0, mode) && register_operand (cmp1, mode))
-+	{
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1));
-+	}
-+      else
-+	{
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_const, mode, cmp0,
-+				   cmp1));
-+	}
-+    }
-+
-+}
-+
-+
-+/* ??? For now conditional moves are only supported
-+   when the mode of the operands being compared are
-+   the same as the ones being moved */
-+
-+void
-+gen_conditional_move (rtx *operands, enum machine_mode mode)
-+{
-+  rtx insn, cond;
-+  rtx cmp_reg = gen_reg_rtx (mode);
-+  enum rtx_code cmp_code = GET_CODE (operands[1]);
-+  enum rtx_code move_code = EQ;
-+
-+  /* emit a comparison if it is not "simple".
-+     Simple comparisons are X eq 0 and X ne 0 */
-+  if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[1] == const0_rtx)
-+    {
-+      cmp_reg = branch_cmp[0];
-+      move_code = cmp_code;
-+    }
-+  else if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[0] == const0_rtx)
-+    {
-+      cmp_reg = branch_cmp[1];
-+      move_code = cmp_code == EQ ? NE : EQ;
-+    }
-+  else
-+    gen_int_relational (cmp_code, cmp_reg, branch_cmp[0], branch_cmp[1],
-+			NULL_RTX);
-+
-+  cond = gen_rtx (move_code, VOIDmode, cmp_reg, CONST0_RTX (mode));
-+  insn = gen_rtx_SET (mode, operands[0],
-+		      gen_rtx_IF_THEN_ELSE (mode,
-+					    cond, operands[2], operands[3]));
-+  emit_insn (insn);
-+}
-+
-+/*******************
-+ * Addressing Modes
-+ *******************/
-+
-+int
-+nios2_legitimate_address (rtx operand, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                          int strict)
-+{
-+  int ret_val = 0;
-+
-+  switch (GET_CODE (operand))
-+    {
-+      /* direct.  */
-+    case SYMBOL_REF:
-+      if (SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (operand))
-+        {
-+          ret_val = 1;
-+          break;
-+	}
-+      /* else, fall through */
-+    case LABEL_REF:
-+    case CONST_INT:
-+    case CONST:
-+    case CONST_DOUBLE:
-+      /* ??? In here I need to add gp addressing */
-+      ret_val = 0;
-+
-+      break;
-+
-+      /* Register indirect.  */
-+    case REG:
-+      ret_val = REG_OK_FOR_BASE_P2 (operand, strict);
-+      break;
-+
-+      /* Register indirect with displacement */
-+    case PLUS:
-+      {
-+	rtx op0 = XEXP (operand, 0);
-+	rtx op1 = XEXP (operand, 1);
-+
-+	if (REG_P (op0) && REG_P (op1))
-+	  ret_val = 0;
-+	else if (REG_P (op0) && CONSTANT_P (op1))
-+	  ret_val = REG_OK_FOR_BASE_P2 (op0, strict)
-+	    && SMALL_INT (INTVAL (op1));
-+	else if (REG_P (op1) && CONSTANT_P (op0))
-+	  ret_val = REG_OK_FOR_BASE_P2 (op1, strict)
-+	    && SMALL_INT (INTVAL (op0));
-+	else
-+	  ret_val = 0;
-+      }
-+      break;
-+
-+    default:
-+      ret_val = 0;
-+      break;
-+    }
-+
-+  return ret_val;
-+}
-+
-+/* Return true if EXP should be placed in the small data section.  */
-+
-+static bool
-+nios2_in_small_data_p (tree exp)
-+{
-+  /* We want to merge strings, so we never consider them small data.  */
-+  if (TREE_CODE (exp) == STRING_CST)
-+    return false;
-+
-+  if (TREE_CODE (exp) == VAR_DECL && DECL_SECTION_NAME (exp))
-+    {
-+      const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (exp));
-+      /* ??? these string names need moving into 
-+         an array in some header file */
-+      if (nios2_section_threshold > 0
-+          && (strcmp (section, ".sbss") == 0
-+	      || strncmp (section, ".sbss.", 6) == 0
-+	      || strcmp (section, ".sdata") == 0
-+	      || strncmp (section, ".sdata.", 7) == 0))
-+	return true;
-+    }
-+  else if (TREE_CODE (exp) == VAR_DECL)
-+    {
-+      HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
-+
-+      /* If this is an incomplete type with size 0, then we can't put it
-+         in sdata because it might be too big when completed.  */
-+      if (size > 0 && size <= nios2_section_threshold)
-+	return true;
-+    }
-+
-+  return false;
-+}
-+
-+static void
-+nios2_encode_section_info (tree decl, rtx rtl, int first)
-+{
-+
-+  rtx symbol;
-+  int flags;
-+
-+  default_encode_section_info (decl, rtl, first);
-+  
-+  /* Careful not to prod global register variables.  */
-+  if (GET_CODE (rtl) != MEM)
-+    return;
-+  symbol = XEXP (rtl, 0);
-+  if (GET_CODE (symbol) != SYMBOL_REF)
-+    return;
-+
-+  flags = SYMBOL_REF_FLAGS (symbol);
-+    
-+  /* We don't want weak variables to be addressed with gp in case they end up with
-+     value 0 which is not within 2^15 of $gp */
-+  if (DECL_P (decl) && DECL_WEAK (decl))
-+    flags |= SYMBOL_FLAG_WEAK_DECL;
-+
-+  SYMBOL_REF_FLAGS (symbol) = flags;
-+}
-+
-+
-+static unsigned int
-+nios2_section_type_flags (tree decl, const char *name, int reloc)
-+{
-+  unsigned int flags;
-+
-+  flags = default_section_type_flags (decl, name, reloc);
-+
-+  /* ??? these string names need moving into an array in some header file */
-+  if (strcmp (name, ".sbss") == 0
-+      || strncmp (name, ".sbss.", 6) == 0
-+      || strcmp (name, ".sdata") == 0
-+      || strncmp (name, ".sdata.", 7) == 0)
-+    flags |= SECTION_SMALL;
-+
-+  return flags;
-+}
-+
-+
-+
-+
-+/*****************************************
-+ * Defining the Output Assembler Language
-+ *****************************************/
-+
-+/* -------------- *
-+ * Output of Data
-+ * -------------- */
-+
-+
-+/* -------------------------------- *
-+ * Output of Assembler Instructions
-+ * -------------------------------- */
-+
-+
-+/* print the operand OP to file stream
-+   FILE modified by LETTER. LETTER
-+   can be one of:
-+     i: print "i" if OP is an immediate, except 0
-+     o: print "io" if OP is volatile
-+
-+     z: for const0_rtx print $0 instead of 0
-+     H: for %hiadj
-+     L: for %lo
-+     U: for upper half of 32 bit value
-+ */
-+
-+void
-+nios2_print_operand (FILE *file, rtx op, int letter)
-+{
-+
-+  switch (letter)
-+    {
-+    case 'i':
-+      if (CONSTANT_P (op) && (op != const0_rtx))
-+	fprintf (file, "i");
-+      return;
-+
-+    case 'o':
-+      if (GET_CODE (op) == MEM
-+          && ((MEM_VOLATILE_P (op) && !TARGET_CACHE_VOLATILE)
-+              || TARGET_BYPASS_CACHE))
-+	fprintf (file, "io");
-+      return;
-+
-+    default:
-+      break;
-+    }
-+
-+  if (comparison_operator (op, VOIDmode))
-+    {
-+      if (letter == 0)
-+	{
-+	  fprintf (file, "%s", GET_RTX_NAME (GET_CODE (op)));
-+	  return;
-+	}
-+    }
-+
-+
-+  switch (GET_CODE (op))
-+    {
-+    case REG:
-+      if (letter == 0 || letter == 'z')
-+	{
-+	  fprintf (file, "%s", reg_names[REGNO (op)]);
-+	  return;
-+	}
-+
-+    case CONST_INT:
-+      if (INTVAL (op) == 0 && letter == 'z')
-+	{
-+	  fprintf (file, "zero");
-+	  return;
-+	}
-+      else if (letter == 'U')
-+	{
-+	  HOST_WIDE_INT val = INTVAL (op);
-+	  rtx new_op;
-+	  val = (val / 65536) & 0xFFFF;
-+	  new_op = GEN_INT (val);
-+	  output_addr_const (file, new_op);
-+	  return;
-+	}
-+
-+      /* else, fall through */
-+    case CONST:
-+    case LABEL_REF:
-+    case SYMBOL_REF:
-+    case CONST_DOUBLE:
-+      if (letter == 0 || letter == 'z')
-+	{
-+	  output_addr_const (file, op);
-+	  return;
-+	}
-+      else if (letter == 'H')
-+	{
-+	  fprintf (file, "%%hiadj(");
-+	  output_addr_const (file, op);
-+	  fprintf (file, ")");
-+	  return;
-+	}
-+      else if (letter == 'L')
-+	{
-+	  fprintf (file, "%%lo(");
-+	  output_addr_const (file, op);
-+	  fprintf (file, ")");
-+	  return;
-+	}
-+
-+
-+    case SUBREG:
-+    case MEM:
-+      if (letter == 0)
-+	{
-+	  output_address (op);
-+	  return;
-+	}
-+
-+    case CODE_LABEL:
-+      if (letter == 0)
-+	{
-+	  output_addr_const (file, op);
-+	  return;
-+	}
-+
-+    default:
-+      break;
-+    }
-+
-+  fprintf (stderr, "Missing way to print (%c) ", letter);
-+  debug_rtx (op);
-+  abort ();
-+}
-+
-+static int gprel_constant (rtx);
-+
-+static int
-+gprel_constant (rtx op)
-+{
-+  if (GET_CODE (op) == SYMBOL_REF
-+      && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (op))
-+    {
-+      return 1;
-+    }
-+  else if (GET_CODE (op) == CONST
-+           && GET_CODE (XEXP (op, 0)) == PLUS)
-+    {
-+      return gprel_constant (XEXP (XEXP (op, 0), 0));
-+    }
-+  else
-+    {
-+      return 0;
-+    }
-+}
-+
-+void
-+nios2_print_operand_address (FILE *file, rtx op)
-+{
-+  switch (GET_CODE (op))
-+    {
-+    case CONST:
-+    case CONST_INT:
-+    case LABEL_REF:
-+    case CONST_DOUBLE:
-+    case SYMBOL_REF:
-+      if (gprel_constant (op))
-+        {
-+          fprintf (file, "%%gprel(");
-+          output_addr_const (file, op);
-+          fprintf (file, ")(%s)", reg_names[GP_REGNO]);
-+          return;
-+        }
-+
-+      break;
-+
-+    case PLUS:
-+      {
-+	rtx op0 = XEXP (op, 0);
-+	rtx op1 = XEXP (op, 1);
-+
-+	if (REG_P (op0) && CONSTANT_P (op1))
-+	  {
-+	    output_addr_const (file, op1);
-+	    fprintf (file, "(%s)", reg_names[REGNO (op0)]);
-+	    return;
-+	  }
-+	else if (REG_P (op1) && CONSTANT_P (op0))
-+	  {
-+	    output_addr_const (file, op0);
-+	    fprintf (file, "(%s)", reg_names[REGNO (op1)]);
-+	    return;
-+	  }
-+      }
-+      break;
-+
-+    case REG:
-+      fprintf (file, "0(%s)", reg_names[REGNO (op)]);
-+      return;
-+
-+    case MEM:
-+      {
-+	rtx base = XEXP (op, 0);
-+	PRINT_OPERAND_ADDRESS (file, base);
-+	return;
-+      }
-+    default:
-+      break;
-+    }
-+
-+  fprintf (stderr, "Missing way to print address\n");
-+  debug_rtx (op);
-+  abort ();
-+}
-+
-+
-+
-+
-+
-+/****************************
-+ * Predicates
-+ ****************************/
-+
-+int
-+arith_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SMALL_INT (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+uns_arith_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SMALL_INT_UNSIGNED (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+logical_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT
-+      && (SMALL_INT_UNSIGNED (INTVAL (op)) || UPPER16_INT (INTVAL (op))))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+shift_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SHIFT_INT (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+rdwrctl_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-+{
-+  return GET_CODE (op) == CONST_INT && RDWRCTL_INT (INTVAL (op));
-+}
-+
-+/* Return truth value of whether OP is a register or the constant 0. */
-+
-+int
-+reg_or_0_operand (rtx op, enum machine_mode mode)
-+{
-+  switch (GET_CODE (op))
-+    {
-+    case CONST_INT:
-+      return INTVAL (op) == 0;
-+
-+    case CONST_DOUBLE:
-+      return op == CONST0_RTX (mode);
-+
-+    default:
-+      break;
-+    }
-+
-+  return register_operand (op, mode);
-+}
-+
-+
-+int
-+equality_op (rtx op, enum machine_mode mode)
-+{
-+  if (mode != GET_MODE (op))
-+    return 0;
-+
-+  return GET_CODE (op) == EQ || GET_CODE (op) == NE;
-+}
-+
-+int
-+custom_insn_opcode (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-+{
-+  return GET_CODE (op) == CONST_INT && CUSTOM_INSN_OPCODE (INTVAL (op));
-+}
-+
-+
-+
-+
-+
-+
-+
-+/*****************************************************************************
-+**
-+** instruction scheduler
-+**
-+*****************************************************************************/
-+static int
-+nios2_use_dfa_pipeline_interface ()
-+{
-+  return 1;
-+}
-+
-+
-+static int
-+nios2_issue_rate ()
-+{
-+#ifdef MAX_DFA_ISSUE_RATE
-+  return MAX_DFA_ISSUE_RATE;
-+#else
-+  return 1;
-+#endif
-+}
-+
-+
-+const char *
-+asm_output_opcode (FILE *file ATTRIBUTE_UNUSED, 
-+                   const char *ptr ATTRIBUTE_UNUSED)
-+{
-+  const char *p;
-+
-+  p = ptr;
-+  return ptr;
-+}
-+
-+
-+
-+/*****************************************************************************
-+**
-+** function arguments
-+**
-+*****************************************************************************/
-+
-+void
-+init_cumulative_args (CUMULATIVE_ARGS *cum, 
-+                      tree fntype ATTRIBUTE_UNUSED, 
-+                      rtx libname ATTRIBUTE_UNUSED, 
-+                      tree fndecl ATTRIBUTE_UNUSED, 
-+                      int n_named_args ATTRIBUTE_UNUSED)
-+{
-+  cum->regs_used = 0;
-+}
-+
-+
-+/* Update the data in CUM to advance over an argument
-+   of mode MODE and data type TYPE.
-+   (TYPE is null for libcalls where that information may not be available.)  */
-+
-+void
-+function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode, 
-+                      tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED)
-+{
-+  HOST_WIDE_INT param_size;
-+
-+  if (mode == BLKmode)
-+    {
-+      param_size = int_size_in_bytes (type);
-+      if (param_size < 0)
-+	internal_error
-+	  ("Do not know how to handle large structs or variable length types");
-+    }
-+  else
-+    {
-+      param_size = GET_MODE_SIZE (mode);
-+    }
-+
-+  /* convert to words (round up) */
-+  param_size = (3 + param_size) / 4;
-+
-+  if (cum->regs_used + param_size > NUM_ARG_REGS)
-+    {
-+      cum->regs_used = NUM_ARG_REGS;
-+    }
-+  else
-+    {
-+      cum->regs_used += param_size;
-+    }
-+
-+  return;
-+}
-+
-+/* Define where to put the arguments to a function.  Value is zero to
-+   push the argument on the stack, or a hard register in which to
-+   store the argument.
-+
-+   MODE is the argument's machine mode.
-+   TYPE is the data type of the argument (as a tree).
-+   This is null for libcalls where that information may
-+   not be available.
-+   CUM is a variable of type CUMULATIVE_ARGS which gives info about
-+   the preceding args and about the function being called.
-+   NAMED is nonzero if this argument is a named parameter
-+   (otherwise it is an extra parameter matching an ellipsis).  */
-+rtx
-+function_arg (const CUMULATIVE_ARGS *cum, enum machine_mode mode, 
-+              tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED)
-+{
-+  rtx return_rtx = NULL_RTX;
-+
-+  if (cum->regs_used < NUM_ARG_REGS)
-+    {
-+      return_rtx = gen_rtx_REG (mode, FIRST_ARG_REGNO + cum->regs_used);
-+    }
-+
-+  return return_rtx;
-+}
-+
-+int
-+function_arg_partial_nregs (const CUMULATIVE_ARGS *cum,
-+                            enum machine_mode mode, tree type, 
-+                            int named ATTRIBUTE_UNUSED)
-+{
-+  HOST_WIDE_INT param_size;
-+
-+  if (mode == BLKmode)
-+    {
-+      param_size = int_size_in_bytes (type);
-+      if (param_size < 0)
-+	internal_error
-+	  ("Do not know how to handle large structs or variable length types");
-+    }
-+  else
-+    {
-+      param_size = GET_MODE_SIZE (mode);
-+    }
-+
-+  /* convert to words (round up) */
-+  param_size = (3 + param_size) / 4;
-+
-+  if (cum->regs_used < NUM_ARG_REGS
-+      && cum->regs_used + param_size > NUM_ARG_REGS)
-+    {
-+      return NUM_ARG_REGS - cum->regs_used;
-+    }
-+  else
-+    {
-+      return 0;
-+    }
-+}
-+
-+
-+int
-+nios2_return_in_memory (tree type)
-+{
-+  int res = ((int_size_in_bytes (type) > (2 * UNITS_PER_WORD))
-+  	     || (int_size_in_bytes (type) == -1));
-+
-+  return res;
-+}
-+
-+/* ??? It may be possible to eliminate the copyback and implement
-+       my own va_arg type, but that is more work for now. */
-+int
-+nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *cum, 
-+                              enum machine_mode mode, tree type, 
-+                              int no_rtl)
-+{
-+  CUMULATIVE_ARGS local_cum;
-+  int regs_to_push;
-+
-+  local_cum = *cum;
-+  FUNCTION_ARG_ADVANCE (local_cum, mode, type, 1);
-+
-+  regs_to_push = NUM_ARG_REGS - local_cum.regs_used;
-+
-+  if (!no_rtl)
-+    {
-+      if (regs_to_push > 0)
-+	{
-+	  rtx ptr, mem;
-+
-+	  ptr = virtual_incoming_args_rtx;
-+	  mem = gen_rtx_MEM (BLKmode, ptr);
-+
-+	  /* va_arg is an array access in this case, which causes
-+	     it to get MEM_IN_STRUCT_P set.  We must set it here
-+	     so that the insn scheduler won't assume that these
-+	     stores can't possibly overlap with the va_arg loads.  */
-+	  MEM_SET_IN_STRUCT_P (mem, 1);
-+
-+	  emit_insn (gen_blockage ());
-+	  move_block_from_reg (local_cum.regs_used + FIRST_ARG_REGNO, mem,
-+			       regs_to_push);
-+	  emit_insn (gen_blockage ());
-+	}
-+    }
-+
-+  return regs_to_push * UNITS_PER_WORD;
-+
-+}
-+
-+
-+
-+/*****************************************************************************
-+**
-+** builtins
-+**
-+** This method for handling builtins is from CSP where _many_ more types of
-+** expanders have already been written. Check there first before writing
-+** new ones.
-+**
-+*****************************************************************************/
-+
-+enum nios2_builtins
-+{
-+  NIOS2_BUILTIN_LDBIO,
-+  NIOS2_BUILTIN_LDBUIO,
-+  NIOS2_BUILTIN_LDHIO,
-+  NIOS2_BUILTIN_LDHUIO,
-+  NIOS2_BUILTIN_LDWIO,
-+  NIOS2_BUILTIN_STBIO,
-+  NIOS2_BUILTIN_STHIO,
-+  NIOS2_BUILTIN_STWIO,
-+  NIOS2_BUILTIN_SYNC,
-+  NIOS2_BUILTIN_RDCTL,
-+  NIOS2_BUILTIN_WRCTL,
-+
-+  NIOS2_BUILTIN_CUSTOM_N,
-+  NIOS2_BUILTIN_CUSTOM_NI,
-+  NIOS2_BUILTIN_CUSTOM_NF,
-+  NIOS2_BUILTIN_CUSTOM_NP,
-+  NIOS2_BUILTIN_CUSTOM_NII,
-+  NIOS2_BUILTIN_CUSTOM_NIF,
-+  NIOS2_BUILTIN_CUSTOM_NIP,
-+  NIOS2_BUILTIN_CUSTOM_NFI,
-+  NIOS2_BUILTIN_CUSTOM_NFF,
-+  NIOS2_BUILTIN_CUSTOM_NFP,
-+  NIOS2_BUILTIN_CUSTOM_NPI,
-+  NIOS2_BUILTIN_CUSTOM_NPF,
-+  NIOS2_BUILTIN_CUSTOM_NPP,
-+  NIOS2_BUILTIN_CUSTOM_IN,
-+  NIOS2_BUILTIN_CUSTOM_INI,
-+  NIOS2_BUILTIN_CUSTOM_INF,
-+  NIOS2_BUILTIN_CUSTOM_INP,
-+  NIOS2_BUILTIN_CUSTOM_INII,
-+  NIOS2_BUILTIN_CUSTOM_INIF,
-+  NIOS2_BUILTIN_CUSTOM_INIP,
-+  NIOS2_BUILTIN_CUSTOM_INFI,
-+  NIOS2_BUILTIN_CUSTOM_INFF,
-+  NIOS2_BUILTIN_CUSTOM_INFP,
-+  NIOS2_BUILTIN_CUSTOM_INPI,
-+  NIOS2_BUILTIN_CUSTOM_INPF,
-+  NIOS2_BUILTIN_CUSTOM_INPP,
-+  NIOS2_BUILTIN_CUSTOM_FN,
-+  NIOS2_BUILTIN_CUSTOM_FNI,
-+  NIOS2_BUILTIN_CUSTOM_FNF,
-+  NIOS2_BUILTIN_CUSTOM_FNP,
-+  NIOS2_BUILTIN_CUSTOM_FNII,
-+  NIOS2_BUILTIN_CUSTOM_FNIF,
-+  NIOS2_BUILTIN_CUSTOM_FNIP,
-+  NIOS2_BUILTIN_CUSTOM_FNFI,
-+  NIOS2_BUILTIN_CUSTOM_FNFF,
-+  NIOS2_BUILTIN_CUSTOM_FNFP,
-+  NIOS2_BUILTIN_CUSTOM_FNPI,
-+  NIOS2_BUILTIN_CUSTOM_FNPF,
-+  NIOS2_BUILTIN_CUSTOM_FNPP,
-+  NIOS2_BUILTIN_CUSTOM_PN,
-+  NIOS2_BUILTIN_CUSTOM_PNI,
-+  NIOS2_BUILTIN_CUSTOM_PNF,
-+  NIOS2_BUILTIN_CUSTOM_PNP,
-+  NIOS2_BUILTIN_CUSTOM_PNII,
-+  NIOS2_BUILTIN_CUSTOM_PNIF,
-+  NIOS2_BUILTIN_CUSTOM_PNIP,
-+  NIOS2_BUILTIN_CUSTOM_PNFI,
-+  NIOS2_BUILTIN_CUSTOM_PNFF,
-+  NIOS2_BUILTIN_CUSTOM_PNFP,
-+  NIOS2_BUILTIN_CUSTOM_PNPI,
-+  NIOS2_BUILTIN_CUSTOM_PNPF,
-+  NIOS2_BUILTIN_CUSTOM_PNPP,
-+
-+
-+  LIM_NIOS2_BUILTINS
-+};
-+
-+struct builtin_description
-+{
-+    const enum insn_code icode;
-+    const char *const name;
-+    const enum nios2_builtins code;
-+    const tree *type;
-+    rtx (* expander) PARAMS ((const struct builtin_description *,
-+                              tree, rtx, rtx, enum machine_mode, int));
-+};
-+
-+static rtx nios2_expand_STXIO (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_LDXIO (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_sync (const struct builtin_description *, 
-+                              tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_rdctl (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_wrctl (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+
-+static rtx nios2_expand_custom_n (const struct builtin_description *, 
-+                                  tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_Xn (const struct builtin_description *, 
-+                                   tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_nX (const struct builtin_description *, 
-+                                   tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_XnX (const struct builtin_description *, 
-+                                    tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_nXX (const struct builtin_description *, 
-+                                    tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_XnXX (const struct builtin_description *, 
-+                                     tree, rtx, rtx, enum machine_mode, int);
-+
-+static tree endlink;
-+
-+/* int fn (volatile const void *)
-+ */
-+static tree int_ftype_volatile_const_void_p;
-+
-+/* int fn (int)
-+ */
-+static tree int_ftype_int;
-+
-+/* void fn (int, int)
-+ */
-+static tree void_ftype_int_int;
-+
-+/* void fn (volatile void *, int)
-+ */
-+static tree void_ftype_volatile_void_p_int;
-+
-+/* void fn (void)
-+ */
-+static tree void_ftype_void;
-+
-+static tree custom_n;
-+static tree custom_ni;
-+static tree custom_nf;
-+static tree custom_np;
-+static tree custom_nii;
-+static tree custom_nif;
-+static tree custom_nip;
-+static tree custom_nfi;
-+static tree custom_nff;
-+static tree custom_nfp;
-+static tree custom_npi;
-+static tree custom_npf;
-+static tree custom_npp;
-+static tree custom_in;
-+static tree custom_ini;
-+static tree custom_inf;
-+static tree custom_inp;
-+static tree custom_inii;
-+static tree custom_inif;
-+static tree custom_inip;
-+static tree custom_infi;
-+static tree custom_inff;
-+static tree custom_infp;
-+static tree custom_inpi;
-+static tree custom_inpf;
-+static tree custom_inpp;
-+static tree custom_fn;
-+static tree custom_fni;
-+static tree custom_fnf;
-+static tree custom_fnp;
-+static tree custom_fnii;
-+static tree custom_fnif;
-+static tree custom_fnip;
-+static tree custom_fnfi;
-+static tree custom_fnff;
-+static tree custom_fnfp;
-+static tree custom_fnpi;
-+static tree custom_fnpf;
-+static tree custom_fnpp;
-+static tree custom_pn;
-+static tree custom_pni;
-+static tree custom_pnf;
-+static tree custom_pnp;
-+static tree custom_pnii;
-+static tree custom_pnif;
-+static tree custom_pnip;
-+static tree custom_pnfi;
-+static tree custom_pnff;
-+static tree custom_pnfp;
-+static tree custom_pnpi;
-+static tree custom_pnpf;
-+static tree custom_pnpp;
-+
-+
-+static const struct builtin_description bdesc[] = {
-+    {CODE_FOR_ldbio, "__builtin_ldbio", NIOS2_BUILTIN_LDBIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldbuio, "__builtin_ldbuio", NIOS2_BUILTIN_LDBUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldhio, "__builtin_ldhio", NIOS2_BUILTIN_LDHIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldhuio, "__builtin_ldhuio", NIOS2_BUILTIN_LDHUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldwio, "__builtin_ldwio", NIOS2_BUILTIN_LDWIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+
-+    {CODE_FOR_stbio, "__builtin_stbio", NIOS2_BUILTIN_STBIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+    {CODE_FOR_sthio, "__builtin_sthio", NIOS2_BUILTIN_STHIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+    {CODE_FOR_stwio, "__builtin_stwio", NIOS2_BUILTIN_STWIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+
-+    {CODE_FOR_sync, "__builtin_sync", NIOS2_BUILTIN_SYNC, &void_ftype_void, nios2_expand_sync},
-+    {CODE_FOR_rdctl, "__builtin_rdctl", NIOS2_BUILTIN_RDCTL, &int_ftype_int, nios2_expand_rdctl},
-+    {CODE_FOR_wrctl, "__builtin_wrctl", NIOS2_BUILTIN_WRCTL, &void_ftype_int_int, nios2_expand_wrctl},
-+
-+    {CODE_FOR_custom_n, "__builtin_custom_n", NIOS2_BUILTIN_CUSTOM_N, &custom_n, nios2_expand_custom_n},
-+    {CODE_FOR_custom_ni, "__builtin_custom_ni", NIOS2_BUILTIN_CUSTOM_NI, &custom_ni, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_nf, "__builtin_custom_nf", NIOS2_BUILTIN_CUSTOM_NF, &custom_nf, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_np, "__builtin_custom_np", NIOS2_BUILTIN_CUSTOM_NP, &custom_np, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_nii, "__builtin_custom_nii", NIOS2_BUILTIN_CUSTOM_NII, &custom_nii, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nif, "__builtin_custom_nif", NIOS2_BUILTIN_CUSTOM_NIF, &custom_nif, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nip, "__builtin_custom_nip", NIOS2_BUILTIN_CUSTOM_NIP, &custom_nip, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nfi, "__builtin_custom_nfi", NIOS2_BUILTIN_CUSTOM_NFI, &custom_nfi, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nff, "__builtin_custom_nff", NIOS2_BUILTIN_CUSTOM_NFF, &custom_nff, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nfp, "__builtin_custom_nfp", NIOS2_BUILTIN_CUSTOM_NFP, &custom_nfp, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npi, "__builtin_custom_npi", NIOS2_BUILTIN_CUSTOM_NPI, &custom_npi, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npf, "__builtin_custom_npf", NIOS2_BUILTIN_CUSTOM_NPF, &custom_npf, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npp, "__builtin_custom_npp", NIOS2_BUILTIN_CUSTOM_NPP, &custom_npp, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_in, "__builtin_custom_in", NIOS2_BUILTIN_CUSTOM_IN, &custom_in, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_ini, "__builtin_custom_ini", NIOS2_BUILTIN_CUSTOM_INI, &custom_ini, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inf, "__builtin_custom_inf", NIOS2_BUILTIN_CUSTOM_INF, &custom_inf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inp, "__builtin_custom_inp", NIOS2_BUILTIN_CUSTOM_INP, &custom_inp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inii, "__builtin_custom_inii", NIOS2_BUILTIN_CUSTOM_INII, &custom_inii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inif, "__builtin_custom_inif", NIOS2_BUILTIN_CUSTOM_INIF, &custom_inif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inip, "__builtin_custom_inip", NIOS2_BUILTIN_CUSTOM_INIP, &custom_inip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_infi, "__builtin_custom_infi", NIOS2_BUILTIN_CUSTOM_INFI, &custom_infi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inff, "__builtin_custom_inff", NIOS2_BUILTIN_CUSTOM_INFF, &custom_inff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_infp, "__builtin_custom_infp", NIOS2_BUILTIN_CUSTOM_INFP, &custom_infp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpi, "__builtin_custom_inpi", NIOS2_BUILTIN_CUSTOM_INPI, &custom_inpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpf, "__builtin_custom_inpf", NIOS2_BUILTIN_CUSTOM_INPF, &custom_inpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpp, "__builtin_custom_inpp", NIOS2_BUILTIN_CUSTOM_INPP, &custom_inpp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fn, "__builtin_custom_fn", NIOS2_BUILTIN_CUSTOM_FN, &custom_fn, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_fni, "__builtin_custom_fni", NIOS2_BUILTIN_CUSTOM_FNI, &custom_fni, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnf, "__builtin_custom_fnf", NIOS2_BUILTIN_CUSTOM_FNF, &custom_fnf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnp, "__builtin_custom_fnp", NIOS2_BUILTIN_CUSTOM_FNP, &custom_fnp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnii, "__builtin_custom_fnii", NIOS2_BUILTIN_CUSTOM_FNII, &custom_fnii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnif, "__builtin_custom_fnif", NIOS2_BUILTIN_CUSTOM_FNIF, &custom_fnif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnip, "__builtin_custom_fnip", NIOS2_BUILTIN_CUSTOM_FNIP, &custom_fnip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnfi, "__builtin_custom_fnfi", NIOS2_BUILTIN_CUSTOM_FNFI, &custom_fnfi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnff, "__builtin_custom_fnff", NIOS2_BUILTIN_CUSTOM_FNFF, &custom_fnff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnfp, "__builtin_custom_fnfp", NIOS2_BUILTIN_CUSTOM_FNFP, &custom_fnfp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpi, "__builtin_custom_fnpi", NIOS2_BUILTIN_CUSTOM_FNPI, &custom_fnpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpf, "__builtin_custom_fnpf", NIOS2_BUILTIN_CUSTOM_FNPF, &custom_fnpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpp, "__builtin_custom_fnpp", NIOS2_BUILTIN_CUSTOM_FNPP, &custom_fnpp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pn, "__builtin_custom_pn", NIOS2_BUILTIN_CUSTOM_PN, &custom_pn, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_pni, "__builtin_custom_pni", NIOS2_BUILTIN_CUSTOM_PNI, &custom_pni, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnf, "__builtin_custom_pnf", NIOS2_BUILTIN_CUSTOM_PNF, &custom_pnf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnp, "__builtin_custom_pnp", NIOS2_BUILTIN_CUSTOM_PNP, &custom_pnp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnii, "__builtin_custom_pnii", NIOS2_BUILTIN_CUSTOM_PNII, &custom_pnii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnif, "__builtin_custom_pnif", NIOS2_BUILTIN_CUSTOM_PNIF, &custom_pnif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnip, "__builtin_custom_pnip", NIOS2_BUILTIN_CUSTOM_PNIP, &custom_pnip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnfi, "__builtin_custom_pnfi", NIOS2_BUILTIN_CUSTOM_PNFI, &custom_pnfi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnff, "__builtin_custom_pnff", NIOS2_BUILTIN_CUSTOM_PNFF, &custom_pnff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnfp, "__builtin_custom_pnfp", NIOS2_BUILTIN_CUSTOM_PNFP, &custom_pnfp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpi, "__builtin_custom_pnpi", NIOS2_BUILTIN_CUSTOM_PNPI, &custom_pnpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpf, "__builtin_custom_pnpf", NIOS2_BUILTIN_CUSTOM_PNPF, &custom_pnpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpp, "__builtin_custom_pnpp", NIOS2_BUILTIN_CUSTOM_PNPP, &custom_pnpp, nios2_expand_custom_XnXX},
-+
-+
-+    {0, 0, 0, 0, 0},
-+};
-+
-+/* This does not have a closing bracket on purpose (see use) */
-+#define def_param(TYPE) \
-+  tree_cons (NULL_TREE, TYPE,
-+
-+static void
-+nios2_init_builtins ()
-+{
-+  const struct builtin_description *d;
-+
-+
-+  endlink = void_list_node;
-+
-+  /* Special indenting here because one of the brackets is in def_param */
-+  /* *INDENT-OFF* */
-+
-+  /* int fn (volatile const void *)
-+   */
-+  int_ftype_volatile_const_void_p
-+    = build_function_type (integer_type_node,
-+			   def_param (build_qualified_type (ptr_type_node,
-+			                                    TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE))
-+			   endlink));
-+
-+
-+  /* void fn (volatile void *, int)
-+   */
-+  void_ftype_volatile_void_p_int
-+    = build_function_type (void_type_node,
-+			   def_param (build_qualified_type (ptr_type_node,
-+			                                    TYPE_QUAL_VOLATILE))
-+			   def_param (integer_type_node)
-+			   endlink)));
-+
-+  /* void fn (void)
-+   */
-+  void_ftype_void
-+      = build_function_type (void_type_node,
-+                             endlink);
-+
-+  /* int fn (int)
-+   */
-+  int_ftype_int
-+      = build_function_type (integer_type_node,
-+                             def_param (integer_type_node)
-+                             endlink));
-+
-+  /* void fn (int, int)
-+   */
-+  void_ftype_int_int
-+      = build_function_type (void_type_node,
-+                             def_param (integer_type_node)
-+                             def_param (integer_type_node)
-+                             endlink)));
-+
-+
-+#define CUSTOM_NUM def_param (integer_type_node)
-+
-+  custom_n
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_ni
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_nf
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_np
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_nii
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_nif
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_nip
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_nfi
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_nff
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_nfp
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_npi
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_npf
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_npp
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+  custom_in
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_ini
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_inf
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_inp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_inii
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inif
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_inip
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_infi
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inff
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_infp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_inpi
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inpf
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_inpp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+  custom_fn
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_fni
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_fnf
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_fnp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_fnii
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnif
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnip
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_fnfi
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnff
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnfp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_fnpi
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnpf
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnpp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+
-+  custom_pn
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_pni
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_pnf
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_pnp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_pnii
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnif
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnip
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_pnfi
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnff
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnfp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_pnpi
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnpf
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnpp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+
-+
-+  /* *INDENT-ON* */
-+
-+
-+  for (d = bdesc; d->name; d++)
-+    {
-+      builtin_function (d->name, *d->type, d->code,
-+			BUILT_IN_MD, NULL, NULL);
-+    }
-+}
-+
-+/* Expand an expression EXP that calls a built-in function,
-+   with result going to TARGET if that's convenient
-+   (and in mode MODE if that's convenient).
-+   SUBTARGET may be used as the target for computing one of EXP's operands.
-+   IGNORE is nonzero if the value is to be ignored.  */
-+
-+static rtx
-+nios2_expand_builtin (tree exp, rtx target, rtx subtarget, 
-+                      enum machine_mode mode, int ignore)
-+{
-+  const struct builtin_description *d;
-+  tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
-+  unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
-+
-+  for (d = bdesc; d->name; d++)
-+    if (d->code == fcode)
-+      return (d->expander) (d, exp, target, subtarget, mode, ignore);
-+
-+  /* we should have seen one of the functins we registered */
-+  abort ();
-+}
-+
-+static rtx nios2_create_target (const struct builtin_description *, rtx);
-+
-+
-+static rtx
-+nios2_create_target (const struct builtin_description *d, rtx target)
-+{
-+  if (!target
-+      || !(*insn_data[d->icode].operand[0].predicate) (target,
-+                                                       insn_data[d->icode].operand[0].mode))
-+    {
-+      target = gen_reg_rtx (insn_data[d->icode].operand[0].mode);
-+    }
-+
-+  return target;
-+}
-+
-+
-+static rtx nios2_extract_opcode (const struct builtin_description *, int, tree);
-+static rtx nios2_extract_operand (const struct builtin_description *, int, int, tree);
-+
-+static rtx
-+nios2_extract_opcode (const struct builtin_description *d, int op, tree arglist)
-+{
-+  enum machine_mode mode = insn_data[d->icode].operand[op].mode;
-+  tree arg = TREE_VALUE (arglist);
-+  rtx opcode = expand_expr (arg, NULL_RTX, mode, 0);
-+  opcode = protect_from_queue (opcode, 0);
-+
-+  if (!(*insn_data[d->icode].operand[op].predicate) (opcode, mode))
-+    error ("Custom instruction opcode must be compile time constant in the range 0-255 for %s", d->name);
-+
-+  return opcode;
-+}
-+
-+static rtx
-+nios2_extract_operand (const struct builtin_description *d, int op, int argnum, tree arglist)
-+{
-+  enum machine_mode mode = insn_data[d->icode].operand[op].mode;
-+  tree arg = TREE_VALUE (arglist);
-+  rtx operand = expand_expr (arg, NULL_RTX, mode, 0);
-+  operand = protect_from_queue (operand, 0);
-+
-+  if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode))
-+    operand = copy_to_mode_reg (mode, operand);
-+
-+  /* ??? Better errors would be nice */
-+  if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode))
-+    error ("Invalid argument %d to %s", argnum, d->name);
-+
-+  return operand;
-+}
-+
-+
-+static rtx
-+nios2_expand_custom_n (const struct builtin_description *d, tree exp, 
-+                       rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, 
-+                       enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+
-+  /* custom_n should have exactly one operand */
-+  if (insn_data[d->icode].n_operands != 1)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+
-+  pat = GEN_FCN (d->icode) (opcode);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_Xn (const struct builtin_description *d, tree exp, 
-+                        rtx target, rtx subtarget ATTRIBUTE_UNUSED, 
-+                        enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                        int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+
-+  /* custom_Xn should have exactly two operands */
-+  if (insn_data[d->icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+
-+  pat = GEN_FCN (d->icode) (target, opcode);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_custom_nX (const struct builtin_description *d, tree exp, 
-+                        rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, 
-+                        enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[1];
-+  int i;
-+
-+
-+  /* custom_nX should have exactly two operands */
-+  if (insn_data[d->icode].n_operands != 2)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+  for (i = 0; i < 1; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (opcode, operands[0]);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_XnX (const struct builtin_description *d, tree exp, rtx target, 
-+                         rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                         int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[1];
-+  int i;
-+
-+  /* custom_Xn should have exactly three operands */
-+  if (insn_data[d->icode].n_operands != 3)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+
-+  for (i = 0; i < 1; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (target, opcode, operands[0]);
-+
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_custom_nXX (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, 
-+                         rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                         int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[2];
-+  int i;
-+
-+
-+  /* custom_nX should have exactly three operands */
-+  if (insn_data[d->icode].n_operands != 3)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+  for (i = 0; i < 2; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (opcode, operands[0], operands[1]);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_XnXX (const struct builtin_description *d, tree exp, rtx target, 
-+                          rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                          int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[2];
-+  int i;
-+
-+
-+  /* custom_XnX should have exactly four operands */
-+  if (insn_data[d->icode].n_operands != 4)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+  for (i = 0; i < 2; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (target, opcode, operands[0], operands[1]);
-+
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+
-+
-+static rtx
-+nios2_expand_STXIO (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, 
-+                    rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                    int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx store_dest, store_val;
-+  enum insn_code icode = d->icode;
-+
-+  /* stores should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  /* process the destination of the store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[0].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    store_dest = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    store_dest = protect_from_queue (store_dest, 0);
-+
-+    store_dest = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, store_dest));
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[0].predicate) (store_dest, mode))
-+      error ("Invalid argument 1 to %s", d->name);
-+  }
-+
-+
-+  /* process the value to store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (TREE_CHAIN (arglist));
-+    store_val = expand_expr (arg, NULL_RTX, mode, 0);
-+    store_val = protect_from_queue (store_val, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      store_val = copy_to_mode_reg (mode, store_val);
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      error ("Invalid argument 2 to %s", d->name);
-+  }
-+
-+  pat = GEN_FCN (d->icode) (store_dest, store_val);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+
-+static rtx
-+nios2_expand_LDXIO (const struct builtin_description * d, tree exp, rtx target, 
-+                    rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                    int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx ld_src;
-+  enum insn_code icode = d->icode;
-+
-+  /* loads should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    ld_src = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    ld_src = protect_from_queue (ld_src, 0);
-+
-+    ld_src = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, ld_src));
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (ld_src, mode))
-+      {
-+        error ("Invalid argument 1 to %s", d->name);
-+      }
-+  }
-+
-+  pat = GEN_FCN (d->icode) (target, ld_src);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+
-+static rtx
-+nios2_expand_sync (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  emit_insn (gen_sync ());
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_rdctl (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx rdctl_reg;
-+  enum insn_code icode = d->icode;
-+
-+  /* rdctl should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    rdctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    rdctl_reg = protect_from_queue (rdctl_reg, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (rdctl_reg, mode))
-+      {
-+        error ("Control register number must be in range 0-31 for %s", d->name);
-+      }
-+  }
-+
-+  pat = GEN_FCN (d->icode) (target, rdctl_reg);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_wrctl (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx wrctl_reg, store_val;
-+  enum insn_code icode = d->icode;
-+
-+  /* stores should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  /* process the destination of the store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[0].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    wrctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    wrctl_reg = protect_from_queue (wrctl_reg, 0);
-+
-+    if (!(*insn_data[icode].operand[0].predicate) (wrctl_reg, mode))
-+      error ("Control register number must be in range 0-31 for %s", d->name);
-+  }
-+
-+
-+  /* process the value to store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (TREE_CHAIN (arglist));
-+    store_val = expand_expr (arg, NULL_RTX, mode, 0);
-+    store_val = protect_from_queue (store_val, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      store_val = copy_to_mode_reg (mode, store_val);
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      error ("Invalid argument 2 to %s", d->name);
-+  }
-+
-+  pat = GEN_FCN (d->icode) (wrctl_reg, store_val);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+
-+#include "gt-nios2.h"
-+
---- gcc-3.4.3/gcc/config/nios2/nios2.h
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.h
-@@ -0,0 +1,824 @@
-+/* Definitions of target machine for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera 
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+
-+
-+#define TARGET_CPU_CPP_BUILTINS()		\
-+  do						\
-+    {						\
-+      builtin_define_std ("NIOS2");		\
-+      builtin_define_std ("nios2");		\
-+      builtin_define ("_GNU_SOURCE");		\
-+    }						\
-+  while (0)
-+#define TARGET_VERSION fprintf (stderr, " (Altera Nios II)")
-+
-+
-+
-+
-+
-+/*********************************
-+ * Run-time Target Specification
-+ *********************************/
-+
-+#define HAS_DIV_FLAG 0x0001
-+#define HAS_MUL_FLAG 0x0002
-+#define HAS_MULX_FLAG 0x0004
-+#define FAST_SW_DIV_FLAG 0x0008
-+#define INLINE_MEMCPY_FLAG 0x00010
-+#define CACHE_VOLATILE_FLAG 0x0020
-+#define BYPASS_CACHE_FLAG 0x0040
-+
-+extern int target_flags;
-+#define TARGET_HAS_DIV (target_flags & HAS_DIV_FLAG)
-+#define TARGET_HAS_MUL (target_flags & HAS_MUL_FLAG)
-+#define TARGET_HAS_MULX (target_flags & HAS_MULX_FLAG)
-+#define TARGET_FAST_SW_DIV (target_flags & FAST_SW_DIV_FLAG)
-+#define TARGET_INLINE_MEMCPY (target_flags & INLINE_MEMCPY_FLAG)
-+#define TARGET_CACHE_VOLATILE (target_flags & CACHE_VOLATILE_FLAG)
-+#define TARGET_BYPASS_CACHE (target_flags & BYPASS_CACHE_FLAG)
-+
-+#define TARGET_SWITCHES					\
-+{							\
-+    { "hw-div", HAS_DIV_FLAG,				\
-+      N_("Enable DIV, DIVU") },				\
-+    { "no-hw-div", -HAS_DIV_FLAG,			\
-+      N_("Disable DIV, DIVU (default)") },		\
-+    { "hw-mul", HAS_MUL_FLAG,				\
-+      N_("Enable MUL instructions (default)") },				\
-+    { "hw-mulx", HAS_MULX_FLAG,				\
-+      N_("Enable MULX instructions, assume fast shifter") },				\
-+    { "no-hw-mul", -HAS_MUL_FLAG,			\
-+      N_("Disable MUL instructions") },		\
-+    { "no-hw-mulx", -HAS_MULX_FLAG,			\
-+      N_("Disable MULX instructions, assume slow shifter (default and implied by -mno-hw-mul)") },		\
-+    { "fast-sw-div", FAST_SW_DIV_FLAG,				\
-+      N_("Use table based fast divide (default at -O3)") },				\
-+    { "no-fast-sw-div", -FAST_SW_DIV_FLAG,			\
-+      N_("Don't use table based fast divide ever") },		\
-+    { "inline-memcpy", INLINE_MEMCPY_FLAG,				\
-+      N_("Inline small memcpy (default when optimizing)") },				\
-+    { "no-inline-memcpy", -INLINE_MEMCPY_FLAG,			\
-+      N_("Don't Inline small memcpy") },		\
-+    { "cache-volatile", CACHE_VOLATILE_FLAG,				\
-+      N_("Volatile accesses use non-io variants of instructions (default)") },				\
-+    { "no-cache-volatile", -CACHE_VOLATILE_FLAG,			\
-+      N_("Volatile accesses use io variants of instructions") },		\
-+    { "bypass-cache", BYPASS_CACHE_FLAG,				\
-+      N_("All ld/st instructins use io variants") },				\
-+    { "no-bypass-cache", -BYPASS_CACHE_FLAG,			\
-+      N_("All ld/st instructins do not use io variants (default)") },		\
-+    { "smallc", 0,			\
-+      N_("Link with a limited version of the C library") },		\
-+    { "ctors-in-init", 0,			\
-+      "" /* undocumented: N_("Link with static constructors and destructors in init") */ },		\
-+    { "", TARGET_DEFAULT, 0 }				\
-+}
-+
-+
-+extern const char *nios2_sys_nosys_string;    /* for -msys=nosys */
-+extern const char *nios2_sys_lib_string;    /* for -msys-lib= */
-+extern const char *nios2_sys_crt0_string;    /* for -msys-crt0= */
-+
-+#define TARGET_OPTIONS					\
-+{							\
-+  { "sys=nosys",    &nios2_sys_nosys_string,		\
-+      N_("Use stub versions of OS library calls (default)"), 0},	\
-+  { "sys-lib=",    &nios2_sys_lib_string,		\
-+      N_("Name of System Library to link against. (Converted to a -l option)"), 0},	\
-+  { "sys-crt0=",    &nios2_sys_crt0_string,		\
-+      N_("Name of the startfile. (default is a crt0 for the ISS only)"), 0},	\
-+}
-+
-+
-+/* Default target_flags if no switches specified.  */
-+#ifndef TARGET_DEFAULT
-+# define TARGET_DEFAULT (HAS_MUL_FLAG | CACHE_VOLATILE_FLAG)
-+#endif
-+
-+/* Switch  Recognition by gcc.c.  Add -G xx support */
-+#undef  SWITCH_TAKES_ARG
-+#define SWITCH_TAKES_ARG(CHAR)						\
-+  (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G')
-+
-+#define OVERRIDE_OPTIONS override_options ()
-+#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) optimization_options (LEVEL, SIZE)
-+#define CAN_DEBUG_WITHOUT_FP
-+ 
-+#define CC1_SPEC "\
-+%{G*}"
-+
-+#undef LIB_SPEC
-+#define LIB_SPEC \
-+"--start-group %{msmallc: -lsmallc} %{!msmallc: -lc} -lgcc \
-+ %{msys-lib=*: -l%*} \
-+ %{!msys-lib=*: -lc } \
-+ --end-group \
-+ %{msys-lib=: %eYou need a library name for -msys-lib=} \
-+"
-+
-+
-+#undef STARTFILE_SPEC 
-+#define STARTFILE_SPEC  \
-+"%{msys-crt0=*: %*} %{!msys-crt0=*: crt1%O%s} \
-+ %{msys-crt0=: %eYou need a C startup file for -msys-crt0=} \
-+ %{mctors-in-init: crti%O%s crtbegin%O%s} \
-+"
-+
-+#undef ENDFILE_SPEC 
-+#define ENDFILE_SPEC \
-+ "%{mctors-in-init: crtend%O%s crtn%O%s}"
-+
-+
-+/***********************
-+ * Storage Layout
-+ ***********************/
-+
-+#define DEFAULT_SIGNED_CHAR 1
-+#define BITS_BIG_ENDIAN 0
-+#define BYTES_BIG_ENDIAN 0
-+#define WORDS_BIG_ENDIAN 0
-+#define BITS_PER_UNIT 8
-+#define BITS_PER_WORD 32
-+#define UNITS_PER_WORD 4
-+#define POINTER_SIZE 32
-+#define BIGGEST_ALIGNMENT 32
-+#define STRICT_ALIGNMENT 1
-+#define FUNCTION_BOUNDARY 32
-+#define PARM_BOUNDARY 32
-+#define STACK_BOUNDARY 32
-+#define PREFERRED_STACK_BOUNDARY 32
-+#define MAX_FIXED_MODE_SIZE 64
-+
-+#define CONSTANT_ALIGNMENT(EXP, ALIGN)				\
-+  ((TREE_CODE (EXP) == STRING_CST) 				\
-+   && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
-+
-+
-+/**********************
-+ * Layout of Source Language Data Types
-+ **********************/
-+
-+#define INT_TYPE_SIZE 32
-+#define SHORT_TYPE_SIZE 16
-+#define LONG_TYPE_SIZE 32
-+#define LONG_LONG_TYPE_SIZE 64
-+#define FLOAT_TYPE_SIZE 32
-+#define DOUBLE_TYPE_SIZE 64
-+#define LONG_DOUBLE_TYPE_SIZE DOUBLE_TYPE_SIZE
-+
-+
-+/*************************
-+ * Condition Code Status
-+ ************************/
-+
-+/* comparison type */
-+/* ??? currently only CMP_SI is used */
-+enum cmp_type {
-+  CMP_SI,				/* compare four byte integers */
-+  CMP_DI,				/* compare eight byte integers */
-+  CMP_SF,				/* compare single precision floats */
-+  CMP_DF,				/* compare double precision floats */
-+  CMP_MAX				/* max comparison type */
-+};
-+
-+extern GTY(()) rtx branch_cmp[2];	/* operands for compare */
-+extern enum cmp_type branch_type;	/* what type of branch to use */
-+
-+/**********************
-+ * Register Usage
-+ **********************/
-+
-+/* ---------------------------------- *
-+ * Basic Characteristics of Registers
-+ * ---------------------------------- */
-+
-+/*
-+Register Number
-+      Register Name
-+          Alternate Name
-+                Purpose
-+0     r0  zero  always zero
-+1     r1  at    Assembler Temporary
-+2-3   r2-r3     Return Location
-+4-7   r4-r7     Register Arguments
-+8-15  r8-r15    Caller Saved Registers
-+16-22 r16-r22   Callee Saved Registers
-+23    r23 sc    Static Chain (Callee Saved)
-+                ??? Does $sc want to be caller or callee 
-+                saved. If caller, 15, else 23. 
-+24    r24       Exception Temporary
-+25    r25       Breakpoint Temporary
-+26    r26 gp    Global Pointer
-+27    r27 sp    Stack Pointer
-+28    r28 fp    Frame Pointer
-+29    r29 ea    Exception Return Address
-+30    r30 ba    Breakpoint Return Address
-+31    r31 ra    Return Address
-+
-+32    ctl0 status
-+33    ctl1 estatus STATUS saved by exception ? 	
-+34    ctl2 bstatus STATUS saved by break ? 	
-+35    ctl3 ipri    Interrupt Priority Mask ?	
-+36    ctl4 ecause  Exception Cause ? 	
-+
-+37         pc   Not an actual register	
-+
-+38    rap      Return address pointer, this does not
-+                   actually exist and will be eliminated
-+
-+39    fake_fp  Fake Frame Pointer which will always be eliminated.
-+40    fake_ap  Fake Argument Pointer which will always be eliminated.
-+
-+41             First Pseudo Register
-+
-+
-+The definitions for all the hard register numbers
-+are located in nios2.md.
-+*/
-+
-+#define FIRST_PSEUDO_REGISTER 41
-+#define NUM_ARG_REGS (LAST_ARG_REGNO - FIRST_ARG_REGNO + 1)
-+
-+
-+
-+/* also see CONDITIONAL_REGISTER_USAGE */
-+#define FIXED_REGISTERS			     \
-+    {					     \
-+/*        +0  1  2  3  4  5  6  7  8  9 */   \
-+/*   0 */  1, 1, 0, 0, 0, 0, 0, 0, 0, 0,     \
-+/*  10 */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     \
-+/*  20 */  0, 0, 0, 0, 1, 1, 1, 1, 0, 1,     \
-+/*  30 */  1, 0, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  40 */  1,                                \
-+    }
-+
-+/* call used is the same as caller saved
-+   + fixed regs + args + ret vals */
-+#define CALL_USED_REGISTERS		     \
-+    { 					     \
-+/*        +0  1  2  3  4  5  6  7  8  9 */   \
-+/*   0 */  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  10 */  1, 1, 1, 1, 1, 1, 0, 0, 0, 0,     \
-+/*  20 */  0, 0, 0, 0, 1, 1, 1, 1, 0, 1,     \
-+/*  30 */  1, 0, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  40 */  1,                                \
-+    }
-+
-+#define HARD_REGNO_NREGS(REGNO, MODE)            \
-+   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
-+    / UNITS_PER_WORD)
-+
-+/* --------------------------- *
-+ * How Values Fit in Registers
-+ * --------------------------- */
-+
-+#define HARD_REGNO_MODE_OK(REGNO, MODE) 1
-+
-+#define MODES_TIEABLE_P(MODE1, MODE2) 1
-+
-+
-+/*************************
-+ * Register Classes
-+ *************************/
-+
-+enum reg_class
-+{
-+    NO_REGS,
-+    ALL_REGS,
-+    LIM_REG_CLASSES
-+};
-+
-+#define N_REG_CLASSES (int) LIM_REG_CLASSES
-+
-+#define REG_CLASS_NAMES   \
-+    {"NO_REGS",           \
-+     "ALL_REGS"}
-+
-+#define GENERAL_REGS ALL_REGS
-+
-+#define REG_CLASS_CONTENTS   \
-+/* NO_REGS  */       {{ 0, 0},     \
-+/* ALL_REGS */        {~0,~0}}    \
-+
-+#define REGNO_REG_CLASS(REGNO) ALL_REGS
-+
-+#define BASE_REG_CLASS ALL_REGS
-+#define INDEX_REG_CLASS ALL_REGS
-+
-+/* only one reg class, 'r', is handled automatically */
-+#define REG_CLASS_FROM_LETTER(CHAR) NO_REGS
-+
-+#define REGNO_OK_FOR_BASE_P2(REGNO, STRICT) \
-+    ((STRICT) \
-+     ? (REGNO) < FIRST_PSEUDO_REGISTER \
-+     : (REGNO) < FIRST_PSEUDO_REGISTER || (reg_renumber && reg_renumber[REGNO] < FIRST_PSEUDO_REGISTER))
-+
-+#define REGNO_OK_FOR_INDEX_P2(REGNO, STRICT) \
-+    (REGNO_OK_FOR_BASE_P2 (REGNO, STRICT))
-+
-+#define REGNO_OK_FOR_BASE_P(REGNO) \
-+    (REGNO_OK_FOR_BASE_P2 (REGNO, 1))
-+
-+#define REGNO_OK_FOR_INDEX_P(REGNO) \
-+    (REGNO_OK_FOR_INDEX_P2 (REGNO, 1))
-+
-+#define REG_OK_FOR_BASE_P2(X, STRICT)                                   \
-+    (STRICT                                                             \
-+     ? REGNO_OK_FOR_BASE_P2 (REGNO (X), 1)                              \
-+     : REGNO_OK_FOR_BASE_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER)
-+
-+#define REG_OK_FOR_INDEX_P2(X, STRICT)                                  \
-+    (STRICT                                                             \
-+     ? REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1)                             \
-+     : REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER)
-+
-+#define CLASS_MAX_NREGS(CLASS, MODE)             \
-+   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
-+    / UNITS_PER_WORD)
-+
-+
-+#define SMALL_INT(X) ((unsigned HOST_WIDE_INT) ((X) + 0x8000) < 0x10000)
-+#define SMALL_INT_UNSIGNED(X) ((unsigned HOST_WIDE_INT) (X) < 0x10000)
-+#define UPPER16_INT(X) (((X) & 0xffff) == 0)
-+#define SHIFT_INT(X) ((X) >= 0 && (X) <= 31)
-+#define RDWRCTL_INT(X) ((X) >= 0 && (X) <= 31)
-+#define CUSTOM_INSN_OPCODE(X) ((X) >= 0 && (X) <= 255)
-+
-+#define CONST_OK_FOR_LETTER_P(VALUE, C)			\
-+ (							\
-+  (C) == 'I' ? SMALL_INT (VALUE) :			\
-+  (C) == 'J' ? SMALL_INT_UNSIGNED (VALUE) :		\
-+  (C) == 'K' ? UPPER16_INT (VALUE) :         		\
-+  (C) == 'L' ? SHIFT_INT (VALUE) :			\
-+  (C) == 'M' ? (VALUE) == 0 :				\
-+  (C) == 'N' ? CUSTOM_INSN_OPCODE (VALUE) :		\
-+  (C) == 'O' ? RDWRCTL_INT (VALUE) :			\
-+  0)
-+
-+#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0
-+
-+#define PREFERRED_RELOAD_CLASS(X, CLASS) \
-+    ((CLASS) == NO_REGS ? GENERAL_REGS : (CLASS))
-+
-+/* 'S' matches immediates which are in small data 
-+   and therefore can be added to gp to create a 
-+   32-bit value. */
-+#define EXTRA_CONSTRAINT(VALUE, C)		\
-+  ((C) == 'S' 					\
-+   && (GET_CODE (VALUE) == SYMBOL_REF)   	\
-+   && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (VALUE))
-+
-+
-+
-+
-+/* Say that the epilogue uses the return address register.  Note that
-+   in the case of sibcalls, the values "used by the epilogue" are
-+   considered live at the start of the called function.  */
-+#define EPILOGUE_USES(REGNO) ((REGNO) == RA_REGNO)
-+
-+
-+#define DEFAULT_MAIN_RETURN  c_expand_return (integer_zero_node)
-+
-+/**********************************
-+ * Trampolines for Nested Functions
-+ ***********************************/
-+
-+#define TRAMPOLINE_TEMPLATE(FILE) \
-+    error ("trampolines not yet implemented")
-+#define TRAMPOLINE_SIZE 20
-+#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
-+    error ("trampolines not yet implemented")
-+
-+/***************************
-+ * Stack Layout and Calling Conventions
-+ ***************************/
-+
-+/* ------------------ *
-+ * Basic Stack Layout
-+ * ------------------ */
-+
-+/* The downward variants are used by the compiler,
-+   the upward ones serve as documentation */
-+#define STACK_GROWS_DOWNWARD
-+#define FRAME_GROWS_UPWARD
-+#define ARGS_GROW_UPWARD
-+
-+#define STARTING_FRAME_OFFSET current_function_outgoing_args_size
-+#define FIRST_PARM_OFFSET(FUNDECL) 0
-+
-+/* Before the prologue, RA lives in r31.  */
-+#define INCOMING_RETURN_ADDR_RTX  gen_rtx_REG (VOIDmode, RA_REGNO)
-+
-+/* -------------------------------------- *
-+ * Registers That Address the Stack Frame
-+ * -------------------------------------- */
-+
-+#define STACK_POINTER_REGNUM SP_REGNO
-+#define STATIC_CHAIN_REGNUM SC_REGNO
-+#define PC_REGNUM PC_REGNO
-+#define DWARF_FRAME_RETURN_COLUMN RA_REGNO
-+
-+/* Base register for access to local variables of the function.  We
-+   pretend that the frame pointer is a non-existent hard register, and 
-+   then eliminate it to HARD_FRAME_POINTER_REGNUM. */
-+#define FRAME_POINTER_REGNUM FAKE_FP_REGNO
-+
-+#define HARD_FRAME_POINTER_REGNUM FP_REGNO
-+#define RETURN_ADDRESS_POINTER_REGNUM RAP_REGNO
-+/* the argumnet pointer needs to always be eliminated
-+   so it is set to a fake hard register. */
-+#define ARG_POINTER_REGNUM FAKE_AP_REGNO
-+
-+/* ----------------------------------------- *
-+ * Eliminating Frame Pointer and Arg Pointer
-+ * ----------------------------------------- */
-+
-+#define FRAME_POINTER_REQUIRED 0
-+
-+#define ELIMINABLE_REGS							\
-+{{ ARG_POINTER_REGNUM,   STACK_POINTER_REGNUM},				\
-+ { ARG_POINTER_REGNUM,   HARD_FRAME_POINTER_REGNUM},			\
-+ { RETURN_ADDRESS_POINTER_REGNUM, STACK_POINTER_REGNUM},		\
-+ { RETURN_ADDRESS_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM},		\
-+ { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM},				\
-+ { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}}
-+
-+#define CAN_ELIMINATE(FROM, TO)	1
-+
-+#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
-+	(OFFSET) = nios2_initial_elimination_offset ((FROM), (TO))
-+
-+#define MUST_SAVE_REGISTER(regno) \
-+ ((regs_ever_live[regno] && !call_used_regs[regno])			\
-+  || (regno == HARD_FRAME_POINTER_REGNUM && frame_pointer_needed)	\
-+  || (regno == RA_REGNO && regs_ever_live[RA_REGNO]))
-+
-+/* Treat LOC as a byte offset from the stack pointer and round it up
-+   to the next fully-aligned offset.  */
-+#define STACK_ALIGN(LOC)						\
-+  (((LOC) + ((PREFERRED_STACK_BOUNDARY / 8) - 1)) & ~((PREFERRED_STACK_BOUNDARY / 8) - 1))
-+
-+
-+/* ------------------------------ *
-+ * Passing Arguments in Registers
-+ * ------------------------------ */
-+
-+/* see nios2.c */
-+#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
-+  (function_arg (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) \
-+  (function_arg_partial_nregs (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) 0
-+
-+#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 0
-+
-+typedef struct nios2_args
-+{
-+    int regs_used;
-+} CUMULATIVE_ARGS;
-+
-+/* This is to initialize the above unused CUM data type */
-+#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \
-+    (init_cumulative_args (&CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS))
-+
-+#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
-+    (function_arg_advance (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_REGNO_P(REGNO) \
-+    ((REGNO) >= FIRST_ARG_REGNO && (REGNO) <= LAST_ARG_REGNO)
-+
-+#define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL)   \
-+  {								    \
-+    int pret_size = nios2_setup_incoming_varargs (&(CUM), (MODE),	    \
-+						(TYPE), (NO_RTL));  \
-+    if (pret_size)						    \
-+      (PRETEND_SIZE) = pret_size;				    \
-+  }
-+
-+/* ----------------------------- *
-+ * Generating Code for Profiling
-+ * ----------------------------- */
-+
-+#define PROFILE_BEFORE_PROLOGUE
-+
-+#define FUNCTION_PROFILER(FILE, LABELNO) \
-+  function_profiler ((FILE), (LABELNO))
-+
-+/* --------------------------------------- *
-+ * Passing Function Arguments on the Stack
-+ * --------------------------------------- */
-+
-+#define PROMOTE_PROTOTYPES 1
-+
-+#define PUSH_ARGS 0
-+#define ACCUMULATE_OUTGOING_ARGS 1
-+
-+#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACKSIZE) 0
-+
-+/* --------------------------------------- *
-+ * How Scalar Function Values Are Returned
-+ * --------------------------------------- */
-+
-+#define FUNCTION_VALUE(VALTYPE, FUNC) \
-+    gen_rtx(REG, TYPE_MODE(VALTYPE), FIRST_RETVAL_REGNO)
-+
-+#define LIBCALL_VALUE(MODE) \
-+    gen_rtx(REG, MODE, FIRST_RETVAL_REGNO)
-+
-+#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == FIRST_RETVAL_REGNO)
-+
-+/* ----------------------------- *
-+ * How Large Values Are Returned
-+ * ----------------------------- */
-+
-+
-+#define RETURN_IN_MEMORY(TYPE)	\
-+  nios2_return_in_memory (TYPE)
-+
-+
-+#define STRUCT_VALUE 0
-+
-+#define DEFAULT_PCC_STRUCT_RETURN 0
-+
-+/*******************
-+ * Addressing Modes
-+ *******************/
-+
-+
-+#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)
-+
-+#define CONSTANT_ADDRESS_P(X) (CONSTANT_P (X))
-+
-+#define MAX_REGS_PER_ADDRESS 1
-+
-+/* Go to ADDR if X is a valid address.  */
-+#ifndef REG_OK_STRICT
-+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)        \
-+    {                                                  \
-+        if (nios2_legitimate_address ((X), (MODE), 0))  \
-+            goto ADDR;                                 \
-+    }
-+#else
-+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)        \
-+    {                                                  \
-+        if (nios2_legitimate_address ((X), (MODE), 1))  \
-+            goto ADDR;                                 \
-+    }
-+#endif
-+
-+#ifndef REG_OK_STRICT
-+#define REG_OK_FOR_BASE_P(X)   REGNO_OK_FOR_BASE_P2 (REGNO (X), 0)
-+#define REG_OK_FOR_INDEX_P(X)  REGNO_OK_FOR_INDEX_P2 (REGNO (X), 0)
-+#else
-+#define REG_OK_FOR_BASE_P(X)   REGNO_OK_FOR_BASE_P2 (REGNO (X), 1)
-+#define REG_OK_FOR_INDEX_P(X)  REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1)
-+#endif
-+
-+#define LEGITIMATE_CONSTANT_P(X) 1
-+
-+/* Nios II has no mode dependent addresses.  */
-+#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-+
-+/* Set if this has a weak declaration  */
-+#define SYMBOL_FLAG_WEAK_DECL	(1 << SYMBOL_FLAG_MACH_DEP_SHIFT)
-+#define SYMBOL_REF_WEAK_DECL_P(RTX) \
-+  ((SYMBOL_REF_FLAGS (RTX) & SYMBOL_FLAG_WEAK_DECL) != 0)
-+
-+
-+/* true if a symbol is both small and not weak. In this case, gp
-+   relative access can be used */
-+#define SYMBOL_REF_IN_NIOS2_SMALL_DATA_P(RTX) \
-+   (SYMBOL_REF_SMALL_P(RTX) && !SYMBOL_REF_WEAK_DECL_P(RTX))
-+
-+/*****************
-+ * Describing Relative Costs of Operations
-+ *****************/
-+
-+#define SLOW_BYTE_ACCESS 1
-+
-+/* It is as good to call a constant function address as to call an address
-+   kept in a register.
-+   ??? Not true anymore really. Now that call cannot address full range
-+   of memory callr may need to be used */
-+
-+#define NO_FUNCTION_CSE
-+#define NO_RECURSIVE_FUNCTION_CSE
-+
-+
-+
-+/*****************************************
-+ * Defining the Output Assembler Language
-+ *****************************************/
-+
-+/* ------------------------------------------ *
-+ * The Overall Framework of an Assembler File
-+ * ------------------------------------------ */
-+
-+#define ASM_APP_ON "#APP\n"
-+#define ASM_APP_OFF "#NO_APP\n"
-+
-+#define ASM_COMMENT_START "# "
-+
-+/* ------------------------------- *
-+ * Output and Generation of Labels
-+ * ------------------------------- */
-+
-+#define GLOBAL_ASM_OP "\t.global\t"
-+
-+
-+/* -------------- *
-+ * Output of Data
-+ * -------------- */
-+
-+#define DWARF2_UNWIND_INFO 0
-+
-+
-+/* -------------------------------- *
-+ * Assembler Commands for Alignment
-+ * -------------------------------- */
-+
-+#define ASM_OUTPUT_ALIGN(FILE, LOG) \
-+  do { \
-+    fprintf ((FILE), "%s%d\n", ALIGN_ASM_OP, (LOG)); \
-+  } while (0)
-+
-+
-+/* -------------------------------- *
-+ * Output of Assembler Instructions
-+ * -------------------------------- */
-+
-+#define REGISTER_NAMES \
-+{ \
-+    "zero", \
-+    "at", \
-+    "r2", \
-+    "r3", \
-+    "r4", \
-+    "r5", \
-+    "r6", \
-+    "r7", \
-+    "r8", \
-+    "r9", \
-+    "r10", \
-+    "r11", \
-+    "r12", \
-+    "r13", \
-+    "r14", \
-+    "r15", \
-+    "r16", \
-+    "r17", \
-+    "r18", \
-+    "r19", \
-+    "r20", \
-+    "r21", \
-+    "r22", \
-+    "r23", \
-+    "r24", \
-+    "r25", \
-+    "gp", \
-+    "sp", \
-+    "fp", \
-+    "ta", \
-+    "ba", \
-+    "ra", \
-+    "status", \
-+    "estatus", \
-+    "bstatus", \
-+    "ipri", \
-+    "ecause", \
-+    "pc", \
-+    "rap", \
-+    "fake_fp", \
-+    "fake_ap", \
-+}
-+
-+#define ASM_OUTPUT_OPCODE(STREAM, PTR)\
-+   (PTR) = asm_output_opcode (STREAM, PTR)
-+
-+#define PRINT_OPERAND(STREAM, X, CODE) \
-+    nios2_print_operand (STREAM, X, CODE)
-+
-+#define PRINT_OPERAND_ADDRESS(STREAM, X) \
-+    nios2_print_operand_address (STREAM, X)
-+
-+#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
-+do { fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \
-+     fprintf (FILE, ".L%u\n", (unsigned) (VALUE));               \
-+   } while (0)
-+
-+
-+/* ------------ *
-+ * Label Output
-+ * ------------ */
-+
-+
-+/* ---------------------------------------------------- *
-+ * Dividing the Output into Sections (Texts, Data, ...)
-+ * ---------------------------------------------------- */
-+
-+/* Output before read-only data.  */
-+#define TEXT_SECTION_ASM_OP ("\t.section\t.text")
-+
-+/* Output before writable data.  */
-+#define DATA_SECTION_ASM_OP ("\t.section\t.data")
-+
-+
-+/* Default the definition of "small data" to 8 bytes. */
-+/* ??? How come I can't use HOST_WIDE_INT here? */
-+extern unsigned long nios2_section_threshold;
-+#define NIOS2_DEFAULT_GVALUE 8
-+
-+
-+
-+/* This says how to output assembler code to declare an
-+   uninitialized external linkage data object.  Under SVR4,
-+   the linker seems to want the alignment of data objects
-+   to depend on their types.  We do exactly that here.  */
-+
-+#undef COMMON_ASM_OP
-+#define COMMON_ASM_OP	"\t.comm\t"
-+
-+#undef  ASM_OUTPUT_ALIGNED_COMMON
-+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)		\
-+do 									\
-+{									\
-+  if ((SIZE) <= nios2_section_threshold)				\
-+    {									\
-+      named_section (0, ".sbss", 0);					\
-+      (*targetm.asm_out.globalize_label) (FILE, NAME);			\
-+      ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
-+      if (!flag_inhibit_size_directive)					\
-+	ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE);			\
-+      ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT));	\
-+      ASM_OUTPUT_LABEL(FILE, NAME);					\
-+      ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1);			\
-+    }									\
-+  else									\
-+    {									\
-+      fprintf ((FILE), "%s", COMMON_ASM_OP);				\
-+      assemble_name ((FILE), (NAME));					\
-+      fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\
-+    }									\
-+}									\
-+while (0)
-+
-+
-+/* This says how to output assembler code to declare an
-+   uninitialized internal linkage data object.  Under SVR4,
-+   the linker seems to want the alignment of data objects
-+   to depend on their types.  We do exactly that here.  */
-+
-+#undef  ASM_OUTPUT_ALIGNED_LOCAL
-+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)		\
-+do {									\
-+  if ((SIZE) <= nios2_section_threshold)				\
-+    named_section (0, ".sbss", 0);					\
-+  else									\
-+    named_section (0, ".bss", 0);					\
-+  ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
-+  if (!flag_inhibit_size_directive)					\
-+    ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE);			\
-+  ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT));	\
-+  ASM_OUTPUT_LABEL(FILE, NAME);						\
-+  ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1);				\
-+} while (0)
-+
-+
-+
-+/***************************
-+ * Miscellaneous Parameters
-+ ***************************/
-+
-+#define MOVE_MAX 4
-+
-+#define Pmode SImode
-+#define FUNCTION_MODE QImode
-+
-+#define CASE_VECTOR_MODE Pmode
-+
-+#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
-+
-+#define LOAD_EXTEND_OP(MODE) (ZERO_EXTEND)
-+
-+#define WORD_REGISTER_OPERATIONS
---- gcc-3.4.3/gcc/config/nios2/nios2.md
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.md
-@@ -0,0 +1,2078 @@
-+;; Machine Description for Altera NIOS 2G NIOS2 version.
-+;;    Copyright (C) 2003 Altera 
-+;;    Contributed by Jonah Graham (jgraham@altera.com).
-+;; 
-+;; This file is part of GNU CC.
-+;; 
-+;; GNU CC 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.
-+;; 
-+;; GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+;; the Free Software Foundation, 59 Temple Place - Suite 330,
-+;; Boston, MA 02111-1307, USA.  */
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* constants
-+;*
-+;*****************************************************************************
-+(define_constants [
-+  (GP_REGNO 26)
-+  (SP_REGNO 27)
-+  (FP_REGNO 28)
-+  (RA_REGNO 31)
-+  (RAP_REGNO 38)
-+  (FIRST_RETVAL_REGNO 2)
-+  (LAST_RETVAL_REGNO 3)
-+  (FIRST_ARG_REGNO 4)
-+  (LAST_ARG_REGNO 7)
-+  (SC_REGNO 23)
-+  (PC_REGNO 37)
-+  (FAKE_FP_REGNO 39)
-+  (FAKE_AP_REGNO 40)
-+
-+
-+  (UNSPEC_BLOCKAGE 0)
-+  (UNSPEC_LDBIO 1)
-+  (UNSPEC_LDBUIO 2)
-+  (UNSPEC_LDHIO 3)
-+  (UNSPEC_LDHUIO 4)
-+  (UNSPEC_LDWIO 5)
-+  (UNSPEC_STBIO 6)
-+  (UNSPEC_STHIO 7)
-+  (UNSPEC_STWIO 8)
-+  (UNSPEC_SYNC 9)
-+  (UNSPEC_WRCTL 10)
-+  (UNSPEC_RDCTL 11)
-+  
-+])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* instruction scheduler
-+;*
-+;*****************************************************************************
-+
-+; No schedule info is currently available, using an assumption that no
-+; instruction can use the results of the previous instruction without
-+; incuring a stall.
-+
-+; length of an instruction (in bytes)
-+(define_attr "length" "" (const_int 4))
-+(define_attr "type" "unknown,complex,control,alu,cond_alu,st,ld,shift,mul,div,custom" (const_string "complex"))
-+
-+(define_asm_attributes
-+ [(set_attr "length" "4")
-+  (set_attr "type" "complex")])
-+
-+(define_automaton "nios2")
-+(automata_option "v")
-+;(automata_option "no-minimization")
-+(automata_option "ndfa")
-+
-+; The nios2 pipeline is fairly straightforward for the fast model.
-+; Every alu operation is pipelined so that an instruction can
-+; be issued every cycle. However, there are still potential
-+; stalls which this description tries to deal with.
-+
-+(define_cpu_unit "cpu" "nios2")
-+
-+(define_insn_reservation "complex" 1
-+  (eq_attr "type" "complex")
-+  "cpu")
-+
-+(define_insn_reservation "control" 1
-+  (eq_attr "type" "control")
-+  "cpu")
-+
-+(define_insn_reservation "alu" 1
-+  (eq_attr "type" "alu")
-+  "cpu")
-+
-+(define_insn_reservation "cond_alu" 1
-+  (eq_attr "type" "cond_alu")
-+  "cpu")
-+
-+(define_insn_reservation "st" 1
-+  (eq_attr "type" "st")
-+  "cpu")
-+  
-+(define_insn_reservation "custom" 1
-+  (eq_attr "type" "custom")
-+  "cpu")
-+
-+; shifts, muls and lds have three cycle latency
-+(define_insn_reservation "ld" 3
-+  (eq_attr "type" "ld")
-+  "cpu")
-+
-+(define_insn_reservation "shift" 3
-+  (eq_attr "type" "shift")
-+  "cpu")
-+
-+(define_insn_reservation "mul" 3
-+  (eq_attr "type" "mul")
-+  "cpu")
-+
-+(define_insn_reservation "div" 1
-+  (eq_attr "type" "div")
-+  "cpu")
-+
-+
-+;*****************************************************************************
-+;*
-+;* MOV Instructions
-+;*
-+;*****************************************************************************
-+
-+(define_expand "movqi"
-+  [(set (match_operand:QI 0 "nonimmediate_operand" "")
-+        (match_operand:QI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, QImode))
-+    DONE;
-+})
-+
-+(define_insn "movqi_internal"
-+  [(set (match_operand:QI 0 "nonimmediate_operand" "=m, r,r, r")
-+        (match_operand:QI 1 "general_operand"       "rM,m,rM,I"))]
-+  "(register_operand (operands[0], QImode)
-+    || register_operand (operands[1], QImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    stb%o0\\t%z1, %0
-+    ldbu%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1"
-+  [(set_attr "type" "st,ld,alu,alu")])
-+
-+(define_insn "ldbio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDBIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldbio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "ldbuio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDBUIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldbuio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "stbio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STBIO)]
-+  ""
-+  "stbio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+
-+(define_expand "movhi"
-+  [(set (match_operand:HI 0 "nonimmediate_operand" "")
-+        (match_operand:HI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, HImode))
-+    DONE;
-+})
-+
-+(define_insn "movhi_internal"
-+  [(set (match_operand:HI 0 "nonimmediate_operand" "=m, r,r, r,r")
-+        (match_operand:HI 1 "general_operand"       "rM,m,rM,I,J"))]
-+  "(register_operand (operands[0], HImode)
-+    || register_operand (operands[1], HImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    sth%o0\\t%z1, %0
-+    ldhu%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1
-+    movui\\t%0, %1"
-+  [(set_attr "type" "st,ld,alu,alu,alu")])
-+
-+(define_insn "ldhio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDHIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldhio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "ldhuio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDHUIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldhuio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "sthio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STHIO)]
-+  ""
-+  "sthio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+(define_expand "movsi"
-+  [(set (match_operand:SI 0 "nonimmediate_operand" "")
-+        (match_operand:SI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, SImode))
-+    DONE;
-+})
-+
-+(define_insn "movsi_internal"
-+  [(set (match_operand:SI 0 "nonimmediate_operand" "=m, r,r, r,r,r,r")
-+        (match_operand:SI 1 "general_operand"       "rM,m,rM,I,J,S,i"))]
-+  "(register_operand (operands[0], SImode)
-+    || register_operand (operands[1], SImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    stw%o0\\t%z1, %0
-+    ldw%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1
-+    movui\\t%0, %1
-+    addi\\t%0, gp, %%gprel(%1)
-+    movhi\\t%0, %H1\;addi\\t%0, %0, %L1"
-+  [(set_attr "type" "st,ld,alu,alu,alu,alu,alu")])
-+
-+(define_insn "ldwio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDWIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldwio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "stwio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STWIO)]
-+  ""
-+  "stwio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* zero extension
-+;*
-+;*****************************************************************************
-+
-+
-+(define_insn "zero_extendhisi2"
-+  [(set (match_operand:SI 0 "register_operand" "=r,r")
-+	(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xffff
-+    ldhu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+(define_insn "zero_extendqihi2"
-+  [(set (match_operand:HI 0 "register_operand" "=r,r")
-+	(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xff
-+    ldbu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+(define_insn "zero_extendqisi2"
-+  [(set (match_operand:SI 0 "register_operand" "=r,r")
-+	(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xff
-+    ldbu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* sign extension
-+;*
-+;*****************************************************************************
-+
-+(define_expand "extendhisi2"
-+  [(set (match_operand:SI 0 "register_operand" "")
-+	(sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (16);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (operands[0], temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendhisi2_internal"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(sign_extend:SI (match_operand:HI 1 "memory_operand" "m")))]
-+  ""
-+  "ldh%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+(define_expand "extendqihi2"
-+  [(set (match_operand:HI 0 "register_operand" "")
-+	(sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op0   = gen_lowpart (SImode, operands[0]);
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (24);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (op0, temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendqihi2_internal"
-+  [(set (match_operand:HI 0 "register_operand" "=r")
-+	(sign_extend:HI (match_operand:QI 1 "memory_operand" "m")))]
-+  ""
-+  "ldb%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+
-+(define_expand "extendqisi2"
-+  [(set (match_operand:SI 0 "register_operand" "")
-+	(sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (24);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (operands[0], temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendqisi2_insn"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(sign_extend:SI (match_operand:QI 1 "memory_operand" "m")))]
-+  ""
-+  "ldb%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Arithmetic Operations
-+;*
-+;*****************************************************************************
-+
-+(define_insn "addsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r,r")
-+        (plus:SI (match_operand:SI 1 "register_operand" "%r,r")
-+                 (match_operand:SI 2 "arith_operand"     "r,I")))]
-+  ""
-+  "add%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "subsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r")
-+        (minus:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+                  (match_operand:SI 2 "register_operand"  "r")))]
-+  ""
-+  "sub\\t%0, %z1, %2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "mulsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r,r")
-+        (mult:SI (match_operand:SI 1 "register_operand"    "r,r")
-+                 (match_operand:SI 2 "arith_operand"       "r,I")))]
-+  "TARGET_HAS_MUL"
-+  "mul%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "mul")])
-+
-+(define_expand "divsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (div:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  ""
-+{
-+  if (!TARGET_HAS_DIV)
-+    {
-+      if (!TARGET_FAST_SW_DIV)
-+	FAIL;
-+      else
-+        {
-+	  if (nios2_emit_expensive_div (operands, SImode))
-+	    DONE;
-+	}
-+    }
-+})
-+
-+(define_insn "divsi3_insn"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (div:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  "TARGET_HAS_DIV"
-+  "div\\t%0, %1, %2"
-+  [(set_attr "type" "div")])
-+
-+(define_insn "udivsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (udiv:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  "TARGET_HAS_DIV"
-+  "divu\\t%0, %1, %2"
-+  [(set_attr "type" "div")])
-+
-+(define_insn "smulsi3_highpart"
-+  [(set (match_operand:SI 0 "register_operand"                            "=r")
-+	(truncate:SI
-+	 (lshiftrt:DI
-+	  (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand"  "r"))
-+		   (sign_extend:DI (match_operand:SI 2 "register_operand"  "r")))
-+	  (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "mulxss\\t%0, %1, %2"
-+  [(set_attr "type" "mul")])
-+
-+(define_insn "umulsi3_highpart"
-+  [(set (match_operand:SI 0 "register_operand"                            "=r")
-+	(truncate:SI
-+	 (lshiftrt:DI
-+	  (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand"  "r"))
-+		   (zero_extend:DI (match_operand:SI 2 "register_operand"  "r")))
-+	  (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "mulxuu\\t%0, %1, %2"
-+  [(set_attr "type" "mul")])
-+
-+
-+(define_expand "mulsidi3"
-+    [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0)
-+	  (mult:SI (match_operand:SI 1 "register_operand" "")
-+		   (match_operand:SI 2 "register_operand" "")))
-+     (set (subreg:SI (match_dup 0) 4)
-+	  (truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
-+					     (sign_extend:DI (match_dup 2)))
-+				    (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "")
-+
-+(define_expand "umulsidi3"
-+    [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0)
-+	  (mult:SI (match_operand:SI 1 "register_operand" "")
-+		   (match_operand:SI 2 "register_operand" "")))
-+     (set (subreg:SI (match_dup 0) 4)
-+	  (truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (match_dup 1))
-+					     (zero_extend:DI (match_dup 2)))
-+				    (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "")
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Negate and ones complement
-+;*
-+;*****************************************************************************
-+
-+(define_insn "negsi2"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(neg:SI (match_operand:SI 1 "register_operand" "r")))]
-+  ""
-+{
-+  operands[2] = const0_rtx;
-+  return "sub\\t%0, %z2, %1";
-+}
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "one_cmplsi2"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(not:SI (match_operand:SI 1 "register_operand" "r")))]
-+  ""
-+{
-+  operands[2] = const0_rtx;
-+  return "nor\\t%0, %z2, %1";
-+}
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+; Logical Operantions
-+
-+(define_insn "andsi3"
-+  [(set (match_operand:SI 0 "register_operand"         "=r, r,r")
-+        (and:SI (match_operand:SI 1 "register_operand" "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"   "rM,J,K")))]
-+  ""
-+  "@
-+    and\\t%0, %1, %z2
-+    and%i2\\t%0, %1, %2
-+    andh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "iorsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r, r,r")
-+        (ior:SI (match_operand:SI 1 "register_operand"  "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"    "rM,J,K")))]
-+  ""
-+  "@
-+    or\\t%0, %1, %z2
-+    or%i2\\t%0, %1, %2
-+    orh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "*norsi3"
-+  [(set (match_operand:SI 0 "register_operand"                  "=r")
-+        (and:SI (not:SI (match_operand:SI 1 "register_operand"  "%r"))
-+                (not:SI (match_operand:SI 2 "reg_or_0_operand"   "rM"))))]
-+  ""
-+  "nor\\t%0, %1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "xorsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r, r,r")
-+        (xor:SI (match_operand:SI 1 "register_operand"  "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"    "rM,J,K")))]
-+  ""
-+  "@
-+    xor\\t%0, %1, %z2
-+    xor%i2\\t%0, %1, %2
-+    xorh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Shifts
-+;*
-+;*****************************************************************************
-+
-+(define_insn "ashlsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r,r")
-+	(ashift:SI (match_operand:SI 1 "register_operand" "r,r")
-+		   (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "sll%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "ashrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(ashiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "sra%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "lshrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(lshiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "srl%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "rotlsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r,r")
-+	(rotate:SI (match_operand:SI 1 "register_operand" "r,r")
-+		   (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "rol%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "rotrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(rotatert:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "register_operand" "r,r")))]
-+  ""
-+  "ror\\t%0, %1, %2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "*shift_mul_constants"
-+  [(set (match_operand:SI 0 "register_operand"                     "=r")
-+	(ashift:SI (mult:SI (match_operand:SI 1 "register_operand"  "r")
-+		            (match_operand:SI 2 "const_int_operand" "I"))
-+		   (match_operand:SI 3          "const_int_operand" "I")))]
-+  "TARGET_HAS_MUL && SMALL_INT (INTVAL (operands[2]) << INTVAL (operands[3]))"
-+{
-+  HOST_WIDE_INT mul = INTVAL (operands[2]) << INTVAL (operands[3]);
-+  rtx ops[3];
-+  
-+  ops[0] = operands[0];
-+  ops[1] = operands[1];
-+  ops[2] = GEN_INT (mul);
-+  
-+  output_asm_insn ("muli\t%0, %1, %2", ops);
-+  return "";
-+}
-+  [(set_attr "type" "mul")])
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Prologue, Epilogue and Return
-+;*
-+;*****************************************************************************
-+
-+(define_expand "prologue"
-+  [(const_int 1)]
-+  ""
-+{
-+  expand_prologue ();
-+  DONE;
-+})
-+
-+(define_expand "epilogue"
-+  [(return)]
-+  ""
-+{
-+  expand_epilogue (false);
-+  DONE;
-+})
-+
-+(define_expand "sibcall_epilogue"
-+  [(return)]
-+  ""
-+{
-+  expand_epilogue (true);
-+  DONE;
-+})
-+
-+(define_insn "return"
-+  [(return)]
-+  "reload_completed && nios2_can_use_return_insn ()"
-+  "ret\\t"
-+)
-+
-+(define_insn "return_from_epilogue"
-+  [(use (match_operand 0 "pmode_register_operand" ""))
-+   (return)]
-+  "reload_completed"
-+  "ret\\t"
-+)
-+
-+;; Block any insns from being moved before this point, since the
-+;; profiling call to mcount can use various registers that aren't
-+;; saved or used to pass arguments.
-+
-+(define_insn "blockage"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)]
-+  ""
-+  ""
-+  [(set_attr "type" "unknown")
-+   (set_attr "length" "0")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Jumps and Calls
-+;*
-+;*****************************************************************************
-+
-+(define_insn "indirect_jump"
-+  [(set (pc) (match_operand:SI 0 "register_operand" "r"))]
-+  ""
-+  "jmp\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "jump"
-+  [(set (pc)
-+        (label_ref (match_operand 0 "" "")))]
-+  ""
-+  "br\\t%0"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_insn "indirect_call"
-+  [(call (mem:QI (match_operand:SI 0 "register_operand" "r"))
-+         (match_operand 1 "" ""))
-+   (clobber (reg:SI RA_REGNO))]
-+  ""
-+  "callr\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "indirect_call_value"
-+  [(set (match_operand 0 "" "")
-+        (call (mem:QI (match_operand:SI 1 "register_operand" "r"))
-+              (match_operand 2 "" "")))
-+   (clobber (reg:SI RA_REGNO))]
-+  ""
-+  "callr\\t%1"
-+)
-+
-+(define_expand "call"
-+  [(parallel [(call (match_operand 0 "" "")
-+                    (match_operand 1 "" ""))
-+              (clobber (reg:SI RA_REGNO))])]
-+  ""
-+  "")
-+
-+(define_expand "call_value"
-+  [(parallel [(set (match_operand 0 "" "")
-+                   (call (match_operand 1 "" "")
-+                         (match_operand 2 "" "")))
-+              (clobber (reg:SI RA_REGNO))])]
-+  ""
-+  "")
-+
-+(define_insn "*call"
-+  [(call (mem:QI (match_operand:SI 0 "immediate_operand" "i"))
-+         (match_operand 1 "" ""))
-+   (clobber (match_operand:SI 2 "register_operand" "=r"))]
-+  ""
-+  "call\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "*call_value"
-+  [(set (match_operand 0 "" "")
-+        (call (mem:QI (match_operand:SI 1 "immediate_operand" "i"))
-+              (match_operand 2 "" "")))
-+   (clobber (match_operand:SI 3 "register_operand" "=r"))]
-+  ""
-+  "call\\t%1"
-+  [(set_attr "type" "control")])
-+
-+(define_expand "sibcall"
-+  [(parallel [(call (match_operand 0 "" "")
-+		    (match_operand 1 "" ""))
-+	      (return)
-+	      (use (match_operand 2 "" ""))])]
-+  ""
-+  {
-+    XEXP (operands[0], 0) = copy_to_mode_reg (SImode, XEXP (operands[0], 0));
-+
-+    if (operands[2] == NULL_RTX)
-+      operands[2] = const0_rtx;
-+  }
-+)
-+
-+(define_expand "sibcall_value"
-+  [(parallel [(set (match_operand 0 "" "")
-+		   (call (match_operand 1 "" "")
-+			 (match_operand 2 "" "")))
-+	      (return)
-+	      (use (match_operand 3 "" ""))])]
-+  ""
-+  {
-+    XEXP (operands[1], 0) = copy_to_mode_reg (SImode, XEXP (operands[1], 0));
-+
-+    if (operands[3] == NULL_RTX)
-+      operands[3] = const0_rtx;
-+  }
-+)
-+
-+(define_insn "sibcall_insn"
-+ [(call (mem:QI (match_operand:SI 0 "register_operand" "r"))
-+	(match_operand 1 "" ""))
-+  (return)
-+  (use (match_operand 2 "" ""))]
-+  ""
-+  "jmp\\t%0"
-+)
-+
-+(define_insn "sibcall_value_insn"
-+ [(set (match_operand 0 "register_operand" "")
-+       (call (mem:QI (match_operand:SI 1 "register_operand" "r"))
-+	     (match_operand 2 "" "")))
-+  (return)
-+  (use (match_operand 3 "" ""))]
-+  ""
-+  "jmp\\t%1"
-+)
-+
-+
-+
-+
-+(define_expand "tablejump"
-+  [(parallel [(set (pc) (match_operand 0 "register_operand" "r"))
-+              (use (label_ref (match_operand 1 "" "")))])]
-+  ""
-+  ""
-+)
-+
-+(define_insn "*tablejump"
-+  [(set (pc)
-+	(match_operand:SI 0 "register_operand" "r"))
-+   (use (label_ref (match_operand 1 "" "")))]
-+  ""
-+  "jmp\\t%0"
-+  [(set_attr "type" "control")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Comparisons
-+;*
-+;*****************************************************************************
-+;; Flow here is rather complex (based on MIPS):
-+;;
-+;;  1)	The cmp{si,di,sf,df} routine is called.  It deposits the
-+;;	arguments into the branch_cmp array, and the type into
-+;;	branch_type.  No RTL is generated.
-+;;
-+;;  2)	The appropriate branch define_expand is called, which then
-+;;	creates the appropriate RTL for the comparison and branch.
-+;;	Different CC modes are used, based on what type of branch is
-+;;	done, so that we can constrain things appropriately.  There
-+;;	are assumptions in the rest of GCC that break if we fold the
-+;;	operands into the branchs for integer operations, and use cc0
-+;;	for floating point, so we use the fp status register instead.
-+;;	If needed, an appropriate temporary is created to hold the
-+;;	of the integer compare.
-+
-+(define_expand "cmpsi"
-+  [(set (cc0)
-+	(compare:CC (match_operand:SI 0 "register_operand" "")
-+		    (match_operand:SI 1 "arith_operand" "")))]
-+  ""
-+{
-+  branch_cmp[0] = operands[0];
-+  branch_cmp[1] = operands[1];
-+  branch_type = CMP_SI;
-+  DONE;
-+})
-+
-+(define_expand "tstsi"
-+  [(set (cc0)
-+	(match_operand:SI 0 "register_operand" ""))]
-+  ""
-+{
-+  branch_cmp[0] = operands[0];
-+  branch_cmp[1] = const0_rtx;
-+  branch_type = CMP_SI;
-+  DONE;
-+})
-+
-+
-+;*****************************************************************************
-+;*
-+;* setting a register from a comparison
-+;*
-+;*****************************************************************************
-+
-+(define_expand "seq"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(eq:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (EQ, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*seq"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(eq:SI (match_operand:SI 1 "reg_or_0_operand" "%rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpeq%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sne"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ne:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (NE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sne"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ne:SI (match_operand:SI 1 "reg_or_0_operand" "%rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpne%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgt"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(gt:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GT, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgt"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(gt:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmplt\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sge"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ge:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sge"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ge:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpge%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_expand "sle"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(le:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sle"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(le:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpge\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "slt"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(lt:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LT, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*slt"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(lt:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmplt%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgtu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(gtu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GTU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgtu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(gtu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpltu\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgeu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(geu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GEU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgeu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(geu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "uns_arith_operand"     "rJ")))]
-+  ""
-+  "cmpgeu%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_expand "sleu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(leu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LEU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sleu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(leu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpgeu\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sltu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ltu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LTU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sltu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ltu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "uns_arith_operand"     "rJ")))]
-+  ""
-+  "cmpltu%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* branches
-+;*
-+;*****************************************************************************
-+
-+(define_insn "*cbranch"
-+  [(set (pc)
-+	(if_then_else
-+         (match_operator:SI 0 "comparison_operator"
-+			    [(match_operand:SI 2 "reg_or_0_operand" "rM")
-+			     (match_operand:SI 3 "reg_or_0_operand" "rM")])
-+        (label_ref (match_operand 1 "" ""))
-+        (pc)))]
-+  ""
-+  "b%0\\t%z2, %z3, %l1"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_expand "beq"
-+  [(set (pc)
-+	(if_then_else (eq:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (EQ, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bne"
-+  [(set (pc)
-+	(if_then_else (ne:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (NE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bgt"
-+  [(set (pc)
-+	(if_then_else (gt:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bge"
-+  [(set (pc)
-+	(if_then_else (ge:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "ble"
-+  [(set (pc)
-+	(if_then_else (le:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "blt"
-+  [(set (pc)
-+	(if_then_else (lt:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bgtu"
-+  [(set (pc)
-+	(if_then_else (gtu:CC (cc0)
-+		 	      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bgeu"
-+  [(set (pc)
-+	(if_then_else (geu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bleu"
-+  [(set (pc)
-+	(if_then_else (leu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bltu"
-+  [(set (pc)
-+	(if_then_else (ltu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+;*****************************************************************************
-+;*
-+;* String and Block Operations
-+;*
-+;*****************************************************************************
-+
-+; ??? This is all really a hack to get Dhrystone to work as fast as possible
-+;     things to be fixed:
-+;        * let the compiler core handle all of this, for that to work the extra
-+;          aliasing needs to be addressed.
-+;        * we use three temporary registers for loading and storing to ensure no
-+;          ld use stalls, this is excessive, because after the first ld/st only
-+;          two are needed. Only two would be needed all the way through if 
-+;          we could schedule with other code. Consider:
-+;           1  ld $1, 0($src)
-+;           2  ld $2, 4($src)
-+;           3  ld $3, 8($src)
-+;           4  st $1, 0($dest)
-+;           5  ld $1, 12($src)
-+;           6  st $2, 4($src)
-+;           7  etc.
-+;          The first store has to wait until 4. If it does not there will be one
-+;          cycle of stalling. However, if any other instruction could be placed
-+;          between 1 and 4, $3 would not be needed.
-+;        * In small we probably don't want to ever do this ourself because there
-+;          is no ld use stall.
-+
-+(define_expand "movstrsi"
-+  [(parallel [(set (match_operand:BLK 0 "general_operand"  "")
-+		   (match_operand:BLK 1 "general_operand"  ""))
-+	      (use (match_operand:SI 2 "const_int_operand" ""))
-+	      (use (match_operand:SI 3 "const_int_operand" ""))
-+	      (clobber (match_scratch:SI 4                "=&r"))
-+	      (clobber (match_scratch:SI 5                "=&r"))
-+	      (clobber (match_scratch:SI 6                "=&r"))])]
-+  "TARGET_INLINE_MEMCPY"
-+{
-+  rtx ld_addr_reg, st_addr_reg;
-+
-+  /* If the predicate for op2 fails in expr.c:emit_block_move_via_movstr 
-+     it trys to copy to a register, but does not re-try the predicate.
-+     ??? Intead of fixing expr.c, I fix it here. */
-+  if (!const_int_operand (operands[2], SImode))
-+    FAIL;
-+
-+  /* ??? there are some magic numbers which need to be sorted out here.
-+         the basis for them is not increasing code size hugely or going
-+         out of range of offset addressing */
-+  if (INTVAL (operands[3]) < 4)
-+    FAIL;
-+  if (!optimize
-+      || (optimize_size && INTVAL (operands[2]) > 12)
-+      || (optimize < 3 && INTVAL (operands[2]) > 100)
-+      || INTVAL (operands[2]) > 200)
-+    FAIL;
-+
-+  st_addr_reg
-+    = replace_equiv_address (operands[0],
-+			     copy_to_mode_reg (Pmode, XEXP (operands[0], 0)));
-+  ld_addr_reg
-+    = replace_equiv_address (operands[1],
-+			     copy_to_mode_reg (Pmode, XEXP (operands[1], 0)));
-+  emit_insn (gen_movstrsi_internal (st_addr_reg, ld_addr_reg,
-+				    operands[2], operands[3]));
-+
-+  DONE;
-+})
-+
-+
-+(define_insn "movstrsi_internal"
-+  [(set (match_operand:BLK 0 "memory_operand"   "=o")
-+	(match_operand:BLK 1 "memory_operand"    "o"))
-+   (use (match_operand:SI 2 "const_int_operand"  "i"))
-+   (use (match_operand:SI 3 "const_int_operand"  "i"))
-+   (clobber (match_scratch:SI 4                "=&r"))
-+   (clobber (match_scratch:SI 5                "=&r"))
-+   (clobber (match_scratch:SI 6                "=&r"))]
-+  "TARGET_INLINE_MEMCPY"
-+{
-+  int ld_offset = INTVAL (operands[2]);
-+  int ld_len = INTVAL (operands[2]);
-+  int ld_reg = 0;
-+  rtx ld_addr_reg = XEXP (operands[1], 0);
-+  int st_offset = INTVAL (operands[2]);
-+  int st_len = INTVAL (operands[2]);
-+  int st_reg = 0;
-+  rtx st_addr_reg = XEXP (operands[0], 0);
-+  int delay_count = 0;
-+  
-+  /* ops[0] is the address used by the insn
-+     ops[1] is the register being loaded or stored */
-+  rtx ops[2];
-+  
-+  if (INTVAL (operands[3]) < 4)
-+    abort ();
-+  
-+  while (ld_offset >= 4)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, SImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldw\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 4;
-+      delay_count++;
-+    }
-+  
-+  if (ld_offset >= 2)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, HImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldh\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 2;
-+      delay_count++;
-+    }
-+  
-+  if (ld_offset >= 1)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, QImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldb\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 1;
-+      delay_count++;
-+    }
-+
-+    while (st_offset >= 4)
-+      {
-+	ops[0] = gen_rtx (MEM, SImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("stw\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 4;
-+      }
-+  
-+    while (st_offset >= 2)
-+      {
-+	ops[0] = gen_rtx (MEM, HImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("sth\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 2;
-+      }
-+  
-+    while (st_offset >= 1)
-+      {
-+	ops[0] = gen_rtx (MEM, QImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("stb\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 1;
-+      }
-+  
-+  return "";
-+}
-+; ??? lengths are not being used yet, but I will probably forget
-+; to update this once I am using lengths, so set it to something
-+; definetely big enough to cover it. 400 allows for 200 bytes
-+; of motion.
-+  [(set_attr "length" "400")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Custom instructions
-+;*
-+;*****************************************************************************
-+
-+(define_constants [
-+  (CUSTOM_N 100)
-+  (CUSTOM_NI 101)
-+  (CUSTOM_NF 102)
-+  (CUSTOM_NP 103)
-+  (CUSTOM_NII 104)
-+  (CUSTOM_NIF 105)
-+  (CUSTOM_NIP 106)
-+  (CUSTOM_NFI 107)
-+  (CUSTOM_NFF 108)
-+  (CUSTOM_NFP 109)
-+  (CUSTOM_NPI 110)
-+  (CUSTOM_NPF 111)
-+  (CUSTOM_NPP 112)
-+  (CUSTOM_IN 113)
-+  (CUSTOM_INI 114)
-+  (CUSTOM_INF 115)
-+  (CUSTOM_INP 116)
-+  (CUSTOM_INII 117)
-+  (CUSTOM_INIF 118)
-+  (CUSTOM_INIP 119)
-+  (CUSTOM_INFI 120)
-+  (CUSTOM_INFF 121)
-+  (CUSTOM_INFP 122)
-+  (CUSTOM_INPI 123)
-+  (CUSTOM_INPF 124)
-+  (CUSTOM_INPP 125)
-+  (CUSTOM_FN 126)
-+  (CUSTOM_FNI 127)
-+  (CUSTOM_FNF 128)
-+  (CUSTOM_FNP 129)
-+  (CUSTOM_FNII 130)
-+  (CUSTOM_FNIF 131)
-+  (CUSTOM_FNIP 132)
-+  (CUSTOM_FNFI 133)
-+  (CUSTOM_FNFF 134)
-+  (CUSTOM_FNFP 135)
-+  (CUSTOM_FNPI 136)
-+  (CUSTOM_FNPF 137)
-+  (CUSTOM_FNPP 138)
-+  (CUSTOM_PN 139)
-+  (CUSTOM_PNI 140)
-+  (CUSTOM_PNF 141)
-+  (CUSTOM_PNP 142)
-+  (CUSTOM_PNII 143)
-+  (CUSTOM_PNIF 144)
-+  (CUSTOM_PNIP 145)
-+  (CUSTOM_PNFI 146)
-+  (CUSTOM_PNFF 147)
-+  (CUSTOM_PNFP 148)
-+  (CUSTOM_PNPI 149)
-+  (CUSTOM_PNPF 150)
-+  (CUSTOM_PNPP 151)
-+])
-+
-+
-+(define_insn "custom_n"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")] CUSTOM_N)]
-+  ""
-+  "custom\\t%0, zero, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_ni"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")] CUSTOM_NI)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nf"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")] CUSTOM_NF)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_np"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")] CUSTOM_NP)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nii"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NII)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nif"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NIF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nip"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NIP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nfi"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NFI)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nff"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NFF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nfp"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NFP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npi"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NPI)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npf"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NPF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npp"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NPP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+(define_insn "custom_in"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_IN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_ini"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_INI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_INF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_INP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inii"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inif"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inip"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_infi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inff"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_infp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+
-+
-+(define_insn "custom_fn"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_FN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fni"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_FNI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnf"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_FNF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_FNP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnii"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnif"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnip"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnfi"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnff"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnfp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpi"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpf"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+(define_insn "custom_pn"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_PN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pni"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_PNI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_PNF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_PNP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnii"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnif"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnip"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnfi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnff"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnfp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Misc
-+;*
-+;*****************************************************************************
-+
-+(define_insn "nop"
-+  [(const_int 0)]
-+  ""
-+  "nop\\t"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "sync"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_SYNC)]
-+  ""
-+  "sync\\t"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_insn "rdctl"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(match_operand:SI 1 "rdwrctl_operand" "O")] UNSPEC_RDCTL))]
-+  ""
-+  "rdctl\\t%0, ctl%1"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "wrctl"
-+  [(unspec_volatile:SI [(match_operand:SI 0 "rdwrctl_operand"  "O")
-+                        (match_operand:SI 1 "register_operand" "r")] UNSPEC_WRCTL)]
-+  ""
-+  "wrctl\\tctl%0, %1"
-+  [(set_attr "type" "control")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Peepholes
-+;*
-+;*****************************************************************************
-+
-+
---- gcc-3.4.3/gcc/config/nios2/t-nios2
-+++ gcc-3.4.3-nios2/gcc/config/nios2/t-nios2
-@@ -0,0 +1,123 @@
-+##
-+## Compiler flags to use when compiling libgcc2.c.
-+##
-+## LIB2FUNCS_EXTRA
-+## A list of source file names to be compiled or assembled and inserted into libgcc.a.
-+
-+LIB2FUNCS_EXTRA=$(srcdir)/config/nios2/lib2-divmod.c \
-+  $(srcdir)/config/nios2/lib2-divmod-hi.c \
-+  $(srcdir)/config/nios2/lib2-divtable.c \
-+  $(srcdir)/config/nios2/lib2-mul.c
-+
-+##
-+## Floating Point Emulation
-+## To have GCC include software floating point libraries in libgcc.a define FPBIT
-+## and DPBIT along with a few rules as follows:
-+##
-+## # We want fine grained libraries, so use the new code
-+## # to build the floating point emulation libraries.
-+FPBIT=$(srcdir)/config/nios2/nios2-fp-bit.c
-+DPBIT=$(srcdir)/config/nios2/nios2-dp-bit.c
-+
-+TARGET_LIBGCC2_CFLAGS = -O2
-+
-+# FLOAT_ONLY - no doubles
-+# SMALL_MACHINE - QI/HI is faster than SI
-+#     Actually SMALL_MACHINE uses chars and shorts instead of ints
-+#     since ints (16-bit ones as they are today) are at least as fast
-+#     as chars and shorts, don't define SMALL_MACHINE
-+# CMPtype - type returned by FP compare, i.e. INT (hard coded in fp-bit - see code )
-+
-+$(FPBIT): $(srcdir)/config/fp-bit.c Makefile
-+	echo '#define FLOAT'          >  ${FPBIT}
-+	cat $(srcdir)/config/fp-bit.c >> ${FPBIT}
-+
-+$(DPBIT): $(srcdir)/config/fp-bit.c Makefile
-+	echo ''          >  ${DPBIT}
-+	cat $(srcdir)/config/fp-bit.c >> ${DPBIT}
-+
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o 
-+
-+# Assemble startup files. 
-+$(T)crti.o: $(srcdir)/config/nios2/crti.asm $(GCC_PASSES) 
-+	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+	-c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/nios2/crti.asm 
-+
-+$(T)crtn.o: $(srcdir)/config/nios2/crtn.asm $(GCC_PASSES) 
-+	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+	-c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/nios2/crtn.asm 
-+
-+
-+## You may need to provide additional #defines at the beginning of
-+## fp-bit.c and dp-bit.c to control target endianness and other options
-+##
-+## CRTSTUFF_T_CFLAGS
-+## Special flags used when compiling crtstuff.c.  See Initialization.
-+##
-+## CRTSTUFF_T_CFLAGS_S
-+## Special flags used when compiling crtstuff.c for shared linking.  Used
-+## if you use crtbeginS.o and crtendS.o in EXTRA-PARTS. See Initialization.
-+##
-+## MULTILIB_OPTIONS
-+## For some targets, invoking GCC in different ways produces objects that
-+## can not be linked together.  For example, for some targets GCC produces
-+## both big and little endian code.  For these targets, you must arrange
-+## for multiple versions of libgcc.a to be compiled, one for each set of
-+## incompatible options.  When GCC invokes the linker, it arranges to link
-+## in the right version of libgcc.a, based on the command line options
-+## used.
-+## The MULTILIB_OPTIONS macro lists the set of options for which special
-+## versions of libgcc.a must be built.  Write options that are mutually
-+## incompatible side by side, separated by a slash.  Write options that may
-+## be used together separated by a space.  The build procedure will build
-+## all combinations of compatible options.
-+##
-+## For example, if you set MULTILIB_OPTIONS to m68000/m68020 msoft-float,
-+## Makefile will build special versions of libgcc.a using the following
-+## sets of options: -m68000, -m68020, -msoft-float, -m68000 -msoft-float,
-+## and -m68020 -msoft-float.
-+
-+MULTILIB_OPTIONS = mno-hw-mul mhw-mulx
-+
-+## MULTILIB_DIRNAMES
-+## If MULTILIB_OPTIONS is used, this variable specifies the directory names
-+## that should be used to hold the various libraries.  Write one element in
-+## MULTILIB_DIRNAMES for each element in MULTILIB_OPTIONS. If
-+## MULTILIB_DIRNAMES is not used, the default value will be
-+## MULTILIB_OPTIONS, with all slashes treated as spaces.
-+## For example, if MULTILIB_OPTIONS is set to m68000/m68020 msoft-float,
-+## then the default value of MULTILIB_DIRNAMES is m68000 m68020
-+## msoft-float.  You may specify a different value if you desire a
-+## different set of directory names.
-+
-+# MULTILIB_DIRNAMES =
-+
-+## MULTILIB_MATCHES
-+## Sometimes the same option may be written in two different ways.  If an
-+## option is listed in MULTILIB_OPTIONS, GCC needs to know about any
-+## synonyms.  In that case, set MULTILIB_MATCHES to a list of items of the
-+## form option=option to describe all relevant synonyms.  For example,
-+## m68000=mc68000 m68020=mc68020.
-+##
-+## MULTILIB_EXCEPTIONS
-+## Sometimes when there are multiple sets of MULTILIB_OPTIONS being
-+## specified, there are combinations that should not be built.  In that
-+## case, set MULTILIB_EXCEPTIONS to be all of the switch exceptions in
-+## shell case syntax that should not be built.
-+## For example, in the PowerPC embedded ABI support, it is not desirable to
-+## build libraries compiled with the -mcall-aix option and either of the
-+## -fleading-underscore or -mlittle options at the same time.  Therefore
-+## MULTILIB_EXCEPTIONS is set to
-+##
-+## *mcall-aix/*fleading-underscore* *mlittle/*mcall-aix*
-+##
-+
-+MULTILIB_EXCEPTIONS = *mno-hw-mul/*mhw-mulx*
-+
-+##
-+## MULTILIB_EXTRA_OPTS Sometimes it is desirable that when building
-+## multiple versions of libgcc.a certain options should always be passed on
-+## to the compiler.  In that case, set MULTILIB_EXTRA_OPTS to be the list
-+## of options to be used for all builds.
-+##
-+
---- gcc-3.4.3/gcc/config.gcc
-+++ gcc-3.4.3-nios2/gcc/config.gcc
-@@ -1321,6 +1321,10 @@ m32rle-*-linux*)
- 		thread_file='posix'
- 	fi
- 	;;
-+# JBG
-+nios2-*-* | nios2-*-*)
-+	tm_file="elfos.h ${tm_file}"
-+	;;
- # m68hc11 and m68hc12 share the same machine description.
- m68hc11-*-*|m6811-*-*)
- 	tm_file="dbxelf.h elfos.h m68hc11/m68hc11.h"
---- gcc-3.4.3/gcc/cse.c
-+++ gcc-3.4.3-nios2/gcc/cse.c
-@@ -3134,6 +3134,10 @@ find_comparison_args (enum rtx_code code
- #ifdef FLOAT_STORE_FLAG_VALUE
- 	  REAL_VALUE_TYPE fsfv;
- #endif
-+#ifdef __nios2__
-+	  if (p->is_const)
-+	    break;
-+#endif
- 
- 	  /* If the entry isn't valid, skip it.  */
- 	  if (! exp_equiv_p (p->exp, p->exp, 1, 0))
---- gcc-3.4.3/gcc/doc/extend.texi
-+++ gcc-3.4.3-nios2/gcc/doc/extend.texi
-@@ -5636,12 +5636,118 @@ to those machines.  Generally these gene
- instructions, but allow the compiler to schedule those calls.
- 
- @menu
-+* Altera Nios II Built-in Functions::
- * Alpha Built-in Functions::
- * ARM Built-in Functions::
- * X86 Built-in Functions::
- * PowerPC AltiVec Built-in Functions::
- @end menu
- 
-+@node Altera Nios II Built-in Functions
-+@subsection Altera Nios II Built-in Functions
-+
-+These built-in functions are available for the Altera Nios II
-+family of processors.
-+
-+The following built-in functions are always available.  They
-+all generate the machine instruction that is part of the name.
-+
-+@example
-+int __builtin_ldbio (volatile const void *)
-+int __builtin_ldbuio (volatile const void *)
-+int __builtin_ldhio (volatile const void *)
-+int __builtin_ldhuio (volatile const void *)
-+int __builtin_ldwio (volatile const void *)
-+void __builtin_stbio (volatile void *, int)
-+void __builtin_sthio (volatile void *, int)
-+void __builtin_stwio (volatile void *, int)
-+void __builtin_sync (void)
-+int __builtin_rdctl (int) 
-+void __builtin_wrctl (int, int)
-+@end example
-+
-+The following built-in functions are always available.  They
-+all generate a Nios II Custom Instruction. The name of the 
-+function represents the types that the function takes and 
-+returns. The letter before the @code{n} is the return type
-+or void if absent. The @code{n} represnts the first parameter
-+to all the custom instructions, the custom instruction number.
-+The two letters after the @code{n} represent the up to two 
-+parameters to the function.
-+
-+The letters reprsent the following data types:
-+@table @code
-+@item <no letter>
-+@code{void} for return type and no parameter for parameter types.
-+
-+@item i
-+@code{int} for return type and parameter type
-+
-+@item f
-+@code{float} for return type and parameter type
-+
-+@item p
-+@code{void *} for return type and parameter type
-+
-+@end table
-+
-+And the function names are:
-+@example
-+void __builtin_custom_n (void)
-+void __builtin_custom_ni (int)
-+void __builtin_custom_nf (float)
-+void __builtin_custom_np (void *)
-+void __builtin_custom_nii (int, int)
-+void __builtin_custom_nif (int, float)
-+void __builtin_custom_nip (int, void *)
-+void __builtin_custom_nfi (float, int)
-+void __builtin_custom_nff (float, float)
-+void __builtin_custom_nfp (float, void *)
-+void __builtin_custom_npi (void *, int)
-+void __builtin_custom_npf (void *, float)
-+void __builtin_custom_npp (void *, void *)
-+int __builtin_custom_in (void)
-+int __builtin_custom_ini (int)
-+int __builtin_custom_inf (float)
-+int __builtin_custom_inp (void *)
-+int __builtin_custom_inii (int, int)
-+int __builtin_custom_inif (int, float)
-+int __builtin_custom_inip (int, void *)
-+int __builtin_custom_infi (float, int)
-+int __builtin_custom_inff (float, float)
-+int __builtin_custom_infp (float, void *)
-+int __builtin_custom_inpi (void *, int)
-+int __builtin_custom_inpf (void *, float)
-+int __builtin_custom_inpp (void *, void *)
-+float __builtin_custom_fn (void)
-+float __builtin_custom_fni (int)
-+float __builtin_custom_fnf (float)
-+float __builtin_custom_fnp (void *)
-+float __builtin_custom_fnii (int, int)
-+float __builtin_custom_fnif (int, float)
-+float __builtin_custom_fnip (int, void *)
-+float __builtin_custom_fnfi (float, int)
-+float __builtin_custom_fnff (float, float)
-+float __builtin_custom_fnfp (float, void *)
-+float __builtin_custom_fnpi (void *, int)
-+float __builtin_custom_fnpf (void *, float)
-+float __builtin_custom_fnpp (void *, void *)
-+void * __builtin_custom_pn (void)
-+void * __builtin_custom_pni (int)
-+void * __builtin_custom_pnf (float)
-+void * __builtin_custom_pnp (void *)
-+void * __builtin_custom_pnii (int, int)
-+void * __builtin_custom_pnif (int, float)
-+void * __builtin_custom_pnip (int, void *)
-+void * __builtin_custom_pnfi (float, int)
-+void * __builtin_custom_pnff (float, float)
-+void * __builtin_custom_pnfp (float, void *)
-+void * __builtin_custom_pnpi (void *, int)
-+void * __builtin_custom_pnpf (void *, float)
-+void * __builtin_custom_pnpp (void *, void *)
-+@end example
-+
-+
- @node Alpha Built-in Functions
- @subsection Alpha Built-in Functions
- 
---- gcc-3.4.3/gcc/doc/invoke.texi
-+++ gcc-3.4.3-nios2/gcc/doc/invoke.texi
-@@ -337,6 +337,14 @@ in the following sections.
- @item Machine Dependent Options
- @xref{Submodel Options,,Hardware Models and Configurations}.
- 
-+@emph{Altera Nios II Options}
-+@gccoptlist{-msmallc -mno-bypass-cache -mbypass-cache @gol
-+-mno-cache-volatile -mcache-volatile -mno-inline-memcpy @gol 
-+-minline-memcpy -mno-fast-sw-div -mfast-sw-div @gol
-+-mhw-mul -mno-hw-mul -mhw-mulx -mno-hw-mulx @gol
-+-mno-hw-div -mhw-div @gol
-+-msys-crt0= -msys-lib= -msys=nosys }
-+
- @emph{M680x0 Options}
- @gccoptlist{-m68000  -m68020  -m68020-40  -m68020-60  -m68030  -m68040 @gol
- -m68060  -mcpu32  -m5200  -m68881  -mbitfield  -mc68000  -mc68020   @gol
-@@ -5836,6 +5844,7 @@ machine description.  The default for th
- that macro, which enables you to change the defaults.
- 
- @menu
-+* Altera Nios II Options::
- * M680x0 Options::
- * M68hc1x Options::
- * VAX Options::
-@@ -5871,6 +5880,103 @@ that macro, which enables you to change 
- * FRV Options::
- @end menu
- 
-+
-+@node Altera Nios II Options
-+@subsection Altera Nios II Options
-+@cindex Altera Nios II options
-+
-+These are the @samp{-m} options defined for the Altera Nios II 
-+processor.
-+
-+@table @gcctabopt
-+
-+@item -msmallc
-+@opindex msmallc
-+
-+Link with a limited version of the C library, -lsmallc. For more 
-+information see the C Library Documentation.
-+
-+
-+@item -mbypass-cache
-+@itemx -mno-bypass-cache
-+@opindex mno-bypass-cache
-+@opindex mbypass-cache
-+
-+Force all load and store instructions to always bypass cache by 
-+using io variants of the instructions. The default is to not
-+bypass the cache.
-+
-+@item -mno-cache-volatile 
-+@itemx -mcache-volatile       
-+@opindex mcache-volatile 
-+@opindex mno-cache-volatile
-+
-+Volatile memory access bypass the cache using the io variants of 
-+the ld and st instructions. The default is to cache volatile 
-+accesses. 
-+
-+-mno-cache-volatile is deprecated and will be deleted in a 
-+future GCC release.
-+
-+
-+@item -mno-inline-memcpy
-+@itemx -minline-memcpy
-+@opindex mno-inline-memcpy 
-+@opindex minline-memcpy
-+
-+Do not inline memcpy. The default is to inline when -O is on.
-+
-+
-+@item -mno-fast-sw-div
-+@itemx -mfast-sw-div
-+@opindex mno-fast-sw-div
-+@opindex mfast-sw-div
-+
-+Do no use table based fast divide for small numbers. The default 
-+is to use the fast divide at -O3 and above.
-+
-+
-+@item -mno-hw-mul
-+@itemx -mhw-mul
-+@itemx -mno-hw-mulx
-+@itemx -mhw-mulx
-+@itemx -mno-hw-div
-+@itemx -mhw-div
-+@opindex mno-hw-mul
-+@opindex mhw-mul
-+@opindex mno-hw-mulx
-+@opindex mhw-mulx
-+@opindex mno-hw-div
-+@opindex mhw-div
-+
-+Enable or disable emitting @code{mul}, @code{mulx} and @code{div} family of 
-+instructions by the compiler. The default is to emit @code{mul}
-+and not emit @code{div} and @code{mulx}.
-+
-+The different combinations of @code{mul} and @code{mulx} instructions 
-+generate a different multilib options. 
-+
-+
-+@item -msys-crt0=@var{startfile}
-+@opindex msys-crt0
-+
-+@var{startfile} is the file name  of the startfile (crt0) to use 
-+when linking. The default is crt0.o that comes with libgloss
-+and is only suitable for use with the instruction set
-+simulator.
-+
-+@item -msys-lib=@var{systemlib}
-+@itemx -msys-lib=nosys
-+@opindex msys-lib
-+
-+@var{systemlib} is the library name of the library which provides
-+the system calls required by the C library, e.g. @code{read}, @code{write}
-+etc. The default is to use nosys, this library provides
-+stub implementations of the calls and is part of libgloss.
-+
-+@end table
-+
-+
- @node M680x0 Options
- @subsection M680x0 Options
- @cindex M680x0 options
---- gcc-3.4.3/gcc/doc/md.texi
-+++ gcc-3.4.3-nios2/gcc/doc/md.texi
-@@ -1335,6 +1335,49 @@ However, here is a summary of the machin
- available on some particular machines.
- 
- @table @emph
-+
-+@item Altera Nios II family---@file{nios2.h}
-+@table @code
-+
-+@item I
-+Integer that is valid as an immediate operand in an
-+instruction taking a signed 16-bit number. Range
-+@minus{}32768 to 32767.
-+
-+@item J
-+Integer that is valid as an immediate operand in an
-+instruction taking an unsigned 16-bit number. Range
-+0 to 65535.
-+
-+@item K
-+Integer that is valid as an immediate operand in an
-+instruction taking only the upper 16-bits of a
-+32-bit number. Range 32-bit numbers with the lower
-+16-bits being 0.
-+
-+@item L
-+Integer that is valid as an immediate operand for a 
-+shift instruction. Range 0 to 31.
-+
-+
-+@item M
-+Integer that is valid as an immediate operand for
-+only the value 0. Can be used in conjunction with
-+the format modifier @code{z} to use @code{r0}
-+instead of @code{0} in the assembly output.
-+
-+@item N
-+Integer that is valid as an immediate operand for
-+a custom instruction opcode. Range 0 to 255.
-+
-+@item S
-+Matches immediates which are addresses in the small
-+data section and therefore can be added to @code{gp}
-+as a 16-bit immediate to re-create their 32-bit value.
-+
-+@end table
-+
-+
- @item ARM family---@file{arm.h}
- @table @code
- @item f
Index: toolchain/gcc/3.4.2/602-sdk-libstdc++-includes.patch
===================================================================
--- toolchain/gcc/3.4.2/602-sdk-libstdc++-includes.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/602-sdk-libstdc++-includes.patch	(working copy)
@@ -1,22 +0,0 @@
---- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~	2003-08-27 22:29:42.000000000 +0100
-+++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am	2004-07-22 16:41:45.152130128 +0100
-@@ -32,7 +32,7 @@
- 
- libmath_la_SOURCES = stubs.c
- 
--AM_CPPFLAGS = $(CANADIAN_INCLUDES)
-+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
- 
- # Only compiling "C" sources in this directory.
- LIBTOOL = @LIBTOOL@ --tag CC
---- gcc-3.4.1/libstdc++-v3/fragment.am.old	2004-07-22 18:24:58.024083656 +0100
-+++ gcc-3.4.1/libstdc++-v3/fragment.am	2004-07-22 18:24:59.019932264 +0100
-@@ -18,7 +18,7 @@
- 	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
- 
- # -I/-D flags to pass when compiling.
--AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
-+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
- 
- 
- 
Index: toolchain/gcc/3.4.2/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/3.4.2/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/800-arm-bigendian.patch	(working copy)
@@ -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.4.1-dist/gcc/config/arm/linux-elf.h
-+++ gcc-3.4.1/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__"
- 
-@@ -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
- 
---- gcc-3.4.1-dist/gcc/config.gcc
-+++ gcc-3.4.1/gcc/config.gcc
-@@ -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
Index: toolchain/gcc/3.4.2/810-arm-bigendian-uclibc.patch
===================================================================
--- toolchain/gcc/3.4.2/810-arm-bigendian-uclibc.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/810-arm-bigendian-uclibc.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.4.2/401-ppc-eabi-typo.patch
===================================================================
--- toolchain/gcc/3.4.2/401-ppc-eabi-typo.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/401-ppc-eabi-typo.patch	(working copy)
@@ -1,20 +0,0 @@
-revision 1.12
-date: 2004/07/16 15:13:40;  author: segher;  state: Exp;  lines: +1 -1
-        * config/rs6000/eabi.asm (__eabi_convert): Fix typo (cmpi vs. cmpwi).
-Index: gcc/config/rs6000/eabi.asm
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/rs6000/eabi.asm,v
-retrieving revision 1.11
-retrieving revision 1.12
-diff -u -b -B -w -p -r1.11 -r1.12
---- gcc/gcc/config/rs6000/eabi.asm	20 Sep 2002 23:46:58 -0000	1.11
-+++ gcc/gcc/config/rs6000/eabi.asm	16 Jul 2004 15:13:40 -0000	1.12
-@@ -252,7 +252,7 @@ FUNC_START(__eabi_convert)
- 
- .Lcvt:
- 	lwzu	6,4(3)				/* pointer to convert */
--	cmpi	0,6,0
-+	cmpwi	0,6,0
- 	beq-	.Lcvt2				/* if pointer is null, don't convert */
- 
-         add	6,6,12				/* convert pointer */
Index: toolchain/gcc/3.4.2/700-pr15068-fix.patch
===================================================================
--- toolchain/gcc/3.4.2/700-pr15068-fix.patch	(revision 20005)
+++ toolchain/gcc/3.4.2/700-pr15068-fix.patch	(working copy)
@@ -1,44 +0,0 @@
-See http://gcc.gnu.org/PR15068
-
-Fixes error
-
-../sysdeps/generic/s_fmax.c: In function `__fmax':
-../sysdeps/generic/s_fmax.c:28: internal compiler error: in elim_reg_cond, at flow.c:3257
-Please submit a full bug report,
-with preprocessed source if appropriate.
-See <URL:http://gcc.gnu.org/bugs.html> for instructions.
-make[2]: *** [/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/math/s_fmax.o] Error 1
-make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822/math'
-make[1]: *** [math/others] Error 2
-make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822'
-make: *** [all] Error 2
-
-[ rediffed against gcc-3.4.1, with elbow grease, ending up with same thing as
-http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3 ]
-
---- gcc-3.4.1/gcc/flow.c.old	2004-02-27 19:39:19.000000000 -0800
-+++ gcc-3.4.1/gcc/flow.c	2004-08-26 07:29:46.000000000 -0700
-@@ -1878,6 +1878,7 @@
- 	  rtx set_src = SET_SRC (pc_set (BB_END (bb)));
- 	  rtx cond_true = XEXP (set_src, 0);
- 	  rtx reg = XEXP (cond_true, 0);
-+ 	  enum rtx_code inv_cond;
- 
- 	  if (GET_CODE (reg) == SUBREG)
- 	    reg = SUBREG_REG (reg);
-@@ -1886,11 +1887,13 @@
- 	     in the form of a comparison of a register against zero.  
- 	     If the condition is more complex than that, then it is safe
- 	     not to record any information.  */
--	  if (GET_CODE (reg) == REG
-+ 	  inv_cond = reversed_comparison_code (cond_true, BB_END (bb));
-+ 	  if (inv_cond != UNKNOWN
-+	      && GET_CODE (reg) == REG
- 	      && XEXP (cond_true, 1) == const0_rtx)
- 	    {
- 	      rtx cond_false
--		= gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)),
-+		= gen_rtx_fmt_ee (inv_cond,
- 				  GET_MODE (cond_true), XEXP (cond_true, 0),
- 				  XEXP (cond_true, 1));
- 	      if (GET_CODE (XEXP (set_src, 1)) == PC)
Index: toolchain/gcc/3.4.2/arm-softfloat.patch.conditional
===================================================================
--- toolchain/gcc/3.4.2/arm-softfloat.patch.conditional	(revision 20005)
+++ toolchain/gcc/3.4.2/arm-softfloat.patch.conditional	(working copy)
@@ -1,270 +0,0 @@
-Note... modified my mjn3 to not conflict with the big endian arm patch.
-Warning!!!  Only the linux target is aware of TARGET_ENDIAN_DEFAULT.
-Also changed
-  #define SUBTARGET_EXTRA_ASM_SPEC "\
-  %{!mcpu=*:-mcpu=xscale} \
-  %{mhard-float:-mfpu=fpa} \
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
-to
-  #define SUBTARGET_EXTRA_ASM_SPEC "\
-  %{mhard-float:-mfpu=fpa} \
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
-in gcc/config/arm/linux-elf.h.
-#
-# Submitted:
-#
-# Dimitry Andric <dimitry@andric.com>, 2004-05-01
-#
-# Description:
-#
-# Nicholas Pitre released this patch for gcc soft-float support here: 
-# http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-October/006436.html
-#
-# This version has been adapted to work with gcc 3.4.0.
-#
-# The original patch doesn't distinguish between softfpa and softvfp modes
-# in the way Nicholas Pitre probably meant.  His description is:
-#
-# "Default is to use APCS-32 mode with soft-vfp.  The old Linux default for
-# floats can be achieved with -mhard-float or with the configure
-# --with-float=hard option.  If -msoft-float or --with-float=soft is used then
-# software float support will be used just like the default but with the legacy
-# big endian word ordering for double float representation instead."
-#
-# Which means the following:
-#
-# * If you compile without -mhard-float or -msoft-float, you should get
-#   software floating point, using the VFP format.  The produced object file
-#   should have these flags in its header:
-#
-#     private flags = 600: [APCS-32] [VFP float format] [software FP]
-#
-# * If you compile with -mhard-float, you should get hardware floating point,
-#   which always uses the FPA format.  Object file header flags should be:
-#
-#     private flags = 0: [APCS-32] [FPA float format]
-#
-# * If you compile with -msoft-float, you should get software floating point,
-#   using the FPA format.  This is done for compatibility reasons with many
-#   existing distributions.  Object file header flags should be:
-#
-#     private flags = 200: [APCS-32] [FPA float format] [software FP]
-#
-# The original patch from Nicholas Pitre contained the following constructs:
-#
-#   #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
-#     %{mhard-float:-mfpu=fpa} \
-#     %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-#
-# However, gcc doesn't accept this ";:" notation, used in the 3rd line.  This
-# is probably the reason Robert Schwebel modified it to:
-#
-#   #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
-#     %{mhard-float:-mfpu=fpa} \
-#     %{!mhard-float: %{msoft-float:-mfpu=softfpa -mfpu=softvfp}}"
-#
-# But this causes the following behaviour:
-#
-# * If you compile without -mhard-float or -msoft-float, the compiler generates
-#   software floating point instructions, but *nothing* is passed to the
-#   assembler, which results in an object file which has flags:
-#
-#     private flags = 0: [APCS-32] [FPA float format]
-#
-#   This is not correct!
-#
-# * If you compile with -mhard-float, the compiler generates hardware floating
-#   point instructions, and passes "-mfpu=fpa" to the assembler, which results
-#   in an object file which has the same flags as in the previous item, but now
-#   those *are* correct.
-#    
-# * If you compile with -msoft-float, the compiler generates software floating
-#   point instructions, and passes "-mfpu=softfpa -mfpu=softvfp" (in that
-#   order) to the assembler, which results in an object file with flags:
-#
-#   private flags = 600: [APCS-32] [VFP float format] [software FP]
-#
-#   This is not correct, because the last "-mfpu=" option on the assembler
-#   command line determines the actual FPU convention used (which should be FPA
-#   in this case).
-#
-# Therefore, I modified this patch to get the desired behaviour.  Every
-# instance of the notation:
-#
-#   %{msoft-float:-mfpu=softfpa -mfpu=softvfp}
-#
-# was changed to:
-#
-#   %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}
-#
-# I also did the following:
-# 
-# * Modified all TARGET_DEFAULT macros I could find to include ARM_FLAG_VFP, to
-#   be consistent with Nicholas' original patch.
-# * Removed any "msoft-float" or "mhard-float" from all MULTILIB_DEFAULTS
-#   macros I could find.  I think that if you compile without any options, you
-#   would like to get the defaults. :)
-# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed
-#   anymore.  (The required functions are now in libgcc.)
-
-diff -urN gcc-3.4.1-old/gcc/config/arm/coff.h gcc-3.4.1/gcc/config/arm/coff.h
---- gcc-3.4.1-old/gcc/config/arm/coff.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/coff.h	2004-09-02 21:51:15.000000000 -0500
-@@ -31,11 +31,16 @@
- #define TARGET_VERSION fputs (" (ARM/coff)", stderr)
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" }
-+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" }
- #endif
- 
- /* This is COFF, but prefer stabs.  */
-diff -urN gcc-3.4.1-old/gcc/config/arm/elf.h gcc-3.4.1/gcc/config/arm/elf.h
---- gcc-3.4.1-old/gcc/config/arm/elf.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -46,7 +46,9 @@
- 
- #ifndef SUBTARGET_ASM_FLOAT_SPEC
- #define SUBTARGET_ASM_FLOAT_SPEC "\
--%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}"
-+%{mapcs-float:-mfloat} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- #endif
- 
- #ifndef ASM_SPEC
-@@ -106,12 +108,17 @@
- #endif
- 
- #ifndef TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- #endif
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
-+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
- #endif
- 
- #define TARGET_ASM_FILE_START_APP_OFF true
-diff -urN gcc-3.4.1-old/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h
---- gcc-3.4.1-old/gcc/config/arm/linux-elf.h	2004-09-02 21:50:52.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/linux-elf.h	2004-09-02 22:00:49.000000000 -0500
-@@ -44,12 +44,26 @@
- #define TARGET_LINKER_EMULATION "armelf_linux"
- #endif
- 
--/* Default is to use APCS-32 mode.  */
-+/*
-+ * Default is to use APCS-32 mode with soft-vfp.
-+ * The old Linux default for floats can be achieved with -mhard-float
-+ * or with the configure --with-float=hard option.
-+ * If -msoft-float or --with-float=soft is used then software float 
-+ * support will be used just like the default but with the legacy
-+ * big endian word ordering for double float representation instead.
-+ */
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT \
--		( ARM_FLAG_APCS_32 | \
--		  ARM_FLAG_MMU_TRAPS | \
--		  TARGET_ENDIAN_DEFAULT )
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_SOFT_FLOAT	\
-+	| TARGET_ENDIAN_DEFAULT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_MMU_TRAPS )
-+
-+#undef  SUBTARGET_EXTRA_ASM_SPEC
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- 
- #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
- 
-@@ -57,7 +71,7 @@
- 
- #undef  MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" }
- 
- #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
- 
-@@ -72,7 +86,7 @@
-    %{shared:-lc} \
-    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
- 
--#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
-+#define LIBGCC_SPEC "-lgcc"
- 
- /* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
-    the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
-diff -urN gcc-3.4.1-old/gcc/config/arm/t-linux gcc-3.4.1/gcc/config/arm/t-linux
---- gcc-3.4.1-old/gcc/config/arm/t-linux	2003-09-20 16:09:07.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/t-linux	2004-09-02 21:51:15.000000000 -0500
-@@ -4,7 +4,10 @@
- LIBGCC2_DEBUG_CFLAGS = -g0
- 
- LIB1ASMSRC = arm/lib1funcs.asm
--LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
-+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
-+	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-+	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-+	_fixsfsi _fixunssfsi
- 
- # MULTILIB_OPTIONS = mhard-float/msoft-float
- # MULTILIB_DIRNAMES = hard-float soft-float
-diff -urN gcc-3.4.1-old/gcc/config/arm/unknown-elf.h gcc-3.4.1/gcc/config/arm/unknown-elf.h
---- gcc-3.4.1-old/gcc/config/arm/unknown-elf.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/unknown-elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -30,7 +30,12 @@
- 
- /* Default to using APCS-32 and software floating point.  */
- #ifndef TARGET_DEFAULT
--#define TARGET_DEFAULT	(ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- #endif
- 
- /* Now we define the strings used to build the spec file.  */
-diff -urN gcc-3.4.1-old/gcc/config/arm/xscale-elf.h gcc-3.4.1/gcc/config/arm/xscale-elf.h
---- gcc-3.4.1-old/gcc/config/arm/xscale-elf.h	2003-07-01 18:26:43.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/xscale-elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -49,11 +49,12 @@
- 		     endian, regardless of the endian-ness of the memory
- 		     system.  */
- 		     
--#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
--  %{mhard-float:-mfpu=fpa} \
--  %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{!mcpu=*:-mcpu=xscale} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" }
-+  { "mlittle-endian", "mno-thumb-interwork", "marm" }
- #endif
Index: toolchain/gcc/3.4.3/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/3.4.3/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/100-uclibc-conf.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.4.3/602-sdk-libstdc++-includes.patch
===================================================================
--- toolchain/gcc/3.4.3/602-sdk-libstdc++-includes.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/602-sdk-libstdc++-includes.patch	(working copy)
@@ -1,22 +0,0 @@
---- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~	2003-08-27 22:29:42.000000000 +0100
-+++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am	2004-07-22 16:41:45.152130128 +0100
-@@ -32,7 +32,7 @@
- 
- libmath_la_SOURCES = stubs.c
- 
--AM_CPPFLAGS = $(CANADIAN_INCLUDES)
-+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
- 
- # Only compiling "C" sources in this directory.
- LIBTOOL = @LIBTOOL@ --tag CC
---- gcc-3.4.1/libstdc++-v3/fragment.am.old	2004-07-22 18:24:58.024083656 +0100
-+++ gcc-3.4.1/libstdc++-v3/fragment.am	2004-07-22 18:24:59.019932264 +0100
-@@ -18,7 +18,7 @@
- 	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
- 
- # -I/-D flags to pass when compiling.
--AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
-+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
- 
- 
- 
Index: toolchain/gcc/3.4.3/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/3.4.3/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/800-arm-bigendian.patch	(working copy)
@@ -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.4.1-dist/gcc/config/arm/linux-elf.h
-+++ gcc-3.4.1/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__"
- 
-@@ -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
- 
---- gcc-3.4.1-dist/gcc/config.gcc
-+++ gcc-3.4.1/gcc/config.gcc
-@@ -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
Index: toolchain/gcc/3.4.3/810-arm-bigendian-uclibc.patch
===================================================================
--- toolchain/gcc/3.4.3/810-arm-bigendian-uclibc.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/810-arm-bigendian-uclibc.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.4.3/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/3.4.3/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/300-libstdc++-pic.patch	(working copy)
@@ -1,47 +0,0 @@
-# DP: Build and install libstdc++_pic.a library.
-
---- gcc/libstdc++-v3/src/Makefile.am
-+++ gcc/libstdc++-v3/src/Makefile.am
-@@ -224,6 +224,10 @@
- 	  @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Added bits to build debug library.
- if GLIBCPP_BUILD_DEBUG
- all-local: build_debug
-
---- gcc/libstdc++-v3/src/Makefile.in
-+++ gcc/libstdc++-v3/src/Makefile.in
-@@ -585,7 +585,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -618,6 +618,7 @@
- 	distclean-tags distdir dvi dvi-am info info-am install \
- 	install-am install-data install-data-am install-data-local \
- 	install-exec install-exec-am install-info install-info-am \
-+	install-exec-local \
- 	install-man install-strip install-toolexeclibLTLIBRARIES \
- 	installcheck installcheck-am installdirs maintainer-clean \
- 	maintainer-clean-generic mostlyclean mostlyclean-compile \
-@@ -707,6 +708,11 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/3.4.3/830-gcc-bug-num-22167.patch
===================================================================
--- toolchain/gcc/3.4.3/830-gcc-bug-num-22167.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/830-gcc-bug-num-22167.patch	(working copy)
@@ -1,16 +0,0 @@
-Index: gcc/gcse.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/gcse.c,v
-retrieving revision 1.288.2.9
-diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.288.2.9 gcse.c
---- gcc/gcc/gcse.c	30 Oct 2004 18:02:53 -0000	1.288.2.9
-+++ gcc/gcc/gcse.c	14 Jul 2005 13:19:57 -0000
-@@ -6445,7 +6445,7 @@ hoist_code (void)
- 	  insn_inserted_p = 0;
- 
- 	  /* These tests should be the same as the tests above.  */
--	  if (TEST_BIT (hoist_vbeout[bb->index], i))
-+	  if (TEST_BIT (hoist_exprs[bb->index], i))
- 	    {
- 	      /* We've found a potentially hoistable expression, now
- 		 we look at every block BB dominates to see if it
Index: toolchain/gcc/3.4.3/600-gcc34-arm-ldm-peephole.patch
===================================================================
--- toolchain/gcc/3.4.3/600-gcc34-arm-ldm-peephole.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/600-gcc34-arm-ldm-peephole.patch	(working copy)
@@ -1,79 +0,0 @@
---- gcc-3.4.0/gcc/config/arm/arm.md.arm-ldm-peephole	2004-01-13 08:24:37.000000000 -0500
-+++ gcc-3.4.0/gcc/config/arm/arm.md	2004-04-24 18:18:04.000000000 -0400
-@@ -8810,13 +8810,16 @@
-    (set_attr "length" "4,8,8")]
- )
- 
-+; Try to convert LDR+LDR+arith into [add+]LDM+arith
-+; On XScale, LDM is always slower than two LDRs, so only do this if
-+; optimising for size.
- (define_insn "*arith_adjacentmem"
-   [(set (match_operand:SI 0 "s_register_operand" "=r")
- 	(match_operator:SI 1 "shiftable_operator"
- 	 [(match_operand:SI 2 "memory_operand" "m")
- 	  (match_operand:SI 3 "memory_operand" "m")]))
-    (clobber (match_scratch:SI 4 "=r"))]
--  "TARGET_ARM && adjacent_mem_locations (operands[2], operands[3])"
-+  "TARGET_ARM && (!arm_tune_xscale || optimize_size) && adjacent_mem_locations (operands[2], operands[3])"
-   "*
-   {
-     rtx ldm[3];
-@@ -8851,6 +8854,8 @@
-       }
-    if (val1 && val2)
-       {
-+	/* This would be a loss on a Harvard core, but adjacent_mem_locations()
-+	   will prevent it from happening.  */
- 	rtx ops[3];
- 	ldm[0] = ops[0] = operands[4];
- 	ops[1] = XEXP (XEXP (operands[2], 0), 0);
---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm-peephole	2004-04-24 18:16:25.000000000 -0400
-+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:18:04.000000000 -0400
-@@ -4593,8 +4593,11 @@
- 	 arith_adjacentmem pattern to output an overlong sequence.  */
-       if (!const_ok_for_op (PLUS, val0) || !const_ok_for_op (PLUS, val1))
- 	return 0;
--      
--      return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4);
-+
-+      /* For Harvard cores, only accept pairs where one offset is zero.
-+         See comment in load_multiple_sequence.  */
-+      return (reg0 == reg1) && ((val1 - val0) == 4 || (val0 - val1) == 4)
-+	&& (!arm_ld_sched || val0 == 0 || val1 == 0);
-     }
-   return 0;
- }
-@@ -4838,6 +4841,11 @@
-       *load_offset = unsorted_offsets[order[0]];
-     }
- 
-+  /* For XScale a two-word LDM is a performance loss, so only do this if
-+     size is more important.  See comments in arm_gen_load_multiple.  */
-+  if (nops == 2 && arm_tune_xscale && !optimize_size)
-+    return 0;
-+
-   if (unsorted_offsets[order[0]] == 0)
-     return 1; /* ldmia */
- 
-@@ -5064,6 +5072,11 @@
-       *load_offset = unsorted_offsets[order[0]];
-     }
- 
-+  /* For XScale a two-word LDM is a performance loss, so only do this if
-+     size is more important.  See comments in arm_gen_load_multiple.  */
-+  if (nops == 2 && arm_tune_xscale && !optimize_size)
-+    return 0;
-+
-   if (unsorted_offsets[order[0]] == 0)
-     return 1; /* stmia */
- 
---- gcc-3.4.0/gcc/genpeep.c.arm-ldm-peephole	2003-07-05 01:27:22.000000000 -0400
-+++ gcc-3.4.0/gcc/genpeep.c	2004-04-24 18:18:04.000000000 -0400
-@@ -381,6 +381,7 @@
-   printf ("#include \"recog.h\"\n");
-   printf ("#include \"except.h\"\n\n");
-   printf ("#include \"function.h\"\n\n");
-+  printf ("#include \"flags.h\"\n\n");
- 
-   printf ("#ifdef HAVE_peephole\n");
-   printf ("extern rtx peep_operand[];\n\n");
Index: toolchain/gcc/3.4.3/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/3.4.3/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/200-uclibc-locale.patch	(working copy)
@@ -1,3255 +0,0 @@
-diff -urN gcc-3.4.2-dist/libstdc++-v3/acinclude.m4 gcc-3.4.2/libstdc++-v3/acinclude.m4
---- gcc-3.4.2-dist/libstdc++-v3/acinclude.m4	2004-07-15 12:42:45.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/acinclude.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -996,7 +996,7 @@
-   AC_MSG_CHECKING([for C locale to use])
-   GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@],
-     [use MODEL for target locale package],
--    [permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
-+    [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto])
-   
-   # If they didn't use this option switch, or if they specified --enable
-   # with no specific model, we'll have to look for one.  If they
-@@ -1012,6 +1012,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      x*-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1138,6 +1141,41 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      AC_MSG_RESULT(uclibc)
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+      AC_SUBST(glibcxx_MOFILES)
-+      AC_SUBST(glibcxx_POFILES)
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/aclocal.m4 gcc-3.4.2/libstdc++-v3/aclocal.m4
---- gcc-3.4.2-dist/libstdc++-v3/aclocal.m4	2004-08-13 15:44:03.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/aclocal.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -1025,6 +1025,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      x*-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1151,6 +1154,41 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      AC_MSG_RESULT(uclibc)
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+      AC_SUBST(glibcxx_MOFILES)
-+      AC_SUBST(glibcxx_POFILES)
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,59 @@
-+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
-+
-+// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+// Written by Jakub Jelinek <jakub@redhat.com>
-+
-+#include <clocale>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning clean this up
-+#endif
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+                                                  
-+extern "C" __typeof(iswctype_l) __iswctype_l;
-+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
-+extern "C" __typeof(strcoll_l) __strcoll_l;
-+extern "C" __typeof(strftime_l) __strftime_l;
-+extern "C" __typeof(strtod_l) __strtod_l;
-+extern "C" __typeof(strtof_l) __strtof_l;
-+extern "C" __typeof(strtold_l) __strtold_l;
-+extern "C" __typeof(strxfrm_l) __strxfrm_l;
-+extern "C" __typeof(towlower_l) __towlower_l;
-+extern "C" __typeof(towupper_l) __towupper_l;
-+extern "C" __typeof(wcscoll_l) __wcscoll_l;
-+extern "C" __typeof(wcsftime_l) __wcsftime_l;
-+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
-+extern "C" __typeof(wctype_l) __wctype_l;
-+extern "C" __typeof(newlocale) __newlocale;
-+extern "C" __typeof(freelocale) __freelocale;
-+extern "C" __typeof(duplocale) __duplocale;
-+extern "C" __typeof(uselocale) __uselocale;
-+
-+#endif // GLIBC 2.3 and later
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,160 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <cerrno>  // For errno
-+#include <locale>
-+#include <stdexcept>
-+#include <langinfo.h>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
-+#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
-+#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
-+#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
-+#define __strtof_l(S, E, L)         strtof((S), (E))
-+#define __strtod_l(S, E, L)         strtod((S), (E))
-+#define __strtold_l(S, E, L)        strtold((S), (E))
-+#warning should dummy __newlocale check for C|POSIX ?
-+#define __newlocale(a, b, c)        NULL
-+#define __freelocale(a)             ((void)0)
-+#define __duplocale(a)              __c_locale()
-+#endif
-+
-+namespace std 
-+{
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  float __f = __strtof_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __f;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  double __d = __strtod_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __d;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  long double __ld = __strtold_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __ld;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  void
-+  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, 
-+				    __c_locale __old)
-+  {
-+    __cloc = __newlocale(1 << LC_ALL, __s, __old);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    if (!__cloc)
-+      {
-+	// This named locale is not supported by the underlying OS.
-+	__throw_runtime_error(__N("locale::facet::_S_create_c_locale "
-+			      "name not valid"));
-+      }
-+#endif
-+  }
-+  
-+  void
-+  locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
-+  {
-+    if (_S_get_c_locale() != __cloc)
-+      __freelocale(__cloc); 
-+  }
-+
-+  __c_locale
-+  locale::facet::_S_clone_c_locale(__c_locale& __cloc)
-+  { return __duplocale(__cloc); }
-+} // namespace std
-+
-+namespace __gnu_cxx
-+{
-+  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
-+    {
-+      "LC_CTYPE", 
-+      "LC_NUMERIC",
-+      "LC_TIME", 
-+      "LC_COLLATE", 
-+      "LC_MONETARY",
-+      "LC_MESSAGES", 
-+#if _GLIBCXX_NUM_CATEGORIES != 0
-+      "LC_PAPER", 
-+      "LC_NAME", 
-+      "LC_ADDRESS",
-+      "LC_TELEPHONE", 
-+      "LC_MEASUREMENT", 
-+      "LC_IDENTIFICATION" 
-+#endif
-+    };
-+}
-+
-+namespace std
-+{
-+  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
-+}  // namespace std
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h	2004-09-10 10:48:08.000000000 -0500
-@@ -0,0 +1,115 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifndef _C_LOCALE_H
-+#define _C_LOCALE_H 1
-+
-+#pragma GCC system_header
-+
-+#include <cstring>              // get std::strlen
-+#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <clocale>
-+#include <langinfo.h>		// For codecvt
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC_HAS_LOCALE__
-+#include <iconv.h>		// For codecvt using iconv, iconv_t
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#include <libintl.h> 		// For messages
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning what is _GLIBCXX_C_LOCALE_GNU for
-+#endif
-+#define _GLIBCXX_C_LOCALE_GNU 1
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix categories
-+#endif
-+// #define _GLIBCXX_NUM_CATEGORIES 6
-+#define _GLIBCXX_NUM_CATEGORIES 0
-+ 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+namespace __gnu_cxx
-+{
-+  extern "C" __typeof(uselocale) __uselocale;
-+}
-+#endif
-+
-+namespace std
-+{
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+  typedef __locale_t		__c_locale;
-+#else
-+  typedef int*			__c_locale;
-+#endif
-+
-+  // Convert numeric value of type _Tv to string and return length of
-+  // string.  If snprintf is available use it, otherwise fall back to
-+  // the unsafe sprintf which, in general, can be dangerous and should
-+  // be avoided.
-+  template<typename _Tv>
-+    int
-+    __convert_from_v(char* __out, const int __size, const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,306 @@
-+// std::codecvt implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.5 - Template class codecvt
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+namespace std
-+{
-+  // Specializations.
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_out(state_type& __state, const intern_type* __from, 
-+	 const intern_type* __from_end, const intern_type*& __from_next,
-+	 extern_type* __to, extern_type* __to_end,
-+	 extern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // wcsnrtombs is *very* fast but stops if encounters NUL characters:
-+    // in case we fall back to wcrtomb and then continue, in a loop.
-+    // NB: wcsnrtombs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
-+						      __from_end - __from_next);
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	const size_t __conv = wcsnrtombs(__to_next, &__from_next,
-+					 __from_chunk_end - __from_next,
-+					 __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // wcrtomb.
-+	    for (; __from < __from_next; ++__from)
-+	      __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
-+	    __state = __tmp_state;
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    extern_type __buf[MB_LEN_MAX];
-+	    __tmp_state = __state;
-+	    const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
-+	    if (__conv > static_cast<size_t>(__to_end - __to_next))
-+	      __ret = partial;
-+	    else
-+	      {
-+		memcpy(__to_next, __buf, __conv);
-+		__state = __tmp_state;
-+		__to_next += __conv;
-+		++__from_next;
-+	      }
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+  
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_in(state_type& __state, const extern_type* __from, 
-+	const extern_type* __from_end, const extern_type*& __from_next,
-+	intern_type* __to, intern_type* __to_end,
-+	intern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we store a L'\0' and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0',
-+								  __from_end
-+								  - __from_next));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	size_t __conv = mbsnrtowcs(__to_next, &__from_next,
-+				   __from_chunk_end - __from_next,
-+				   __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (;; ++__to_next, __from += __conv)
-+	      {
-+		__conv = mbrtowc(__to_next, __from, __from_end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __from_next = __from;
-+	    __state = __tmp_state;	    
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    // It is unclear what to return in this case (see DR 382). 
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    if (__to_next < __to_end)
-+	      {
-+		// XXX Probably wrong for stateful encodings
-+		__tmp_state = __state;		
-+		++__from_next;
-+		*__to_next++ = L'\0';
-+	      }
-+	    else
-+	      __ret = partial;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_encoding() const throw()
-+  {
-+    // XXX This implementation assumes that the encoding is
-+    // stateless and is either single-byte or variable-width.
-+    int __ret = 0;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    if (MB_CUR_MAX == 1)
-+      __ret = 1;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }  
-+
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_max_length() const throw()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    // XXX Probably wrong for stateful encodings.
-+    int __ret = MB_CUR_MAX;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }
-+  
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_length(state_type& __state, const extern_type* __from,
-+	    const extern_type* __end, size_t __max) const
-+  {
-+    int __ret = 0;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we advance past it and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+  
-+    // A dummy internal buffer is needed in order for mbsnrtocws to consider
-+    // its fourth parameter (it wouldn't with NULL as first parameter).
-+    wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t) 
-+							   * __max));
-+    while (__from < __end && __max)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0',
-+								  __end
-+								  - __from));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __end;
-+
-+	const extern_type* __tmp_from = __from;
-+	size_t __conv = mbsnrtowcs(__to, &__from,
-+				   __from_chunk_end - __from,
-+				   __max, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (__from = __tmp_from;; __from += __conv)
-+	      {
-+		__conv = mbrtowc(NULL, __from, __end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __state = __tmp_state;
-+	    __ret += __from - __tmp_from;
-+	    break;
-+	  }
-+	if (!__from)
-+	  __from = __from_chunk_end;
-+	
-+	__ret += __from - __tmp_from;
-+	__max -= __conv;
-+
-+	if (__from < __end && __max)
-+	  {
-+	    // XXX Probably wrong for stateful encodings
-+	    __tmp_state = __state;
-+	    ++__from;
-+	    ++__ret;
-+	    --__max;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,80 @@
-+// std::collate implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
-+#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
-+#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
-+#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
-+#endif
-+
-+namespace std
-+{
-+  // These are basically extensions to char_traits, and perhaps should
-+  // be put there instead of here.
-+  template<>
-+    int 
-+    collate<char>::_M_compare(const char* __one, const char* __two) const
-+    { 
-+      int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+  
-+  template<>
-+    size_t
-+    collate<char>::_M_transform(char* __to, const char* __from, 
-+				size_t __n) const 
-+    { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    int 
-+    collate<wchar_t>::_M_compare(const wchar_t* __one, 
-+				 const wchar_t* __two) const
-+    {
-+      int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+  
-+  template<>
-+    size_t
-+    collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
-+				   size_t __n) const
-+    { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,300 @@
-+// std::ctype implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __wctype_l(S, L)           wctype((S))
-+#define __towupper_l(C, L)         towupper((C))
-+#define __towlower_l(C, L)         towlower((C))
-+#define __iswctype_l(C, M, L)      iswctype((C), (M))
-+#endif
-+
-+namespace std
-+{
-+  // NB: The other ctype<char> specializations are in src/locale.cc and
-+  // various /config/os/* files.
-+  template<>
-+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
-+    : ctype<char>(0, false, __refs) 
-+    { 		
-+      if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	{
-+	  this->_S_destroy_c_locale(this->_M_c_locale_ctype);
-+	  this->_S_create_c_locale(this->_M_c_locale_ctype, __s); 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
-+	  this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
-+	  this->_M_table = this->_M_c_locale_ctype->__ctype_b;
-+#endif
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T  
-+  ctype<wchar_t>::__wmask_type
-+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
-+  {
-+    __wmask_type __ret;
-+    switch (__m)
-+      {
-+      case space:
-+	__ret = __wctype_l("space", _M_c_locale_ctype);
-+	break;
-+      case print:
-+	__ret = __wctype_l("print", _M_c_locale_ctype);
-+	break;
-+      case cntrl:
-+	__ret = __wctype_l("cntrl", _M_c_locale_ctype);
-+	break;
-+      case upper:
-+	__ret = __wctype_l("upper", _M_c_locale_ctype);
-+	break;
-+      case lower:
-+	__ret = __wctype_l("lower", _M_c_locale_ctype);
-+	break;
-+      case alpha:
-+	__ret = __wctype_l("alpha", _M_c_locale_ctype);
-+	break;
-+      case digit:
-+	__ret = __wctype_l("digit", _M_c_locale_ctype);
-+	break;
-+      case punct:
-+	__ret = __wctype_l("punct", _M_c_locale_ctype);
-+	break;
-+      case xdigit:
-+	__ret = __wctype_l("xdigit", _M_c_locale_ctype);
-+	break;
-+      case alnum:
-+	__ret = __wctype_l("alnum", _M_c_locale_ctype);
-+	break;
-+      case graph:
-+	__ret = __wctype_l("graph", _M_c_locale_ctype);
-+	break;
-+      default:
-+	__ret = 0;
-+      }
-+    return __ret;
-+  }
-+  
-+  wchar_t
-+  ctype<wchar_t>::do_toupper(wchar_t __c) const
-+  { return __towupper_l(__c, _M_c_locale_ctype); }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+  
-+  wchar_t
-+  ctype<wchar_t>::do_tolower(wchar_t __c) const
-+  { return __towlower_l(__c, _M_c_locale_ctype); }
-+  
-+  const wchar_t*
-+  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+
-+  bool
-+  ctype<wchar_t>::
-+  do_is(mask __m, wchar_t __c) const
-+  { 
-+    // Highest bitmask in ctype_base == 10, but extra in "C"
-+    // library for blank.
-+    bool __ret = false;
-+    const size_t __bitmasksize = 11; 
-+    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+      if (__m & _M_bit[__bitcur]
-+	  && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	{
-+	  __ret = true;
-+	  break;
-+	}
-+    return __ret;    
-+  }
-+  
-+  const wchar_t* 
-+  ctype<wchar_t>::
-+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
-+  {
-+    for (; __lo < __hi; ++__vec, ++__lo)
-+      {
-+	// Highest bitmask in ctype_base == 10, but extra in "C"
-+	// library for blank.
-+	const size_t __bitmasksize = 11; 
-+	mask __m = 0;
-+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+	  if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	    __m |= _M_bit[__bitcur];
-+	*__vec = __m;
-+      }
-+    return __hi;
-+  }
-+  
-+  const wchar_t* 
-+  ctype<wchar_t>::
-+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi && !this->do_is(__m, *__lo))
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
-+  {
-+    while (__lo < __hi && this->do_is(__m, *__lo) != 0)
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  wchar_t
-+  ctype<wchar_t>::
-+  do_widen(char __c) const
-+  { return _M_widen[static_cast<unsigned char>(__c)]; }
-+
-+  const char* 
-+  ctype<wchar_t>::
-+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
-+  {
-+    while (__lo < __hi)
-+      {
-+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
-+	++__lo;
-+	++__dest;
-+      }
-+    return __hi;
-+  }
-+
-+  char
-+  ctype<wchar_t>::
-+  do_narrow(wchar_t __wc, char __dfault) const
-+  {
-+    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
-+      return _M_narrow[__wc];
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    const int __c = wctob(__wc);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return (__c == EOF ? __dfault : static_cast<char>(__c)); 
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, 
-+	    char* __dest) const
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    if (_M_narrow_ok)
-+      while (__lo < __hi)
-+	{
-+	  if (*__lo >= 0 && *__lo < 128)
-+	    *__dest = _M_narrow[*__lo];
-+	  else
-+	    {
-+	      const int __c = wctob(*__lo);
-+	      *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	    }
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+    else
-+      while (__lo < __hi)
-+	{
-+	  const int __c = wctob(*__lo);
-+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __hi;
-+  }
-+
-+  void
-+  ctype<wchar_t>::_M_initialize_ctype()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    wint_t __i;
-+    for (__i = 0; __i < 128; ++__i)
-+      {
-+	const int __c = wctob(__i);
-+	if (__c == EOF)
-+	  break;
-+	else
-+	  _M_narrow[__i] = static_cast<char>(__c);
-+      }
-+    if (__i == 128)
-+      _M_narrow_ok = true;
-+    else
-+      _M_narrow_ok = false;
-+    for (size_t __j = 0;
-+	 __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
-+      _M_widen[__j] = btowc(__j);
-+
-+    for (size_t __k = 0; __k <= 11; ++__k)
-+      { 
-+	_M_bit[__k] = static_cast<mask>(_ISbit(__k));
-+	_M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
-+      }
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+  }
-+#endif //  _GLIBCXX_USE_WCHAR_T
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,100 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix gettext stuff
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__dcgettext(const char *domainname,
-+			     const char *msgid, int category);
-+#undef gettext
-+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
-+#else
-+#undef gettext
-+#define gettext(msgid) (msgid)
-+#endif
-+
-+namespace std
-+{
-+  // Specializations.
-+  template<>
-+    string
-+    messages<char>::do_get(catalog, int, int, const string& __dfault) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      const char* __msg = const_cast<const char*>(gettext(__dfault.c_str()));
-+      __uselocale(__old);
-+      return string(__msg);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      const char* __msg = gettext(__dfault.c_str());
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return string(__msg);
-+#else
-+      const char* __msg = gettext(__dfault.c_str());
-+      return string(__msg);
-+#endif
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    wstring
-+    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
-+    {
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      __uselocale(__old);
-+      return _M_convert_from_char(__msg);
-+# elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return _M_convert_from_char(__msg);
-+# else
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      return _M_convert_from_char(__msg);
-+# endif
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,118 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix prototypes for *textdomain funcs
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__textdomain(const char *domainname);
-+extern "C" char *__bindtextdomain(const char *domainname,
-+				  const char *dirname);
-+#else
-+#undef __textdomain
-+#undef __bindtextdomain
-+#define __textdomain(D)           ((void)0)
-+#define __bindtextdomain(D,P)     ((void)0)
-+#endif
-+
-+  // Non-virtual member functions.
-+  template<typename _CharT>
-+     messages<_CharT>::messages(size_t __refs)
-+     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 
-+     _M_name_messages(_S_get_c_name())
-+     { }
-+
-+  template<typename _CharT>
-+     messages<_CharT>::messages(__c_locale __cloc, const char* __s, 
-+				size_t __refs) 
-+     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
-+     _M_name_messages(__s)
-+     {
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       _M_name_messages = __tmp;
-+     }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog 
-+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 
-+			   const char* __dir) const
-+    { 
-+      __bindtextdomain(__s.c_str(), __dir);
-+      return this->do_open(__s, __loc); 
-+    }
-+
-+  // Virtual member functions.
-+  template<typename _CharT>
-+    messages<_CharT>::~messages()
-+    { 
-+      if (_M_name_messages != _S_get_c_name())
-+	delete [] _M_name_messages;
-+      _S_destroy_c_locale(_M_c_locale_messages); 
-+    }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog 
-+    messages<_CharT>::do_open(const basic_string<char>& __s, 
-+			      const locale&) const
-+    { 
-+      // No error checking is done, assume the catalog exists and can
-+      // be used.
-+      __textdomain(__s.c_str());
-+      return 0;
-+    }
-+
-+  template<typename _CharT>
-+    void    
-+    messages<_CharT>::do_close(catalog) const 
-+    { }
-+
-+   // messages_byname
-+   template<typename _CharT>
-+     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
-+     : messages<_CharT>(__refs) 
-+     { 
-+       if (this->_M_name_messages != locale::facet::_S_get_c_name())
-+	 delete [] this->_M_name_messages;
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       this->_M_name_messages = __tmp;
-+
-+       if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	 {
-+	   this->_S_destroy_c_locale(this->_M_c_locale_messages);
-+	   this->_S_create_c_locale(this->_M_c_locale_messages, __s); 
-+	 }
-+     }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,698 @@
-+// std::moneypunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning optimize this for uclibc
-+#warning tailor for stub locale support
-+#endif
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  // Construct and return valid pattern consisting of some combination of:
-+  // space none symbol sign value
-+  money_base::pattern
-+  money_base::_S_construct_pattern(char __precedes, char __space, char __posn)
-+  { 
-+    pattern __ret;
-+
-+    // This insanely complicated routine attempts to construct a valid
-+    // pattern for use with monyepunct. A couple of invariants:
-+
-+    // if (__precedes) symbol -> value
-+    // else value -> symbol
-+    
-+    // if (__space) space
-+    // else none
-+
-+    // none == never first
-+    // space never first or last
-+
-+    // Any elegant implementations of this are welcome.
-+    switch (__posn)
-+      {
-+      case 0:
-+      case 1:
-+	// 1 The sign precedes the value and symbol.
-+	__ret.field[0] = sign;
-+	if (__space)
-+	  {
-+	    // Pattern starts with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[3] = symbol;
-+	      }
-+	    __ret.field[2] = space;
-+	  }
-+	else
-+	  {
-+	    // Pattern starts with sign and ends with none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 2:
-+	// 2 The sign follows the value and symbol.
-+	if (__space)
-+	  {
-+	    // Pattern either ends with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[1] = space;
-+	    __ret.field[3] = sign;
-+	  }
-+	else
-+	  {
-+	    // Pattern ends with sign then none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[1] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[1] = symbol;
-+	      }
-+	    __ret.field[2] = sign;
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 3:
-+	// 3 The sign immediately precedes the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = sign;
-+	    __ret.field[1] = symbol;	    
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;		
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = symbol;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = sign;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      case 4:
-+	// 4 The sign immediately follows the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = symbol;
-+	    __ret.field[1] = sign;
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = sign;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      default:
-+	;
-+      }
-+    return __ret;
-+  }
-+
-+  template<> 
-+    void
-+    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, 
-+						     const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, 
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == true
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+	}
-+    }
-+
-+  template<> 
-+    void
-+    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, 
-+						      const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, false>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == false
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+	}
-+    }
-+
-+  template<> 
-+    moneypunct<char, true>::~moneypunct()
-+    { delete _M_data; }
-+
-+  template<> 
-+    moneypunct<char, false>::~moneypunct()
-+    { delete _M_data; }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<> 
-+    void
-+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+							const char*)
-+#else
-+							const char* __name)
-+#endif
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<wchar_t, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
-+	      _M_data->_M_atoms[__i] = btowc(uc);
-+	    }
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  try
-+	    {
-+	      mbstate_t __state;
-+	      size_t __len = strlen(__cpossign);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+	      _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+	      
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{ 
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+	      _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+	      
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+	      _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+	  catch (...)
-+	    {
-+	      delete _M_data;
-+	      _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;	      
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+	      __throw_exception_again;
-+	    } 
-+	  
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<> 
-+  void
-+  moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+						       const char*)
-+#else
-+                                                       const char* __name)
-+#endif
-+  {
-+    if (!_M_data)
-+      _M_data = new __moneypunct_cache<wchar_t, false>;
-+
-+    if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+          _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
-+	      _M_data->_M_atoms[__i] = btowc(uc);
-+	    }
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+          _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  try
-+            {
-+              mbstate_t __state;
-+              size_t __len;
-+              __len = strlen(__cpossign);
-+              if (__len)
-+                {
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+              _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+	      
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{ 
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+              _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+              _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+          catch (...)
-+	    {
-+	      delete _M_data;
-+              _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;	      
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+              __throw_exception_again;
-+	    }
-+
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+	                                                __pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+	                                                __nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<> 
-+    moneypunct<wchar_t, true>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+
-+  template<> 
-+    moneypunct<wchar_t, false>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,183 @@
-+// std::numpunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<> 
-+    void
-+    numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, 
-+							__cloc));
-+
-+	  // Check for NULL, which implies no grouping.
-+	  if (_M_data->_M_thousands_sep == '\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = "true";
-+      _M_data->_M_truename_size = strlen(_M_data->_M_truename);
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = strlen(_M_data->_M_falsename);
-+    }
-+ 
-+  template<> 
-+    numpunct<char>::~numpunct()
-+    { delete _M_data; }
-+   
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<> 
-+    void
-+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<wchar_t>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(_S_get_c_locale());
-+#endif
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(__num_base::_S_atoms_out[__i]);
-+	      _M_data->_M_atoms_out[__i] = btowc(uc);
-+	    }
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    {
-+	      uc = static_cast<unsigned char>(__num_base::_S_atoms_in[__j]);
-+	      _M_data->_M_atoms_in[__j] = btowc(uc);
-+	    }
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#endif
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+
-+	  if (_M_data->_M_thousands_sep == L'\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = L"true";
-+      _M_data->_M_truename_size = wcslen(_M_data->_M_truename);
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = wcslen(_M_data->_M_falsename);
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc	2004-09-10 10:48:00.000000000 -0500
-@@ -0,0 +1,356 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc));
-+	  _M_data->_M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc));
-+	  _M_data->_M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc));
-+	  _M_data->_M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc));
-+	  _M_data->_M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc));
-+	  _M_data->_M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc));
-+	  _M_data->_M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc));
-+	  _M_data->_M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc));
-+	  _M_data->_M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc));
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc));
-+	  _M_data->_M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc));
-+	  _M_data->_M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc));
-+	  _M_data->_M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc));
-+	  _M_data->_M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc));
-+	  _M_data->_M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc));
-+	  _M_data->_M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc));
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc));
-+	  _M_data->_M_aday2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc));
-+	  _M_data->_M_aday3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc));
-+	  _M_data->_M_aday4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc));
-+	  _M_data->_M_aday5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc));
-+	  _M_data->_M_aday6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc));
-+	  _M_data->_M_aday7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc));
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc));
-+	  _M_data->_M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc));
-+	  _M_data->_M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc));
-+	  _M_data->_M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc));
-+	  _M_data->_M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc));
-+	  _M_data->_M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc));
-+	  _M_data->_M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc));
-+	  _M_data->_M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc));
-+	  _M_data->_M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc));
-+	  _M_data->_M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc));
-+	  _M_data->_M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc));
-+	  _M_data->_M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc));
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc));
-+	  _M_data->_M_amonth02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc));
-+	  _M_data->_M_amonth03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc));
-+	  _M_data->_M_amonth04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc));
-+	  _M_data->_M_amonth05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc));
-+	  _M_data->_M_amonth06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc));
-+	  _M_data->_M_amonth07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc));
-+	  _M_data->_M_amonth08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc));
-+	  _M_data->_M_amonth09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc));
-+	  _M_data->_M_amonth10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc));
-+	  _M_data->_M_amonth11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc));
-+	  _M_data->_M_amonth12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_12, __cloc));
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,68 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(size_t __refs) 
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 
-+    : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
-+				     size_t __refs) 
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(__s)
-+    { 
-+      char* __tmp = new char[std::strlen(__s) + 1];
-+      std::strcpy(__tmp, __s);
-+      _M_name_timepunct = __tmp;
-+      _M_initialize_timepunct(__cloc); 
-+    }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::~__timepunct()
-+    { 
-+      if (_M_name_timepunct != _S_get_c_name())
-+	delete [] _M_name_timepunct;
-+      delete _M_data; 
-+      _S_destroy_c_locale(_M_c_locale_timepunct); 
-+    }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,58 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003
-+// Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  struct ctype_base
-+  {
-+    // Note: In uClibc, the following two types depend on configuration.
-+ 
-+    // Non-standard typedefs.
-+    typedef const __ctype_touplow_t* __to_type;
-+
-+    // NB: Offsets into ctype<char>::_M_table force a particular size
-+    // on the mask type. Because of this, we don't use an enum.
-+    typedef __ctype_mask_t	mask;   
-+    static const mask upper    	= _ISupper;
-+    static const mask lower 	= _ISlower;
-+    static const mask alpha 	= _ISalpha;
-+    static const mask digit 	= _ISdigit;
-+    static const mask xdigit 	= _ISxdigit;
-+    static const mask space 	= _ISspace;
-+    static const mask print 	= _ISprint;
-+    static const mask graph 	= _ISalpha | _ISdigit | _ISpunct;
-+    static const mask cntrl 	= _IScntrl;
-+    static const mask punct 	= _ISpunct;
-+    static const mask alnum 	= _ISalpha | _ISdigit;
-+  };
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,69 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-+// functions go in ctype.cc
-+  
-+  bool
-+  ctype<char>::
-+  is(mask __m, char __c) const
-+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
-+
-+  const char*
-+  ctype<char>::
-+  is(const char* __low, const char* __high, mask* __vec) const
-+  {
-+    while (__low < __high)
-+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
-+    return __high;
-+  }
-+
-+  const char*
-+  ctype<char>::
-+  scan_is(mask __m, const char* __low, const char* __high) const
-+  {
-+    while (__low < __high 
-+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
-+      ++__low;
-+    return __low;
-+  }
-+
-+  const char*
-+  ctype<char>::
-+  scan_not(mask __m, const char* __low, const char* __high) const
-+  {
-+    while (__low < __high 
-+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
-+      ++__low;
-+    return __low;
-+  }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,92 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
-+// Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// Information as gleaned from /usr/include/ctype.h
-+
-+  const ctype_base::mask*
-+  ctype<char>::classic_table() throw()
-+  { return __C_ctype_b; }
-+
-+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
-+		     size_t __refs) 
-+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
-+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
-+  {
-+    _M_toupper = __C_ctype_toupper;
-+    _M_tolower = __C_ctype_tolower;
-+    _M_table = __table ? __table : __C_ctype_b;
-+    memset(_M_widen, 0, sizeof(_M_widen));
-+    memset(_M_narrow, 0, sizeof(_M_narrow));
-+  }
-+
-+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
-+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
-+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
-+  {
-+    _M_toupper = __C_ctype_toupper;
-+    _M_tolower = __C_ctype_tolower;
-+    _M_table = __table ? __table : __C_ctype_b;
-+    memset(_M_widen, 0, sizeof(_M_widen));
-+    memset(_M_narrow, 0, sizeof(_M_narrow));
-+  }
-+
-+  char
-+  ctype<char>::do_toupper(char __c) const
-+  { return _M_toupper[static_cast<unsigned char>(__c)]; }
-+
-+  const char*
-+  ctype<char>::do_toupper(char* __low, const char* __high) const
-+  {
-+    while (__low < __high)
-+      {
-+	*__low = _M_toupper[static_cast<unsigned char>(*__low)];
-+	++__low;
-+      }
-+    return __high;
-+  }
-+
-+  char
-+  ctype<char>::do_tolower(char __c) const
-+  { return _M_tolower[static_cast<unsigned char>(__c)]; }
-+
-+  const char* 
-+  ctype<char>::do_tolower(char* __low, const char* __high) const
-+  {
-+    while (__low < __high)
-+      {
-+	*__low = _M_tolower[static_cast<unsigned char>(*__low)];
-+	++__low;
-+      }
-+    return __high;
-+  }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,44 @@
-+// Specific definitions for GNU/Linux  -*- C++ -*-
-+
-+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+#ifndef _GLIBCXX_OS_DEFINES
-+#define _GLIBCXX_OS_DEFINES 1
-+
-+// System-specific #define, typedefs, corrections, etc, go here.  This
-+// file will come before all others.
-+
-+// This keeps isanum, et al from being propagated as macros.
-+#define __NO_CTYPE 1
-+
-+#include <features.h>
-+
-+// We must not see the optimized string functions GNU libc defines.
-+#define __NO_STRING_INLINES
-+
-+#endif
-diff -urN gcc-3.4.2-dist/libstdc++-v3/configure gcc-3.4.2/libstdc++-v3/configure
---- gcc-3.4.2-dist/libstdc++-v3/configure	2004-08-13 15:44:04.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/configure	2004-09-10 10:47:40.000000000 -0500
-@@ -3878,6 +3878,11 @@
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd*)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5479,7 +5479,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5545,6 +5550,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      xlinux-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
-@@ -5759,6 +5767,77 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      echo "$as_me:$LINENO: result: uclibc" >&5
-+echo "${ECHO_T}uclibc" >&6
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      # Extract the first word of "msgfmt", so it can be a program name with args.
-+set dummy msgfmt; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_check_msgfmt+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test -n "$check_msgfmt"; then
-+  ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+  for ac_exec_ext in '' $ac_executable_extensions; do
-+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_check_msgfmt="yes"
-+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+done
-+
-+  test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
-+fi
-+fi
-+check_msgfmt=$ac_cv_prog_check_msgfmt
-+if test -n "$check_msgfmt"; then
-+  echo "$as_me:$LINENO: result: $check_msgfmt" >&5
-+echo "${ECHO_T}$check_msgfmt" >&6
-+else
-+  echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+
-+
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/configure.host gcc-3.4.2/libstdc++-v3/configure.host
---- gcc-3.4.2-dist/libstdc++-v3/configure.host	2004-08-27 14:52:30.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/configure.host	2004-09-10 10:47:40.000000000 -0500
-@@ -217,6 +217,12 @@
-     ;;
- esac
- 
-+# Override for uClibc since linux-uclibc gets mishandled above.
-+case "${host_os}" in
-+  *-uclibc*)
-+    os_include_dir="os/uclibc"
-+    ;;
-+esac
- 
- # Set any OS-dependent and CPU-dependent bits.
- # THIS TABLE IS SORTED.  KEEP IT THAT WAY.
-diff -urN gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4 gcc-3.4.2/libstdc++-v3/crossconfig.m4
---- gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4	2004-07-06 20:23:49.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/crossconfig.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -138,6 +138,99 @@
- 	;;
-     esac
-     ;;
-+  *-uclibc*)
-+# Temporary hack until we implement the float versions of the libm funcs
-+    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-+      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-+      fp.h float.h endian.h inttypes.h locale.h float.h stdint.h])
-+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-+    AC_SUBST(SECTION_FLAGS)
-+    GLIBCXX_CHECK_LINKER_FEATURES
-+    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-+    GLIBCXX_CHECK_WCHAR_T_SUPPORT
-+
-+    # For LFS.
-+    AC_DEFINE(HAVE_INT64_T)
-+    case "$target" in
-+      *-uclinux*)
-+        # Don't enable LFS with uClinux
-+        ;;
-+      *)
-+        AC_DEFINE(_GLIBCXX_USE_LFS)
-+    esac
-+
-+    # For showmanyc_helper().
-+    AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
-+    GLIBCXX_CHECK_POLL
-+    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
-+
-+    # For xsputn_2().
-+    AC_CHECK_HEADERS(sys/uio.h)
-+    GLIBCXX_CHECK_WRITEV
-+
-+#     AC_DEFINE(HAVE_ACOSF)
-+#     AC_DEFINE(HAVE_ASINF)
-+#     AC_DEFINE(HAVE_ATANF)
-+#     AC_DEFINE(HAVE_ATAN2F)
-+    AC_DEFINE(HAVE_CEILF)
-+    AC_DEFINE(HAVE_COPYSIGN)
-+#     AC_DEFINE(HAVE_COPYSIGNF)
-+#     AC_DEFINE(HAVE_COSF)
-+#     AC_DEFINE(HAVE_COSHF)
-+#     AC_DEFINE(HAVE_EXPF)
-+#     AC_DEFINE(HAVE_FABSF)
-+    AC_DEFINE(HAVE_FINITE)
-+    AC_DEFINE(HAVE_FINITEF)
-+    AC_DEFINE(HAVE_FLOORF)
-+#     AC_DEFINE(HAVE_FMODF)
-+#     AC_DEFINE(HAVE_FREXPF)
-+    AC_DEFINE(HAVE_HYPOT)
-+#     AC_DEFINE(HAVE_HYPOTF)
-+    AC_DEFINE(HAVE_ISINF)
-+    AC_DEFINE(HAVE_ISINFF)
-+    AC_DEFINE(HAVE_ISNAN)
-+    AC_DEFINE(HAVE_ISNANF)
-+#     AC_DEFINE(HAVE_LOGF)
-+#     AC_DEFINE(HAVE_LOG10F)
-+#     AC_DEFINE(HAVE_MODFF)
-+#     AC_DEFINE(HAVE_SINF)
-+#     AC_DEFINE(HAVE_SINHF)
-+#     AC_DEFINE(HAVE_SINCOS)
-+#     AC_DEFINE(HAVE_SINCOSF)
-+    AC_DEFINE(HAVE_SQRTF)
-+#     AC_DEFINE(HAVE_TANF)
-+#     AC_DEFINE(HAVE_TANHF)
-+    if test x"long_double_math_on_this_cpu" = x"yes"; then
-+      AC_MSG_ERROR([long_double_math_on_this_cpu is yes!])
-+#       AC_DEFINE(HAVE_ACOSL)
-+#       AC_DEFINE(HAVE_ASINL)
-+#       AC_DEFINE(HAVE_ATANL)
-+#       AC_DEFINE(HAVE_ATAN2L)
-+#       AC_DEFINE(HAVE_CEILL)
-+#       AC_DEFINE(HAVE_COPYSIGNL)
-+#       AC_DEFINE(HAVE_COSL)
-+#       AC_DEFINE(HAVE_COSHL)
-+#       AC_DEFINE(HAVE_EXPL)
-+#       AC_DEFINE(HAVE_FABSL)
-+#       AC_DEFINE(HAVE_FINITEL)
-+#       AC_DEFINE(HAVE_FLOORL)
-+#       AC_DEFINE(HAVE_FMODL)
-+#       AC_DEFINE(HAVE_FREXPL)
-+#       AC_DEFINE(HAVE_HYPOTL)
-+#       AC_DEFINE(HAVE_ISINFL)
-+#       AC_DEFINE(HAVE_ISNANL)
-+#       AC_DEFINE(HAVE_LOGL)
-+#       AC_DEFINE(HAVE_LOG10L)
-+#       AC_DEFINE(HAVE_MODFL)
-+#       AC_DEFINE(HAVE_POWL)
-+#       AC_DEFINE(HAVE_SINL)
-+#       AC_DEFINE(HAVE_SINHL)
-+#       AC_DEFINE(HAVE_SINCOSL)
-+#       AC_DEFINE(HAVE_SQRTL)
-+#       AC_DEFINE(HAVE_TANL)
-+#       AC_DEFINE(HAVE_TANHL)
-+    fi
-+    ;;
-   *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
-     AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-       machine/endian.h machine/param.h sys/machine.h sys/types.h \
-@@ -152,7 +245,7 @@
-     AC_DEFINE(HAVE_INT64_T)
-     case "$target" in
-       *-uclinux*)
--        # Don't enable LFS with uClibc
-+        # Don't enable LFS with uClinux
-         ;;
-       *)
-         AC_DEFINE(_GLIBCXX_USE_LFS)
-diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h
---- gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h	2003-12-08 21:51:45.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h	2004-09-10 10:47:40.000000000 -0500
-@@ -101,7 +101,9 @@
- using std::wmemcpy;
- using std::wmemmove;
- using std::wmemset;
-+#if _GLIBCXX_HAVE_WCSFTIME
- using std::wcsftime;
-+#endif
- 
- #if _GLIBCXX_USE_C99
- using std::wcstold;
-diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h
---- gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h	2004-07-20 03:52:12.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h	2004-09-10 10:47:40.000000000 -0500
-@@ -179,7 +179,9 @@
-   using ::wcscoll;
-   using ::wcscpy;
-   using ::wcscspn;
-+#if _GLIBCXX_HAVE_WCSFTIME
-   using ::wcsftime;
-+#endif
-   using ::wcslen;
-   using ::wcsncat;
-   using ::wcsncmp;
Index: toolchain/gcc/3.4.3/700-pr15068-fix.patch
===================================================================
--- toolchain/gcc/3.4.3/700-pr15068-fix.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/700-pr15068-fix.patch	(working copy)
@@ -1,44 +0,0 @@
-See http://gcc.gnu.org/PR15068
-
-Fixes error
-
-../sysdeps/generic/s_fmax.c: In function `__fmax':
-../sysdeps/generic/s_fmax.c:28: internal compiler error: in elim_reg_cond, at flow.c:3257
-Please submit a full bug report,
-with preprocessed source if appropriate.
-See <URL:http://gcc.gnu.org/bugs.html> for instructions.
-make[2]: *** [/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/math/s_fmax.o] Error 1
-make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822/math'
-make[1]: *** [math/others] Error 2
-make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822'
-make: *** [all] Error 2
-
-[ rediffed against gcc-3.4.1, with elbow grease, ending up with same thing as
-http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3 ]
-
---- gcc-3.4.1/gcc/flow.c.old	2004-02-27 19:39:19.000000000 -0800
-+++ gcc-3.4.1/gcc/flow.c	2004-08-26 07:29:46.000000000 -0700
-@@ -1878,6 +1878,7 @@
- 	  rtx set_src = SET_SRC (pc_set (BB_END (bb)));
- 	  rtx cond_true = XEXP (set_src, 0);
- 	  rtx reg = XEXP (cond_true, 0);
-+ 	  enum rtx_code inv_cond;
- 
- 	  if (GET_CODE (reg) == SUBREG)
- 	    reg = SUBREG_REG (reg);
-@@ -1886,11 +1887,13 @@
- 	     in the form of a comparison of a register against zero.  
- 	     If the condition is more complex than that, then it is safe
- 	     not to record any information.  */
--	  if (GET_CODE (reg) == REG
-+ 	  inv_cond = reversed_comparison_code (cond_true, BB_END (bb));
-+ 	  if (inv_cond != UNKNOWN
-+	      && GET_CODE (reg) == REG
- 	      && XEXP (cond_true, 1) == const0_rtx)
- 	    {
- 	      rtx cond_false
--		= gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)),
-+		= gen_rtx_fmt_ee (inv_cond,
- 				  GET_MODE (cond_true), XEXP (cond_true, 0),
- 				  XEXP (cond_true, 1));
- 	      if (GET_CODE (XEXP (set_src, 1)) == PC)
Index: toolchain/gcc/3.4.3/601-gcc34-arm-ldm.patch
===================================================================
--- toolchain/gcc/3.4.3/601-gcc34-arm-ldm.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/601-gcc34-arm-ldm.patch	(working copy)
@@ -1,119 +0,0 @@
---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm	2004-02-27 09:51:05.000000000 -0500
-+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:16:25.000000000 -0400
-@@ -8520,6 +8520,26 @@
-   return_used_this_function = 0;  
- }
- 
-+/* Return the number (counting from 0) of
-+   the least significant set bit in MASK.  */
-+
-+#ifdef __GNUC__
-+inline
-+#endif
-+static int
-+number_of_first_bit_set (mask)
-+     int mask;
-+{
-+  int bit;
-+
-+  for (bit = 0;
-+       (mask & (1 << bit)) == 0;
-+       ++bit)
-+    continue;
-+
-+  return bit;
-+}
-+
- const char *
- arm_output_epilogue (rtx sibling)
- {
-@@ -8753,27 +8773,47 @@
- 	  saved_regs_mask |=   (1 << PC_REGNUM);
- 	}
- 
--      /* Load the registers off the stack.  If we only have one register
--	 to load use the LDR instruction - it is faster.  */
--      if (saved_regs_mask == (1 << LR_REGNUM))
--	{
--	  /* The exception handler ignores the LR, so we do
--	     not really need to load it off the stack.  */
--	  if (eh_ofs)
--	    asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM);
--	  else
--	    asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM);
--	}
--      else if (saved_regs_mask)
-+      if (saved_regs_mask)
- 	{
--	  if (saved_regs_mask & (1 << SP_REGNUM))
--	    /* Note - write back to the stack register is not enabled
--	       (ie "ldmfd sp!...").  We know that the stack pointer is
--	       in the list of registers and if we add writeback the
--	       instruction becomes UNPREDICTABLE.  */
--	    print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask);
-+	  /* Load the registers off the stack.  If we only have one register
-+	     to load use the LDR instruction - it is faster.  */
-+	  if (bit_count (saved_regs_mask) == 1)
-+	    {
-+	      int reg = number_of_first_bit_set (saved_regs_mask);
-+
-+	      switch (reg)
-+		{
-+		case SP_REGNUM:
-+		  /* Mustn't use base writeback when loading SP.  */
-+		  asm_fprintf (f, "\tldr\t%r, [%r]\n", SP_REGNUM, SP_REGNUM);
-+		  break;
-+		  
-+		case LR_REGNUM:
-+		  if (eh_ofs)
-+		    {
-+		      /* The exception handler ignores the LR, so we do
-+			 not really need to load it off the stack.  */
-+		      asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM);
-+		      break;
-+		    }
-+		  /* else fall through */
-+		  
-+		default:
-+		  asm_fprintf (f, "\tldr\t%r, [%r], #4\n", reg, SP_REGNUM);
-+		  break;
-+		}
-+	    }
- 	  else
--	    print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask);
-+	    {
-+	      if (saved_regs_mask & (1 << SP_REGNUM))
-+		/* Note - write back to the stack register is not enabled
-+		   (ie "ldmfd sp!...").  We know that the stack pointer is
-+		   in the list of registers and if we add writeback the
-+		   instruction becomes UNPREDICTABLE.  */
-+		print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask);
-+	      else
-+		print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask);
-+	    }
- 	}
- 
-       if (current_function_pretend_args_size)
-@@ -11401,22 +11441,6 @@
-     }
- }
- 
--/* Return the number (counting from 0) of
--   the least significant set bit in MASK.  */
--
--inline static int
--number_of_first_bit_set (int mask)
--{
--  int bit;
--
--  for (bit = 0;
--       (mask & (1 << bit)) == 0;
--       ++bit)
--    continue;
--
--  return bit;
--}
--
- /* Generate code to return from a thumb function.
-    If 'reg_containing_return_addr' is -1, then the return address is
-    actually on the stack, at the stack pointer.  */
Index: toolchain/gcc/3.4.3/arm-softfloat.patch.conditional
===================================================================
--- toolchain/gcc/3.4.3/arm-softfloat.patch.conditional	(revision 20005)
+++ toolchain/gcc/3.4.3/arm-softfloat.patch.conditional	(working copy)
@@ -1,270 +0,0 @@
-Note... modified my mjn3 to not conflict with the big endian arm patch.
-Warning!!!  Only the linux target is aware of TARGET_ENDIAN_DEFAULT.
-Also changed
-  #define SUBTARGET_EXTRA_ASM_SPEC "\
-  %{!mcpu=*:-mcpu=xscale} \
-  %{mhard-float:-mfpu=fpa} \
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
-to
-  #define SUBTARGET_EXTRA_ASM_SPEC "\
-  %{mhard-float:-mfpu=fpa} \
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
-in gcc/config/arm/linux-elf.h.
-#
-# Submitted:
-#
-# Dimitry Andric <dimitry@andric.com>, 2004-05-01
-#
-# Description:
-#
-# Nicholas Pitre released this patch for gcc soft-float support here: 
-# http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-October/006436.html
-#
-# This version has been adapted to work with gcc 3.4.0.
-#
-# The original patch doesn't distinguish between softfpa and softvfp modes
-# in the way Nicholas Pitre probably meant.  His description is:
-#
-# "Default is to use APCS-32 mode with soft-vfp.  The old Linux default for
-# floats can be achieved with -mhard-float or with the configure
-# --with-float=hard option.  If -msoft-float or --with-float=soft is used then
-# software float support will be used just like the default but with the legacy
-# big endian word ordering for double float representation instead."
-#
-# Which means the following:
-#
-# * If you compile without -mhard-float or -msoft-float, you should get
-#   software floating point, using the VFP format.  The produced object file
-#   should have these flags in its header:
-#
-#     private flags = 600: [APCS-32] [VFP float format] [software FP]
-#
-# * If you compile with -mhard-float, you should get hardware floating point,
-#   which always uses the FPA format.  Object file header flags should be:
-#
-#     private flags = 0: [APCS-32] [FPA float format]
-#
-# * If you compile with -msoft-float, you should get software floating point,
-#   using the FPA format.  This is done for compatibility reasons with many
-#   existing distributions.  Object file header flags should be:
-#
-#     private flags = 200: [APCS-32] [FPA float format] [software FP]
-#
-# The original patch from Nicholas Pitre contained the following constructs:
-#
-#   #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
-#     %{mhard-float:-mfpu=fpa} \
-#     %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-#
-# However, gcc doesn't accept this ";:" notation, used in the 3rd line.  This
-# is probably the reason Robert Schwebel modified it to:
-#
-#   #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
-#     %{mhard-float:-mfpu=fpa} \
-#     %{!mhard-float: %{msoft-float:-mfpu=softfpa -mfpu=softvfp}}"
-#
-# But this causes the following behaviour:
-#
-# * If you compile without -mhard-float or -msoft-float, the compiler generates
-#   software floating point instructions, but *nothing* is passed to the
-#   assembler, which results in an object file which has flags:
-#
-#     private flags = 0: [APCS-32] [FPA float format]
-#
-#   This is not correct!
-#
-# * If you compile with -mhard-float, the compiler generates hardware floating
-#   point instructions, and passes "-mfpu=fpa" to the assembler, which results
-#   in an object file which has the same flags as in the previous item, but now
-#   those *are* correct.
-#    
-# * If you compile with -msoft-float, the compiler generates software floating
-#   point instructions, and passes "-mfpu=softfpa -mfpu=softvfp" (in that
-#   order) to the assembler, which results in an object file with flags:
-#
-#   private flags = 600: [APCS-32] [VFP float format] [software FP]
-#
-#   This is not correct, because the last "-mfpu=" option on the assembler
-#   command line determines the actual FPU convention used (which should be FPA
-#   in this case).
-#
-# Therefore, I modified this patch to get the desired behaviour.  Every
-# instance of the notation:
-#
-#   %{msoft-float:-mfpu=softfpa -mfpu=softvfp}
-#
-# was changed to:
-#
-#   %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}
-#
-# I also did the following:
-# 
-# * Modified all TARGET_DEFAULT macros I could find to include ARM_FLAG_VFP, to
-#   be consistent with Nicholas' original patch.
-# * Removed any "msoft-float" or "mhard-float" from all MULTILIB_DEFAULTS
-#   macros I could find.  I think that if you compile without any options, you
-#   would like to get the defaults. :)
-# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed
-#   anymore.  (The required functions are now in libgcc.)
-
-diff -urN gcc-3.4.1-old/gcc/config/arm/coff.h gcc-3.4.1/gcc/config/arm/coff.h
---- gcc-3.4.1-old/gcc/config/arm/coff.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/coff.h	2004-09-02 21:51:15.000000000 -0500
-@@ -31,11 +31,16 @@
- #define TARGET_VERSION fputs (" (ARM/coff)", stderr)
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" }
-+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" }
- #endif
- 
- /* This is COFF, but prefer stabs.  */
-diff -urN gcc-3.4.1-old/gcc/config/arm/elf.h gcc-3.4.1/gcc/config/arm/elf.h
---- gcc-3.4.1-old/gcc/config/arm/elf.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -46,7 +46,9 @@
- 
- #ifndef SUBTARGET_ASM_FLOAT_SPEC
- #define SUBTARGET_ASM_FLOAT_SPEC "\
--%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}"
-+%{mapcs-float:-mfloat} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- #endif
- 
- #ifndef ASM_SPEC
-@@ -106,12 +108,17 @@
- #endif
- 
- #ifndef TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- #endif
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
-+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
- #endif
- 
- #define TARGET_ASM_FILE_START_APP_OFF true
-diff -urN gcc-3.4.1-old/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h
---- gcc-3.4.1-old/gcc/config/arm/linux-elf.h	2004-09-02 21:50:52.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/linux-elf.h	2004-09-02 22:00:49.000000000 -0500
-@@ -44,12 +44,26 @@
- #define TARGET_LINKER_EMULATION "armelf_linux"
- #endif
- 
--/* Default is to use APCS-32 mode.  */
-+/*
-+ * Default is to use APCS-32 mode with soft-vfp.
-+ * The old Linux default for floats can be achieved with -mhard-float
-+ * or with the configure --with-float=hard option.
-+ * If -msoft-float or --with-float=soft is used then software float 
-+ * support will be used just like the default but with the legacy
-+ * big endian word ordering for double float representation instead.
-+ */
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT \
--		( ARM_FLAG_APCS_32 | \
--		  ARM_FLAG_MMU_TRAPS | \
--		  TARGET_ENDIAN_DEFAULT )
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_SOFT_FLOAT	\
-+	| TARGET_ENDIAN_DEFAULT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_MMU_TRAPS )
-+
-+#undef  SUBTARGET_EXTRA_ASM_SPEC
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- 
- #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
- 
-@@ -57,7 +71,7 @@
- 
- #undef  MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" }
- 
- #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
- 
-@@ -72,7 +86,7 @@
-    %{shared:-lc} \
-    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
- 
--#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
-+#define LIBGCC_SPEC "-lgcc"
- 
- /* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
-    the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
-diff -urN gcc-3.4.1-old/gcc/config/arm/t-linux gcc-3.4.1/gcc/config/arm/t-linux
---- gcc-3.4.1-old/gcc/config/arm/t-linux	2003-09-20 16:09:07.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/t-linux	2004-09-02 21:51:15.000000000 -0500
-@@ -4,7 +4,10 @@
- LIBGCC2_DEBUG_CFLAGS = -g0
- 
- LIB1ASMSRC = arm/lib1funcs.asm
--LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
-+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
-+	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-+	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-+	_fixsfsi _fixunssfsi
- 
- # MULTILIB_OPTIONS = mhard-float/msoft-float
- # MULTILIB_DIRNAMES = hard-float soft-float
-diff -urN gcc-3.4.1-old/gcc/config/arm/unknown-elf.h gcc-3.4.1/gcc/config/arm/unknown-elf.h
---- gcc-3.4.1-old/gcc/config/arm/unknown-elf.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/unknown-elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -30,7 +30,12 @@
- 
- /* Default to using APCS-32 and software floating point.  */
- #ifndef TARGET_DEFAULT
--#define TARGET_DEFAULT	(ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- #endif
- 
- /* Now we define the strings used to build the spec file.  */
-diff -urN gcc-3.4.1-old/gcc/config/arm/xscale-elf.h gcc-3.4.1/gcc/config/arm/xscale-elf.h
---- gcc-3.4.1-old/gcc/config/arm/xscale-elf.h	2003-07-01 18:26:43.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/xscale-elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -49,11 +49,12 @@
- 		     endian, regardless of the endian-ness of the memory
- 		     system.  */
- 		     
--#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
--  %{mhard-float:-mfpu=fpa} \
--  %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{!mcpu=*:-mcpu=xscale} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" }
-+  { "mlittle-endian", "mno-thumb-interwork", "marm" }
- #endif
Index: toolchain/gcc/3.4.3/900-nios2.patch
===================================================================
--- toolchain/gcc/3.4.3/900-nios2.patch	(revision 20005)
+++ toolchain/gcc/3.4.3/900-nios2.patch	(working copy)
@@ -1,10211 +0,0 @@
---- gcc-3.4.3/gcc/Makefile.in
-+++ gcc-3.4.3-nios2/gcc/Makefile.in
-@@ -3085,7 +3085,7 @@ install-mkheaders: stmp-int-hdrs $(STMP_
- 	  $(INSTALL_DATA) $(srcdir)/README-fixinc \
- 	    $(DESTDIR)$(itoolsdatadir)/include/README ; \
- 	  $(INSTALL_SCRIPT) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh ; \
--	  $(INSTALL_PROGRAM) fixinc/fixincl $(DESTDIR)$(itoolsdir)/fixincl ; \
-+	  $(INSTALL_PROGRAM) fixinc/fixincl$(build_exeext) $(DESTDIR)$(itoolsdir)/fixincl$(build_exeext) ; \
- 	  $(INSTALL_DATA) $(srcdir)/gsyslimits.h \
- 	    $(DESTDIR)$(itoolsdatadir)/gsyslimits.h ; \
- 	else :; fi
---- gcc-3.4.3/gcc/combine.c
-+++ gcc-3.4.3-nios2/gcc/combine.c
-@@ -4380,6 +4380,14 @@ combine_simplify_rtx (rtx x, enum machin
- 					 mode);
- 	    }
- 
-+#ifndef __nios2__
-+/* This screws up Nios II in this test case:
-+
-+if (x & 1)
-+  return 2;
-+else
-+  return 3;
-+*/
- 	  else if (STORE_FLAG_VALUE == 1
- 		   && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
- 		   && op1 == const0_rtx
-@@ -4391,6 +4399,7 @@ combine_simplify_rtx (rtx x, enum machin
- 				 gen_lowpart_for_combine (mode, op0),
- 				 const1_rtx);
- 	    }
-+#endif
- 
- 	  else if (STORE_FLAG_VALUE == 1
- 		   && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
---- gcc-3.4.3/gcc/config/nios2/crti.asm
-+++ gcc-3.4.3-nios2/gcc/config/nios2/crti.asm
-@@ -0,0 +1,88 @@
-+/*
-+  Copyright (C) 2003 
-+ by Jonah Graham (jgraham@altera.com)
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with files
-+   compiled with GCC to produce an executable, this does not 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.
-+
-+
-+This file just make a stack frame for the contents of the .fini and
-+.init sections.  Users may put any desired instructions in those
-+sections.
-+
-+
-+While technically any code can be put in the init and fini sections
-+most stuff will not work other than stuff which obeys the call frame
-+and ABI. All the call-preserved registers are saved, the call clobbered
-+registers should have been saved by the code calling init and fini.
-+
-+See crtstuff.c for an example of code that inserts itself in the 
-+init and fini sections. 
-+
-+See crt0.s for the code that calls init and fini.
-+*/
-+
-+	.file	"crti.asm"
-+
-+	.section	".init"
-+	.align 2
-+	.global	_init
-+_init:
-+	addi	sp, sp, -48
-+	stw	ra, 44(sp)
-+	stw	r23, 40(sp)
-+	stw	r22, 36(sp)
-+	stw	r21, 32(sp)
-+	stw	r20, 28(sp)
-+	stw	r19, 24(sp)
-+	stw	r18, 20(sp)
-+	stw	r17, 16(sp)
-+	stw	r16, 12(sp)
-+	stw	fp, 8(sp)
-+	mov	fp, sp
-+	
-+	
-+	.section	".fini"
-+	.align	2
-+	.global	_fini
-+_fini:
-+	addi	sp, sp, -48
-+	stw	ra, 44(sp)
-+	stw	r23, 40(sp)
-+	stw	r22, 36(sp)
-+	stw	r21, 32(sp)
-+	stw	r20, 28(sp)
-+	stw	r19, 24(sp)
-+	stw	r18, 20(sp)
-+	stw	r17, 16(sp)
-+	stw	r16, 12(sp)
-+	stw	fp, 8(sp)
-+	mov	fp, sp
-+	
-+
---- gcc-3.4.3/gcc/config/nios2/crtn.asm
-+++ gcc-3.4.3-nios2/gcc/config/nios2/crtn.asm
-@@ -0,0 +1,70 @@
-+/*
-+  Copyright (C) 2003 
-+ by Jonah Graham (jgraham@altera.com)
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with files
-+   compiled with GCC to produce an executable, this does not 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.
-+
-+
-+This file just makes sure that the .fini and .init sections do in
-+fact return.  Users may put any desired instructions in those sections.
-+This file is the last thing linked into any executable.
-+*/	
-+	.file	"crtn.asm"
-+
-+
-+
-+	.section	".init"
-+	ldw	ra, 44(sp)
-+	ldw	r23, 40(sp)
-+	ldw	r22, 36(sp)
-+	ldw	r21, 32(sp)
-+	ldw	r20, 28(sp)
-+	ldw	r19, 24(sp)
-+	ldw	r18, 20(sp)
-+	ldw	r17, 16(sp)
-+	ldw	r16, 12(sp)
-+	ldw	fp, 8(sp)
-+	addi	sp, sp, -48
-+	ret
-+	
-+	.section	".fini"
-+	ldw	ra, 44(sp)
-+	ldw	r23, 40(sp)
-+	ldw	r22, 36(sp)
-+	ldw	r21, 32(sp)
-+	ldw	r20, 28(sp)
-+	ldw	r19, 24(sp)
-+	ldw	r18, 20(sp)
-+	ldw	r17, 16(sp)
-+	ldw	r16, 12(sp)
-+	ldw	fp, 8(sp)
-+	addi	sp, sp, -48
-+	ret
-+	
---- gcc-3.4.3/gcc/config/nios2/lib2-divmod-hi.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod-hi.c
-@@ -0,0 +1,123 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+extern HItype __modhi3 (HItype, HItype);
-+extern HItype __divhi3 (HItype, HItype);
-+extern HItype __umodhi3 (HItype, HItype);
-+extern HItype __udivhi3 (HItype, HItype);
-+
-+static UHItype udivmodhi4(UHItype, UHItype, word_type);
-+
-+static UHItype
-+udivmodhi4(UHItype num, UHItype den, word_type modwanted)
-+{
-+  UHItype bit = 1;
-+  UHItype res = 0;
-+
-+  while (den < num && bit && !(den & (1L<<15)))
-+    {
-+      den <<=1;
-+      bit <<=1;
-+    }
-+  while (bit)
-+    {
-+      if (num >= den)
-+	{
-+	  num -= den;
-+	  res |= bit;
-+	}
-+      bit >>=1;
-+      den >>=1;
-+    }
-+  if (modwanted) return num;
-+  return res;
-+}
-+
-+
-+HItype
-+__divhi3 (HItype a, HItype b)
-+{
-+  word_type neg = 0;
-+  HItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = !neg;
-+    }
-+
-+  if (b < 0)
-+    {
-+      b = -b;
-+      neg = !neg;
-+    }
-+
-+  res = udivmodhi4 (a, b, 0);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+HItype
-+__modhi3 (HItype a, HItype b)
-+{
-+  word_type neg = 0;
-+  HItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = 1;
-+    }
-+
-+  if (b < 0)
-+    b = -b;
-+
-+  res = udivmodhi4 (a, b, 1);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+HItype
-+__udivhi3 (HItype a, HItype b)
-+{
-+  return udivmodhi4 (a, b, 0);
-+}
-+
-+
-+HItype
-+__umodhi3 (HItype a, HItype b)
-+{
-+  return udivmodhi4 (a, b, 1);
-+}
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-divmod.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod.c
-@@ -0,0 +1,126 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+extern SItype __modsi3 (SItype, SItype);
-+extern SItype __divsi3 (SItype, SItype);
-+extern SItype __umodsi3 (SItype, SItype);
-+extern SItype __udivsi3 (SItype, SItype);
-+
-+static USItype udivmodsi4(USItype, USItype, word_type);
-+
-+/* 16-bit SI divide and modulo as used in NIOS */
-+
-+
-+static USItype
-+udivmodsi4(USItype num, USItype den, word_type modwanted)
-+{
-+  USItype bit = 1;
-+  USItype res = 0;
-+
-+  while (den < num && bit && !(den & (1L<<31)))
-+    {
-+      den <<=1;
-+      bit <<=1;
-+    }
-+  while (bit)
-+    {
-+      if (num >= den)
-+	{
-+	  num -= den;
-+	  res |= bit;
-+	}
-+      bit >>=1;
-+      den >>=1;
-+    }
-+  if (modwanted) return num;
-+  return res;
-+}
-+
-+
-+SItype
-+__divsi3 (SItype a, SItype b)
-+{
-+  word_type neg = 0;
-+  SItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = !neg;
-+    }
-+
-+  if (b < 0)
-+    {
-+      b = -b;
-+      neg = !neg;
-+    }
-+
-+  res = udivmodsi4 (a, b, 0);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+SItype
-+__modsi3 (SItype a, SItype b)
-+{
-+  word_type neg = 0;
-+  SItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = 1;
-+    }
-+
-+  if (b < 0)
-+    b = -b;
-+
-+  res = udivmodsi4 (a, b, 1);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+SItype
-+__udivsi3 (SItype a, SItype b)
-+{
-+  return udivmodsi4 (a, b, 0);
-+}
-+
-+
-+SItype
-+__umodsi3 (SItype a, SItype b)
-+{
-+  return udivmodsi4 (a, b, 1);
-+}
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-divtable.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divtable.c
-@@ -0,0 +1,46 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+UQItype __divsi3_table[] =
-+{
-+  0, 0/1, 0/2, 0/3, 0/4, 0/5, 0/6, 0/7, 0/8, 0/9, 0/10, 0/11, 0/12, 0/13, 0/14, 0/15,
-+  0, 1/1, 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15,
-+  0, 2/1, 2/2, 2/3, 2/4, 2/5, 2/6, 2/7, 2/8, 2/9, 2/10, 2/11, 2/12, 2/13, 2/14, 2/15,
-+  0, 3/1, 3/2, 3/3, 3/4, 3/5, 3/6, 3/7, 3/8, 3/9, 3/10, 3/11, 3/12, 3/13, 3/14, 3/15,
-+  0, 4/1, 4/2, 4/3, 4/4, 4/5, 4/6, 4/7, 4/8, 4/9, 4/10, 4/11, 4/12, 4/13, 4/14, 4/15,
-+  0, 5/1, 5/2, 5/3, 5/4, 5/5, 5/6, 5/7, 5/8, 5/9, 5/10, 5/11, 5/12, 5/13, 5/14, 5/15,
-+  0, 6/1, 6/2, 6/3, 6/4, 6/5, 6/6, 6/7, 6/8, 6/9, 6/10, 6/11, 6/12, 6/13, 6/14, 6/15,
-+  0, 7/1, 7/2, 7/3, 7/4, 7/5, 7/6, 7/7, 7/8, 7/9, 7/10, 7/11, 7/12, 7/13, 7/14, 7/15,
-+  0, 8/1, 8/2, 8/3, 8/4, 8/5, 8/6, 8/7, 8/8, 8/9, 8/10, 8/11, 8/12, 8/13, 8/14, 8/15,
-+  0, 9/1, 9/2, 9/3, 9/4, 9/5, 9/6, 9/7, 9/8, 9/9, 9/10, 9/11, 9/12, 9/13, 9/14, 9/15,
-+  0, 10/1, 10/2, 10/3, 10/4, 10/5, 10/6, 10/7, 10/8, 10/9, 10/10, 10/11, 10/12, 10/13, 10/14, 10/15,
-+  0, 11/1, 11/2, 11/3, 11/4, 11/5, 11/6, 11/7, 11/8, 11/9, 11/10, 11/11, 11/12, 11/13, 11/14, 11/15,
-+  0, 12/1, 12/2, 12/3, 12/4, 12/5, 12/6, 12/7, 12/8, 12/9, 12/10, 12/11, 12/12, 12/13, 12/14, 12/15,
-+  0, 13/1, 13/2, 13/3, 13/4, 13/5, 13/6, 13/7, 13/8, 13/9, 13/10, 13/11, 13/12, 13/13, 13/14, 13/15,
-+  0, 14/1, 14/2, 14/3, 14/4, 14/5, 14/6, 14/7, 14/8, 14/9, 14/10, 14/11, 14/12, 14/13, 14/14, 14/15,
-+  0, 15/1, 15/2, 15/3, 15/4, 15/5, 15/6, 15/7, 15/8, 15/9, 15/10, 15/11, 15/12, 15/13, 15/14, 15/15,
-+};
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-mul.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-mul.c
-@@ -0,0 +1,103 @@
-+/* while we are debugging (ie compile outside of gcc build) 
-+   disable gcc specific headers */
-+#ifndef DEBUG_MULSI3
-+
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+#else
-+#define SItype int
-+#define USItype unsigned int
-+#endif
-+
-+
-+extern SItype __mulsi3 (SItype, SItype);
-+
-+SItype
-+__mulsi3 (SItype a, SItype b)
-+{
-+  SItype res = 0;
-+  USItype cnt = a;
-+  
-+  while (cnt)
-+    {
-+      if (cnt & 1)
-+        {
-+	  res += b;	  
-+	}
-+      b <<= 1;
-+      cnt >>= 1;
-+    }
-+    
-+  return res;
-+}
-+/*
-+TODO: Choose best alternative implementation.
-+
-+SItype
-+__divsi3 (SItype a, SItype b)
-+{
-+  SItype res = 0;
-+  USItype cnt = 0;
-+  
-+  while (cnt < 32)
-+    {
-+      if (a & (1L << cnt))
-+        {
-+	  res += b;	  
-+	}
-+      b <<= 1;
-+      cnt++;
-+    }
-+    
-+  return res;
-+}
-+*/
-+
-+
-+#ifdef DEBUG_MULSI3
-+
-+int
-+main ()
-+{
-+  int i, j;
-+  int error = 0;
-+  
-+  for (i = -1000; i < 1000; i++)
-+    for (j = -1000; j < 1000; j++)
-+      {
-+	int expect = i * j;
-+	int actual = A__divsi3 (i, j);
-+	if (expect != actual)
-+	  {
-+	    printf ("error: %d * %d = %d not %d\n", i, j, expect, actual);
-+	    error = 1;
-+	  }
-+      }
-+
-+  return error;
-+}
-+#endif
---- gcc-3.4.3/gcc/config/nios2/nios2-dp-bit.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-dp-bit.c
-@@ -0,0 +1,1652 @@
-+
-+/* This is a software floating point library which can be used
-+   for targets without hardware floating point. 
-+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
-+   Free Software Foundation, Inc.
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with other files,
-+   some of which are compiled with GCC, to produce an executable,
-+   this library 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.  */
-+
-+/* This implements IEEE 754 format arithmetic, but does not provide a
-+   mechanism for setting the rounding mode, or for generating or handling
-+   exceptions.
-+
-+   The original code by Steve Chamberlain, hacked by Mark Eichin and Jim
-+   Wilson, all of Cygnus Support.  */
-+
-+/* The intended way to use this file is to make two copies, add `#define FLOAT'
-+   to one copy, then compile both copies and add them to libgcc.a.  */
-+
-+#include "tconfig.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "config/fp-bit.h"
-+
-+/* The following macros can be defined to change the behavior of this file:
-+   FLOAT: Implement a `float', aka SFmode, fp library.  If this is not
-+     defined, then this file implements a `double', aka DFmode, fp library.
-+   FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e.
-+     don't include float->double conversion which requires the double library.
-+     This is useful only for machines which can't support doubles, e.g. some
-+     8-bit processors.
-+   CMPtype: Specify the type that floating point compares should return.
-+     This defaults to SItype, aka int.
-+   US_SOFTWARE_GOFAST: This makes all entry points use the same names as the
-+     US Software goFast library.
-+   _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding
-+     two integers to the FLO_union_type.
-+   NO_DENORMALS: Disable handling of denormals.
-+   NO_NANS: Disable nan and infinity handling
-+   SMALL_MACHINE: Useful when operations on QIs and HIs are faster
-+     than on an SI */
-+
-+/* We don't currently support extended floats (long doubles) on machines
-+   without hardware to deal with them.
-+
-+   These stubs are just to keep the linker from complaining about unresolved
-+   references which can be pulled in from libio & libstdc++, even if the
-+   user isn't using long doubles.  However, they may generate an unresolved
-+   external to abort if abort is not used by the function, and the stubs
-+   are referenced from within libc, since libgcc goes before and after the
-+   system library.  */
-+
-+#ifdef DECLARE_LIBRARY_RENAMES
-+  DECLARE_LIBRARY_RENAMES
-+#endif
-+
-+#ifdef EXTENDED_FLOAT_STUBS
-+extern void abort (void);
-+void __extendsfxf2 (void) { abort(); }
-+void __extenddfxf2 (void) { abort(); }
-+void __truncxfdf2 (void) { abort(); }
-+void __truncxfsf2 (void) { abort(); }
-+void __fixxfsi (void) { abort(); }
-+void __floatsixf (void) { abort(); }
-+void __addxf3 (void) { abort(); }
-+void __subxf3 (void) { abort(); }
-+void __mulxf3 (void) { abort(); }
-+void __divxf3 (void) { abort(); }
-+void __negxf2 (void) { abort(); }
-+void __eqxf2 (void) { abort(); }
-+void __nexf2 (void) { abort(); }
-+void __gtxf2 (void) { abort(); }
-+void __gexf2 (void) { abort(); }
-+void __lexf2 (void) { abort(); }
-+void __ltxf2 (void) { abort(); }
-+
-+void __extendsftf2 (void) { abort(); }
-+void __extenddftf2 (void) { abort(); }
-+void __trunctfdf2 (void) { abort(); }
-+void __trunctfsf2 (void) { abort(); }
-+void __fixtfsi (void) { abort(); }
-+void __floatsitf (void) { abort(); }
-+void __addtf3 (void) { abort(); }
-+void __subtf3 (void) { abort(); }
-+void __multf3 (void) { abort(); }
-+void __divtf3 (void) { abort(); }
-+void __negtf2 (void) { abort(); }
-+void __eqtf2 (void) { abort(); }
-+void __netf2 (void) { abort(); }
-+void __gttf2 (void) { abort(); }
-+void __getf2 (void) { abort(); }
-+void __letf2 (void) { abort(); }
-+void __lttf2 (void) { abort(); }
-+#else	/* !EXTENDED_FLOAT_STUBS, rest of file */
-+
-+/* IEEE "special" number predicates */
-+
-+#ifdef NO_NANS
-+
-+#define nan() 0
-+#define isnan(x) 0
-+#define isinf(x) 0
-+#else
-+
-+#if   defined L_thenan_sf
-+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_df
-+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_tf
-+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined TFLOAT
-+extern const fp_number_type __thenan_tf;
-+#elif defined FLOAT
-+extern const fp_number_type __thenan_sf;
-+#else
-+extern const fp_number_type __thenan_df;
-+#endif
-+
-+INLINE
-+static fp_number_type *
-+nan (void)
-+{
-+  /* Discard the const qualifier...  */
-+#ifdef TFLOAT
-+  return (fp_number_type *) (& __thenan_tf);
-+#elif defined FLOAT  
-+  return (fp_number_type *) (& __thenan_sf);
-+#else
-+  return (fp_number_type *) (& __thenan_df);
-+#endif
-+}
-+
-+INLINE
-+static int
-+isnan ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_SNAN || x->class == CLASS_QNAN;
-+}
-+
-+INLINE
-+static int
-+isinf ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_INFINITY;
-+}
-+
-+#endif /* NO_NANS */
-+
-+INLINE
-+static int
-+iszero ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_ZERO;
-+}
-+
-+INLINE 
-+static void
-+flip_sign ( fp_number_type *  x)
-+{
-+  x->sign = !x->sign;
-+}
-+
-+extern FLO_type pack_d ( fp_number_type * );
-+
-+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf)
-+FLO_type
-+pack_d ( fp_number_type *  src)
-+{
-+  FLO_union_type dst;
-+  fractype fraction = src->fraction.ll;	/* wasn't unsigned before? */
-+  int sign = src->sign;
-+  int exp = 0;
-+
-+  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src)))
-+    {
-+      /* We can't represent these values accurately.  By using the
-+	 largest possible magnitude, we guarantee that the conversion
-+	 of infinity is at least as big as any finite number.  */
-+      exp = EXPMAX;
-+      fraction = ((fractype) 1 << FRACBITS) - 1;
-+    }
-+  else if (isnan (src))
-+    {
-+      exp = EXPMAX;
-+      if (src->class == CLASS_QNAN || 1)
-+	{
-+#ifdef QUIET_NAN_NEGATED
-+	  fraction |= QUIET_NAN - 1;
-+#else
-+	  fraction |= QUIET_NAN;
-+#endif
-+	}
-+    }
-+  else if (isinf (src))
-+    {
-+      exp = EXPMAX;
-+      fraction = 0;
-+    }
-+  else if (iszero (src))
-+    {
-+      exp = 0;
-+      fraction = 0;
-+    }
-+  else if (fraction == 0)
-+    {
-+      exp = 0;
-+    }
-+  else
-+    {
-+      if (src->normal_exp < NORMAL_EXPMIN)
-+	{
-+#ifdef NO_DENORMALS
-+	  /* Go straight to a zero representation if denormals are not
-+ 	     supported.  The denormal handling would be harmless but
-+ 	     isn't unnecessary.  */
-+	  exp = 0;
-+	  fraction = 0;
-+#else /* NO_DENORMALS */
-+	  /* This number's exponent is too low to fit into the bits
-+	     available in the number, so we'll store 0 in the exponent and
-+	     shift the fraction to the right to make up for it.  */
-+
-+	  int shift = NORMAL_EXPMIN - src->normal_exp;
-+
-+	  exp = 0;
-+
-+	  if (shift > FRAC_NBITS - NGARDS)
-+	    {
-+	      /* No point shifting, since it's more that 64 out.  */
-+	      fraction = 0;
-+	    }
-+	  else
-+	    {
-+	      int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0;
-+	      fraction = (fraction >> shift) | lowbit;
-+	    }
-+	  if ((fraction & GARDMASK) == GARDMSB)
-+	    {
-+	      if ((fraction & (1 << NGARDS)))
-+		fraction += GARDROUND + 1;
-+	    }
-+	  else
-+	    {
-+	      /* Add to the guards to round up.  */
-+	      fraction += GARDROUND;
-+	    }
-+	  /* Perhaps the rounding means we now need to change the
-+             exponent, because the fraction is no longer denormal.  */
-+	  if (fraction >= IMPLICIT_1)
-+	    {
-+	      exp += 1;
-+	    }
-+	  fraction >>= NGARDS;
-+#endif /* NO_DENORMALS */
-+	}
-+      else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS)
-+	       && src->normal_exp > EXPBIAS)
-+	{
-+	  exp = EXPMAX;
-+	  fraction = 0;
-+	}
-+      else
-+	{
-+	  exp = src->normal_exp + EXPBIAS;
-+	  if (!ROUND_TOWARDS_ZERO)
-+	    {
-+	      /* IF the gard bits are the all zero, but the first, then we're
-+		 half way between two numbers, choose the one which makes the
-+		 lsb of the answer 0.  */
-+	      if ((fraction & GARDMASK) == GARDMSB)
-+		{
-+		  if (fraction & (1 << NGARDS))
-+		    fraction += GARDROUND + 1;
-+		}
-+	      else
-+		{
-+		  /* Add a one to the guards to round up */
-+		  fraction += GARDROUND;
-+		}
-+	      if (fraction >= IMPLICIT_2)
-+		{
-+		  fraction >>= 1;
-+		  exp += 1;
-+		}
-+	    }
-+	  fraction >>= NGARDS;
-+
-+	  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX)
-+	    {
-+	      /* Saturate on overflow.  */
-+	      exp = EXPMAX;
-+	      fraction = ((fractype) 1 << FRACBITS) - 1;
-+	    }
-+	}
-+    }
-+
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  dst.bits.fraction = fraction;
-+  dst.bits.exp = exp;
-+  dst.bits.sign = sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low, unity;
-+   int lowsign, lowexp;
-+
-+   unity = (halffractype) 1 << HALFFRACBITS;
-+
-+   /* Set HIGH to the high double's significand, masking out the implicit 1.
-+      Set LOW to the low double's full significand.  */
-+   high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1);
-+   low = fraction & (unity * 2 - 1);
-+
-+   /* Get the initial sign and exponent of the low double.  */
-+   lowexp = exp - HALFFRACBITS - 1;
-+   lowsign = sign;
-+
-+   /* HIGH should be rounded like a normal double, making |LOW| <=
-+      0.5 ULP of HIGH.  Assume round-to-nearest.  */
-+   if (exp < EXPMAX)
-+     if (low > unity || (low == unity && (high & 1) == 1))
-+       {
-+	 /* Round HIGH up and adjust LOW to match.  */
-+	 high++;
-+	 if (high == unity)
-+	   {
-+	     /* May make it infinite, but that's OK.  */
-+	     high = 0;
-+	     exp++;
-+	   }
-+	 low = unity * 2 - low;
-+	 lowsign ^= 1;
-+       }
-+
-+   high |= (halffractype) exp << HALFFRACBITS;
-+   high |= (halffractype) sign << (HALFFRACBITS + EXPBITS);
-+
-+   if (exp == EXPMAX || exp == 0 || low == 0)
-+     low = 0;
-+   else
-+     {
-+       while (lowexp > 0 && low < unity)
-+	 {
-+	   low <<= 1;
-+	   lowexp--;
-+	 }
-+
-+       if (lowexp <= 0)
-+	 {
-+	   halffractype roundmsb, round;
-+	   int shift;
-+
-+	   shift = 1 - lowexp;
-+	   roundmsb = (1 << (shift - 1));
-+	   round = low & ((roundmsb << 1) - 1);
-+
-+	   low >>= shift;
-+	   lowexp = 0;
-+
-+	   if (round > roundmsb || (round == roundmsb && (low & 1) == 1))
-+	     {
-+	       low++;
-+	       if (low == unity)
-+		 /* LOW rounds up to the smallest normal number.  */
-+		 lowexp++;
-+	     }
-+	 }
-+
-+       low &= unity - 1;
-+       low |= (halffractype) lowexp << HALFFRACBITS;
-+       low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS);
-+     }
-+   dst.value_raw = ((fractype) high << HALFSHIFT) | low;
-+ }
-+# else
-+  dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
-+  dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS;
-+  dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS);
-+# endif
-+#endif
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+#ifdef TFLOAT
-+  {
-+    qrtrfractype tmp1 = dst.words[0];
-+    qrtrfractype tmp2 = dst.words[1];
-+    dst.words[0] = dst.words[3];
-+    dst.words[1] = dst.words[2];
-+    dst.words[2] = tmp2;
-+    dst.words[3] = tmp1;
-+  }
-+#else
-+  {
-+    halffractype tmp = dst.words[0];
-+    dst.words[0] = dst.words[1];
-+    dst.words[1] = tmp;
-+  }
-+#endif
-+#endif
-+
-+  return dst.value;
-+}
-+#endif
-+
-+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf)
-+void
-+unpack_d (FLO_union_type * src, fp_number_type * dst)
-+{
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+  fractype fraction;
-+  int exp;
-+  int sign;
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+  FLO_union_type swapped;
-+
-+#ifdef TFLOAT
-+  swapped.words[0] = src->words[3];
-+  swapped.words[1] = src->words[2];
-+  swapped.words[2] = src->words[1];
-+  swapped.words[3] = src->words[0];
-+#else
-+  swapped.words[0] = src->words[1];
-+  swapped.words[1] = src->words[0];
-+#endif
-+  src = &swapped;
-+#endif
-+  
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  fraction = src->bits.fraction;
-+  exp = src->bits.exp;
-+  sign = src->bits.sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low;
-+   
-+   high = src->value_raw >> HALFSHIFT;
-+   low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1);
-+
-+   fraction = high & ((((fractype)1) << HALFFRACBITS) - 1);
-+   fraction <<= FRACBITS - HALFFRACBITS;
-+   exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+   sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+
-+   if (exp != EXPMAX && exp != 0 && low != 0)
-+     {
-+       int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+       int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+       int shift;
-+       fractype xlow;
-+
-+       xlow = low & ((((fractype)1) << HALFFRACBITS) - 1);
-+       if (lowexp)
-+	 xlow |= (((halffractype)1) << HALFFRACBITS);
-+       else
-+	 lowexp = 1;
-+       shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp);
-+       if (shift > 0)
-+	 xlow <<= shift;
-+       else if (shift < 0)
-+	 xlow >>= -shift;
-+       if (sign == lowsign)
-+	 fraction += xlow;
-+       else if (fraction >= xlow)
-+	 fraction -= xlow;
-+       else
-+	 {
-+	   /* The high part is a power of two but the full number is lower.
-+	      This code will leave the implicit 1 in FRACTION, but we'd
-+	      have added that below anyway.  */
-+	   fraction = (((fractype) 1 << FRACBITS) - xlow) << 1;
-+	   exp--;
-+	 }
-+     }
-+ }
-+# else
-+  fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1);
-+  exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1);
-+  sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1;
-+# endif
-+#endif
-+
-+  dst->sign = sign;
-+  if (exp == 0)
-+    {
-+      /* Hmm.  Looks like 0 */
-+      if (fraction == 0
-+#ifdef NO_DENORMALS
-+	  || 1
-+#endif
-+	  )
-+	{
-+	  /* tastes like zero */
-+	  dst->class = CLASS_ZERO;
-+	}
-+      else
-+	{
-+	  /* Zero exponent with nonzero fraction - it's denormalized,
-+	     so there isn't a leading implicit one - we'll shift it so
-+	     it gets one.  */
-+	  dst->normal_exp = exp - EXPBIAS + 1;
-+	  fraction <<= NGARDS;
-+
-+	  dst->class = CLASS_NUMBER;
-+#if 1
-+	  while (fraction < IMPLICIT_1)
-+	    {
-+	      fraction <<= 1;
-+	      dst->normal_exp--;
-+	    }
-+#endif
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX)
-+    {
-+      /* Huge exponent*/
-+      if (fraction == 0)
-+	{
-+	  /* Attached to a zero fraction - means infinity */
-+	  dst->class = CLASS_INFINITY;
-+	}
-+      else
-+	{
-+	  /* Nonzero fraction, means nan */
-+#ifdef QUIET_NAN_NEGATED
-+	  if ((fraction & QUIET_NAN) == 0)
-+#else
-+	  if (fraction & QUIET_NAN)
-+#endif
-+	    {
-+	      dst->class = CLASS_QNAN;
-+	    }
-+	  else
-+	    {
-+	      dst->class = CLASS_SNAN;
-+	    }
-+	  /* Keep the fraction part as the nan number */
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else
-+    {
-+      /* Nothing strange about this number */
-+      dst->normal_exp = exp - EXPBIAS;
-+      dst->class = CLASS_NUMBER;
-+      dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1;
-+    }
-+}
-+#endif /* L_unpack_df || L_unpack_sf */
-+
-+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf)
-+static fp_number_type *
-+_fpadd_parts (fp_number_type * a,
-+	      fp_number_type * b,
-+	      fp_number_type * tmp)
-+{
-+  intfrac tfraction;
-+
-+  /* Put commonly used fields in local variables.  */
-+  int a_normal_exp;
-+  int b_normal_exp;
-+  fractype a_fraction;
-+  fractype b_fraction;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      /* Adding infinities with opposite signs yields a NaN.  */
-+      if (isinf (b) && a->sign != b->sign)
-+	return nan ();
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      return b;
-+    }
-+  if (iszero (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  *tmp = *a;
-+	  tmp->sign = a->sign & b->sign;
-+	  return tmp;
-+	}
-+      return a;
-+    }
-+  if (iszero (a))
-+    {
-+      return b;
-+    }
-+
-+  /* Got two numbers. shift the smaller and increment the exponent till
-+     they're the same */
-+  {
-+    int diff;
-+
-+    a_normal_exp = a->normal_exp;
-+    b_normal_exp = b->normal_exp;
-+    a_fraction = a->fraction.ll;
-+    b_fraction = b->fraction.ll;
-+
-+    diff = a_normal_exp - b_normal_exp;
-+
-+    if (diff < 0)
-+      diff = -diff;
-+    if (diff < FRAC_NBITS)
-+      {
-+	/* ??? This does shifts one bit at a time.  Optimize.  */
-+	while (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp++;
-+	    LSHIFT (b_fraction);
-+	  }
-+	while (b_normal_exp > a_normal_exp)
-+	  {
-+	    a_normal_exp++;
-+	    LSHIFT (a_fraction);
-+	  }
-+      }
-+    else
-+      {
-+	/* Somethings's up.. choose the biggest */
-+	if (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp = a_normal_exp;
-+	    b_fraction = 0;
-+	  }
-+	else
-+	  {
-+	    a_normal_exp = b_normal_exp;
-+	    a_fraction = 0;
-+	  }
-+      }
-+  }
-+
-+  if (a->sign != b->sign)
-+    {
-+      if (a->sign)
-+	{
-+	  tfraction = -a_fraction + b_fraction;
-+	}
-+      else
-+	{
-+	  tfraction = a_fraction - b_fraction;
-+	}
-+      if (tfraction >= 0)
-+	{
-+	  tmp->sign = 0;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = tfraction;
-+	}
-+      else
-+	{
-+	  tmp->sign = 1;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = -tfraction;
-+	}
-+      /* and renormalize it */
-+
-+      while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll)
-+	{
-+	  tmp->fraction.ll <<= 1;
-+	  tmp->normal_exp--;
-+	}
-+    }
-+  else
-+    {
-+      tmp->sign = a->sign;
-+      tmp->normal_exp = a_normal_exp;
-+      tmp->fraction.ll = a_fraction + b_fraction;
-+    }
-+  tmp->class = CLASS_NUMBER;
-+  /* Now the fraction is added, we have to shift down to renormalize the
-+     number */
-+
-+  if (tmp->fraction.ll >= IMPLICIT_2)
-+    {
-+      LSHIFT (tmp->fraction.ll);
-+      tmp->normal_exp++;
-+    }
-+  return tmp;
-+
-+}
-+
-+FLO_type
-+add (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+
-+FLO_type
-+sub (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  b.sign ^= 1;
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_addsub_sf || L_addsub_df */
-+
-+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpmul_parts ( fp_number_type *  a,
-+	       fp_number_type *  b,
-+	       fp_number_type * tmp)
-+{
-+  fractype low = 0;
-+  fractype high = 0;
-+
-+  if (isnan (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      if (iszero (b))
-+	return nan ();
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  return nan ();
-+	}
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (iszero (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both numbers to get a
-+     twice-as-wide number.  */
-+  {
-+#if defined(NO_DI_MODE) || defined(TFLOAT)
-+    {
-+      fractype x = a->fraction.ll;
-+      fractype ylow = b->fraction.ll;
-+      fractype yhigh = 0;
-+      int bit;
-+
-+      /* ??? This does multiplies one bit at a time.  Optimize.  */
-+      for (bit = 0; bit < FRAC_NBITS; bit++)
-+	{
-+	  int carry;
-+
-+	  if (x & 1)
-+	    {
-+	      carry = (low += ylow) < ylow;
-+	      high += yhigh + carry;
-+	    }
-+	  yhigh <<= 1;
-+	  if (ylow & FRACHIGH)
-+	    {
-+	      yhigh |= 1;
-+	    }
-+	  ylow <<= 1;
-+	  x >>= 1;
-+	}
-+    }
-+#elif defined(FLOAT) 
-+    /* Multiplying two USIs to get a UDI, we're safe.  */
-+    {
-+      UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll;
-+      
-+      high = answer >> BITS_PER_SI;
-+      low = answer;
-+    }
-+#else
-+    /* fractype is DImode, but we need the result to be twice as wide.
-+       Assuming a widening multiply from DImode to TImode is not
-+       available, build one by hand.  */
-+    {
-+      USItype nl = a->fraction.ll;
-+      USItype nh = a->fraction.ll >> BITS_PER_SI;
-+      USItype ml = b->fraction.ll;
-+      USItype mh = b->fraction.ll >> BITS_PER_SI;
-+      UDItype pp_ll = (UDItype) ml * nl;
-+      UDItype pp_hl = (UDItype) mh * nl;
-+      UDItype pp_lh = (UDItype) ml * nh;
-+      UDItype pp_hh = (UDItype) mh * nh;
-+      UDItype res2 = 0;
-+      UDItype res0 = 0;
-+      UDItype ps_hh__ = pp_hl + pp_lh;
-+      if (ps_hh__ < pp_hl)
-+	res2 += (UDItype)1 << BITS_PER_SI;
-+      pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI;
-+      res0 = pp_ll + pp_hl;
-+      if (res0 < pp_ll)
-+	res2++;
-+      res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh;
-+      high = res2;
-+      low = res0;
-+    }
-+#endif
-+  }
-+
-+  tmp->normal_exp = a->normal_exp + b->normal_exp
-+    + FRAC_NBITS - (FRACBITS + NGARDS);
-+  tmp->sign = a->sign != b->sign;
-+  while (high >= IMPLICIT_2)
-+    {
-+      tmp->normal_exp++;
-+      if (high & 1)
-+	{
-+	  low >>= 1;
-+	  low |= FRACHIGH;
-+	}
-+      high >>= 1;
-+    }
-+  while (high < IMPLICIT_1)
-+    {
-+      tmp->normal_exp--;
-+
-+      high <<= 1;
-+      if (low & FRACHIGH)
-+	high |= 1;
-+      low <<= 1;
-+    }
-+  /* rounding is tricky. if we only round if it won't make us round later.  */
-+#if 0
-+  if (low & FRACHIGH2)
-+    {
-+      if (((high & GARDMASK) != GARDMSB)
-+	  && (((high + 1) & GARDMASK) == GARDMSB))
-+	{
-+	  /* don't round, it gets done again later.  */
-+	}
-+      else
-+	{
-+	  high++;
-+	}
-+    }
-+#endif
-+  if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB)
-+    {
-+      if (high & (1 << NGARDS))
-+	{
-+	  /* half way, so round to even */
-+	  high += GARDROUND + 1;
-+	}
-+      else if (low)
-+	{
-+	  /* but we really weren't half way */
-+	  high += GARDROUND + 1;
-+	}
-+    }
-+  tmp->fraction.ll = high;
-+  tmp->class = CLASS_NUMBER;
-+  return tmp;
-+}
-+
-+FLO_type
-+multiply (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpmul_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_mul_sf || L_mul_df */
-+
-+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpdiv_parts (fp_number_type * a,
-+	      fp_number_type * b)
-+{
-+  fractype bit;
-+  fractype numerator;
-+  fractype denominator;
-+  fractype quotient;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+
-+  a->sign = a->sign ^ b->sign;
-+
-+  if (isinf (a) || iszero (a))
-+    {
-+      if (a->class == b->class)
-+	return nan ();
-+      return a;
-+    }
-+
-+  if (isinf (b))
-+    {
-+      a->fraction.ll = 0;
-+      a->normal_exp = 0;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      a->class = CLASS_INFINITY;
-+      return a;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both 64bit numbers to get a
-+     128 bit number */
-+  {
-+    /* quotient =
-+       ( numerator / denominator) * 2^(numerator exponent -  denominator exponent)
-+     */
-+
-+    a->normal_exp = a->normal_exp - b->normal_exp;
-+    numerator = a->fraction.ll;
-+    denominator = b->fraction.ll;
-+
-+    if (numerator < denominator)
-+      {
-+	/* Fraction will be less than 1.0 */
-+	numerator *= 2;
-+	a->normal_exp--;
-+      }
-+    bit = IMPLICIT_1;
-+    quotient = 0;
-+    /* ??? Does divide one bit at a time.  Optimize.  */
-+    while (bit)
-+      {
-+	if (numerator >= denominator)
-+	  {
-+	    quotient |= bit;
-+	    numerator -= denominator;
-+	  }
-+	bit >>= 1;
-+	numerator *= 2;
-+      }
-+
-+    if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB)
-+      {
-+	if (quotient & (1 << NGARDS))
-+	  {
-+	    /* half way, so round to even */
-+	    quotient += GARDROUND + 1;
-+	  }
-+	else if (numerator)
-+	  {
-+	    /* but we really weren't half way, more bits exist */
-+	    quotient += GARDROUND + 1;
-+	  }
-+      }
-+
-+    a->fraction.ll = quotient;
-+    return (a);
-+  }
-+}
-+
-+FLO_type
-+divide (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpdiv_parts (&a, &b);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_div_sf || L_div_df */
-+
-+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \
-+    || defined(L_fpcmp_parts_tf)
-+/* according to the demo, fpcmp returns a comparison with 0... thus
-+   a<b -> -1
-+   a==b -> 0
-+   a>b -> +1
-+ */
-+
-+int
-+__fpcmp_parts (fp_number_type * a, fp_number_type * b)
-+{
-+#if 0
-+  /* either nan -> unordered. Must be checked outside of this routine.  */
-+  if (isnan (a) && isnan (b))
-+    {
-+      return 1;			/* still unordered! */
-+    }
-+#endif
-+
-+  if (isnan (a) || isnan (b))
-+    {
-+      return 1;			/* how to indicate unordered compare? */
-+    }
-+  if (isinf (a) && isinf (b))
-+    {
-+      /* +inf > -inf, but +inf != +inf */
-+      /* b    \a| +inf(0)| -inf(1)
-+       ______\+--------+--------
-+       +inf(0)| a==b(0)| a<b(-1)
-+       -------+--------+--------
-+       -inf(1)| a>b(1) | a==b(0)
-+       -------+--------+--------
-+       So since unordered must be nonzero, just line up the columns...
-+       */
-+      return b->sign - a->sign;
-+    }
-+  /* but not both...  */
-+  if (isinf (a))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (isinf (b))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (a) && iszero (b))
-+    {
-+      return 0;
-+    }
-+  if (iszero (a))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (b))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  /* now both are "normal".  */
-+  if (a->sign != b->sign)
-+    {
-+      /* opposite signs */
-+      return a->sign ? -1 : 1;
-+    }
-+  /* same sign; exponents? */
-+  if (a->normal_exp > b->normal_exp)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->normal_exp < b->normal_exp)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* same exponents; check size.  */
-+  if (a->fraction.ll > b->fraction.ll)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->fraction.ll < b->fraction.ll)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* after all that, they're equal.  */
-+  return 0;
-+}
-+#endif
-+
-+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf)
-+CMPtype
-+compare (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_compare_sf || L_compare_df */
-+
-+#ifndef US_SOFTWARE_GOFAST
-+
-+/* These should be optimized for their specific tasks someday.  */
-+
-+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf)
-+CMPtype
-+_eq_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth == 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_eq_sf || L_eq_df */
-+
-+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf)
-+CMPtype
-+_ne_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* true, truth != 0 */
-+
-+  return  __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ne_sf || L_ne_df */
-+
-+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf)
-+CMPtype
-+_gt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth > 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_gt_sf || L_gt_df */
-+
-+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf)
-+CMPtype
-+_ge_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth >= 0 */
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ge_sf || L_ge_df */
-+
-+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf)
-+CMPtype
-+_lt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth < 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_lt_sf || L_lt_df */
-+
-+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf)
-+CMPtype
-+_le_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth <= 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_le_sf || L_le_df */
-+
-+#endif /* ! US_SOFTWARE_GOFAST */
-+
-+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf)
-+CMPtype
-+_unord_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return (isnan (&a) || isnan (&b));
-+}
-+#endif /* L_unord_sf || L_unord_df */
-+
-+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf)
-+FLO_type
-+si_to_float (SItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.class = CLASS_NUMBER;
-+  in.sign = arg_a < 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.normal_exp = FRACBITS + NGARDS;
-+      if (in.sign) 
-+	{
-+	  /* Special case for minint, since there is no +ve integer
-+	     representation for it */
-+	  if (arg_a == (- MAX_SI_INT - 1))
-+	    {
-+	      return (FLO_type)(- MAX_SI_INT - 1);
-+	    }
-+	  in.fraction.ll = (-arg_a);
-+	}
-+      else
-+	in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif /* L_si_to_sf || L_si_to_df */
-+
-+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf)
-+FLO_type
-+usi_to_float (USItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.sign = 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.class = CLASS_NUMBER;
-+      in.normal_exp = FRACBITS + NGARDS;
-+      in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS)))
-+        {
-+          in.fraction.ll >>= 1;
-+          in.normal_exp += 1;
-+        }
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif
-+
-+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si)
-+SItype
-+float_to_si (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  SItype tmp;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* get reasonable MAX_SI_INT...  */
-+  if (isinf (&a))
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 2)
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+  return a.sign ? (-tmp) : (tmp);
-+}
-+#endif /* L_sf_to_si || L_df_to_si */
-+
-+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi)
-+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi)
-+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines,
-+   we also define them for GOFAST because the ones in libgcc2.c have the
-+   wrong names and I'd rather define these here and keep GOFAST CYG-LOC's
-+   out of libgcc2.c.  We can't define these here if not GOFAST because then
-+   there'd be duplicate copies.  */
-+
-+USItype
-+float_to_usi (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* it is a negative number */
-+  if (a.sign)
-+    return 0;
-+  /* get reasonable MAX_USI_INT...  */
-+  if (isinf (&a))
-+    return MAX_USI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 1)
-+    return MAX_USI_INT;
-+  else if (a.normal_exp > (FRACBITS + NGARDS))
-+    return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS));
-+  else
-+    return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+}
-+#endif /* US_SOFTWARE_GOFAST */
-+#endif /* L_sf_to_usi || L_df_to_usi */
-+
-+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf)
-+FLO_type
-+negate (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  flip_sign (&a);
-+  return pack_d (&a);
-+}
-+#endif /* L_negate_sf || L_negate_df */
-+
-+#ifdef FLOAT
-+
-+#if defined(L_make_sf)
-+SFtype
-+__make_fp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     USItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_sf */
-+
-+#ifndef FLOAT_ONLY
-+
-+/* This enables one to build an fp library that supports float but not double.
-+   Otherwise, we would get an undefined reference to __make_dp.
-+   This is needed for some 8-bit ports that can't handle well values that
-+   are 8-bytes in size, so we just don't support double for them at all.  */
-+
-+#if defined(L_sf_to_df)
-+DFtype
-+sf_to_df (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp,
-+		    ((UDItype) in.fraction.ll) << F_D_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#if defined(L_sf_to_tf) && defined(TMODES)
-+TFtype
-+sf_to_tf (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << F_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#endif /* ! FLOAT_ONLY */
-+#endif /* FLOAT */
-+
-+#ifndef FLOAT
-+
-+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);
-+
-+#if defined(L_make_df)
-+DFtype
-+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_df */
-+
-+#if defined(L_df_to_sf)
-+SFtype
-+df_to_sf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_D_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_df_to_sf */
-+
-+#if defined(L_df_to_tf) && defined(TMODES) \
-+    && !defined(FLOAT) && !defined(TFLOAT)
-+TFtype
-+df_to_tf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << D_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#ifdef TFLOAT
-+#if defined(L_make_tf)
-+TFtype
-+__make_tp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     UTItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_tf */
-+
-+#if defined(L_tf_to_df)
-+DFtype
-+tf_to_df (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  UDItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> D_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_df */
-+
-+#if defined(L_tf_to_sf)
-+SFtype
-+tf_to_sf (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_sf */
-+#endif /* TFLOAT */
-+
-+#endif /* ! FLOAT */
-+#endif /* !EXTENDED_FLOAT_STUBS */
---- gcc-3.4.3/gcc/config/nios2/nios2-fp-bit.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-fp-bit.c
-@@ -0,0 +1,1652 @@
-+#define FLOAT
-+/* This is a software floating point library which can be used
-+   for targets without hardware floating point. 
-+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
-+   Free Software Foundation, Inc.
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with other files,
-+   some of which are compiled with GCC, to produce an executable,
-+   this library 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.  */
-+
-+/* This implements IEEE 754 format arithmetic, but does not provide a
-+   mechanism for setting the rounding mode, or for generating or handling
-+   exceptions.
-+
-+   The original code by Steve Chamberlain, hacked by Mark Eichin and Jim
-+   Wilson, all of Cygnus Support.  */
-+
-+/* The intended way to use this file is to make two copies, add `#define FLOAT'
-+   to one copy, then compile both copies and add them to libgcc.a.  */
-+
-+#include "tconfig.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "config/fp-bit.h"
-+
-+/* The following macros can be defined to change the behavior of this file:
-+   FLOAT: Implement a `float', aka SFmode, fp library.  If this is not
-+     defined, then this file implements a `double', aka DFmode, fp library.
-+   FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e.
-+     don't include float->double conversion which requires the double library.
-+     This is useful only for machines which can't support doubles, e.g. some
-+     8-bit processors.
-+   CMPtype: Specify the type that floating point compares should return.
-+     This defaults to SItype, aka int.
-+   US_SOFTWARE_GOFAST: This makes all entry points use the same names as the
-+     US Software goFast library.
-+   _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding
-+     two integers to the FLO_union_type.
-+   NO_DENORMALS: Disable handling of denormals.
-+   NO_NANS: Disable nan and infinity handling
-+   SMALL_MACHINE: Useful when operations on QIs and HIs are faster
-+     than on an SI */
-+
-+/* We don't currently support extended floats (long doubles) on machines
-+   without hardware to deal with them.
-+
-+   These stubs are just to keep the linker from complaining about unresolved
-+   references which can be pulled in from libio & libstdc++, even if the
-+   user isn't using long doubles.  However, they may generate an unresolved
-+   external to abort if abort is not used by the function, and the stubs
-+   are referenced from within libc, since libgcc goes before and after the
-+   system library.  */
-+
-+#ifdef DECLARE_LIBRARY_RENAMES
-+  DECLARE_LIBRARY_RENAMES
-+#endif
-+
-+#ifdef EXTENDED_FLOAT_STUBS
-+extern void abort (void);
-+void __extendsfxf2 (void) { abort(); }
-+void __extenddfxf2 (void) { abort(); }
-+void __truncxfdf2 (void) { abort(); }
-+void __truncxfsf2 (void) { abort(); }
-+void __fixxfsi (void) { abort(); }
-+void __floatsixf (void) { abort(); }
-+void __addxf3 (void) { abort(); }
-+void __subxf3 (void) { abort(); }
-+void __mulxf3 (void) { abort(); }
-+void __divxf3 (void) { abort(); }
-+void __negxf2 (void) { abort(); }
-+void __eqxf2 (void) { abort(); }
-+void __nexf2 (void) { abort(); }
-+void __gtxf2 (void) { abort(); }
-+void __gexf2 (void) { abort(); }
-+void __lexf2 (void) { abort(); }
-+void __ltxf2 (void) { abort(); }
-+
-+void __extendsftf2 (void) { abort(); }
-+void __extenddftf2 (void) { abort(); }
-+void __trunctfdf2 (void) { abort(); }
-+void __trunctfsf2 (void) { abort(); }
-+void __fixtfsi (void) { abort(); }
-+void __floatsitf (void) { abort(); }
-+void __addtf3 (void) { abort(); }
-+void __subtf3 (void) { abort(); }
-+void __multf3 (void) { abort(); }
-+void __divtf3 (void) { abort(); }
-+void __negtf2 (void) { abort(); }
-+void __eqtf2 (void) { abort(); }
-+void __netf2 (void) { abort(); }
-+void __gttf2 (void) { abort(); }
-+void __getf2 (void) { abort(); }
-+void __letf2 (void) { abort(); }
-+void __lttf2 (void) { abort(); }
-+#else	/* !EXTENDED_FLOAT_STUBS, rest of file */
-+
-+/* IEEE "special" number predicates */
-+
-+#ifdef NO_NANS
-+
-+#define nan() 0
-+#define isnan(x) 0
-+#define isinf(x) 0
-+#else
-+
-+#if   defined L_thenan_sf
-+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_df
-+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_tf
-+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined TFLOAT
-+extern const fp_number_type __thenan_tf;
-+#elif defined FLOAT
-+extern const fp_number_type __thenan_sf;
-+#else
-+extern const fp_number_type __thenan_df;
-+#endif
-+
-+INLINE
-+static fp_number_type *
-+nan (void)
-+{
-+  /* Discard the const qualifier...  */
-+#ifdef TFLOAT
-+  return (fp_number_type *) (& __thenan_tf);
-+#elif defined FLOAT  
-+  return (fp_number_type *) (& __thenan_sf);
-+#else
-+  return (fp_number_type *) (& __thenan_df);
-+#endif
-+}
-+
-+INLINE
-+static int
-+isnan ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_SNAN || x->class == CLASS_QNAN;
-+}
-+
-+INLINE
-+static int
-+isinf ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_INFINITY;
-+}
-+
-+#endif /* NO_NANS */
-+
-+INLINE
-+static int
-+iszero ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_ZERO;
-+}
-+
-+INLINE 
-+static void
-+flip_sign ( fp_number_type *  x)
-+{
-+  x->sign = !x->sign;
-+}
-+
-+extern FLO_type pack_d ( fp_number_type * );
-+
-+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf)
-+FLO_type
-+pack_d ( fp_number_type *  src)
-+{
-+  FLO_union_type dst;
-+  fractype fraction = src->fraction.ll;	/* wasn't unsigned before? */
-+  int sign = src->sign;
-+  int exp = 0;
-+
-+  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src)))
-+    {
-+      /* We can't represent these values accurately.  By using the
-+	 largest possible magnitude, we guarantee that the conversion
-+	 of infinity is at least as big as any finite number.  */
-+      exp = EXPMAX;
-+      fraction = ((fractype) 1 << FRACBITS) - 1;
-+    }
-+  else if (isnan (src))
-+    {
-+      exp = EXPMAX;
-+      if (src->class == CLASS_QNAN || 1)
-+	{
-+#ifdef QUIET_NAN_NEGATED
-+	  fraction |= QUIET_NAN - 1;
-+#else
-+	  fraction |= QUIET_NAN;
-+#endif
-+	}
-+    }
-+  else if (isinf (src))
-+    {
-+      exp = EXPMAX;
-+      fraction = 0;
-+    }
-+  else if (iszero (src))
-+    {
-+      exp = 0;
-+      fraction = 0;
-+    }
-+  else if (fraction == 0)
-+    {
-+      exp = 0;
-+    }
-+  else
-+    {
-+      if (src->normal_exp < NORMAL_EXPMIN)
-+	{
-+#ifdef NO_DENORMALS
-+	  /* Go straight to a zero representation if denormals are not
-+ 	     supported.  The denormal handling would be harmless but
-+ 	     isn't unnecessary.  */
-+	  exp = 0;
-+	  fraction = 0;
-+#else /* NO_DENORMALS */
-+	  /* This number's exponent is too low to fit into the bits
-+	     available in the number, so we'll store 0 in the exponent and
-+	     shift the fraction to the right to make up for it.  */
-+
-+	  int shift = NORMAL_EXPMIN - src->normal_exp;
-+
-+	  exp = 0;
-+
-+	  if (shift > FRAC_NBITS - NGARDS)
-+	    {
-+	      /* No point shifting, since it's more that 64 out.  */
-+	      fraction = 0;
-+	    }
-+	  else
-+	    {
-+	      int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0;
-+	      fraction = (fraction >> shift) | lowbit;
-+	    }
-+	  if ((fraction & GARDMASK) == GARDMSB)
-+	    {
-+	      if ((fraction & (1 << NGARDS)))
-+		fraction += GARDROUND + 1;
-+	    }
-+	  else
-+	    {
-+	      /* Add to the guards to round up.  */
-+	      fraction += GARDROUND;
-+	    }
-+	  /* Perhaps the rounding means we now need to change the
-+             exponent, because the fraction is no longer denormal.  */
-+	  if (fraction >= IMPLICIT_1)
-+	    {
-+	      exp += 1;
-+	    }
-+	  fraction >>= NGARDS;
-+#endif /* NO_DENORMALS */
-+	}
-+      else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS)
-+	       && src->normal_exp > EXPBIAS)
-+	{
-+	  exp = EXPMAX;
-+	  fraction = 0;
-+	}
-+      else
-+	{
-+	  exp = src->normal_exp + EXPBIAS;
-+	  if (!ROUND_TOWARDS_ZERO)
-+	    {
-+	      /* IF the gard bits are the all zero, but the first, then we're
-+		 half way between two numbers, choose the one which makes the
-+		 lsb of the answer 0.  */
-+	      if ((fraction & GARDMASK) == GARDMSB)
-+		{
-+		  if (fraction & (1 << NGARDS))
-+		    fraction += GARDROUND + 1;
-+		}
-+	      else
-+		{
-+		  /* Add a one to the guards to round up */
-+		  fraction += GARDROUND;
-+		}
-+	      if (fraction >= IMPLICIT_2)
-+		{
-+		  fraction >>= 1;
-+		  exp += 1;
-+		}
-+	    }
-+	  fraction >>= NGARDS;
-+
-+	  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX)
-+	    {
-+	      /* Saturate on overflow.  */
-+	      exp = EXPMAX;
-+	      fraction = ((fractype) 1 << FRACBITS) - 1;
-+	    }
-+	}
-+    }
-+
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  dst.bits.fraction = fraction;
-+  dst.bits.exp = exp;
-+  dst.bits.sign = sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low, unity;
-+   int lowsign, lowexp;
-+
-+   unity = (halffractype) 1 << HALFFRACBITS;
-+
-+   /* Set HIGH to the high double's significand, masking out the implicit 1.
-+      Set LOW to the low double's full significand.  */
-+   high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1);
-+   low = fraction & (unity * 2 - 1);
-+
-+   /* Get the initial sign and exponent of the low double.  */
-+   lowexp = exp - HALFFRACBITS - 1;
-+   lowsign = sign;
-+
-+   /* HIGH should be rounded like a normal double, making |LOW| <=
-+      0.5 ULP of HIGH.  Assume round-to-nearest.  */
-+   if (exp < EXPMAX)
-+     if (low > unity || (low == unity && (high & 1) == 1))
-+       {
-+	 /* Round HIGH up and adjust LOW to match.  */
-+	 high++;
-+	 if (high == unity)
-+	   {
-+	     /* May make it infinite, but that's OK.  */
-+	     high = 0;
-+	     exp++;
-+	   }
-+	 low = unity * 2 - low;
-+	 lowsign ^= 1;
-+       }
-+
-+   high |= (halffractype) exp << HALFFRACBITS;
-+   high |= (halffractype) sign << (HALFFRACBITS + EXPBITS);
-+
-+   if (exp == EXPMAX || exp == 0 || low == 0)
-+     low = 0;
-+   else
-+     {
-+       while (lowexp > 0 && low < unity)
-+	 {
-+	   low <<= 1;
-+	   lowexp--;
-+	 }
-+
-+       if (lowexp <= 0)
-+	 {
-+	   halffractype roundmsb, round;
-+	   int shift;
-+
-+	   shift = 1 - lowexp;
-+	   roundmsb = (1 << (shift - 1));
-+	   round = low & ((roundmsb << 1) - 1);
-+
-+	   low >>= shift;
-+	   lowexp = 0;
-+
-+	   if (round > roundmsb || (round == roundmsb && (low & 1) == 1))
-+	     {
-+	       low++;
-+	       if (low == unity)
-+		 /* LOW rounds up to the smallest normal number.  */
-+		 lowexp++;
-+	     }
-+	 }
-+
-+       low &= unity - 1;
-+       low |= (halffractype) lowexp << HALFFRACBITS;
-+       low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS);
-+     }
-+   dst.value_raw = ((fractype) high << HALFSHIFT) | low;
-+ }
-+# else
-+  dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
-+  dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS;
-+  dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS);
-+# endif
-+#endif
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+#ifdef TFLOAT
-+  {
-+    qrtrfractype tmp1 = dst.words[0];
-+    qrtrfractype tmp2 = dst.words[1];
-+    dst.words[0] = dst.words[3];
-+    dst.words[1] = dst.words[2];
-+    dst.words[2] = tmp2;
-+    dst.words[3] = tmp1;
-+  }
-+#else
-+  {
-+    halffractype tmp = dst.words[0];
-+    dst.words[0] = dst.words[1];
-+    dst.words[1] = tmp;
-+  }
-+#endif
-+#endif
-+
-+  return dst.value;
-+}
-+#endif
-+
-+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf)
-+void
-+unpack_d (FLO_union_type * src, fp_number_type * dst)
-+{
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+  fractype fraction;
-+  int exp;
-+  int sign;
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+  FLO_union_type swapped;
-+
-+#ifdef TFLOAT
-+  swapped.words[0] = src->words[3];
-+  swapped.words[1] = src->words[2];
-+  swapped.words[2] = src->words[1];
-+  swapped.words[3] = src->words[0];
-+#else
-+  swapped.words[0] = src->words[1];
-+  swapped.words[1] = src->words[0];
-+#endif
-+  src = &swapped;
-+#endif
-+  
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  fraction = src->bits.fraction;
-+  exp = src->bits.exp;
-+  sign = src->bits.sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low;
-+   
-+   high = src->value_raw >> HALFSHIFT;
-+   low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1);
-+
-+   fraction = high & ((((fractype)1) << HALFFRACBITS) - 1);
-+   fraction <<= FRACBITS - HALFFRACBITS;
-+   exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+   sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+
-+   if (exp != EXPMAX && exp != 0 && low != 0)
-+     {
-+       int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+       int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+       int shift;
-+       fractype xlow;
-+
-+       xlow = low & ((((fractype)1) << HALFFRACBITS) - 1);
-+       if (lowexp)
-+	 xlow |= (((halffractype)1) << HALFFRACBITS);
-+       else
-+	 lowexp = 1;
-+       shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp);
-+       if (shift > 0)
-+	 xlow <<= shift;
-+       else if (shift < 0)
-+	 xlow >>= -shift;
-+       if (sign == lowsign)
-+	 fraction += xlow;
-+       else if (fraction >= xlow)
-+	 fraction -= xlow;
-+       else
-+	 {
-+	   /* The high part is a power of two but the full number is lower.
-+	      This code will leave the implicit 1 in FRACTION, but we'd
-+	      have added that below anyway.  */
-+	   fraction = (((fractype) 1 << FRACBITS) - xlow) << 1;
-+	   exp--;
-+	 }
-+     }
-+ }
-+# else
-+  fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1);
-+  exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1);
-+  sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1;
-+# endif
-+#endif
-+
-+  dst->sign = sign;
-+  if (exp == 0)
-+    {
-+      /* Hmm.  Looks like 0 */
-+      if (fraction == 0
-+#ifdef NO_DENORMALS
-+	  || 1
-+#endif
-+	  )
-+	{
-+	  /* tastes like zero */
-+	  dst->class = CLASS_ZERO;
-+	}
-+      else
-+	{
-+	  /* Zero exponent with nonzero fraction - it's denormalized,
-+	     so there isn't a leading implicit one - we'll shift it so
-+	     it gets one.  */
-+	  dst->normal_exp = exp - EXPBIAS + 1;
-+	  fraction <<= NGARDS;
-+
-+	  dst->class = CLASS_NUMBER;
-+#if 1
-+	  while (fraction < IMPLICIT_1)
-+	    {
-+	      fraction <<= 1;
-+	      dst->normal_exp--;
-+	    }
-+#endif
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX)
-+    {
-+      /* Huge exponent*/
-+      if (fraction == 0)
-+	{
-+	  /* Attached to a zero fraction - means infinity */
-+	  dst->class = CLASS_INFINITY;
-+	}
-+      else
-+	{
-+	  /* Nonzero fraction, means nan */
-+#ifdef QUIET_NAN_NEGATED
-+	  if ((fraction & QUIET_NAN) == 0)
-+#else
-+	  if (fraction & QUIET_NAN)
-+#endif
-+	    {
-+	      dst->class = CLASS_QNAN;
-+	    }
-+	  else
-+	    {
-+	      dst->class = CLASS_SNAN;
-+	    }
-+	  /* Keep the fraction part as the nan number */
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else
-+    {
-+      /* Nothing strange about this number */
-+      dst->normal_exp = exp - EXPBIAS;
-+      dst->class = CLASS_NUMBER;
-+      dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1;
-+    }
-+}
-+#endif /* L_unpack_df || L_unpack_sf */
-+
-+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf)
-+static fp_number_type *
-+_fpadd_parts (fp_number_type * a,
-+	      fp_number_type * b,
-+	      fp_number_type * tmp)
-+{
-+  intfrac tfraction;
-+
-+  /* Put commonly used fields in local variables.  */
-+  int a_normal_exp;
-+  int b_normal_exp;
-+  fractype a_fraction;
-+  fractype b_fraction;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      /* Adding infinities with opposite signs yields a NaN.  */
-+      if (isinf (b) && a->sign != b->sign)
-+	return nan ();
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      return b;
-+    }
-+  if (iszero (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  *tmp = *a;
-+	  tmp->sign = a->sign & b->sign;
-+	  return tmp;
-+	}
-+      return a;
-+    }
-+  if (iszero (a))
-+    {
-+      return b;
-+    }
-+
-+  /* Got two numbers. shift the smaller and increment the exponent till
-+     they're the same */
-+  {
-+    int diff;
-+
-+    a_normal_exp = a->normal_exp;
-+    b_normal_exp = b->normal_exp;
-+    a_fraction = a->fraction.ll;
-+    b_fraction = b->fraction.ll;
-+
-+    diff = a_normal_exp - b_normal_exp;
-+
-+    if (diff < 0)
-+      diff = -diff;
-+    if (diff < FRAC_NBITS)
-+      {
-+	/* ??? This does shifts one bit at a time.  Optimize.  */
-+	while (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp++;
-+	    LSHIFT (b_fraction);
-+	  }
-+	while (b_normal_exp > a_normal_exp)
-+	  {
-+	    a_normal_exp++;
-+	    LSHIFT (a_fraction);
-+	  }
-+      }
-+    else
-+      {
-+	/* Somethings's up.. choose the biggest */
-+	if (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp = a_normal_exp;
-+	    b_fraction = 0;
-+	  }
-+	else
-+	  {
-+	    a_normal_exp = b_normal_exp;
-+	    a_fraction = 0;
-+	  }
-+      }
-+  }
-+
-+  if (a->sign != b->sign)
-+    {
-+      if (a->sign)
-+	{
-+	  tfraction = -a_fraction + b_fraction;
-+	}
-+      else
-+	{
-+	  tfraction = a_fraction - b_fraction;
-+	}
-+      if (tfraction >= 0)
-+	{
-+	  tmp->sign = 0;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = tfraction;
-+	}
-+      else
-+	{
-+	  tmp->sign = 1;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = -tfraction;
-+	}
-+      /* and renormalize it */
-+
-+      while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll)
-+	{
-+	  tmp->fraction.ll <<= 1;
-+	  tmp->normal_exp--;
-+	}
-+    }
-+  else
-+    {
-+      tmp->sign = a->sign;
-+      tmp->normal_exp = a_normal_exp;
-+      tmp->fraction.ll = a_fraction + b_fraction;
-+    }
-+  tmp->class = CLASS_NUMBER;
-+  /* Now the fraction is added, we have to shift down to renormalize the
-+     number */
-+
-+  if (tmp->fraction.ll >= IMPLICIT_2)
-+    {
-+      LSHIFT (tmp->fraction.ll);
-+      tmp->normal_exp++;
-+    }
-+  return tmp;
-+
-+}
-+
-+FLO_type
-+add (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+
-+FLO_type
-+sub (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  b.sign ^= 1;
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_addsub_sf || L_addsub_df */
-+
-+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpmul_parts ( fp_number_type *  a,
-+	       fp_number_type *  b,
-+	       fp_number_type * tmp)
-+{
-+  fractype low = 0;
-+  fractype high = 0;
-+
-+  if (isnan (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      if (iszero (b))
-+	return nan ();
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  return nan ();
-+	}
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (iszero (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both numbers to get a
-+     twice-as-wide number.  */
-+  {
-+#if defined(NO_DI_MODE) || defined(TFLOAT)
-+    {
-+      fractype x = a->fraction.ll;
-+      fractype ylow = b->fraction.ll;
-+      fractype yhigh = 0;
-+      int bit;
-+
-+      /* ??? This does multiplies one bit at a time.  Optimize.  */
-+      for (bit = 0; bit < FRAC_NBITS; bit++)
-+	{
-+	  int carry;
-+
-+	  if (x & 1)
-+	    {
-+	      carry = (low += ylow) < ylow;
-+	      high += yhigh + carry;
-+	    }
-+	  yhigh <<= 1;
-+	  if (ylow & FRACHIGH)
-+	    {
-+	      yhigh |= 1;
-+	    }
-+	  ylow <<= 1;
-+	  x >>= 1;
-+	}
-+    }
-+#elif defined(FLOAT) 
-+    /* Multiplying two USIs to get a UDI, we're safe.  */
-+    {
-+      UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll;
-+      
-+      high = answer >> BITS_PER_SI;
-+      low = answer;
-+    }
-+#else
-+    /* fractype is DImode, but we need the result to be twice as wide.
-+       Assuming a widening multiply from DImode to TImode is not
-+       available, build one by hand.  */
-+    {
-+      USItype nl = a->fraction.ll;
-+      USItype nh = a->fraction.ll >> BITS_PER_SI;
-+      USItype ml = b->fraction.ll;
-+      USItype mh = b->fraction.ll >> BITS_PER_SI;
-+      UDItype pp_ll = (UDItype) ml * nl;
-+      UDItype pp_hl = (UDItype) mh * nl;
-+      UDItype pp_lh = (UDItype) ml * nh;
-+      UDItype pp_hh = (UDItype) mh * nh;
-+      UDItype res2 = 0;
-+      UDItype res0 = 0;
-+      UDItype ps_hh__ = pp_hl + pp_lh;
-+      if (ps_hh__ < pp_hl)
-+	res2 += (UDItype)1 << BITS_PER_SI;
-+      pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI;
-+      res0 = pp_ll + pp_hl;
-+      if (res0 < pp_ll)
-+	res2++;
-+      res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh;
-+      high = res2;
-+      low = res0;
-+    }
-+#endif
-+  }
-+
-+  tmp->normal_exp = a->normal_exp + b->normal_exp
-+    + FRAC_NBITS - (FRACBITS + NGARDS);
-+  tmp->sign = a->sign != b->sign;
-+  while (high >= IMPLICIT_2)
-+    {
-+      tmp->normal_exp++;
-+      if (high & 1)
-+	{
-+	  low >>= 1;
-+	  low |= FRACHIGH;
-+	}
-+      high >>= 1;
-+    }
-+  while (high < IMPLICIT_1)
-+    {
-+      tmp->normal_exp--;
-+
-+      high <<= 1;
-+      if (low & FRACHIGH)
-+	high |= 1;
-+      low <<= 1;
-+    }
-+  /* rounding is tricky. if we only round if it won't make us round later.  */
-+#if 0
-+  if (low & FRACHIGH2)
-+    {
-+      if (((high & GARDMASK) != GARDMSB)
-+	  && (((high + 1) & GARDMASK) == GARDMSB))
-+	{
-+	  /* don't round, it gets done again later.  */
-+	}
-+      else
-+	{
-+	  high++;
-+	}
-+    }
-+#endif
-+  if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB)
-+    {
-+      if (high & (1 << NGARDS))
-+	{
-+	  /* half way, so round to even */
-+	  high += GARDROUND + 1;
-+	}
-+      else if (low)
-+	{
-+	  /* but we really weren't half way */
-+	  high += GARDROUND + 1;
-+	}
-+    }
-+  tmp->fraction.ll = high;
-+  tmp->class = CLASS_NUMBER;
-+  return tmp;
-+}
-+
-+FLO_type
-+multiply (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpmul_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_mul_sf || L_mul_df */
-+
-+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpdiv_parts (fp_number_type * a,
-+	      fp_number_type * b)
-+{
-+  fractype bit;
-+  fractype numerator;
-+  fractype denominator;
-+  fractype quotient;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+
-+  a->sign = a->sign ^ b->sign;
-+
-+  if (isinf (a) || iszero (a))
-+    {
-+      if (a->class == b->class)
-+	return nan ();
-+      return a;
-+    }
-+
-+  if (isinf (b))
-+    {
-+      a->fraction.ll = 0;
-+      a->normal_exp = 0;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      a->class = CLASS_INFINITY;
-+      return a;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both 64bit numbers to get a
-+     128 bit number */
-+  {
-+    /* quotient =
-+       ( numerator / denominator) * 2^(numerator exponent -  denominator exponent)
-+     */
-+
-+    a->normal_exp = a->normal_exp - b->normal_exp;
-+    numerator = a->fraction.ll;
-+    denominator = b->fraction.ll;
-+
-+    if (numerator < denominator)
-+      {
-+	/* Fraction will be less than 1.0 */
-+	numerator *= 2;
-+	a->normal_exp--;
-+      }
-+    bit = IMPLICIT_1;
-+    quotient = 0;
-+    /* ??? Does divide one bit at a time.  Optimize.  */
-+    while (bit)
-+      {
-+	if (numerator >= denominator)
-+	  {
-+	    quotient |= bit;
-+	    numerator -= denominator;
-+	  }
-+	bit >>= 1;
-+	numerator *= 2;
-+      }
-+
-+    if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB)
-+      {
-+	if (quotient & (1 << NGARDS))
-+	  {
-+	    /* half way, so round to even */
-+	    quotient += GARDROUND + 1;
-+	  }
-+	else if (numerator)
-+	  {
-+	    /* but we really weren't half way, more bits exist */
-+	    quotient += GARDROUND + 1;
-+	  }
-+      }
-+
-+    a->fraction.ll = quotient;
-+    return (a);
-+  }
-+}
-+
-+FLO_type
-+divide (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpdiv_parts (&a, &b);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_div_sf || L_div_df */
-+
-+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \
-+    || defined(L_fpcmp_parts_tf)
-+/* according to the demo, fpcmp returns a comparison with 0... thus
-+   a<b -> -1
-+   a==b -> 0
-+   a>b -> +1
-+ */
-+
-+int
-+__fpcmp_parts (fp_number_type * a, fp_number_type * b)
-+{
-+#if 0
-+  /* either nan -> unordered. Must be checked outside of this routine.  */
-+  if (isnan (a) && isnan (b))
-+    {
-+      return 1;			/* still unordered! */
-+    }
-+#endif
-+
-+  if (isnan (a) || isnan (b))
-+    {
-+      return 1;			/* how to indicate unordered compare? */
-+    }
-+  if (isinf (a) && isinf (b))
-+    {
-+      /* +inf > -inf, but +inf != +inf */
-+      /* b    \a| +inf(0)| -inf(1)
-+       ______\+--------+--------
-+       +inf(0)| a==b(0)| a<b(-1)
-+       -------+--------+--------
-+       -inf(1)| a>b(1) | a==b(0)
-+       -------+--------+--------
-+       So since unordered must be nonzero, just line up the columns...
-+       */
-+      return b->sign - a->sign;
-+    }
-+  /* but not both...  */
-+  if (isinf (a))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (isinf (b))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (a) && iszero (b))
-+    {
-+      return 0;
-+    }
-+  if (iszero (a))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (b))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  /* now both are "normal".  */
-+  if (a->sign != b->sign)
-+    {
-+      /* opposite signs */
-+      return a->sign ? -1 : 1;
-+    }
-+  /* same sign; exponents? */
-+  if (a->normal_exp > b->normal_exp)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->normal_exp < b->normal_exp)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* same exponents; check size.  */
-+  if (a->fraction.ll > b->fraction.ll)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->fraction.ll < b->fraction.ll)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* after all that, they're equal.  */
-+  return 0;
-+}
-+#endif
-+
-+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf)
-+CMPtype
-+compare (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_compare_sf || L_compare_df */
-+
-+#ifndef US_SOFTWARE_GOFAST
-+
-+/* These should be optimized for their specific tasks someday.  */
-+
-+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf)
-+CMPtype
-+_eq_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth == 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_eq_sf || L_eq_df */
-+
-+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf)
-+CMPtype
-+_ne_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* true, truth != 0 */
-+
-+  return  __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ne_sf || L_ne_df */
-+
-+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf)
-+CMPtype
-+_gt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth > 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_gt_sf || L_gt_df */
-+
-+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf)
-+CMPtype
-+_ge_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth >= 0 */
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ge_sf || L_ge_df */
-+
-+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf)
-+CMPtype
-+_lt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth < 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_lt_sf || L_lt_df */
-+
-+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf)
-+CMPtype
-+_le_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth <= 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_le_sf || L_le_df */
-+
-+#endif /* ! US_SOFTWARE_GOFAST */
-+
-+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf)
-+CMPtype
-+_unord_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return (isnan (&a) || isnan (&b));
-+}
-+#endif /* L_unord_sf || L_unord_df */
-+
-+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf)
-+FLO_type
-+si_to_float (SItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.class = CLASS_NUMBER;
-+  in.sign = arg_a < 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.normal_exp = FRACBITS + NGARDS;
-+      if (in.sign) 
-+	{
-+	  /* Special case for minint, since there is no +ve integer
-+	     representation for it */
-+	  if (arg_a == (- MAX_SI_INT - 1))
-+	    {
-+	      return (FLO_type)(- MAX_SI_INT - 1);
-+	    }
-+	  in.fraction.ll = (-arg_a);
-+	}
-+      else
-+	in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif /* L_si_to_sf || L_si_to_df */
-+
-+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf)
-+FLO_type
-+usi_to_float (USItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.sign = 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.class = CLASS_NUMBER;
-+      in.normal_exp = FRACBITS + NGARDS;
-+      in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS)))
-+        {
-+          in.fraction.ll >>= 1;
-+          in.normal_exp += 1;
-+        }
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif
-+
-+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si)
-+SItype
-+float_to_si (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  SItype tmp;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* get reasonable MAX_SI_INT...  */
-+  if (isinf (&a))
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 2)
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+  return a.sign ? (-tmp) : (tmp);
-+}
-+#endif /* L_sf_to_si || L_df_to_si */
-+
-+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi)
-+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi)
-+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines,
-+   we also define them for GOFAST because the ones in libgcc2.c have the
-+   wrong names and I'd rather define these here and keep GOFAST CYG-LOC's
-+   out of libgcc2.c.  We can't define these here if not GOFAST because then
-+   there'd be duplicate copies.  */
-+
-+USItype
-+float_to_usi (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* it is a negative number */
-+  if (a.sign)
-+    return 0;
-+  /* get reasonable MAX_USI_INT...  */
-+  if (isinf (&a))
-+    return MAX_USI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 1)
-+    return MAX_USI_INT;
-+  else if (a.normal_exp > (FRACBITS + NGARDS))
-+    return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS));
-+  else
-+    return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+}
-+#endif /* US_SOFTWARE_GOFAST */
-+#endif /* L_sf_to_usi || L_df_to_usi */
-+
-+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf)
-+FLO_type
-+negate (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  flip_sign (&a);
-+  return pack_d (&a);
-+}
-+#endif /* L_negate_sf || L_negate_df */
-+
-+#ifdef FLOAT
-+
-+#if defined(L_make_sf)
-+SFtype
-+__make_fp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     USItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_sf */
-+
-+#ifndef FLOAT_ONLY
-+
-+/* This enables one to build an fp library that supports float but not double.
-+   Otherwise, we would get an undefined reference to __make_dp.
-+   This is needed for some 8-bit ports that can't handle well values that
-+   are 8-bytes in size, so we just don't support double for them at all.  */
-+
-+#if defined(L_sf_to_df)
-+DFtype
-+sf_to_df (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp,
-+		    ((UDItype) in.fraction.ll) << F_D_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#if defined(L_sf_to_tf) && defined(TMODES)
-+TFtype
-+sf_to_tf (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << F_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#endif /* ! FLOAT_ONLY */
-+#endif /* FLOAT */
-+
-+#ifndef FLOAT
-+
-+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);
-+
-+#if defined(L_make_df)
-+DFtype
-+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_df */
-+
-+#if defined(L_df_to_sf)
-+SFtype
-+df_to_sf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_D_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_df_to_sf */
-+
-+#if defined(L_df_to_tf) && defined(TMODES) \
-+    && !defined(FLOAT) && !defined(TFLOAT)
-+TFtype
-+df_to_tf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << D_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#ifdef TFLOAT
-+#if defined(L_make_tf)
-+TFtype
-+__make_tp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     UTItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_tf */
-+
-+#if defined(L_tf_to_df)
-+DFtype
-+tf_to_df (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  UDItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> D_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_df */
-+
-+#if defined(L_tf_to_sf)
-+SFtype
-+tf_to_sf (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_sf */
-+#endif /* TFLOAT */
-+
-+#endif /* ! FLOAT */
-+#endif /* !EXTENDED_FLOAT_STUBS */
---- gcc-3.4.3/gcc/config/nios2/nios2-protos.h
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-protos.h
-@@ -0,0 +1,70 @@
-+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera 
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+extern void dump_frame_size (FILE *);
-+extern HOST_WIDE_INT compute_frame_size (void);
-+extern int nios2_initial_elimination_offset (int, int);
-+extern void override_options (void);
-+extern void optimization_options (int, int);
-+extern int nios2_can_use_return_insn (void);
-+extern void expand_prologue (void);
-+extern void expand_epilogue (bool);
-+extern void function_profiler (FILE *, int);
-+
-+
-+#ifdef RTX_CODE
-+extern int nios2_legitimate_address (rtx, enum machine_mode, int);
-+extern void nios2_print_operand (FILE *, rtx, int);
-+extern void nios2_print_operand_address (FILE *, rtx);
-+
-+extern int nios2_emit_move_sequence (rtx *, enum machine_mode);
-+extern int nios2_emit_expensive_div (rtx *, enum machine_mode);
-+
-+extern void gen_int_relational (enum rtx_code, rtx, rtx, rtx, rtx);
-+extern void gen_conditional_move (rtx *, enum machine_mode);
-+extern const char *asm_output_opcode (FILE *, const char *);
-+
-+/* predicates */
-+extern int arith_operand (rtx, enum machine_mode);
-+extern int uns_arith_operand (rtx, enum machine_mode);
-+extern int logical_operand (rtx, enum machine_mode);
-+extern int shift_operand (rtx, enum machine_mode);
-+extern int reg_or_0_operand (rtx, enum machine_mode);
-+extern int equality_op (rtx, enum machine_mode);
-+extern int custom_insn_opcode (rtx, enum machine_mode);
-+extern int rdwrctl_operand (rtx, enum machine_mode);
-+
-+# ifdef HAVE_MACHINE_MODES
-+#  if defined TREE_CODE
-+extern void function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern rtx function_arg (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern int function_arg_partial_nregs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
-+extern int nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+
-+#  endif /* TREE_CODE */
-+# endif	/* HAVE_MACHINE_MODES */
-+#endif
-+
-+#ifdef TREE_CODE
-+extern int nios2_return_in_memory (tree);
-+
-+#endif /* TREE_CODE */
---- gcc-3.4.3/gcc/config/nios2/nios2.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.c
-@@ -0,0 +1,2853 @@
-+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+
-+#include <stdio.h>
-+#include "config.h"
-+#include "system.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "rtl.h"
-+#include "tree.h"
-+#include "tm_p.h"
-+#include "regs.h"
-+#include "hard-reg-set.h"
-+#include "real.h"
-+#include "insn-config.h"
-+#include "conditions.h"
-+#include "output.h"
-+#include "insn-attr.h"
-+#include "flags.h"
-+#include "recog.h"
-+#include "expr.h"
-+#include "toplev.h"
-+#include "basic-block.h"
-+#include "function.h"
-+#include "ggc.h"
-+#include "reload.h"
-+#include "debug.h"
-+#include "optabs.h"
-+#include "target.h"
-+#include "target-def.h"
-+
-+/* local prototypes */
-+static bool nios2_rtx_costs (rtx, int, int, int *);
-+
-+static void nios2_asm_function_prologue (FILE *, HOST_WIDE_INT);
-+static int nios2_use_dfa_pipeline_interface (void);
-+static int nios2_issue_rate (void);
-+static struct machine_function *nios2_init_machine_status (void);
-+static bool nios2_in_small_data_p (tree);
-+static rtx save_reg (int, HOST_WIDE_INT, rtx);
-+static rtx restore_reg (int, HOST_WIDE_INT);
-+static unsigned int nios2_section_type_flags (tree, const char *, int);
-+static void nios2_init_builtins (void);
-+static rtx nios2_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
-+static bool nios2_function_ok_for_sibcall (tree, tree);
-+static void nios2_encode_section_info (tree, rtx, int);
-+
-+/* Initialize the GCC target structure.  */
-+#undef TARGET_ASM_FUNCTION_PROLOGUE
-+#define TARGET_ASM_FUNCTION_PROLOGUE nios2_asm_function_prologue
-+
-+#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE
-+#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE \
-+ nios2_use_dfa_pipeline_interface
-+#undef TARGET_SCHED_ISSUE_RATE
-+#define TARGET_SCHED_ISSUE_RATE nios2_issue_rate
-+#undef TARGET_IN_SMALL_DATA_P
-+#define TARGET_IN_SMALL_DATA_P nios2_in_small_data_p
-+#undef  TARGET_ENCODE_SECTION_INFO
-+#define TARGET_ENCODE_SECTION_INFO nios2_encode_section_info
-+#undef  TARGET_SECTION_TYPE_FLAGS
-+#define TARGET_SECTION_TYPE_FLAGS  nios2_section_type_flags
-+
-+#undef TARGET_INIT_BUILTINS
-+#define TARGET_INIT_BUILTINS nios2_init_builtins
-+#undef TARGET_EXPAND_BUILTIN
-+#define TARGET_EXPAND_BUILTIN nios2_expand_builtin
-+
-+#undef TARGET_FUNCTION_OK_FOR_SIBCALL
-+#define TARGET_FUNCTION_OK_FOR_SIBCALL nios2_function_ok_for_sibcall
-+
-+#undef TARGET_RTX_COSTS
-+#define TARGET_RTX_COSTS nios2_rtx_costs
-+
-+
-+struct gcc_target targetm = TARGET_INITIALIZER;
-+
-+
-+
-+/* Threshold for data being put into the small data/bss area, instead
-+   of the normal data area (references to the small data/bss area take
-+   1 instruction, and use the global pointer, references to the normal
-+   data area takes 2 instructions).  */
-+unsigned HOST_WIDE_INT nios2_section_threshold = NIOS2_DEFAULT_GVALUE;
-+
-+
-+/* Structure to be filled in by compute_frame_size with register
-+   save masks, and offsets for the current function.  */
-+
-+struct nios2_frame_info
-+GTY (())
-+{
-+  long total_size;		/* # bytes that the entire frame takes up */
-+  long var_size;		/* # bytes that variables take up */
-+  long args_size;		/* # bytes that outgoing arguments take up */
-+  int save_reg_size;		/* # bytes needed to store gp regs */
-+  int save_reg_rounded;		/* # bytes needed to store gp regs */
-+  long save_regs_offset;	/* offset from new sp to store gp registers */
-+  int initialized;		/* != 0 if frame size already calculated */
-+  int num_regs;			/* number of gp registers saved */
-+};
-+
-+struct machine_function
-+GTY (())
-+{
-+
-+  /* Current frame information, calculated by compute_frame_size.  */
-+  struct nios2_frame_info frame;
-+};
-+
-+
-+/***************************************
-+ * Section encodings
-+ ***************************************/
-+
-+
-+
-+
-+
-+/***************************************
-+ * Stack Layout and Calling Conventions
-+ ***************************************/
-+
-+
-+#define TOO_BIG_OFFSET(X) ((X) > ((1 << 15) - 1))
-+#define TEMP_REG_NUM 8
-+
-+static void
-+nios2_asm_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
-+{
-+  if (flag_verbose_asm || flag_debug_asm)
-+    {
-+      compute_frame_size ();
-+      dump_frame_size (file);
-+    }
-+}
-+
-+static rtx
-+save_reg (int regno, HOST_WIDE_INT offset, rtx cfa_store_reg)
-+{
-+  rtx insn, stack_slot;
-+
-+  stack_slot = gen_rtx_PLUS (SImode,
-+			     cfa_store_reg,
-+			     GEN_INT (offset));
-+
-+  insn = emit_insn (gen_rtx_SET (SImode,
-+				 gen_rtx_MEM (SImode, stack_slot),
-+				 gen_rtx_REG (SImode, regno)));
-+
-+  RTX_FRAME_RELATED_P (insn) = 1;
-+
-+  return insn;
-+}
-+
-+static rtx
-+restore_reg (int regno, HOST_WIDE_INT offset)
-+{
-+  rtx insn, stack_slot;
-+
-+  if (TOO_BIG_OFFSET (offset))
-+    {
-+      stack_slot = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     stack_slot,
-+				     GEN_INT (offset)));
-+
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     stack_slot,
-+                                     gen_rtx_PLUS (SImode,
-+				                   stack_slot,
-+				                   stack_pointer_rtx)));
-+    }
-+  else
-+    {
-+      stack_slot = gen_rtx_PLUS (SImode,
-+			         stack_pointer_rtx,
-+				 GEN_INT (offset));
-+    }
-+
-+  stack_slot = gen_rtx_MEM (SImode, stack_slot);
-+
-+  insn = emit_move_insn (gen_rtx_REG (SImode, regno), stack_slot);
-+
-+  return insn;
-+}
-+
-+
-+/* There are two possible paths for prologue expansion,
-+- the first is if the total frame size is < 2^15-1. In that
-+case all the immediates will fit into the 16-bit immediate
-+fields.
-+- the second is when the frame size is too big, in that
-+case an additional temporary register is used, first 
-+as a cfa_temp to offset the sp, second as the cfa_store
-+register.
-+
-+See the comment above dwarf2out_frame_debug_expr in 
-+dwarf2out.c for more explanation of the "rules."
-+
-+
-+Case 1:
-+Rule #  Example Insn                       Effect
-+2  	addi	sp, sp, -total_frame_size  cfa.reg=sp, cfa.offset=total_frame_size
-+                                           cfa_store.reg=sp, cfa_store.offset=total_frame_size
-+12  	stw	ra, offset(sp)		   
-+12  	stw	r16, offset(sp)
-+1  	mov	fp, sp
-+  
-+Case 2: 
-+Rule #  Example Insn                       Effect
-+6 	movi	r8, total_frame_size       cfa_temp.reg=r8, cfa_temp.offset=total_frame_size
-+2  	sub	sp, sp, r8                 cfa.reg=sp, cfa.offset=total_frame_size
-+                                           cfa_store.reg=sp, cfa_store.offset=total_frame_size
-+5   	add	r8, r8, sp                 cfa_store.reg=r8, cfa_store.offset=0
-+12  	stw	ra, offset(r8)
-+12  	stw	r16, offset(r8)
-+1  	mov	fp, sp
-+
-+*/
-+
-+void
-+expand_prologue ()
-+{
-+  int i;
-+  HOST_WIDE_INT total_frame_size;
-+  int cfa_store_offset;
-+  rtx insn;
-+  rtx cfa_store_reg = 0;
-+
-+  total_frame_size = compute_frame_size ();
-+
-+  if (total_frame_size)
-+    {
-+
-+      if (TOO_BIG_OFFSET (total_frame_size)) 
-+	{
-+	    /* cfa_temp and cfa_store_reg are the same register,
-+	       cfa_store_reg overwrites cfa_temp */
-+	    cfa_store_reg = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+	    insn = emit_insn (gen_rtx_SET (SImode,
-+					   cfa_store_reg,
-+					   GEN_INT (total_frame_size)));
-+
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+
-+	    insn = gen_rtx_SET (SImode,
-+				stack_pointer_rtx,
-+				gen_rtx_MINUS (SImode,
-+					       stack_pointer_rtx,
-+					       cfa_store_reg));
-+
-+	    insn = emit_insn (insn);
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+
-+	    /* if there are no registers to save, I don't need to
-+	       create a cfa_store */
-+	    if (cfun->machine->frame.save_reg_size) 
-+	      {
-+		insn = gen_rtx_SET (SImode,
-+				    cfa_store_reg,
-+				    gen_rtx_PLUS (SImode,
-+						  cfa_store_reg,
-+						  stack_pointer_rtx));
-+
-+		insn = emit_insn (insn);
-+		RTX_FRAME_RELATED_P (insn) = 1;
-+	      }
-+
-+	    cfa_store_offset 
-+	      = total_frame_size 
-+		- (cfun->machine->frame.save_regs_offset
-+		   + cfun->machine->frame.save_reg_rounded);
-+	}
-+      else
-+	{
-+	    insn = gen_rtx_SET (SImode,
-+				stack_pointer_rtx,
-+				gen_rtx_PLUS (SImode,
-+					      stack_pointer_rtx,
-+					      GEN_INT (-total_frame_size)));
-+	    insn = emit_insn (insn);
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+	    cfa_store_reg = stack_pointer_rtx;
-+	    cfa_store_offset 
-+	      = cfun->machine->frame.save_regs_offset
-+		+ cfun->machine->frame.save_reg_rounded;
-+	}
-+    }
-+
-+  if (MUST_SAVE_REGISTER (RA_REGNO))
-+    {
-+      cfa_store_offset -= 4;
-+      save_reg (RA_REGNO, cfa_store_offset, cfa_store_reg);
-+    }
-+  if (MUST_SAVE_REGISTER (FP_REGNO))
-+    {
-+      cfa_store_offset -= 4;
-+      save_reg (FP_REGNO, cfa_store_offset, cfa_store_reg);
-+    }
-+
-+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+    {
-+      if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO)
-+	{
-+	  cfa_store_offset -= 4;
-+	  save_reg (i, cfa_store_offset, cfa_store_reg);
-+	}
-+    }
-+
-+  if (frame_pointer_needed)
-+    {
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     gen_rtx_REG (SImode, FP_REGNO),
-+				     gen_rtx_REG (SImode, SP_REGNO)));
-+
-+      RTX_FRAME_RELATED_P (insn) = 1;
-+    }
-+
-+  /* If we are profiling, make sure no instructions are scheduled before
-+     the call to mcount.  */
-+  if (current_function_profile)
-+    emit_insn (gen_blockage ());
-+}
-+
-+void
-+expand_epilogue (bool sibcall_p)
-+{
-+  rtx insn;
-+  int i;
-+  HOST_WIDE_INT total_frame_size;
-+  int register_store_offset;
-+
-+  total_frame_size = compute_frame_size ();
-+
-+  if (!sibcall_p && nios2_can_use_return_insn ())
-+    {
-+      insn = emit_jump_insn (gen_return ());
-+      return;
-+    }
-+
-+  emit_insn (gen_blockage ());
-+
-+  register_store_offset =
-+    cfun->machine->frame.save_regs_offset +
-+    cfun->machine->frame.save_reg_rounded;
-+
-+  if (MUST_SAVE_REGISTER (RA_REGNO))
-+    {
-+      register_store_offset -= 4;
-+      restore_reg (RA_REGNO, register_store_offset);
-+    }
-+
-+  if (MUST_SAVE_REGISTER (FP_REGNO))
-+    {
-+      register_store_offset -= 4;
-+      restore_reg (FP_REGNO, register_store_offset);
-+    }
-+
-+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+    {
-+      if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO)
-+	{
-+	  register_store_offset -= 4;
-+	  restore_reg (i, register_store_offset);
-+	}
-+    }
-+
-+  if (total_frame_size)
-+    {
-+      rtx sp_adjust;
-+
-+      if (TOO_BIG_OFFSET (total_frame_size))
-+        {
-+	  sp_adjust = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+	  insn = emit_insn (gen_rtx_SET (SImode,
-+					 sp_adjust,
-+					 GEN_INT (total_frame_size)));
-+
-+      	}
-+      else
-+        {
-+	  sp_adjust = GEN_INT (total_frame_size);
-+	}
-+
-+      insn = gen_rtx_SET (SImode,
-+			  stack_pointer_rtx,
-+			  gen_rtx_PLUS (SImode,
-+					stack_pointer_rtx,
-+					sp_adjust));
-+      insn = emit_insn (insn);
-+    }
-+
-+
-+  if (!sibcall_p)
-+    {
-+      insn = emit_jump_insn (gen_return_from_epilogue (gen_rtx (REG, Pmode,
-+								RA_REGNO)));
-+    }
-+}
-+
-+
-+bool
-+nios2_function_ok_for_sibcall (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
-+{
-+  return true;
-+}
-+
-+
-+
-+
-+
-+/* ----------------------- *
-+ * Profiling
-+ * ----------------------- */
-+
-+void
-+function_profiler (FILE *file, int labelno)
-+{
-+  fprintf (file, "\t%s mcount begin, label: .LP%d\n", 
-+           ASM_COMMENT_START, labelno);
-+  fprintf (file, "\tnextpc\tr8\n");
-+  fprintf (file, "\tmov\tr9, ra\n");
-+  fprintf (file, "\tmovhi\tr10, %%hiadj(.LP%d)\n", labelno);
-+  fprintf (file, "\taddi\tr10, r10, %%lo(.LP%d)\n", labelno);
-+  fprintf (file, "\tcall\tmcount\n");
-+  fprintf (file, "\tmov\tra, r9\n");
-+  fprintf (file, "\t%s mcount end\n", ASM_COMMENT_START);
-+}
-+
-+
-+/***************************************
-+ * Stack Layout
-+ ***************************************/
-+
-+
-+void
-+dump_frame_size (FILE *file)
-+{
-+  fprintf (file, "\t%s Current Frame Info\n", ASM_COMMENT_START);
-+
-+  fprintf (file, "\t%s total_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.total_size);
-+  fprintf (file, "\t%s var_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.var_size);
-+  fprintf (file, "\t%s args_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.args_size);
-+  fprintf (file, "\t%s save_reg_size = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_reg_size);
-+  fprintf (file, "\t%s save_reg_rounded = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_reg_rounded);
-+  fprintf (file, "\t%s initialized = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.initialized);
-+  fprintf (file, "\t%s num_regs = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.num_regs);
-+  fprintf (file, "\t%s save_regs_offset = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_regs_offset);
-+  fprintf (file, "\t%s current_function_is_leaf = %d\n", ASM_COMMENT_START,
-+	   current_function_is_leaf);
-+  fprintf (file, "\t%s frame_pointer_needed = %d\n", ASM_COMMENT_START,
-+	   frame_pointer_needed);
-+  fprintf (file, "\t%s pretend_args_size = %d\n", ASM_COMMENT_START,
-+	   current_function_pretend_args_size);
-+
-+}
-+
-+
-+/* Return the bytes needed to compute the frame pointer from the current
-+   stack pointer.
-+*/
-+
-+HOST_WIDE_INT
-+compute_frame_size ()
-+{
-+  unsigned int regno;
-+  HOST_WIDE_INT var_size;	/* # of var. bytes allocated */
-+  HOST_WIDE_INT total_size;	/* # bytes that the entire frame takes up */
-+  HOST_WIDE_INT save_reg_size;	/* # bytes needed to store callee save regs */
-+  HOST_WIDE_INT save_reg_rounded;	
-+    /* # bytes needed to store callee save regs (rounded) */
-+  HOST_WIDE_INT out_args_size;	/* # bytes needed for outgoing args */
-+
-+  save_reg_size = 0;
-+  var_size = STACK_ALIGN (get_frame_size ());
-+  out_args_size = STACK_ALIGN (current_function_outgoing_args_size);
-+
-+  total_size = var_size + out_args_size;
-+
-+  /* Calculate space needed for gp registers.  */
-+  for (regno = 0; regno <= FIRST_PSEUDO_REGISTER; regno++)
-+    {
-+      if (MUST_SAVE_REGISTER (regno))
-+	{
-+	  save_reg_size += 4;
-+	}
-+    }
-+
-+  save_reg_rounded = STACK_ALIGN (save_reg_size);
-+  total_size += save_reg_rounded;
-+
-+  total_size += STACK_ALIGN (current_function_pretend_args_size);
-+
-+  /* Save other computed information.  */
-+  cfun->machine->frame.total_size = total_size;
-+  cfun->machine->frame.var_size = var_size;
-+  cfun->machine->frame.args_size = current_function_outgoing_args_size;
-+  cfun->machine->frame.save_reg_size = save_reg_size;
-+  cfun->machine->frame.save_reg_rounded = save_reg_rounded;
-+  cfun->machine->frame.initialized = reload_completed;
-+  cfun->machine->frame.num_regs = save_reg_size / UNITS_PER_WORD;
-+
-+  cfun->machine->frame.save_regs_offset
-+    = save_reg_rounded ? current_function_outgoing_args_size + var_size : 0;
-+
-+  return total_size;
-+}
-+
-+
-+int
-+nios2_initial_elimination_offset (int from, int to ATTRIBUTE_UNUSED)
-+{
-+  int offset;
-+
-+  /* Set OFFSET to the offset from the stack pointer.  */
-+  switch (from)
-+    {
-+    case FRAME_POINTER_REGNUM:
-+      offset = 0;
-+      break;
-+
-+    case ARG_POINTER_REGNUM:
-+      compute_frame_size ();
-+      offset = cfun->machine->frame.total_size;
-+      offset -= current_function_pretend_args_size;
-+      break;
-+
-+    case RETURN_ADDRESS_POINTER_REGNUM:
-+      compute_frame_size ();
-+      /* since the return address is always the first of the
-+         saved registers, return the offset to the beginning
-+         of the saved registers block */
-+      offset = cfun->machine->frame.save_regs_offset;
-+      break;
-+
-+    default:
-+      abort ();
-+    }
-+
-+  return offset;
-+}
-+
-+/* Return nonzero if this function is known to have a null epilogue.
-+   This allows the optimizer to omit jumps to jumps if no stack
-+   was created.  */
-+int
-+nios2_can_use_return_insn ()
-+{
-+  if (!reload_completed)
-+    return 0;
-+
-+  if (regs_ever_live[RA_REGNO] || current_function_profile)
-+    return 0;
-+
-+  if (cfun->machine->frame.initialized)
-+    return cfun->machine->frame.total_size == 0;
-+
-+  return compute_frame_size () == 0;
-+}
-+
-+
-+
-+
-+
-+/***************************************
-+ *
-+ ***************************************/
-+
-+const char *nios2_sys_nosys_string;    /* for -msys=nosys */
-+const char *nios2_sys_lib_string;    /* for -msys-lib= */
-+const char *nios2_sys_crt0_string;    /* for -msys-crt0= */
-+
-+void
-+override_options ()
-+{
-+  /* Function to allocate machine-dependent function status.  */
-+  init_machine_status = &nios2_init_machine_status;
-+
-+  nios2_section_threshold 
-+    = g_switch_set ? g_switch_value : NIOS2_DEFAULT_GVALUE;
-+
-+  if (nios2_sys_nosys_string && *nios2_sys_nosys_string)
-+    {
-+      error ("invalid option '-msys=nosys%s'", nios2_sys_nosys_string);
-+    }
-+
-+  /* If we don't have mul, we don't have mulx either! */
-+  if (!TARGET_HAS_MUL && TARGET_HAS_MULX) 
-+    {
-+      target_flags &= ~HAS_MULX_FLAG;
-+    }
-+
-+}
-+
-+void
-+optimization_options (int level, int size)
-+{
-+  if (level || size)
-+    {
-+      target_flags |= INLINE_MEMCPY_FLAG;
-+    }
-+
-+  if (level >= 3 && !size)
-+    {
-+      target_flags |= FAST_SW_DIV_FLAG;
-+    }
-+}
-+
-+/* Allocate a chunk of memory for per-function machine-dependent data.  */
-+static struct machine_function *
-+nios2_init_machine_status ()
-+{
-+  return ((struct machine_function *)
-+	  ggc_alloc_cleared (sizeof (struct machine_function)));
-+}
-+
-+
-+
-+/*****************
-+ * Describing Relative Costs of Operations
-+ *****************/
-+
-+/* Compute a (partial) cost for rtx X.  Return true if the complete
-+   cost has been computed, and false if subexpressions should be
-+   scanned.  In either case, *TOTAL contains the cost result.  */
-+
-+
-+
-+static bool
-+nios2_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, int *total)
-+{
-+  switch (code)
-+    {
-+      case CONST_INT:
-+	if (INTVAL (x) == 0)
-+	  {
-+	    *total = COSTS_N_INSNS (0);
-+	    return true;
-+	  }
-+	else if (SMALL_INT (INTVAL (x))
-+		|| SMALL_INT_UNSIGNED (INTVAL (x))
-+		|| UPPER16_INT (INTVAL (x)))
-+	  {
-+	    *total = COSTS_N_INSNS (2);
-+	    return true;
-+	  }
-+	else
-+	  {
-+	    *total = COSTS_N_INSNS (4);
-+	    return true;
-+	  }
-+
-+      case LABEL_REF:
-+      case SYMBOL_REF:
-+	/* ??? gp relative stuff will fit in here */
-+	/* fall through */
-+      case CONST:
-+      case CONST_DOUBLE:
-+	{
-+	  *total = COSTS_N_INSNS (4);
-+	  return true;
-+	}
-+
-+      case MULT:
-+	{
-+	  *total = COSTS_N_INSNS (1);
-+	  return false;
-+	}
-+      case SIGN_EXTEND:
-+	{
-+	  *total = COSTS_N_INSNS (3);
-+	  return false;
-+	}
-+      case ZERO_EXTEND:
-+	{
-+	  *total = COSTS_N_INSNS (1);
-+	  return false;
-+	}
-+
-+    default:
-+      return false;
-+    }
-+}
-+
-+
-+/***************************************
-+ * INSTRUCTION SUPPORT
-+ *
-+ * These functions are used within the Machine Description to
-+ * handle common or complicated output and expansions from
-+ * instructions.
-+ ***************************************/
-+
-+int
-+nios2_emit_move_sequence (rtx *operands, enum machine_mode mode)
-+{
-+  rtx to = operands[0];
-+  rtx from = operands[1];
-+
-+  if (!register_operand (to, mode) && !reg_or_0_operand (from, mode))
-+    {
-+      if (no_new_pseudos)
-+	internal_error ("Trying to force_reg no_new_pseudos == 1");
-+      from = copy_to_mode_reg (mode, from);
-+    }
-+
-+  operands[0] = to;
-+  operands[1] = from;
-+  return 0;
-+}
-+
-+/* Divide Support */
-+
-+/*
-+  If -O3 is used, we want to output a table lookup for
-+  divides between small numbers (both num and den >= 0
-+  and < 0x10). The overhead of this method in the worse
-+  case is 40 bytes in the text section (10 insns) and
-+  256 bytes in the data section. Additional divides do
-+  not incur additional penalties in the data section.
-+
-+  Code speed is improved for small divides by about 5x
-+  when using this method in the worse case (~9 cycles
-+  vs ~45). And in the worse case divides not within the
-+  table are penalized by about 10% (~5 cycles vs ~45).
-+  However in the typical case the penalty is not as bad
-+  because doing the long divide in only 45 cycles is
-+  quite optimistic.
-+
-+  ??? It would be nice to have some benchmarks other
-+  than Dhrystone to back this up.
-+
-+  This bit of expansion is to create this instruction
-+  sequence as rtl.
-+	or	$8, $4, $5
-+	slli	$9, $4, 4
-+	cmpgeui	$3, $8, 16
-+	beq	$3, $0, .L3
-+	or	$10, $9, $5
-+	add	$12, $11, divide_table
-+	ldbu	$2, 0($12)
-+	br	.L1
-+.L3:
-+	call	slow_div
-+.L1:
-+#	continue here with result in $2
-+
-+  ??? Ideally I would like the emit libcall block to contain
-+  all of this code, but I don't know how to do that. What it
-+  means is that if the divide can be eliminated, it may not
-+  completely disappear.
-+
-+  ??? The __divsi3_table label should ideally be moved out
-+  of this block and into a global. If it is placed into the
-+  sdata section we can save even more cycles by doing things
-+  gp relative.
-+*/
-+int
-+nios2_emit_expensive_div (rtx *operands, enum machine_mode mode)
-+{
-+  rtx or_result, shift_left_result;
-+  rtx lookup_value;
-+  rtx lab1, lab3;
-+  rtx insns;
-+  rtx libfunc;
-+  rtx final_result;
-+  rtx tmp;
-+
-+  /* it may look a little generic, but only SImode
-+     is supported for now */
-+  if (mode != SImode)
-+    abort ();
-+
-+  libfunc = sdiv_optab->handlers[(int) SImode].libfunc;
-+
-+
-+
-+  lab1 = gen_label_rtx ();
-+  lab3 = gen_label_rtx ();
-+
-+  or_result = expand_simple_binop (SImode, IOR,
-+				   operands[1], operands[2],
-+				   0, 0, OPTAB_LIB_WIDEN);
-+
-+  emit_cmp_and_jump_insns (or_result, GEN_INT (15), GTU, 0,
-+			   GET_MODE (or_result), 0, lab3);
-+  JUMP_LABEL (get_last_insn ()) = lab3;
-+
-+  shift_left_result = expand_simple_binop (SImode, ASHIFT,
-+					   operands[1], GEN_INT (4),
-+					   0, 0, OPTAB_LIB_WIDEN);
-+
-+  lookup_value = expand_simple_binop (SImode, IOR,
-+				      shift_left_result, operands[2],
-+				      0, 0, OPTAB_LIB_WIDEN);
-+
-+  convert_move (operands[0],
-+		gen_rtx (MEM, QImode,
-+			 gen_rtx (PLUS, SImode,
-+				  lookup_value,
-+				  gen_rtx_SYMBOL_REF (SImode, "__divsi3_table"))),
-+		1);
-+
-+
-+  tmp = emit_jump_insn (gen_jump (lab1));
-+  JUMP_LABEL (tmp) = lab1;
-+  emit_barrier ();
-+
-+  emit_label (lab3);
-+  LABEL_NUSES (lab3) = 1;
-+
-+  start_sequence ();
-+  final_result = emit_library_call_value (libfunc, NULL_RTX,
-+					  LCT_CONST, SImode, 2,
-+					  operands[1], SImode,
-+					  operands[2], SImode);
-+
-+
-+  insns = get_insns ();
-+  end_sequence ();
-+  emit_libcall_block (insns, operands[0], final_result,
-+		      gen_rtx (DIV, SImode, operands[1], operands[2]));
-+
-+  emit_label (lab1);
-+  LABEL_NUSES (lab1) = 1;
-+  return 1;
-+}
-+
-+/* Branches/Compares */
-+
-+/* the way of handling branches/compares
-+   in gcc is heavily borrowed from MIPS */
-+
-+enum internal_test
-+{
-+  ITEST_EQ,
-+  ITEST_NE,
-+  ITEST_GT,
-+  ITEST_GE,
-+  ITEST_LT,
-+  ITEST_LE,
-+  ITEST_GTU,
-+  ITEST_GEU,
-+  ITEST_LTU,
-+  ITEST_LEU,
-+  ITEST_MAX
-+};
-+
-+static enum internal_test map_test_to_internal_test (enum rtx_code);
-+
-+/* Cached operands, and operator to compare for use in set/branch/trap
-+   on condition codes.  */
-+rtx branch_cmp[2];
-+enum cmp_type branch_type;
-+
-+/* Make normal rtx_code into something we can index from an array */
-+
-+static enum internal_test
-+map_test_to_internal_test (enum rtx_code test_code)
-+{
-+  enum internal_test test = ITEST_MAX;
-+
-+  switch (test_code)
-+    {
-+    case EQ:
-+      test = ITEST_EQ;
-+      break;
-+    case NE:
-+      test = ITEST_NE;
-+      break;
-+    case GT:
-+      test = ITEST_GT;
-+      break;
-+    case GE:
-+      test = ITEST_GE;
-+      break;
-+    case LT:
-+      test = ITEST_LT;
-+      break;
-+    case LE:
-+      test = ITEST_LE;
-+      break;
-+    case GTU:
-+      test = ITEST_GTU;
-+      break;
-+    case GEU:
-+      test = ITEST_GEU;
-+      break;
-+    case LTU:
-+      test = ITEST_LTU;
-+      break;
-+    case LEU:
-+      test = ITEST_LEU;
-+      break;
-+    default:
-+      break;
-+    }
-+
-+  return test;
-+}
-+
-+/* Generate the code to compare (and possibly branch) two integer values
-+   TEST_CODE is the comparison code we are trying to emulate 
-+     (or implement directly)
-+   RESULT is where to store the result of the comparison, 
-+     or null to emit a branch
-+   CMP0 CMP1 are the two comparison operands
-+   DESTINATION is the destination of the branch, or null to only compare
-+   */
-+
-+void
-+gen_int_relational (enum rtx_code test_code, /* relational test (EQ, etc) */
-+		    rtx result,		/* result to store comp. or 0 if branch */
-+		    rtx cmp0,		/* first operand to compare */
-+		    rtx cmp1,		/* second operand to compare */
-+		    rtx destination)	/* destination of the branch, or 0 if compare */
-+{
-+  struct cmp_info
-+  {
-+    /* for register (or 0) compares */
-+    enum rtx_code test_code_reg;	/* code to use in instruction (LT vs. LTU) */
-+    int reverse_regs;		/* reverse registers in test */
-+
-+    /* for immediate compares */
-+    enum rtx_code test_code_const;	
-+         /* code to use in instruction (LT vs. LTU) */
-+    int const_low;		/* low bound of constant we can accept */
-+    int const_high;		/* high bound of constant we can accept */
-+    int const_add;		/* constant to add */
-+
-+    /* generic info */
-+    int unsignedp;		/* != 0 for unsigned comparisons.  */
-+  };
-+
-+  static const struct cmp_info info[(int) ITEST_MAX] = {
-+
-+    {EQ, 0, EQ, -32768, 32767, 0, 0}, /* EQ  */
-+    {NE, 0, NE, -32768, 32767, 0, 0}, /* NE  */
-+
-+    {LT, 1, GE, -32769, 32766, 1, 0}, /* GT  */
-+    {GE, 0, GE, -32768, 32767, 0, 0}, /* GE  */
-+    {LT, 0, LT, -32768, 32767, 0, 0}, /* LT  */
-+    {GE, 1, LT, -32769, 32766, 1, 0}, /* LE  */
-+
-+    {LTU, 1, GEU, 0, 65534, 1, 0}, /* GTU */
-+    {GEU, 0, GEU, 0, 65535, 0, 0}, /* GEU */
-+    {LTU, 0, LTU, 0, 65535, 0, 0}, /* LTU */
-+    {GEU, 1, LTU, 0, 65534, 1, 0}, /* LEU */
-+  };
-+
-+  enum internal_test test;
-+  enum machine_mode mode;
-+  const struct cmp_info *p_info;
-+  int branch_p;
-+
-+
-+
-+
-+  test = map_test_to_internal_test (test_code);
-+  if (test == ITEST_MAX)
-+    abort ();
-+
-+  p_info = &info[(int) test];
-+
-+  mode = GET_MODE (cmp0);
-+  if (mode == VOIDmode)
-+    mode = GET_MODE (cmp1);
-+
-+  branch_p = (destination != 0);
-+
-+  /* We can't, under any circumstances, have const_ints in cmp0
-+     ??? Actually we could have const0 */
-+  if (GET_CODE (cmp0) == CONST_INT)
-+    cmp0 = force_reg (mode, cmp0);
-+
-+  /* if the comparison is against an int not in legal range
-+     move it into a register */
-+  if (GET_CODE (cmp1) == CONST_INT)
-+    {
-+      HOST_WIDE_INT value = INTVAL (cmp1);
-+
-+      if (value < p_info->const_low || value > p_info->const_high)
-+	cmp1 = force_reg (mode, cmp1);
-+    }
-+
-+  /* Comparison to constants, may involve adding 1 to change a GT into GE.
-+     Comparison between two registers, may involve switching operands.  */
-+  if (GET_CODE (cmp1) == CONST_INT)
-+    {
-+      if (p_info->const_add != 0)
-+	{
-+	  HOST_WIDE_INT new = INTVAL (cmp1) + p_info->const_add;
-+
-+	  /* If modification of cmp1 caused overflow,
-+	     we would get the wrong answer if we follow the usual path;
-+	     thus, x > 0xffffffffU would turn into x > 0U.  */
-+	  if ((p_info->unsignedp
-+	       ? (unsigned HOST_WIDE_INT) new >
-+	       (unsigned HOST_WIDE_INT) INTVAL (cmp1)
-+	       : new > INTVAL (cmp1)) != (p_info->const_add > 0))
-+	    {
-+	      /* ??? This case can never happen with the current numbers,
-+	         but I am paranoid and would rather an abort than
-+	         a bug I will never find */
-+	      abort ();
-+	    }
-+	  else
-+	    cmp1 = GEN_INT (new);
-+	}
-+    }
-+
-+  else if (p_info->reverse_regs)
-+    {
-+      rtx temp = cmp0;
-+      cmp0 = cmp1;
-+      cmp1 = temp;
-+    }
-+
-+
-+
-+  if (branch_p)
-+    {
-+      if (register_operand (cmp0, mode) && register_operand (cmp1, mode))
-+	{
-+	  rtx insn;
-+	  rtx cond = gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1);
-+	  rtx label = gen_rtx_LABEL_REF (VOIDmode, destination);
-+
-+	  insn = gen_rtx_SET (VOIDmode, pc_rtx,
-+			      gen_rtx_IF_THEN_ELSE (VOIDmode,
-+						    cond, label, pc_rtx));
-+	  emit_jump_insn (insn);
-+	}
-+      else
-+	{
-+	  rtx cond, label;
-+
-+	  result = gen_reg_rtx (mode);
-+
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_const, mode, cmp0,
-+				   cmp1));
-+
-+	  cond = gen_rtx (NE, mode, result, const0_rtx);
-+	  label = gen_rtx_LABEL_REF (VOIDmode, destination);
-+
-+	  emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx,
-+				       gen_rtx_IF_THEN_ELSE (VOIDmode,
-+							     cond,
-+							     label, pc_rtx)));
-+	}
-+    }
-+  else
-+    {
-+      if (register_operand (cmp0, mode) && register_operand (cmp1, mode))
-+	{
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1));
-+	}
-+      else
-+	{
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_const, mode, cmp0,
-+				   cmp1));
-+	}
-+    }
-+
-+}
-+
-+
-+/* ??? For now conditional moves are only supported
-+   when the mode of the operands being compared are
-+   the same as the ones being moved */
-+
-+void
-+gen_conditional_move (rtx *operands, enum machine_mode mode)
-+{
-+  rtx insn, cond;
-+  rtx cmp_reg = gen_reg_rtx (mode);
-+  enum rtx_code cmp_code = GET_CODE (operands[1]);
-+  enum rtx_code move_code = EQ;
-+
-+  /* emit a comparison if it is not "simple".
-+     Simple comparisons are X eq 0 and X ne 0 */
-+  if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[1] == const0_rtx)
-+    {
-+      cmp_reg = branch_cmp[0];
-+      move_code = cmp_code;
-+    }
-+  else if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[0] == const0_rtx)
-+    {
-+      cmp_reg = branch_cmp[1];
-+      move_code = cmp_code == EQ ? NE : EQ;
-+    }
-+  else
-+    gen_int_relational (cmp_code, cmp_reg, branch_cmp[0], branch_cmp[1],
-+			NULL_RTX);
-+
-+  cond = gen_rtx (move_code, VOIDmode, cmp_reg, CONST0_RTX (mode));
-+  insn = gen_rtx_SET (mode, operands[0],
-+		      gen_rtx_IF_THEN_ELSE (mode,
-+					    cond, operands[2], operands[3]));
-+  emit_insn (insn);
-+}
-+
-+/*******************
-+ * Addressing Modes
-+ *******************/
-+
-+int
-+nios2_legitimate_address (rtx operand, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                          int strict)
-+{
-+  int ret_val = 0;
-+
-+  switch (GET_CODE (operand))
-+    {
-+      /* direct.  */
-+    case SYMBOL_REF:
-+      if (SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (operand))
-+        {
-+          ret_val = 1;
-+          break;
-+	}
-+      /* else, fall through */
-+    case LABEL_REF:
-+    case CONST_INT:
-+    case CONST:
-+    case CONST_DOUBLE:
-+      /* ??? In here I need to add gp addressing */
-+      ret_val = 0;
-+
-+      break;
-+
-+      /* Register indirect.  */
-+    case REG:
-+      ret_val = REG_OK_FOR_BASE_P2 (operand, strict);
-+      break;
-+
-+      /* Register indirect with displacement */
-+    case PLUS:
-+      {
-+	rtx op0 = XEXP (operand, 0);
-+	rtx op1 = XEXP (operand, 1);
-+
-+	if (REG_P (op0) && REG_P (op1))
-+	  ret_val = 0;
-+	else if (REG_P (op0) && CONSTANT_P (op1))
-+	  ret_val = REG_OK_FOR_BASE_P2 (op0, strict)
-+	    && SMALL_INT (INTVAL (op1));
-+	else if (REG_P (op1) && CONSTANT_P (op0))
-+	  ret_val = REG_OK_FOR_BASE_P2 (op1, strict)
-+	    && SMALL_INT (INTVAL (op0));
-+	else
-+	  ret_val = 0;
-+      }
-+      break;
-+
-+    default:
-+      ret_val = 0;
-+      break;
-+    }
-+
-+  return ret_val;
-+}
-+
-+/* Return true if EXP should be placed in the small data section.  */
-+
-+static bool
-+nios2_in_small_data_p (tree exp)
-+{
-+  /* We want to merge strings, so we never consider them small data.  */
-+  if (TREE_CODE (exp) == STRING_CST)
-+    return false;
-+
-+  if (TREE_CODE (exp) == VAR_DECL && DECL_SECTION_NAME (exp))
-+    {
-+      const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (exp));
-+      /* ??? these string names need moving into 
-+         an array in some header file */
-+      if (nios2_section_threshold > 0
-+          && (strcmp (section, ".sbss") == 0
-+	      || strncmp (section, ".sbss.", 6) == 0
-+	      || strcmp (section, ".sdata") == 0
-+	      || strncmp (section, ".sdata.", 7) == 0))
-+	return true;
-+    }
-+  else if (TREE_CODE (exp) == VAR_DECL)
-+    {
-+      HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
-+
-+      /* If this is an incomplete type with size 0, then we can't put it
-+         in sdata because it might be too big when completed.  */
-+      if (size > 0 && size <= nios2_section_threshold)
-+	return true;
-+    }
-+
-+  return false;
-+}
-+
-+static void
-+nios2_encode_section_info (tree decl, rtx rtl, int first)
-+{
-+
-+  rtx symbol;
-+  int flags;
-+
-+  default_encode_section_info (decl, rtl, first);
-+  
-+  /* Careful not to prod global register variables.  */
-+  if (GET_CODE (rtl) != MEM)
-+    return;
-+  symbol = XEXP (rtl, 0);
-+  if (GET_CODE (symbol) != SYMBOL_REF)
-+    return;
-+
-+  flags = SYMBOL_REF_FLAGS (symbol);
-+    
-+  /* We don't want weak variables to be addressed with gp in case they end up with
-+     value 0 which is not within 2^15 of $gp */
-+  if (DECL_P (decl) && DECL_WEAK (decl))
-+    flags |= SYMBOL_FLAG_WEAK_DECL;
-+
-+  SYMBOL_REF_FLAGS (symbol) = flags;
-+}
-+
-+
-+static unsigned int
-+nios2_section_type_flags (tree decl, const char *name, int reloc)
-+{
-+  unsigned int flags;
-+
-+  flags = default_section_type_flags (decl, name, reloc);
-+
-+  /* ??? these string names need moving into an array in some header file */
-+  if (strcmp (name, ".sbss") == 0
-+      || strncmp (name, ".sbss.", 6) == 0
-+      || strcmp (name, ".sdata") == 0
-+      || strncmp (name, ".sdata.", 7) == 0)
-+    flags |= SECTION_SMALL;
-+
-+  return flags;
-+}
-+
-+
-+
-+
-+/*****************************************
-+ * Defining the Output Assembler Language
-+ *****************************************/
-+
-+/* -------------- *
-+ * Output of Data
-+ * -------------- */
-+
-+
-+/* -------------------------------- *
-+ * Output of Assembler Instructions
-+ * -------------------------------- */
-+
-+
-+/* print the operand OP to file stream
-+   FILE modified by LETTER. LETTER
-+   can be one of:
-+     i: print "i" if OP is an immediate, except 0
-+     o: print "io" if OP is volatile
-+
-+     z: for const0_rtx print $0 instead of 0
-+     H: for %hiadj
-+     L: for %lo
-+     U: for upper half of 32 bit value
-+ */
-+
-+void
-+nios2_print_operand (FILE *file, rtx op, int letter)
-+{
-+
-+  switch (letter)
-+    {
-+    case 'i':
-+      if (CONSTANT_P (op) && (op != const0_rtx))
-+	fprintf (file, "i");
-+      return;
-+
-+    case 'o':
-+      if (GET_CODE (op) == MEM
-+          && ((MEM_VOLATILE_P (op) && !TARGET_CACHE_VOLATILE)
-+              || TARGET_BYPASS_CACHE))
-+	fprintf (file, "io");
-+      return;
-+
-+    default:
-+      break;
-+    }
-+
-+  if (comparison_operator (op, VOIDmode))
-+    {
-+      if (letter == 0)
-+	{
-+	  fprintf (file, "%s", GET_RTX_NAME (GET_CODE (op)));
-+	  return;
-+	}
-+    }
-+
-+
-+  switch (GET_CODE (op))
-+    {
-+    case REG:
-+      if (letter == 0 || letter == 'z')
-+	{
-+	  fprintf (file, "%s", reg_names[REGNO (op)]);
-+	  return;
-+	}
-+
-+    case CONST_INT:
-+      if (INTVAL (op) == 0 && letter == 'z')
-+	{
-+	  fprintf (file, "zero");
-+	  return;
-+	}
-+      else if (letter == 'U')
-+	{
-+	  HOST_WIDE_INT val = INTVAL (op);
-+	  rtx new_op;
-+	  val = (val / 65536) & 0xFFFF;
-+	  new_op = GEN_INT (val);
-+	  output_addr_const (file, new_op);
-+	  return;
-+	}
-+
-+      /* else, fall through */
-+    case CONST:
-+    case LABEL_REF:
-+    case SYMBOL_REF:
-+    case CONST_DOUBLE:
-+      if (letter == 0 || letter == 'z')
-+	{
-+	  output_addr_const (file, op);
-+	  return;
-+	}
-+      else if (letter == 'H')
-+	{
-+	  fprintf (file, "%%hiadj(");
-+	  output_addr_const (file, op);
-+	  fprintf (file, ")");
-+	  return;
-+	}
-+      else if (letter == 'L')
-+	{
-+	  fprintf (file, "%%lo(");
-+	  output_addr_const (file, op);
-+	  fprintf (file, ")");
-+	  return;
-+	}
-+
-+
-+    case SUBREG:
-+    case MEM:
-+      if (letter == 0)
-+	{
-+	  output_address (op);
-+	  return;
-+	}
-+
-+    case CODE_LABEL:
-+      if (letter == 0)
-+	{
-+	  output_addr_const (file, op);
-+	  return;
-+	}
-+
-+    default:
-+      break;
-+    }
-+
-+  fprintf (stderr, "Missing way to print (%c) ", letter);
-+  debug_rtx (op);
-+  abort ();
-+}
-+
-+static int gprel_constant (rtx);
-+
-+static int
-+gprel_constant (rtx op)
-+{
-+  if (GET_CODE (op) == SYMBOL_REF
-+      && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (op))
-+    {
-+      return 1;
-+    }
-+  else if (GET_CODE (op) == CONST
-+           && GET_CODE (XEXP (op, 0)) == PLUS)
-+    {
-+      return gprel_constant (XEXP (XEXP (op, 0), 0));
-+    }
-+  else
-+    {
-+      return 0;
-+    }
-+}
-+
-+void
-+nios2_print_operand_address (FILE *file, rtx op)
-+{
-+  switch (GET_CODE (op))
-+    {
-+    case CONST:
-+    case CONST_INT:
-+    case LABEL_REF:
-+    case CONST_DOUBLE:
-+    case SYMBOL_REF:
-+      if (gprel_constant (op))
-+        {
-+          fprintf (file, "%%gprel(");
-+          output_addr_const (file, op);
-+          fprintf (file, ")(%s)", reg_names[GP_REGNO]);
-+          return;
-+        }
-+
-+      break;
-+
-+    case PLUS:
-+      {
-+	rtx op0 = XEXP (op, 0);
-+	rtx op1 = XEXP (op, 1);
-+
-+	if (REG_P (op0) && CONSTANT_P (op1))
-+	  {
-+	    output_addr_const (file, op1);
-+	    fprintf (file, "(%s)", reg_names[REGNO (op0)]);
-+	    return;
-+	  }
-+	else if (REG_P (op1) && CONSTANT_P (op0))
-+	  {
-+	    output_addr_const (file, op0);
-+	    fprintf (file, "(%s)", reg_names[REGNO (op1)]);
-+	    return;
-+	  }
-+      }
-+      break;
-+
-+    case REG:
-+      fprintf (file, "0(%s)", reg_names[REGNO (op)]);
-+      return;
-+
-+    case MEM:
-+      {
-+	rtx base = XEXP (op, 0);
-+	PRINT_OPERAND_ADDRESS (file, base);
-+	return;
-+      }
-+    default:
-+      break;
-+    }
-+
-+  fprintf (stderr, "Missing way to print address\n");
-+  debug_rtx (op);
-+  abort ();
-+}
-+
-+
-+
-+
-+
-+/****************************
-+ * Predicates
-+ ****************************/
-+
-+int
-+arith_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SMALL_INT (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+uns_arith_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SMALL_INT_UNSIGNED (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+logical_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT
-+      && (SMALL_INT_UNSIGNED (INTVAL (op)) || UPPER16_INT (INTVAL (op))))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+shift_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SHIFT_INT (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+rdwrctl_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-+{
-+  return GET_CODE (op) == CONST_INT && RDWRCTL_INT (INTVAL (op));
-+}
-+
-+/* Return truth value of whether OP is a register or the constant 0. */
-+
-+int
-+reg_or_0_operand (rtx op, enum machine_mode mode)
-+{
-+  switch (GET_CODE (op))
-+    {
-+    case CONST_INT:
-+      return INTVAL (op) == 0;
-+
-+    case CONST_DOUBLE:
-+      return op == CONST0_RTX (mode);
-+
-+    default:
-+      break;
-+    }
-+
-+  return register_operand (op, mode);
-+}
-+
-+
-+int
-+equality_op (rtx op, enum machine_mode mode)
-+{
-+  if (mode != GET_MODE (op))
-+    return 0;
-+
-+  return GET_CODE (op) == EQ || GET_CODE (op) == NE;
-+}
-+
-+int
-+custom_insn_opcode (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-+{
-+  return GET_CODE (op) == CONST_INT && CUSTOM_INSN_OPCODE (INTVAL (op));
-+}
-+
-+
-+
-+
-+
-+
-+
-+/*****************************************************************************
-+**
-+** instruction scheduler
-+**
-+*****************************************************************************/
-+static int
-+nios2_use_dfa_pipeline_interface ()
-+{
-+  return 1;
-+}
-+
-+
-+static int
-+nios2_issue_rate ()
-+{
-+#ifdef MAX_DFA_ISSUE_RATE
-+  return MAX_DFA_ISSUE_RATE;
-+#else
-+  return 1;
-+#endif
-+}
-+
-+
-+const char *
-+asm_output_opcode (FILE *file ATTRIBUTE_UNUSED, 
-+                   const char *ptr ATTRIBUTE_UNUSED)
-+{
-+  const char *p;
-+
-+  p = ptr;
-+  return ptr;
-+}
-+
-+
-+
-+/*****************************************************************************
-+**
-+** function arguments
-+**
-+*****************************************************************************/
-+
-+void
-+init_cumulative_args (CUMULATIVE_ARGS *cum, 
-+                      tree fntype ATTRIBUTE_UNUSED, 
-+                      rtx libname ATTRIBUTE_UNUSED, 
-+                      tree fndecl ATTRIBUTE_UNUSED, 
-+                      int n_named_args ATTRIBUTE_UNUSED)
-+{
-+  cum->regs_used = 0;
-+}
-+
-+
-+/* Update the data in CUM to advance over an argument
-+   of mode MODE and data type TYPE.
-+   (TYPE is null for libcalls where that information may not be available.)  */
-+
-+void
-+function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode, 
-+                      tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED)
-+{
-+  HOST_WIDE_INT param_size;
-+
-+  if (mode == BLKmode)
-+    {
-+      param_size = int_size_in_bytes (type);
-+      if (param_size < 0)
-+	internal_error
-+	  ("Do not know how to handle large structs or variable length types");
-+    }
-+  else
-+    {
-+      param_size = GET_MODE_SIZE (mode);
-+    }
-+
-+  /* convert to words (round up) */
-+  param_size = (3 + param_size) / 4;
-+
-+  if (cum->regs_used + param_size > NUM_ARG_REGS)
-+    {
-+      cum->regs_used = NUM_ARG_REGS;
-+    }
-+  else
-+    {
-+      cum->regs_used += param_size;
-+    }
-+
-+  return;
-+}
-+
-+/* Define where to put the arguments to a function.  Value is zero to
-+   push the argument on the stack, or a hard register in which to
-+   store the argument.
-+
-+   MODE is the argument's machine mode.
-+   TYPE is the data type of the argument (as a tree).
-+   This is null for libcalls where that information may
-+   not be available.
-+   CUM is a variable of type CUMULATIVE_ARGS which gives info about
-+   the preceding args and about the function being called.
-+   NAMED is nonzero if this argument is a named parameter
-+   (otherwise it is an extra parameter matching an ellipsis).  */
-+rtx
-+function_arg (const CUMULATIVE_ARGS *cum, enum machine_mode mode, 
-+              tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED)
-+{
-+  rtx return_rtx = NULL_RTX;
-+
-+  if (cum->regs_used < NUM_ARG_REGS)
-+    {
-+      return_rtx = gen_rtx_REG (mode, FIRST_ARG_REGNO + cum->regs_used);
-+    }
-+
-+  return return_rtx;
-+}
-+
-+int
-+function_arg_partial_nregs (const CUMULATIVE_ARGS *cum,
-+                            enum machine_mode mode, tree type, 
-+                            int named ATTRIBUTE_UNUSED)
-+{
-+  HOST_WIDE_INT param_size;
-+
-+  if (mode == BLKmode)
-+    {
-+      param_size = int_size_in_bytes (type);
-+      if (param_size < 0)
-+	internal_error
-+	  ("Do not know how to handle large structs or variable length types");
-+    }
-+  else
-+    {
-+      param_size = GET_MODE_SIZE (mode);
-+    }
-+
-+  /* convert to words (round up) */
-+  param_size = (3 + param_size) / 4;
-+
-+  if (cum->regs_used < NUM_ARG_REGS
-+      && cum->regs_used + param_size > NUM_ARG_REGS)
-+    {
-+      return NUM_ARG_REGS - cum->regs_used;
-+    }
-+  else
-+    {
-+      return 0;
-+    }
-+}
-+
-+
-+int
-+nios2_return_in_memory (tree type)
-+{
-+  int res = ((int_size_in_bytes (type) > (2 * UNITS_PER_WORD))
-+  	     || (int_size_in_bytes (type) == -1));
-+
-+  return res;
-+}
-+
-+/* ??? It may be possible to eliminate the copyback and implement
-+       my own va_arg type, but that is more work for now. */
-+int
-+nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *cum, 
-+                              enum machine_mode mode, tree type, 
-+                              int no_rtl)
-+{
-+  CUMULATIVE_ARGS local_cum;
-+  int regs_to_push;
-+
-+  local_cum = *cum;
-+  FUNCTION_ARG_ADVANCE (local_cum, mode, type, 1);
-+
-+  regs_to_push = NUM_ARG_REGS - local_cum.regs_used;
-+
-+  if (!no_rtl)
-+    {
-+      if (regs_to_push > 0)
-+	{
-+	  rtx ptr, mem;
-+
-+	  ptr = virtual_incoming_args_rtx;
-+	  mem = gen_rtx_MEM (BLKmode, ptr);
-+
-+	  /* va_arg is an array access in this case, which causes
-+	     it to get MEM_IN_STRUCT_P set.  We must set it here
-+	     so that the insn scheduler won't assume that these
-+	     stores can't possibly overlap with the va_arg loads.  */
-+	  MEM_SET_IN_STRUCT_P (mem, 1);
-+
-+	  emit_insn (gen_blockage ());
-+	  move_block_from_reg (local_cum.regs_used + FIRST_ARG_REGNO, mem,
-+			       regs_to_push);
-+	  emit_insn (gen_blockage ());
-+	}
-+    }
-+
-+  return regs_to_push * UNITS_PER_WORD;
-+
-+}
-+
-+
-+
-+/*****************************************************************************
-+**
-+** builtins
-+**
-+** This method for handling builtins is from CSP where _many_ more types of
-+** expanders have already been written. Check there first before writing
-+** new ones.
-+**
-+*****************************************************************************/
-+
-+enum nios2_builtins
-+{
-+  NIOS2_BUILTIN_LDBIO,
-+  NIOS2_BUILTIN_LDBUIO,
-+  NIOS2_BUILTIN_LDHIO,
-+  NIOS2_BUILTIN_LDHUIO,
-+  NIOS2_BUILTIN_LDWIO,
-+  NIOS2_BUILTIN_STBIO,
-+  NIOS2_BUILTIN_STHIO,
-+  NIOS2_BUILTIN_STWIO,
-+  NIOS2_BUILTIN_SYNC,
-+  NIOS2_BUILTIN_RDCTL,
-+  NIOS2_BUILTIN_WRCTL,
-+
-+  NIOS2_BUILTIN_CUSTOM_N,
-+  NIOS2_BUILTIN_CUSTOM_NI,
-+  NIOS2_BUILTIN_CUSTOM_NF,
-+  NIOS2_BUILTIN_CUSTOM_NP,
-+  NIOS2_BUILTIN_CUSTOM_NII,
-+  NIOS2_BUILTIN_CUSTOM_NIF,
-+  NIOS2_BUILTIN_CUSTOM_NIP,
-+  NIOS2_BUILTIN_CUSTOM_NFI,
-+  NIOS2_BUILTIN_CUSTOM_NFF,
-+  NIOS2_BUILTIN_CUSTOM_NFP,
-+  NIOS2_BUILTIN_CUSTOM_NPI,
-+  NIOS2_BUILTIN_CUSTOM_NPF,
-+  NIOS2_BUILTIN_CUSTOM_NPP,
-+  NIOS2_BUILTIN_CUSTOM_IN,
-+  NIOS2_BUILTIN_CUSTOM_INI,
-+  NIOS2_BUILTIN_CUSTOM_INF,
-+  NIOS2_BUILTIN_CUSTOM_INP,
-+  NIOS2_BUILTIN_CUSTOM_INII,
-+  NIOS2_BUILTIN_CUSTOM_INIF,
-+  NIOS2_BUILTIN_CUSTOM_INIP,
-+  NIOS2_BUILTIN_CUSTOM_INFI,
-+  NIOS2_BUILTIN_CUSTOM_INFF,
-+  NIOS2_BUILTIN_CUSTOM_INFP,
-+  NIOS2_BUILTIN_CUSTOM_INPI,
-+  NIOS2_BUILTIN_CUSTOM_INPF,
-+  NIOS2_BUILTIN_CUSTOM_INPP,
-+  NIOS2_BUILTIN_CUSTOM_FN,
-+  NIOS2_BUILTIN_CUSTOM_FNI,
-+  NIOS2_BUILTIN_CUSTOM_FNF,
-+  NIOS2_BUILTIN_CUSTOM_FNP,
-+  NIOS2_BUILTIN_CUSTOM_FNII,
-+  NIOS2_BUILTIN_CUSTOM_FNIF,
-+  NIOS2_BUILTIN_CUSTOM_FNIP,
-+  NIOS2_BUILTIN_CUSTOM_FNFI,
-+  NIOS2_BUILTIN_CUSTOM_FNFF,
-+  NIOS2_BUILTIN_CUSTOM_FNFP,
-+  NIOS2_BUILTIN_CUSTOM_FNPI,
-+  NIOS2_BUILTIN_CUSTOM_FNPF,
-+  NIOS2_BUILTIN_CUSTOM_FNPP,
-+  NIOS2_BUILTIN_CUSTOM_PN,
-+  NIOS2_BUILTIN_CUSTOM_PNI,
-+  NIOS2_BUILTIN_CUSTOM_PNF,
-+  NIOS2_BUILTIN_CUSTOM_PNP,
-+  NIOS2_BUILTIN_CUSTOM_PNII,
-+  NIOS2_BUILTIN_CUSTOM_PNIF,
-+  NIOS2_BUILTIN_CUSTOM_PNIP,
-+  NIOS2_BUILTIN_CUSTOM_PNFI,
-+  NIOS2_BUILTIN_CUSTOM_PNFF,
-+  NIOS2_BUILTIN_CUSTOM_PNFP,
-+  NIOS2_BUILTIN_CUSTOM_PNPI,
-+  NIOS2_BUILTIN_CUSTOM_PNPF,
-+  NIOS2_BUILTIN_CUSTOM_PNPP,
-+
-+
-+  LIM_NIOS2_BUILTINS
-+};
-+
-+struct builtin_description
-+{
-+    const enum insn_code icode;
-+    const char *const name;
-+    const enum nios2_builtins code;
-+    const tree *type;
-+    rtx (* expander) PARAMS ((const struct builtin_description *,
-+                              tree, rtx, rtx, enum machine_mode, int));
-+};
-+
-+static rtx nios2_expand_STXIO (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_LDXIO (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_sync (const struct builtin_description *, 
-+                              tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_rdctl (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_wrctl (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+
-+static rtx nios2_expand_custom_n (const struct builtin_description *, 
-+                                  tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_Xn (const struct builtin_description *, 
-+                                   tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_nX (const struct builtin_description *, 
-+                                   tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_XnX (const struct builtin_description *, 
-+                                    tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_nXX (const struct builtin_description *, 
-+                                    tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_XnXX (const struct builtin_description *, 
-+                                     tree, rtx, rtx, enum machine_mode, int);
-+
-+static tree endlink;
-+
-+/* int fn (volatile const void *)
-+ */
-+static tree int_ftype_volatile_const_void_p;
-+
-+/* int fn (int)
-+ */
-+static tree int_ftype_int;
-+
-+/* void fn (int, int)
-+ */
-+static tree void_ftype_int_int;
-+
-+/* void fn (volatile void *, int)
-+ */
-+static tree void_ftype_volatile_void_p_int;
-+
-+/* void fn (void)
-+ */
-+static tree void_ftype_void;
-+
-+static tree custom_n;
-+static tree custom_ni;
-+static tree custom_nf;
-+static tree custom_np;
-+static tree custom_nii;
-+static tree custom_nif;
-+static tree custom_nip;
-+static tree custom_nfi;
-+static tree custom_nff;
-+static tree custom_nfp;
-+static tree custom_npi;
-+static tree custom_npf;
-+static tree custom_npp;
-+static tree custom_in;
-+static tree custom_ini;
-+static tree custom_inf;
-+static tree custom_inp;
-+static tree custom_inii;
-+static tree custom_inif;
-+static tree custom_inip;
-+static tree custom_infi;
-+static tree custom_inff;
-+static tree custom_infp;
-+static tree custom_inpi;
-+static tree custom_inpf;
-+static tree custom_inpp;
-+static tree custom_fn;
-+static tree custom_fni;
-+static tree custom_fnf;
-+static tree custom_fnp;
-+static tree custom_fnii;
-+static tree custom_fnif;
-+static tree custom_fnip;
-+static tree custom_fnfi;
-+static tree custom_fnff;
-+static tree custom_fnfp;
-+static tree custom_fnpi;
-+static tree custom_fnpf;
-+static tree custom_fnpp;
-+static tree custom_pn;
-+static tree custom_pni;
-+static tree custom_pnf;
-+static tree custom_pnp;
-+static tree custom_pnii;
-+static tree custom_pnif;
-+static tree custom_pnip;
-+static tree custom_pnfi;
-+static tree custom_pnff;
-+static tree custom_pnfp;
-+static tree custom_pnpi;
-+static tree custom_pnpf;
-+static tree custom_pnpp;
-+
-+
-+static const struct builtin_description bdesc[] = {
-+    {CODE_FOR_ldbio, "__builtin_ldbio", NIOS2_BUILTIN_LDBIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldbuio, "__builtin_ldbuio", NIOS2_BUILTIN_LDBUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldhio, "__builtin_ldhio", NIOS2_BUILTIN_LDHIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldhuio, "__builtin_ldhuio", NIOS2_BUILTIN_LDHUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldwio, "__builtin_ldwio", NIOS2_BUILTIN_LDWIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+
-+    {CODE_FOR_stbio, "__builtin_stbio", NIOS2_BUILTIN_STBIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+    {CODE_FOR_sthio, "__builtin_sthio", NIOS2_BUILTIN_STHIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+    {CODE_FOR_stwio, "__builtin_stwio", NIOS2_BUILTIN_STWIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+
-+    {CODE_FOR_sync, "__builtin_sync", NIOS2_BUILTIN_SYNC, &void_ftype_void, nios2_expand_sync},
-+    {CODE_FOR_rdctl, "__builtin_rdctl", NIOS2_BUILTIN_RDCTL, &int_ftype_int, nios2_expand_rdctl},
-+    {CODE_FOR_wrctl, "__builtin_wrctl", NIOS2_BUILTIN_WRCTL, &void_ftype_int_int, nios2_expand_wrctl},
-+
-+    {CODE_FOR_custom_n, "__builtin_custom_n", NIOS2_BUILTIN_CUSTOM_N, &custom_n, nios2_expand_custom_n},
-+    {CODE_FOR_custom_ni, "__builtin_custom_ni", NIOS2_BUILTIN_CUSTOM_NI, &custom_ni, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_nf, "__builtin_custom_nf", NIOS2_BUILTIN_CUSTOM_NF, &custom_nf, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_np, "__builtin_custom_np", NIOS2_BUILTIN_CUSTOM_NP, &custom_np, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_nii, "__builtin_custom_nii", NIOS2_BUILTIN_CUSTOM_NII, &custom_nii, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nif, "__builtin_custom_nif", NIOS2_BUILTIN_CUSTOM_NIF, &custom_nif, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nip, "__builtin_custom_nip", NIOS2_BUILTIN_CUSTOM_NIP, &custom_nip, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nfi, "__builtin_custom_nfi", NIOS2_BUILTIN_CUSTOM_NFI, &custom_nfi, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nff, "__builtin_custom_nff", NIOS2_BUILTIN_CUSTOM_NFF, &custom_nff, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nfp, "__builtin_custom_nfp", NIOS2_BUILTIN_CUSTOM_NFP, &custom_nfp, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npi, "__builtin_custom_npi", NIOS2_BUILTIN_CUSTOM_NPI, &custom_npi, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npf, "__builtin_custom_npf", NIOS2_BUILTIN_CUSTOM_NPF, &custom_npf, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npp, "__builtin_custom_npp", NIOS2_BUILTIN_CUSTOM_NPP, &custom_npp, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_in, "__builtin_custom_in", NIOS2_BUILTIN_CUSTOM_IN, &custom_in, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_ini, "__builtin_custom_ini", NIOS2_BUILTIN_CUSTOM_INI, &custom_ini, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inf, "__builtin_custom_inf", NIOS2_BUILTIN_CUSTOM_INF, &custom_inf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inp, "__builtin_custom_inp", NIOS2_BUILTIN_CUSTOM_INP, &custom_inp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inii, "__builtin_custom_inii", NIOS2_BUILTIN_CUSTOM_INII, &custom_inii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inif, "__builtin_custom_inif", NIOS2_BUILTIN_CUSTOM_INIF, &custom_inif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inip, "__builtin_custom_inip", NIOS2_BUILTIN_CUSTOM_INIP, &custom_inip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_infi, "__builtin_custom_infi", NIOS2_BUILTIN_CUSTOM_INFI, &custom_infi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inff, "__builtin_custom_inff", NIOS2_BUILTIN_CUSTOM_INFF, &custom_inff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_infp, "__builtin_custom_infp", NIOS2_BUILTIN_CUSTOM_INFP, &custom_infp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpi, "__builtin_custom_inpi", NIOS2_BUILTIN_CUSTOM_INPI, &custom_inpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpf, "__builtin_custom_inpf", NIOS2_BUILTIN_CUSTOM_INPF, &custom_inpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpp, "__builtin_custom_inpp", NIOS2_BUILTIN_CUSTOM_INPP, &custom_inpp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fn, "__builtin_custom_fn", NIOS2_BUILTIN_CUSTOM_FN, &custom_fn, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_fni, "__builtin_custom_fni", NIOS2_BUILTIN_CUSTOM_FNI, &custom_fni, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnf, "__builtin_custom_fnf", NIOS2_BUILTIN_CUSTOM_FNF, &custom_fnf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnp, "__builtin_custom_fnp", NIOS2_BUILTIN_CUSTOM_FNP, &custom_fnp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnii, "__builtin_custom_fnii", NIOS2_BUILTIN_CUSTOM_FNII, &custom_fnii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnif, "__builtin_custom_fnif", NIOS2_BUILTIN_CUSTOM_FNIF, &custom_fnif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnip, "__builtin_custom_fnip", NIOS2_BUILTIN_CUSTOM_FNIP, &custom_fnip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnfi, "__builtin_custom_fnfi", NIOS2_BUILTIN_CUSTOM_FNFI, &custom_fnfi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnff, "__builtin_custom_fnff", NIOS2_BUILTIN_CUSTOM_FNFF, &custom_fnff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnfp, "__builtin_custom_fnfp", NIOS2_BUILTIN_CUSTOM_FNFP, &custom_fnfp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpi, "__builtin_custom_fnpi", NIOS2_BUILTIN_CUSTOM_FNPI, &custom_fnpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpf, "__builtin_custom_fnpf", NIOS2_BUILTIN_CUSTOM_FNPF, &custom_fnpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpp, "__builtin_custom_fnpp", NIOS2_BUILTIN_CUSTOM_FNPP, &custom_fnpp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pn, "__builtin_custom_pn", NIOS2_BUILTIN_CUSTOM_PN, &custom_pn, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_pni, "__builtin_custom_pni", NIOS2_BUILTIN_CUSTOM_PNI, &custom_pni, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnf, "__builtin_custom_pnf", NIOS2_BUILTIN_CUSTOM_PNF, &custom_pnf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnp, "__builtin_custom_pnp", NIOS2_BUILTIN_CUSTOM_PNP, &custom_pnp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnii, "__builtin_custom_pnii", NIOS2_BUILTIN_CUSTOM_PNII, &custom_pnii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnif, "__builtin_custom_pnif", NIOS2_BUILTIN_CUSTOM_PNIF, &custom_pnif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnip, "__builtin_custom_pnip", NIOS2_BUILTIN_CUSTOM_PNIP, &custom_pnip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnfi, "__builtin_custom_pnfi", NIOS2_BUILTIN_CUSTOM_PNFI, &custom_pnfi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnff, "__builtin_custom_pnff", NIOS2_BUILTIN_CUSTOM_PNFF, &custom_pnff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnfp, "__builtin_custom_pnfp", NIOS2_BUILTIN_CUSTOM_PNFP, &custom_pnfp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpi, "__builtin_custom_pnpi", NIOS2_BUILTIN_CUSTOM_PNPI, &custom_pnpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpf, "__builtin_custom_pnpf", NIOS2_BUILTIN_CUSTOM_PNPF, &custom_pnpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpp, "__builtin_custom_pnpp", NIOS2_BUILTIN_CUSTOM_PNPP, &custom_pnpp, nios2_expand_custom_XnXX},
-+
-+
-+    {0, 0, 0, 0, 0},
-+};
-+
-+/* This does not have a closing bracket on purpose (see use) */
-+#define def_param(TYPE) \
-+  tree_cons (NULL_TREE, TYPE,
-+
-+static void
-+nios2_init_builtins ()
-+{
-+  const struct builtin_description *d;
-+
-+
-+  endlink = void_list_node;
-+
-+  /* Special indenting here because one of the brackets is in def_param */
-+  /* *INDENT-OFF* */
-+
-+  /* int fn (volatile const void *)
-+   */
-+  int_ftype_volatile_const_void_p
-+    = build_function_type (integer_type_node,
-+			   def_param (build_qualified_type (ptr_type_node,
-+			                                    TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE))
-+			   endlink));
-+
-+
-+  /* void fn (volatile void *, int)
-+   */
-+  void_ftype_volatile_void_p_int
-+    = build_function_type (void_type_node,
-+			   def_param (build_qualified_type (ptr_type_node,
-+			                                    TYPE_QUAL_VOLATILE))
-+			   def_param (integer_type_node)
-+			   endlink)));
-+
-+  /* void fn (void)
-+   */
-+  void_ftype_void
-+      = build_function_type (void_type_node,
-+                             endlink);
-+
-+  /* int fn (int)
-+   */
-+  int_ftype_int
-+      = build_function_type (integer_type_node,
-+                             def_param (integer_type_node)
-+                             endlink));
-+
-+  /* void fn (int, int)
-+   */
-+  void_ftype_int_int
-+      = build_function_type (void_type_node,
-+                             def_param (integer_type_node)
-+                             def_param (integer_type_node)
-+                             endlink)));
-+
-+
-+#define CUSTOM_NUM def_param (integer_type_node)
-+
-+  custom_n
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_ni
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_nf
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_np
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_nii
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_nif
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_nip
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_nfi
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_nff
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_nfp
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_npi
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_npf
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_npp
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+  custom_in
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_ini
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_inf
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_inp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_inii
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inif
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_inip
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_infi
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inff
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_infp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_inpi
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inpf
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_inpp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+  custom_fn
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_fni
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_fnf
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_fnp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_fnii
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnif
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnip
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_fnfi
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnff
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnfp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_fnpi
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnpf
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnpp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+
-+  custom_pn
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_pni
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_pnf
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_pnp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_pnii
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnif
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnip
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_pnfi
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnff
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnfp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_pnpi
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnpf
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnpp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+
-+
-+  /* *INDENT-ON* */
-+
-+
-+  for (d = bdesc; d->name; d++)
-+    {
-+      builtin_function (d->name, *d->type, d->code,
-+			BUILT_IN_MD, NULL, NULL);
-+    }
-+}
-+
-+/* Expand an expression EXP that calls a built-in function,
-+   with result going to TARGET if that's convenient
-+   (and in mode MODE if that's convenient).
-+   SUBTARGET may be used as the target for computing one of EXP's operands.
-+   IGNORE is nonzero if the value is to be ignored.  */
-+
-+static rtx
-+nios2_expand_builtin (tree exp, rtx target, rtx subtarget, 
-+                      enum machine_mode mode, int ignore)
-+{
-+  const struct builtin_description *d;
-+  tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
-+  unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
-+
-+  for (d = bdesc; d->name; d++)
-+    if (d->code == fcode)
-+      return (d->expander) (d, exp, target, subtarget, mode, ignore);
-+
-+  /* we should have seen one of the functins we registered */
-+  abort ();
-+}
-+
-+static rtx nios2_create_target (const struct builtin_description *, rtx);
-+
-+
-+static rtx
-+nios2_create_target (const struct builtin_description *d, rtx target)
-+{
-+  if (!target
-+      || !(*insn_data[d->icode].operand[0].predicate) (target,
-+                                                       insn_data[d->icode].operand[0].mode))
-+    {
-+      target = gen_reg_rtx (insn_data[d->icode].operand[0].mode);
-+    }
-+
-+  return target;
-+}
-+
-+
-+static rtx nios2_extract_opcode (const struct builtin_description *, int, tree);
-+static rtx nios2_extract_operand (const struct builtin_description *, int, int, tree);
-+
-+static rtx
-+nios2_extract_opcode (const struct builtin_description *d, int op, tree arglist)
-+{
-+  enum machine_mode mode = insn_data[d->icode].operand[op].mode;
-+  tree arg = TREE_VALUE (arglist);
-+  rtx opcode = expand_expr (arg, NULL_RTX, mode, 0);
-+  opcode = protect_from_queue (opcode, 0);
-+
-+  if (!(*insn_data[d->icode].operand[op].predicate) (opcode, mode))
-+    error ("Custom instruction opcode must be compile time constant in the range 0-255 for %s", d->name);
-+
-+  return opcode;
-+}
-+
-+static rtx
-+nios2_extract_operand (const struct builtin_description *d, int op, int argnum, tree arglist)
-+{
-+  enum machine_mode mode = insn_data[d->icode].operand[op].mode;
-+  tree arg = TREE_VALUE (arglist);
-+  rtx operand = expand_expr (arg, NULL_RTX, mode, 0);
-+  operand = protect_from_queue (operand, 0);
-+
-+  if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode))
-+    operand = copy_to_mode_reg (mode, operand);
-+
-+  /* ??? Better errors would be nice */
-+  if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode))
-+    error ("Invalid argument %d to %s", argnum, d->name);
-+
-+  return operand;
-+}
-+
-+
-+static rtx
-+nios2_expand_custom_n (const struct builtin_description *d, tree exp, 
-+                       rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, 
-+                       enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+
-+  /* custom_n should have exactly one operand */
-+  if (insn_data[d->icode].n_operands != 1)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+
-+  pat = GEN_FCN (d->icode) (opcode);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_Xn (const struct builtin_description *d, tree exp, 
-+                        rtx target, rtx subtarget ATTRIBUTE_UNUSED, 
-+                        enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                        int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+
-+  /* custom_Xn should have exactly two operands */
-+  if (insn_data[d->icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+
-+  pat = GEN_FCN (d->icode) (target, opcode);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_custom_nX (const struct builtin_description *d, tree exp, 
-+                        rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, 
-+                        enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[1];
-+  int i;
-+
-+
-+  /* custom_nX should have exactly two operands */
-+  if (insn_data[d->icode].n_operands != 2)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+  for (i = 0; i < 1; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (opcode, operands[0]);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_XnX (const struct builtin_description *d, tree exp, rtx target, 
-+                         rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                         int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[1];
-+  int i;
-+
-+  /* custom_Xn should have exactly three operands */
-+  if (insn_data[d->icode].n_operands != 3)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+
-+  for (i = 0; i < 1; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (target, opcode, operands[0]);
-+
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_custom_nXX (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, 
-+                         rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                         int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[2];
-+  int i;
-+
-+
-+  /* custom_nX should have exactly three operands */
-+  if (insn_data[d->icode].n_operands != 3)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+  for (i = 0; i < 2; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (opcode, operands[0], operands[1]);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_XnXX (const struct builtin_description *d, tree exp, rtx target, 
-+                          rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                          int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[2];
-+  int i;
-+
-+
-+  /* custom_XnX should have exactly four operands */
-+  if (insn_data[d->icode].n_operands != 4)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+  for (i = 0; i < 2; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (target, opcode, operands[0], operands[1]);
-+
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+
-+
-+static rtx
-+nios2_expand_STXIO (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, 
-+                    rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                    int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx store_dest, store_val;
-+  enum insn_code icode = d->icode;
-+
-+  /* stores should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  /* process the destination of the store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[0].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    store_dest = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    store_dest = protect_from_queue (store_dest, 0);
-+
-+    store_dest = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, store_dest));
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[0].predicate) (store_dest, mode))
-+      error ("Invalid argument 1 to %s", d->name);
-+  }
-+
-+
-+  /* process the value to store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (TREE_CHAIN (arglist));
-+    store_val = expand_expr (arg, NULL_RTX, mode, 0);
-+    store_val = protect_from_queue (store_val, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      store_val = copy_to_mode_reg (mode, store_val);
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      error ("Invalid argument 2 to %s", d->name);
-+  }
-+
-+  pat = GEN_FCN (d->icode) (store_dest, store_val);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+
-+static rtx
-+nios2_expand_LDXIO (const struct builtin_description * d, tree exp, rtx target, 
-+                    rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                    int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx ld_src;
-+  enum insn_code icode = d->icode;
-+
-+  /* loads should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    ld_src = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    ld_src = protect_from_queue (ld_src, 0);
-+
-+    ld_src = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, ld_src));
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (ld_src, mode))
-+      {
-+        error ("Invalid argument 1 to %s", d->name);
-+      }
-+  }
-+
-+  pat = GEN_FCN (d->icode) (target, ld_src);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+
-+static rtx
-+nios2_expand_sync (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  emit_insn (gen_sync ());
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_rdctl (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx rdctl_reg;
-+  enum insn_code icode = d->icode;
-+
-+  /* rdctl should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    rdctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    rdctl_reg = protect_from_queue (rdctl_reg, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (rdctl_reg, mode))
-+      {
-+        error ("Control register number must be in range 0-31 for %s", d->name);
-+      }
-+  }
-+
-+  pat = GEN_FCN (d->icode) (target, rdctl_reg);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_wrctl (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx wrctl_reg, store_val;
-+  enum insn_code icode = d->icode;
-+
-+  /* stores should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  /* process the destination of the store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[0].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    wrctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    wrctl_reg = protect_from_queue (wrctl_reg, 0);
-+
-+    if (!(*insn_data[icode].operand[0].predicate) (wrctl_reg, mode))
-+      error ("Control register number must be in range 0-31 for %s", d->name);
-+  }
-+
-+
-+  /* process the value to store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (TREE_CHAIN (arglist));
-+    store_val = expand_expr (arg, NULL_RTX, mode, 0);
-+    store_val = protect_from_queue (store_val, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      store_val = copy_to_mode_reg (mode, store_val);
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      error ("Invalid argument 2 to %s", d->name);
-+  }
-+
-+  pat = GEN_FCN (d->icode) (wrctl_reg, store_val);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+
-+#include "gt-nios2.h"
-+
---- gcc-3.4.3/gcc/config/nios2/nios2.h
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.h
-@@ -0,0 +1,824 @@
-+/* Definitions of target machine for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera 
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+
-+
-+#define TARGET_CPU_CPP_BUILTINS()		\
-+  do						\
-+    {						\
-+      builtin_define_std ("NIOS2");		\
-+      builtin_define_std ("nios2");		\
-+      builtin_define ("_GNU_SOURCE");		\
-+    }						\
-+  while (0)
-+#define TARGET_VERSION fprintf (stderr, " (Altera Nios II)")
-+
-+
-+
-+
-+
-+/*********************************
-+ * Run-time Target Specification
-+ *********************************/
-+
-+#define HAS_DIV_FLAG 0x0001
-+#define HAS_MUL_FLAG 0x0002
-+#define HAS_MULX_FLAG 0x0004
-+#define FAST_SW_DIV_FLAG 0x0008
-+#define INLINE_MEMCPY_FLAG 0x00010
-+#define CACHE_VOLATILE_FLAG 0x0020
-+#define BYPASS_CACHE_FLAG 0x0040
-+
-+extern int target_flags;
-+#define TARGET_HAS_DIV (target_flags & HAS_DIV_FLAG)
-+#define TARGET_HAS_MUL (target_flags & HAS_MUL_FLAG)
-+#define TARGET_HAS_MULX (target_flags & HAS_MULX_FLAG)
-+#define TARGET_FAST_SW_DIV (target_flags & FAST_SW_DIV_FLAG)
-+#define TARGET_INLINE_MEMCPY (target_flags & INLINE_MEMCPY_FLAG)
-+#define TARGET_CACHE_VOLATILE (target_flags & CACHE_VOLATILE_FLAG)
-+#define TARGET_BYPASS_CACHE (target_flags & BYPASS_CACHE_FLAG)
-+
-+#define TARGET_SWITCHES					\
-+{							\
-+    { "hw-div", HAS_DIV_FLAG,				\
-+      N_("Enable DIV, DIVU") },				\
-+    { "no-hw-div", -HAS_DIV_FLAG,			\
-+      N_("Disable DIV, DIVU (default)") },		\
-+    { "hw-mul", HAS_MUL_FLAG,				\
-+      N_("Enable MUL instructions (default)") },				\
-+    { "hw-mulx", HAS_MULX_FLAG,				\
-+      N_("Enable MULX instructions, assume fast shifter") },				\
-+    { "no-hw-mul", -HAS_MUL_FLAG,			\
-+      N_("Disable MUL instructions") },		\
-+    { "no-hw-mulx", -HAS_MULX_FLAG,			\
-+      N_("Disable MULX instructions, assume slow shifter (default and implied by -mno-hw-mul)") },		\
-+    { "fast-sw-div", FAST_SW_DIV_FLAG,				\
-+      N_("Use table based fast divide (default at -O3)") },				\
-+    { "no-fast-sw-div", -FAST_SW_DIV_FLAG,			\
-+      N_("Don't use table based fast divide ever") },		\
-+    { "inline-memcpy", INLINE_MEMCPY_FLAG,				\
-+      N_("Inline small memcpy (default when optimizing)") },				\
-+    { "no-inline-memcpy", -INLINE_MEMCPY_FLAG,			\
-+      N_("Don't Inline small memcpy") },		\
-+    { "cache-volatile", CACHE_VOLATILE_FLAG,				\
-+      N_("Volatile accesses use non-io variants of instructions (default)") },				\
-+    { "no-cache-volatile", -CACHE_VOLATILE_FLAG,			\
-+      N_("Volatile accesses use io variants of instructions") },		\
-+    { "bypass-cache", BYPASS_CACHE_FLAG,				\
-+      N_("All ld/st instructins use io variants") },				\
-+    { "no-bypass-cache", -BYPASS_CACHE_FLAG,			\
-+      N_("All ld/st instructins do not use io variants (default)") },		\
-+    { "smallc", 0,			\
-+      N_("Link with a limited version of the C library") },		\
-+    { "ctors-in-init", 0,			\
-+      "" /* undocumented: N_("Link with static constructors and destructors in init") */ },		\
-+    { "", TARGET_DEFAULT, 0 }				\
-+}
-+
-+
-+extern const char *nios2_sys_nosys_string;    /* for -msys=nosys */
-+extern const char *nios2_sys_lib_string;    /* for -msys-lib= */
-+extern const char *nios2_sys_crt0_string;    /* for -msys-crt0= */
-+
-+#define TARGET_OPTIONS					\
-+{							\
-+  { "sys=nosys",    &nios2_sys_nosys_string,		\
-+      N_("Use stub versions of OS library calls (default)"), 0},	\
-+  { "sys-lib=",    &nios2_sys_lib_string,		\
-+      N_("Name of System Library to link against. (Converted to a -l option)"), 0},	\
-+  { "sys-crt0=",    &nios2_sys_crt0_string,		\
-+      N_("Name of the startfile. (default is a crt0 for the ISS only)"), 0},	\
-+}
-+
-+
-+/* Default target_flags if no switches specified.  */
-+#ifndef TARGET_DEFAULT
-+# define TARGET_DEFAULT (HAS_MUL_FLAG | CACHE_VOLATILE_FLAG)
-+#endif
-+
-+/* Switch  Recognition by gcc.c.  Add -G xx support */
-+#undef  SWITCH_TAKES_ARG
-+#define SWITCH_TAKES_ARG(CHAR)						\
-+  (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G')
-+
-+#define OVERRIDE_OPTIONS override_options ()
-+#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) optimization_options (LEVEL, SIZE)
-+#define CAN_DEBUG_WITHOUT_FP
-+ 
-+#define CC1_SPEC "\
-+%{G*}"
-+
-+#undef LIB_SPEC
-+#define LIB_SPEC \
-+"--start-group %{msmallc: -lsmallc} %{!msmallc: -lc} -lgcc \
-+ %{msys-lib=*: -l%*} \
-+ %{!msys-lib=*: -lc } \
-+ --end-group \
-+ %{msys-lib=: %eYou need a library name for -msys-lib=} \
-+"
-+
-+
-+#undef STARTFILE_SPEC 
-+#define STARTFILE_SPEC  \
-+"%{msys-crt0=*: %*} %{!msys-crt0=*: crt1%O%s} \
-+ %{msys-crt0=: %eYou need a C startup file for -msys-crt0=} \
-+ %{mctors-in-init: crti%O%s crtbegin%O%s} \
-+"
-+
-+#undef ENDFILE_SPEC 
-+#define ENDFILE_SPEC \
-+ "%{mctors-in-init: crtend%O%s crtn%O%s}"
-+
-+
-+/***********************
-+ * Storage Layout
-+ ***********************/
-+
-+#define DEFAULT_SIGNED_CHAR 1
-+#define BITS_BIG_ENDIAN 0
-+#define BYTES_BIG_ENDIAN 0
-+#define WORDS_BIG_ENDIAN 0
-+#define BITS_PER_UNIT 8
-+#define BITS_PER_WORD 32
-+#define UNITS_PER_WORD 4
-+#define POINTER_SIZE 32
-+#define BIGGEST_ALIGNMENT 32
-+#define STRICT_ALIGNMENT 1
-+#define FUNCTION_BOUNDARY 32
-+#define PARM_BOUNDARY 32
-+#define STACK_BOUNDARY 32
-+#define PREFERRED_STACK_BOUNDARY 32
-+#define MAX_FIXED_MODE_SIZE 64
-+
-+#define CONSTANT_ALIGNMENT(EXP, ALIGN)				\
-+  ((TREE_CODE (EXP) == STRING_CST) 				\
-+   && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
-+
-+
-+/**********************
-+ * Layout of Source Language Data Types
-+ **********************/
-+
-+#define INT_TYPE_SIZE 32
-+#define SHORT_TYPE_SIZE 16
-+#define LONG_TYPE_SIZE 32
-+#define LONG_LONG_TYPE_SIZE 64
-+#define FLOAT_TYPE_SIZE 32
-+#define DOUBLE_TYPE_SIZE 64
-+#define LONG_DOUBLE_TYPE_SIZE DOUBLE_TYPE_SIZE
-+
-+
-+/*************************
-+ * Condition Code Status
-+ ************************/
-+
-+/* comparison type */
-+/* ??? currently only CMP_SI is used */
-+enum cmp_type {
-+  CMP_SI,				/* compare four byte integers */
-+  CMP_DI,				/* compare eight byte integers */
-+  CMP_SF,				/* compare single precision floats */
-+  CMP_DF,				/* compare double precision floats */
-+  CMP_MAX				/* max comparison type */
-+};
-+
-+extern GTY(()) rtx branch_cmp[2];	/* operands for compare */
-+extern enum cmp_type branch_type;	/* what type of branch to use */
-+
-+/**********************
-+ * Register Usage
-+ **********************/
-+
-+/* ---------------------------------- *
-+ * Basic Characteristics of Registers
-+ * ---------------------------------- */
-+
-+/*
-+Register Number
-+      Register Name
-+          Alternate Name
-+                Purpose
-+0     r0  zero  always zero
-+1     r1  at    Assembler Temporary
-+2-3   r2-r3     Return Location
-+4-7   r4-r7     Register Arguments
-+8-15  r8-r15    Caller Saved Registers
-+16-22 r16-r22   Callee Saved Registers
-+23    r23 sc    Static Chain (Callee Saved)
-+                ??? Does $sc want to be caller or callee 
-+                saved. If caller, 15, else 23. 
-+24    r24       Exception Temporary
-+25    r25       Breakpoint Temporary
-+26    r26 gp    Global Pointer
-+27    r27 sp    Stack Pointer
-+28    r28 fp    Frame Pointer
-+29    r29 ea    Exception Return Address
-+30    r30 ba    Breakpoint Return Address
-+31    r31 ra    Return Address
-+
-+32    ctl0 status
-+33    ctl1 estatus STATUS saved by exception ? 	
-+34    ctl2 bstatus STATUS saved by break ? 	
-+35    ctl3 ipri    Interrupt Priority Mask ?	
-+36    ctl4 ecause  Exception Cause ? 	
-+
-+37         pc   Not an actual register	
-+
-+38    rap      Return address pointer, this does not
-+                   actually exist and will be eliminated
-+
-+39    fake_fp  Fake Frame Pointer which will always be eliminated.
-+40    fake_ap  Fake Argument Pointer which will always be eliminated.
-+
-+41             First Pseudo Register
-+
-+
-+The definitions for all the hard register numbers
-+are located in nios2.md.
-+*/
-+
-+#define FIRST_PSEUDO_REGISTER 41
-+#define NUM_ARG_REGS (LAST_ARG_REGNO - FIRST_ARG_REGNO + 1)
-+
-+
-+
-+/* also see CONDITIONAL_REGISTER_USAGE */
-+#define FIXED_REGISTERS			     \
-+    {					     \
-+/*        +0  1  2  3  4  5  6  7  8  9 */   \
-+/*   0 */  1, 1, 0, 0, 0, 0, 0, 0, 0, 0,     \
-+/*  10 */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     \
-+/*  20 */  0, 0, 0, 0, 1, 1, 1, 1, 0, 1,     \
-+/*  30 */  1, 0, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  40 */  1,                                \
-+    }
-+
-+/* call used is the same as caller saved
-+   + fixed regs + args + ret vals */
-+#define CALL_USED_REGISTERS		     \
-+    { 					     \
-+/*        +0  1  2  3  4  5  6  7  8  9 */   \
-+/*   0 */  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  10 */  1, 1, 1, 1, 1, 1, 0, 0, 0, 0,     \
-+/*  20 */  0, 0, 0, 0, 1, 1, 1, 1, 0, 1,     \
-+/*  30 */  1, 0, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  40 */  1,                                \
-+    }
-+
-+#define HARD_REGNO_NREGS(REGNO, MODE)            \
-+   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
-+    / UNITS_PER_WORD)
-+
-+/* --------------------------- *
-+ * How Values Fit in Registers
-+ * --------------------------- */
-+
-+#define HARD_REGNO_MODE_OK(REGNO, MODE) 1
-+
-+#define MODES_TIEABLE_P(MODE1, MODE2) 1
-+
-+
-+/*************************
-+ * Register Classes
-+ *************************/
-+
-+enum reg_class
-+{
-+    NO_REGS,
-+    ALL_REGS,
-+    LIM_REG_CLASSES
-+};
-+
-+#define N_REG_CLASSES (int) LIM_REG_CLASSES
-+
-+#define REG_CLASS_NAMES   \
-+    {"NO_REGS",           \
-+     "ALL_REGS"}
-+
-+#define GENERAL_REGS ALL_REGS
-+
-+#define REG_CLASS_CONTENTS   \
-+/* NO_REGS  */       {{ 0, 0},     \
-+/* ALL_REGS */        {~0,~0}}    \
-+
-+#define REGNO_REG_CLASS(REGNO) ALL_REGS
-+
-+#define BASE_REG_CLASS ALL_REGS
-+#define INDEX_REG_CLASS ALL_REGS
-+
-+/* only one reg class, 'r', is handled automatically */
-+#define REG_CLASS_FROM_LETTER(CHAR) NO_REGS
-+
-+#define REGNO_OK_FOR_BASE_P2(REGNO, STRICT) \
-+    ((STRICT) \
-+     ? (REGNO) < FIRST_PSEUDO_REGISTER \
-+     : (REGNO) < FIRST_PSEUDO_REGISTER || (reg_renumber && reg_renumber[REGNO] < FIRST_PSEUDO_REGISTER))
-+
-+#define REGNO_OK_FOR_INDEX_P2(REGNO, STRICT) \
-+    (REGNO_OK_FOR_BASE_P2 (REGNO, STRICT))
-+
-+#define REGNO_OK_FOR_BASE_P(REGNO) \
-+    (REGNO_OK_FOR_BASE_P2 (REGNO, 1))
-+
-+#define REGNO_OK_FOR_INDEX_P(REGNO) \
-+    (REGNO_OK_FOR_INDEX_P2 (REGNO, 1))
-+
-+#define REG_OK_FOR_BASE_P2(X, STRICT)                                   \
-+    (STRICT                                                             \
-+     ? REGNO_OK_FOR_BASE_P2 (REGNO (X), 1)                              \
-+     : REGNO_OK_FOR_BASE_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER)
-+
-+#define REG_OK_FOR_INDEX_P2(X, STRICT)                                  \
-+    (STRICT                                                             \
-+     ? REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1)                             \
-+     : REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER)
-+
-+#define CLASS_MAX_NREGS(CLASS, MODE)             \
-+   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
-+    / UNITS_PER_WORD)
-+
-+
-+#define SMALL_INT(X) ((unsigned HOST_WIDE_INT) ((X) + 0x8000) < 0x10000)
-+#define SMALL_INT_UNSIGNED(X) ((unsigned HOST_WIDE_INT) (X) < 0x10000)
-+#define UPPER16_INT(X) (((X) & 0xffff) == 0)
-+#define SHIFT_INT(X) ((X) >= 0 && (X) <= 31)
-+#define RDWRCTL_INT(X) ((X) >= 0 && (X) <= 31)
-+#define CUSTOM_INSN_OPCODE(X) ((X) >= 0 && (X) <= 255)
-+
-+#define CONST_OK_FOR_LETTER_P(VALUE, C)			\
-+ (							\
-+  (C) == 'I' ? SMALL_INT (VALUE) :			\
-+  (C) == 'J' ? SMALL_INT_UNSIGNED (VALUE) :		\
-+  (C) == 'K' ? UPPER16_INT (VALUE) :         		\
-+  (C) == 'L' ? SHIFT_INT (VALUE) :			\
-+  (C) == 'M' ? (VALUE) == 0 :				\
-+  (C) == 'N' ? CUSTOM_INSN_OPCODE (VALUE) :		\
-+  (C) == 'O' ? RDWRCTL_INT (VALUE) :			\
-+  0)
-+
-+#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0
-+
-+#define PREFERRED_RELOAD_CLASS(X, CLASS) \
-+    ((CLASS) == NO_REGS ? GENERAL_REGS : (CLASS))
-+
-+/* 'S' matches immediates which are in small data 
-+   and therefore can be added to gp to create a 
-+   32-bit value. */
-+#define EXTRA_CONSTRAINT(VALUE, C)		\
-+  ((C) == 'S' 					\
-+   && (GET_CODE (VALUE) == SYMBOL_REF)   	\
-+   && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (VALUE))
-+
-+
-+
-+
-+/* Say that the epilogue uses the return address register.  Note that
-+   in the case of sibcalls, the values "used by the epilogue" are
-+   considered live at the start of the called function.  */
-+#define EPILOGUE_USES(REGNO) ((REGNO) == RA_REGNO)
-+
-+
-+#define DEFAULT_MAIN_RETURN  c_expand_return (integer_zero_node)
-+
-+/**********************************
-+ * Trampolines for Nested Functions
-+ ***********************************/
-+
-+#define TRAMPOLINE_TEMPLATE(FILE) \
-+    error ("trampolines not yet implemented")
-+#define TRAMPOLINE_SIZE 20
-+#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
-+    error ("trampolines not yet implemented")
-+
-+/***************************
-+ * Stack Layout and Calling Conventions
-+ ***************************/
-+
-+/* ------------------ *
-+ * Basic Stack Layout
-+ * ------------------ */
-+
-+/* The downward variants are used by the compiler,
-+   the upward ones serve as documentation */
-+#define STACK_GROWS_DOWNWARD
-+#define FRAME_GROWS_UPWARD
-+#define ARGS_GROW_UPWARD
-+
-+#define STARTING_FRAME_OFFSET current_function_outgoing_args_size
-+#define FIRST_PARM_OFFSET(FUNDECL) 0
-+
-+/* Before the prologue, RA lives in r31.  */
-+#define INCOMING_RETURN_ADDR_RTX  gen_rtx_REG (VOIDmode, RA_REGNO)
-+
-+/* -------------------------------------- *
-+ * Registers That Address the Stack Frame
-+ * -------------------------------------- */
-+
-+#define STACK_POINTER_REGNUM SP_REGNO
-+#define STATIC_CHAIN_REGNUM SC_REGNO
-+#define PC_REGNUM PC_REGNO
-+#define DWARF_FRAME_RETURN_COLUMN RA_REGNO
-+
-+/* Base register for access to local variables of the function.  We
-+   pretend that the frame pointer is a non-existent hard register, and 
-+   then eliminate it to HARD_FRAME_POINTER_REGNUM. */
-+#define FRAME_POINTER_REGNUM FAKE_FP_REGNO
-+
-+#define HARD_FRAME_POINTER_REGNUM FP_REGNO
-+#define RETURN_ADDRESS_POINTER_REGNUM RAP_REGNO
-+/* the argumnet pointer needs to always be eliminated
-+   so it is set to a fake hard register. */
-+#define ARG_POINTER_REGNUM FAKE_AP_REGNO
-+
-+/* ----------------------------------------- *
-+ * Eliminating Frame Pointer and Arg Pointer
-+ * ----------------------------------------- */
-+
-+#define FRAME_POINTER_REQUIRED 0
-+
-+#define ELIMINABLE_REGS							\
-+{{ ARG_POINTER_REGNUM,   STACK_POINTER_REGNUM},				\
-+ { ARG_POINTER_REGNUM,   HARD_FRAME_POINTER_REGNUM},			\
-+ { RETURN_ADDRESS_POINTER_REGNUM, STACK_POINTER_REGNUM},		\
-+ { RETURN_ADDRESS_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM},		\
-+ { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM},				\
-+ { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}}
-+
-+#define CAN_ELIMINATE(FROM, TO)	1
-+
-+#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
-+	(OFFSET) = nios2_initial_elimination_offset ((FROM), (TO))
-+
-+#define MUST_SAVE_REGISTER(regno) \
-+ ((regs_ever_live[regno] && !call_used_regs[regno])			\
-+  || (regno == HARD_FRAME_POINTER_REGNUM && frame_pointer_needed)	\
-+  || (regno == RA_REGNO && regs_ever_live[RA_REGNO]))
-+
-+/* Treat LOC as a byte offset from the stack pointer and round it up
-+   to the next fully-aligned offset.  */
-+#define STACK_ALIGN(LOC)						\
-+  (((LOC) + ((PREFERRED_STACK_BOUNDARY / 8) - 1)) & ~((PREFERRED_STACK_BOUNDARY / 8) - 1))
-+
-+
-+/* ------------------------------ *
-+ * Passing Arguments in Registers
-+ * ------------------------------ */
-+
-+/* see nios2.c */
-+#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
-+  (function_arg (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) \
-+  (function_arg_partial_nregs (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) 0
-+
-+#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 0
-+
-+typedef struct nios2_args
-+{
-+    int regs_used;
-+} CUMULATIVE_ARGS;
-+
-+/* This is to initialize the above unused CUM data type */
-+#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \
-+    (init_cumulative_args (&CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS))
-+
-+#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
-+    (function_arg_advance (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_REGNO_P(REGNO) \
-+    ((REGNO) >= FIRST_ARG_REGNO && (REGNO) <= LAST_ARG_REGNO)
-+
-+#define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL)   \
-+  {								    \
-+    int pret_size = nios2_setup_incoming_varargs (&(CUM), (MODE),	    \
-+						(TYPE), (NO_RTL));  \
-+    if (pret_size)						    \
-+      (PRETEND_SIZE) = pret_size;				    \
-+  }
-+
-+/* ----------------------------- *
-+ * Generating Code for Profiling
-+ * ----------------------------- */
-+
-+#define PROFILE_BEFORE_PROLOGUE
-+
-+#define FUNCTION_PROFILER(FILE, LABELNO) \
-+  function_profiler ((FILE), (LABELNO))
-+
-+/* --------------------------------------- *
-+ * Passing Function Arguments on the Stack
-+ * --------------------------------------- */
-+
-+#define PROMOTE_PROTOTYPES 1
-+
-+#define PUSH_ARGS 0
-+#define ACCUMULATE_OUTGOING_ARGS 1
-+
-+#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACKSIZE) 0
-+
-+/* --------------------------------------- *
-+ * How Scalar Function Values Are Returned
-+ * --------------------------------------- */
-+
-+#define FUNCTION_VALUE(VALTYPE, FUNC) \
-+    gen_rtx(REG, TYPE_MODE(VALTYPE), FIRST_RETVAL_REGNO)
-+
-+#define LIBCALL_VALUE(MODE) \
-+    gen_rtx(REG, MODE, FIRST_RETVAL_REGNO)
-+
-+#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == FIRST_RETVAL_REGNO)
-+
-+/* ----------------------------- *
-+ * How Large Values Are Returned
-+ * ----------------------------- */
-+
-+
-+#define RETURN_IN_MEMORY(TYPE)	\
-+  nios2_return_in_memory (TYPE)
-+
-+
-+#define STRUCT_VALUE 0
-+
-+#define DEFAULT_PCC_STRUCT_RETURN 0
-+
-+/*******************
-+ * Addressing Modes
-+ *******************/
-+
-+
-+#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)
-+
-+#define CONSTANT_ADDRESS_P(X) (CONSTANT_P (X))
-+
-+#define MAX_REGS_PER_ADDRESS 1
-+
-+/* Go to ADDR if X is a valid address.  */
-+#ifndef REG_OK_STRICT
-+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)        \
-+    {                                                  \
-+        if (nios2_legitimate_address ((X), (MODE), 0))  \
-+            goto ADDR;                                 \
-+    }
-+#else
-+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)        \
-+    {                                                  \
-+        if (nios2_legitimate_address ((X), (MODE), 1))  \
-+            goto ADDR;                                 \
-+    }
-+#endif
-+
-+#ifndef REG_OK_STRICT
-+#define REG_OK_FOR_BASE_P(X)   REGNO_OK_FOR_BASE_P2 (REGNO (X), 0)
-+#define REG_OK_FOR_INDEX_P(X)  REGNO_OK_FOR_INDEX_P2 (REGNO (X), 0)
-+#else
-+#define REG_OK_FOR_BASE_P(X)   REGNO_OK_FOR_BASE_P2 (REGNO (X), 1)
-+#define REG_OK_FOR_INDEX_P(X)  REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1)
-+#endif
-+
-+#define LEGITIMATE_CONSTANT_P(X) 1
-+
-+/* Nios II has no mode dependent addresses.  */
-+#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-+
-+/* Set if this has a weak declaration  */
-+#define SYMBOL_FLAG_WEAK_DECL	(1 << SYMBOL_FLAG_MACH_DEP_SHIFT)
-+#define SYMBOL_REF_WEAK_DECL_P(RTX) \
-+  ((SYMBOL_REF_FLAGS (RTX) & SYMBOL_FLAG_WEAK_DECL) != 0)
-+
-+
-+/* true if a symbol is both small and not weak. In this case, gp
-+   relative access can be used */
-+#define SYMBOL_REF_IN_NIOS2_SMALL_DATA_P(RTX) \
-+   (SYMBOL_REF_SMALL_P(RTX) && !SYMBOL_REF_WEAK_DECL_P(RTX))
-+
-+/*****************
-+ * Describing Relative Costs of Operations
-+ *****************/
-+
-+#define SLOW_BYTE_ACCESS 1
-+
-+/* It is as good to call a constant function address as to call an address
-+   kept in a register.
-+   ??? Not true anymore really. Now that call cannot address full range
-+   of memory callr may need to be used */
-+
-+#define NO_FUNCTION_CSE
-+#define NO_RECURSIVE_FUNCTION_CSE
-+
-+
-+
-+/*****************************************
-+ * Defining the Output Assembler Language
-+ *****************************************/
-+
-+/* ------------------------------------------ *
-+ * The Overall Framework of an Assembler File
-+ * ------------------------------------------ */
-+
-+#define ASM_APP_ON "#APP\n"
-+#define ASM_APP_OFF "#NO_APP\n"
-+
-+#define ASM_COMMENT_START "# "
-+
-+/* ------------------------------- *
-+ * Output and Generation of Labels
-+ * ------------------------------- */
-+
-+#define GLOBAL_ASM_OP "\t.global\t"
-+
-+
-+/* -------------- *
-+ * Output of Data
-+ * -------------- */
-+
-+#define DWARF2_UNWIND_INFO 0
-+
-+
-+/* -------------------------------- *
-+ * Assembler Commands for Alignment
-+ * -------------------------------- */
-+
-+#define ASM_OUTPUT_ALIGN(FILE, LOG) \
-+  do { \
-+    fprintf ((FILE), "%s%d\n", ALIGN_ASM_OP, (LOG)); \
-+  } while (0)
-+
-+
-+/* -------------------------------- *
-+ * Output of Assembler Instructions
-+ * -------------------------------- */
-+
-+#define REGISTER_NAMES \
-+{ \
-+    "zero", \
-+    "at", \
-+    "r2", \
-+    "r3", \
-+    "r4", \
-+    "r5", \
-+    "r6", \
-+    "r7", \
-+    "r8", \
-+    "r9", \
-+    "r10", \
-+    "r11", \
-+    "r12", \
-+    "r13", \
-+    "r14", \
-+    "r15", \
-+    "r16", \
-+    "r17", \
-+    "r18", \
-+    "r19", \
-+    "r20", \
-+    "r21", \
-+    "r22", \
-+    "r23", \
-+    "r24", \
-+    "r25", \
-+    "gp", \
-+    "sp", \
-+    "fp", \
-+    "ta", \
-+    "ba", \
-+    "ra", \
-+    "status", \
-+    "estatus", \
-+    "bstatus", \
-+    "ipri", \
-+    "ecause", \
-+    "pc", \
-+    "rap", \
-+    "fake_fp", \
-+    "fake_ap", \
-+}
-+
-+#define ASM_OUTPUT_OPCODE(STREAM, PTR)\
-+   (PTR) = asm_output_opcode (STREAM, PTR)
-+
-+#define PRINT_OPERAND(STREAM, X, CODE) \
-+    nios2_print_operand (STREAM, X, CODE)
-+
-+#define PRINT_OPERAND_ADDRESS(STREAM, X) \
-+    nios2_print_operand_address (STREAM, X)
-+
-+#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
-+do { fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \
-+     fprintf (FILE, ".L%u\n", (unsigned) (VALUE));               \
-+   } while (0)
-+
-+
-+/* ------------ *
-+ * Label Output
-+ * ------------ */
-+
-+
-+/* ---------------------------------------------------- *
-+ * Dividing the Output into Sections (Texts, Data, ...)
-+ * ---------------------------------------------------- */
-+
-+/* Output before read-only data.  */
-+#define TEXT_SECTION_ASM_OP ("\t.section\t.text")
-+
-+/* Output before writable data.  */
-+#define DATA_SECTION_ASM_OP ("\t.section\t.data")
-+
-+
-+/* Default the definition of "small data" to 8 bytes. */
-+/* ??? How come I can't use HOST_WIDE_INT here? */
-+extern unsigned long nios2_section_threshold;
-+#define NIOS2_DEFAULT_GVALUE 8
-+
-+
-+
-+/* This says how to output assembler code to declare an
-+   uninitialized external linkage data object.  Under SVR4,
-+   the linker seems to want the alignment of data objects
-+   to depend on their types.  We do exactly that here.  */
-+
-+#undef COMMON_ASM_OP
-+#define COMMON_ASM_OP	"\t.comm\t"
-+
-+#undef  ASM_OUTPUT_ALIGNED_COMMON
-+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)		\
-+do 									\
-+{									\
-+  if ((SIZE) <= nios2_section_threshold)				\
-+    {									\
-+      named_section (0, ".sbss", 0);					\
-+      (*targetm.asm_out.globalize_label) (FILE, NAME);			\
-+      ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
-+      if (!flag_inhibit_size_directive)					\
-+	ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE);			\
-+      ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT));	\
-+      ASM_OUTPUT_LABEL(FILE, NAME);					\
-+      ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1);			\
-+    }									\
-+  else									\
-+    {									\
-+      fprintf ((FILE), "%s", COMMON_ASM_OP);				\
-+      assemble_name ((FILE), (NAME));					\
-+      fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\
-+    }									\
-+}									\
-+while (0)
-+
-+
-+/* This says how to output assembler code to declare an
-+   uninitialized internal linkage data object.  Under SVR4,
-+   the linker seems to want the alignment of data objects
-+   to depend on their types.  We do exactly that here.  */
-+
-+#undef  ASM_OUTPUT_ALIGNED_LOCAL
-+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)		\
-+do {									\
-+  if ((SIZE) <= nios2_section_threshold)				\
-+    named_section (0, ".sbss", 0);					\
-+  else									\
-+    named_section (0, ".bss", 0);					\
-+  ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
-+  if (!flag_inhibit_size_directive)					\
-+    ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE);			\
-+  ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT));	\
-+  ASM_OUTPUT_LABEL(FILE, NAME);						\
-+  ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1);				\
-+} while (0)
-+
-+
-+
-+/***************************
-+ * Miscellaneous Parameters
-+ ***************************/
-+
-+#define MOVE_MAX 4
-+
-+#define Pmode SImode
-+#define FUNCTION_MODE QImode
-+
-+#define CASE_VECTOR_MODE Pmode
-+
-+#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
-+
-+#define LOAD_EXTEND_OP(MODE) (ZERO_EXTEND)
-+
-+#define WORD_REGISTER_OPERATIONS
---- gcc-3.4.3/gcc/config/nios2/nios2.md
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.md
-@@ -0,0 +1,2078 @@
-+;; Machine Description for Altera NIOS 2G NIOS2 version.
-+;;    Copyright (C) 2003 Altera 
-+;;    Contributed by Jonah Graham (jgraham@altera.com).
-+;; 
-+;; This file is part of GNU CC.
-+;; 
-+;; GNU CC 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.
-+;; 
-+;; GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+;; the Free Software Foundation, 59 Temple Place - Suite 330,
-+;; Boston, MA 02111-1307, USA.  */
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* constants
-+;*
-+;*****************************************************************************
-+(define_constants [
-+  (GP_REGNO 26)
-+  (SP_REGNO 27)
-+  (FP_REGNO 28)
-+  (RA_REGNO 31)
-+  (RAP_REGNO 38)
-+  (FIRST_RETVAL_REGNO 2)
-+  (LAST_RETVAL_REGNO 3)
-+  (FIRST_ARG_REGNO 4)
-+  (LAST_ARG_REGNO 7)
-+  (SC_REGNO 23)
-+  (PC_REGNO 37)
-+  (FAKE_FP_REGNO 39)
-+  (FAKE_AP_REGNO 40)
-+
-+
-+  (UNSPEC_BLOCKAGE 0)
-+  (UNSPEC_LDBIO 1)
-+  (UNSPEC_LDBUIO 2)
-+  (UNSPEC_LDHIO 3)
-+  (UNSPEC_LDHUIO 4)
-+  (UNSPEC_LDWIO 5)
-+  (UNSPEC_STBIO 6)
-+  (UNSPEC_STHIO 7)
-+  (UNSPEC_STWIO 8)
-+  (UNSPEC_SYNC 9)
-+  (UNSPEC_WRCTL 10)
-+  (UNSPEC_RDCTL 11)
-+  
-+])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* instruction scheduler
-+;*
-+;*****************************************************************************
-+
-+; No schedule info is currently available, using an assumption that no
-+; instruction can use the results of the previous instruction without
-+; incuring a stall.
-+
-+; length of an instruction (in bytes)
-+(define_attr "length" "" (const_int 4))
-+(define_attr "type" "unknown,complex,control,alu,cond_alu,st,ld,shift,mul,div,custom" (const_string "complex"))
-+
-+(define_asm_attributes
-+ [(set_attr "length" "4")
-+  (set_attr "type" "complex")])
-+
-+(define_automaton "nios2")
-+(automata_option "v")
-+;(automata_option "no-minimization")
-+(automata_option "ndfa")
-+
-+; The nios2 pipeline is fairly straightforward for the fast model.
-+; Every alu operation is pipelined so that an instruction can
-+; be issued every cycle. However, there are still potential
-+; stalls which this description tries to deal with.
-+
-+(define_cpu_unit "cpu" "nios2")
-+
-+(define_insn_reservation "complex" 1
-+  (eq_attr "type" "complex")
-+  "cpu")
-+
-+(define_insn_reservation "control" 1
-+  (eq_attr "type" "control")
-+  "cpu")
-+
-+(define_insn_reservation "alu" 1
-+  (eq_attr "type" "alu")
-+  "cpu")
-+
-+(define_insn_reservation "cond_alu" 1
-+  (eq_attr "type" "cond_alu")
-+  "cpu")
-+
-+(define_insn_reservation "st" 1
-+  (eq_attr "type" "st")
-+  "cpu")
-+  
-+(define_insn_reservation "custom" 1
-+  (eq_attr "type" "custom")
-+  "cpu")
-+
-+; shifts, muls and lds have three cycle latency
-+(define_insn_reservation "ld" 3
-+  (eq_attr "type" "ld")
-+  "cpu")
-+
-+(define_insn_reservation "shift" 3
-+  (eq_attr "type" "shift")
-+  "cpu")
-+
-+(define_insn_reservation "mul" 3
-+  (eq_attr "type" "mul")
-+  "cpu")
-+
-+(define_insn_reservation "div" 1
-+  (eq_attr "type" "div")
-+  "cpu")
-+
-+
-+;*****************************************************************************
-+;*
-+;* MOV Instructions
-+;*
-+;*****************************************************************************
-+
-+(define_expand "movqi"
-+  [(set (match_operand:QI 0 "nonimmediate_operand" "")
-+        (match_operand:QI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, QImode))
-+    DONE;
-+})
-+
-+(define_insn "movqi_internal"
-+  [(set (match_operand:QI 0 "nonimmediate_operand" "=m, r,r, r")
-+        (match_operand:QI 1 "general_operand"       "rM,m,rM,I"))]
-+  "(register_operand (operands[0], QImode)
-+    || register_operand (operands[1], QImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    stb%o0\\t%z1, %0
-+    ldbu%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1"
-+  [(set_attr "type" "st,ld,alu,alu")])
-+
-+(define_insn "ldbio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDBIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldbio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "ldbuio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDBUIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldbuio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "stbio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STBIO)]
-+  ""
-+  "stbio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+
-+(define_expand "movhi"
-+  [(set (match_operand:HI 0 "nonimmediate_operand" "")
-+        (match_operand:HI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, HImode))
-+    DONE;
-+})
-+
-+(define_insn "movhi_internal"
-+  [(set (match_operand:HI 0 "nonimmediate_operand" "=m, r,r, r,r")
-+        (match_operand:HI 1 "general_operand"       "rM,m,rM,I,J"))]
-+  "(register_operand (operands[0], HImode)
-+    || register_operand (operands[1], HImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    sth%o0\\t%z1, %0
-+    ldhu%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1
-+    movui\\t%0, %1"
-+  [(set_attr "type" "st,ld,alu,alu,alu")])
-+
-+(define_insn "ldhio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDHIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldhio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "ldhuio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDHUIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldhuio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "sthio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STHIO)]
-+  ""
-+  "sthio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+(define_expand "movsi"
-+  [(set (match_operand:SI 0 "nonimmediate_operand" "")
-+        (match_operand:SI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, SImode))
-+    DONE;
-+})
-+
-+(define_insn "movsi_internal"
-+  [(set (match_operand:SI 0 "nonimmediate_operand" "=m, r,r, r,r,r,r")
-+        (match_operand:SI 1 "general_operand"       "rM,m,rM,I,J,S,i"))]
-+  "(register_operand (operands[0], SImode)
-+    || register_operand (operands[1], SImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    stw%o0\\t%z1, %0
-+    ldw%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1
-+    movui\\t%0, %1
-+    addi\\t%0, gp, %%gprel(%1)
-+    movhi\\t%0, %H1\;addi\\t%0, %0, %L1"
-+  [(set_attr "type" "st,ld,alu,alu,alu,alu,alu")])
-+
-+(define_insn "ldwio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDWIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldwio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "stwio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STWIO)]
-+  ""
-+  "stwio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* zero extension
-+;*
-+;*****************************************************************************
-+
-+
-+(define_insn "zero_extendhisi2"
-+  [(set (match_operand:SI 0 "register_operand" "=r,r")
-+	(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xffff
-+    ldhu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+(define_insn "zero_extendqihi2"
-+  [(set (match_operand:HI 0 "register_operand" "=r,r")
-+	(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xff
-+    ldbu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+(define_insn "zero_extendqisi2"
-+  [(set (match_operand:SI 0 "register_operand" "=r,r")
-+	(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xff
-+    ldbu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* sign extension
-+;*
-+;*****************************************************************************
-+
-+(define_expand "extendhisi2"
-+  [(set (match_operand:SI 0 "register_operand" "")
-+	(sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (16);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (operands[0], temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendhisi2_internal"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(sign_extend:SI (match_operand:HI 1 "memory_operand" "m")))]
-+  ""
-+  "ldh%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+(define_expand "extendqihi2"
-+  [(set (match_operand:HI 0 "register_operand" "")
-+	(sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op0   = gen_lowpart (SImode, operands[0]);
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (24);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (op0, temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendqihi2_internal"
-+  [(set (match_operand:HI 0 "register_operand" "=r")
-+	(sign_extend:HI (match_operand:QI 1 "memory_operand" "m")))]
-+  ""
-+  "ldb%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+
-+(define_expand "extendqisi2"
-+  [(set (match_operand:SI 0 "register_operand" "")
-+	(sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (24);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (operands[0], temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendqisi2_insn"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(sign_extend:SI (match_operand:QI 1 "memory_operand" "m")))]
-+  ""
-+  "ldb%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Arithmetic Operations
-+;*
-+;*****************************************************************************
-+
-+(define_insn "addsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r,r")
-+        (plus:SI (match_operand:SI 1 "register_operand" "%r,r")
-+                 (match_operand:SI 2 "arith_operand"     "r,I")))]
-+  ""
-+  "add%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "subsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r")
-+        (minus:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+                  (match_operand:SI 2 "register_operand"  "r")))]
-+  ""
-+  "sub\\t%0, %z1, %2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "mulsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r,r")
-+        (mult:SI (match_operand:SI 1 "register_operand"    "r,r")
-+                 (match_operand:SI 2 "arith_operand"       "r,I")))]
-+  "TARGET_HAS_MUL"
-+  "mul%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "mul")])
-+
-+(define_expand "divsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (div:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  ""
-+{
-+  if (!TARGET_HAS_DIV)
-+    {
-+      if (!TARGET_FAST_SW_DIV)
-+	FAIL;
-+      else
-+        {
-+	  if (nios2_emit_expensive_div (operands, SImode))
-+	    DONE;
-+	}
-+    }
-+})
-+
-+(define_insn "divsi3_insn"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (div:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  "TARGET_HAS_DIV"
-+  "div\\t%0, %1, %2"
-+  [(set_attr "type" "div")])
-+
-+(define_insn "udivsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (udiv:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  "TARGET_HAS_DIV"
-+  "divu\\t%0, %1, %2"
-+  [(set_attr "type" "div")])
-+
-+(define_insn "smulsi3_highpart"
-+  [(set (match_operand:SI 0 "register_operand"                            "=r")
-+	(truncate:SI
-+	 (lshiftrt:DI
-+	  (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand"  "r"))
-+		   (sign_extend:DI (match_operand:SI 2 "register_operand"  "r")))
-+	  (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "mulxss\\t%0, %1, %2"
-+  [(set_attr "type" "mul")])
-+
-+(define_insn "umulsi3_highpart"
-+  [(set (match_operand:SI 0 "register_operand"                            "=r")
-+	(truncate:SI
-+	 (lshiftrt:DI
-+	  (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand"  "r"))
-+		   (zero_extend:DI (match_operand:SI 2 "register_operand"  "r")))
-+	  (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "mulxuu\\t%0, %1, %2"
-+  [(set_attr "type" "mul")])
-+
-+
-+(define_expand "mulsidi3"
-+    [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0)
-+	  (mult:SI (match_operand:SI 1 "register_operand" "")
-+		   (match_operand:SI 2 "register_operand" "")))
-+     (set (subreg:SI (match_dup 0) 4)
-+	  (truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
-+					     (sign_extend:DI (match_dup 2)))
-+				    (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "")
-+
-+(define_expand "umulsidi3"
-+    [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0)
-+	  (mult:SI (match_operand:SI 1 "register_operand" "")
-+		   (match_operand:SI 2 "register_operand" "")))
-+     (set (subreg:SI (match_dup 0) 4)
-+	  (truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (match_dup 1))
-+					     (zero_extend:DI (match_dup 2)))
-+				    (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "")
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Negate and ones complement
-+;*
-+;*****************************************************************************
-+
-+(define_insn "negsi2"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(neg:SI (match_operand:SI 1 "register_operand" "r")))]
-+  ""
-+{
-+  operands[2] = const0_rtx;
-+  return "sub\\t%0, %z2, %1";
-+}
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "one_cmplsi2"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(not:SI (match_operand:SI 1 "register_operand" "r")))]
-+  ""
-+{
-+  operands[2] = const0_rtx;
-+  return "nor\\t%0, %z2, %1";
-+}
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+; Logical Operantions
-+
-+(define_insn "andsi3"
-+  [(set (match_operand:SI 0 "register_operand"         "=r, r,r")
-+        (and:SI (match_operand:SI 1 "register_operand" "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"   "rM,J,K")))]
-+  ""
-+  "@
-+    and\\t%0, %1, %z2
-+    and%i2\\t%0, %1, %2
-+    andh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "iorsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r, r,r")
-+        (ior:SI (match_operand:SI 1 "register_operand"  "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"    "rM,J,K")))]
-+  ""
-+  "@
-+    or\\t%0, %1, %z2
-+    or%i2\\t%0, %1, %2
-+    orh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "*norsi3"
-+  [(set (match_operand:SI 0 "register_operand"                  "=r")
-+        (and:SI (not:SI (match_operand:SI 1 "register_operand"  "%r"))
-+                (not:SI (match_operand:SI 2 "reg_or_0_operand"   "rM"))))]
-+  ""
-+  "nor\\t%0, %1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "xorsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r, r,r")
-+        (xor:SI (match_operand:SI 1 "register_operand"  "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"    "rM,J,K")))]
-+  ""
-+  "@
-+    xor\\t%0, %1, %z2
-+    xor%i2\\t%0, %1, %2
-+    xorh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Shifts
-+;*
-+;*****************************************************************************
-+
-+(define_insn "ashlsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r,r")
-+	(ashift:SI (match_operand:SI 1 "register_operand" "r,r")
-+		   (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "sll%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "ashrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(ashiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "sra%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "lshrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(lshiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "srl%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "rotlsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r,r")
-+	(rotate:SI (match_operand:SI 1 "register_operand" "r,r")
-+		   (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "rol%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "rotrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(rotatert:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "register_operand" "r,r")))]
-+  ""
-+  "ror\\t%0, %1, %2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "*shift_mul_constants"
-+  [(set (match_operand:SI 0 "register_operand"                     "=r")
-+	(ashift:SI (mult:SI (match_operand:SI 1 "register_operand"  "r")
-+		            (match_operand:SI 2 "const_int_operand" "I"))
-+		   (match_operand:SI 3          "const_int_operand" "I")))]
-+  "TARGET_HAS_MUL && SMALL_INT (INTVAL (operands[2]) << INTVAL (operands[3]))"
-+{
-+  HOST_WIDE_INT mul = INTVAL (operands[2]) << INTVAL (operands[3]);
-+  rtx ops[3];
-+  
-+  ops[0] = operands[0];
-+  ops[1] = operands[1];
-+  ops[2] = GEN_INT (mul);
-+  
-+  output_asm_insn ("muli\t%0, %1, %2", ops);
-+  return "";
-+}
-+  [(set_attr "type" "mul")])
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Prologue, Epilogue and Return
-+;*
-+;*****************************************************************************
-+
-+(define_expand "prologue"
-+  [(const_int 1)]
-+  ""
-+{
-+  expand_prologue ();
-+  DONE;
-+})
-+
-+(define_expand "epilogue"
-+  [(return)]
-+  ""
-+{
-+  expand_epilogue (false);
-+  DONE;
-+})
-+
-+(define_expand "sibcall_epilogue"
-+  [(return)]
-+  ""
-+{
-+  expand_epilogue (true);
-+  DONE;
-+})
-+
-+(define_insn "return"
-+  [(return)]
-+  "reload_completed && nios2_can_use_return_insn ()"
-+  "ret\\t"
-+)
-+
-+(define_insn "return_from_epilogue"
-+  [(use (match_operand 0 "pmode_register_operand" ""))
-+   (return)]
-+  "reload_completed"
-+  "ret\\t"
-+)
-+
-+;; Block any insns from being moved before this point, since the
-+;; profiling call to mcount can use various registers that aren't
-+;; saved or used to pass arguments.
-+
-+(define_insn "blockage"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)]
-+  ""
-+  ""
-+  [(set_attr "type" "unknown")
-+   (set_attr "length" "0")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Jumps and Calls
-+;*
-+;*****************************************************************************
-+
-+(define_insn "indirect_jump"
-+  [(set (pc) (match_operand:SI 0 "register_operand" "r"))]
-+  ""
-+  "jmp\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "jump"
-+  [(set (pc)
-+        (label_ref (match_operand 0 "" "")))]
-+  ""
-+  "br\\t%0"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_insn "indirect_call"
-+  [(call (mem:QI (match_operand:SI 0 "register_operand" "r"))
-+         (match_operand 1 "" ""))
-+   (clobber (reg:SI RA_REGNO))]
-+  ""
-+  "callr\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "indirect_call_value"
-+  [(set (match_operand 0 "" "")
-+        (call (mem:QI (match_operand:SI 1 "register_operand" "r"))
-+              (match_operand 2 "" "")))
-+   (clobber (reg:SI RA_REGNO))]
-+  ""
-+  "callr\\t%1"
-+)
-+
-+(define_expand "call"
-+  [(parallel [(call (match_operand 0 "" "")
-+                    (match_operand 1 "" ""))
-+              (clobber (reg:SI RA_REGNO))])]
-+  ""
-+  "")
-+
-+(define_expand "call_value"
-+  [(parallel [(set (match_operand 0 "" "")
-+                   (call (match_operand 1 "" "")
-+                         (match_operand 2 "" "")))
-+              (clobber (reg:SI RA_REGNO))])]
-+  ""
-+  "")
-+
-+(define_insn "*call"
-+  [(call (mem:QI (match_operand:SI 0 "immediate_operand" "i"))
-+         (match_operand 1 "" ""))
-+   (clobber (match_operand:SI 2 "register_operand" "=r"))]
-+  ""
-+  "call\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "*call_value"
-+  [(set (match_operand 0 "" "")
-+        (call (mem:QI (match_operand:SI 1 "immediate_operand" "i"))
-+              (match_operand 2 "" "")))
-+   (clobber (match_operand:SI 3 "register_operand" "=r"))]
-+  ""
-+  "call\\t%1"
-+  [(set_attr "type" "control")])
-+
-+(define_expand "sibcall"
-+  [(parallel [(call (match_operand 0 "" "")
-+		    (match_operand 1 "" ""))
-+	      (return)
-+	      (use (match_operand 2 "" ""))])]
-+  ""
-+  {
-+    XEXP (operands[0], 0) = copy_to_mode_reg (SImode, XEXP (operands[0], 0));
-+
-+    if (operands[2] == NULL_RTX)
-+      operands[2] = const0_rtx;
-+  }
-+)
-+
-+(define_expand "sibcall_value"
-+  [(parallel [(set (match_operand 0 "" "")
-+		   (call (match_operand 1 "" "")
-+			 (match_operand 2 "" "")))
-+	      (return)
-+	      (use (match_operand 3 "" ""))])]
-+  ""
-+  {
-+    XEXP (operands[1], 0) = copy_to_mode_reg (SImode, XEXP (operands[1], 0));
-+
-+    if (operands[3] == NULL_RTX)
-+      operands[3] = const0_rtx;
-+  }
-+)
-+
-+(define_insn "sibcall_insn"
-+ [(call (mem:QI (match_operand:SI 0 "register_operand" "r"))
-+	(match_operand 1 "" ""))
-+  (return)
-+  (use (match_operand 2 "" ""))]
-+  ""
-+  "jmp\\t%0"
-+)
-+
-+(define_insn "sibcall_value_insn"
-+ [(set (match_operand 0 "register_operand" "")
-+       (call (mem:QI (match_operand:SI 1 "register_operand" "r"))
-+	     (match_operand 2 "" "")))
-+  (return)
-+  (use (match_operand 3 "" ""))]
-+  ""
-+  "jmp\\t%1"
-+)
-+
-+
-+
-+
-+(define_expand "tablejump"
-+  [(parallel [(set (pc) (match_operand 0 "register_operand" "r"))
-+              (use (label_ref (match_operand 1 "" "")))])]
-+  ""
-+  ""
-+)
-+
-+(define_insn "*tablejump"
-+  [(set (pc)
-+	(match_operand:SI 0 "register_operand" "r"))
-+   (use (label_ref (match_operand 1 "" "")))]
-+  ""
-+  "jmp\\t%0"
-+  [(set_attr "type" "control")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Comparisons
-+;*
-+;*****************************************************************************
-+;; Flow here is rather complex (based on MIPS):
-+;;
-+;;  1)	The cmp{si,di,sf,df} routine is called.  It deposits the
-+;;	arguments into the branch_cmp array, and the type into
-+;;	branch_type.  No RTL is generated.
-+;;
-+;;  2)	The appropriate branch define_expand is called, which then
-+;;	creates the appropriate RTL for the comparison and branch.
-+;;	Different CC modes are used, based on what type of branch is
-+;;	done, so that we can constrain things appropriately.  There
-+;;	are assumptions in the rest of GCC that break if we fold the
-+;;	operands into the branchs for integer operations, and use cc0
-+;;	for floating point, so we use the fp status register instead.
-+;;	If needed, an appropriate temporary is created to hold the
-+;;	of the integer compare.
-+
-+(define_expand "cmpsi"
-+  [(set (cc0)
-+	(compare:CC (match_operand:SI 0 "register_operand" "")
-+		    (match_operand:SI 1 "arith_operand" "")))]
-+  ""
-+{
-+  branch_cmp[0] = operands[0];
-+  branch_cmp[1] = operands[1];
-+  branch_type = CMP_SI;
-+  DONE;
-+})
-+
-+(define_expand "tstsi"
-+  [(set (cc0)
-+	(match_operand:SI 0 "register_operand" ""))]
-+  ""
-+{
-+  branch_cmp[0] = operands[0];
-+  branch_cmp[1] = const0_rtx;
-+  branch_type = CMP_SI;
-+  DONE;
-+})
-+
-+
-+;*****************************************************************************
-+;*
-+;* setting a register from a comparison
-+;*
-+;*****************************************************************************
-+
-+(define_expand "seq"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(eq:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (EQ, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*seq"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(eq:SI (match_operand:SI 1 "reg_or_0_operand" "%rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpeq%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sne"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ne:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (NE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sne"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ne:SI (match_operand:SI 1 "reg_or_0_operand" "%rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpne%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgt"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(gt:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GT, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgt"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(gt:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmplt\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sge"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ge:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sge"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ge:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpge%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_expand "sle"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(le:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sle"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(le:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpge\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "slt"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(lt:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LT, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*slt"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(lt:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmplt%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgtu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(gtu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GTU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgtu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(gtu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpltu\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgeu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(geu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GEU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgeu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(geu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "uns_arith_operand"     "rJ")))]
-+  ""
-+  "cmpgeu%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_expand "sleu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(leu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LEU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sleu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(leu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpgeu\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sltu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ltu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LTU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sltu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ltu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "uns_arith_operand"     "rJ")))]
-+  ""
-+  "cmpltu%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* branches
-+;*
-+;*****************************************************************************
-+
-+(define_insn "*cbranch"
-+  [(set (pc)
-+	(if_then_else
-+         (match_operator:SI 0 "comparison_operator"
-+			    [(match_operand:SI 2 "reg_or_0_operand" "rM")
-+			     (match_operand:SI 3 "reg_or_0_operand" "rM")])
-+        (label_ref (match_operand 1 "" ""))
-+        (pc)))]
-+  ""
-+  "b%0\\t%z2, %z3, %l1"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_expand "beq"
-+  [(set (pc)
-+	(if_then_else (eq:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (EQ, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bne"
-+  [(set (pc)
-+	(if_then_else (ne:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (NE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bgt"
-+  [(set (pc)
-+	(if_then_else (gt:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bge"
-+  [(set (pc)
-+	(if_then_else (ge:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "ble"
-+  [(set (pc)
-+	(if_then_else (le:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "blt"
-+  [(set (pc)
-+	(if_then_else (lt:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bgtu"
-+  [(set (pc)
-+	(if_then_else (gtu:CC (cc0)
-+		 	      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bgeu"
-+  [(set (pc)
-+	(if_then_else (geu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bleu"
-+  [(set (pc)
-+	(if_then_else (leu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bltu"
-+  [(set (pc)
-+	(if_then_else (ltu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+;*****************************************************************************
-+;*
-+;* String and Block Operations
-+;*
-+;*****************************************************************************
-+
-+; ??? This is all really a hack to get Dhrystone to work as fast as possible
-+;     things to be fixed:
-+;        * let the compiler core handle all of this, for that to work the extra
-+;          aliasing needs to be addressed.
-+;        * we use three temporary registers for loading and storing to ensure no
-+;          ld use stalls, this is excessive, because after the first ld/st only
-+;          two are needed. Only two would be needed all the way through if 
-+;          we could schedule with other code. Consider:
-+;           1  ld $1, 0($src)
-+;           2  ld $2, 4($src)
-+;           3  ld $3, 8($src)
-+;           4  st $1, 0($dest)
-+;           5  ld $1, 12($src)
-+;           6  st $2, 4($src)
-+;           7  etc.
-+;          The first store has to wait until 4. If it does not there will be one
-+;          cycle of stalling. However, if any other instruction could be placed
-+;          between 1 and 4, $3 would not be needed.
-+;        * In small we probably don't want to ever do this ourself because there
-+;          is no ld use stall.
-+
-+(define_expand "movstrsi"
-+  [(parallel [(set (match_operand:BLK 0 "general_operand"  "")
-+		   (match_operand:BLK 1 "general_operand"  ""))
-+	      (use (match_operand:SI 2 "const_int_operand" ""))
-+	      (use (match_operand:SI 3 "const_int_operand" ""))
-+	      (clobber (match_scratch:SI 4                "=&r"))
-+	      (clobber (match_scratch:SI 5                "=&r"))
-+	      (clobber (match_scratch:SI 6                "=&r"))])]
-+  "TARGET_INLINE_MEMCPY"
-+{
-+  rtx ld_addr_reg, st_addr_reg;
-+
-+  /* If the predicate for op2 fails in expr.c:emit_block_move_via_movstr 
-+     it trys to copy to a register, but does not re-try the predicate.
-+     ??? Intead of fixing expr.c, I fix it here. */
-+  if (!const_int_operand (operands[2], SImode))
-+    FAIL;
-+
-+  /* ??? there are some magic numbers which need to be sorted out here.
-+         the basis for them is not increasing code size hugely or going
-+         out of range of offset addressing */
-+  if (INTVAL (operands[3]) < 4)
-+    FAIL;
-+  if (!optimize
-+      || (optimize_size && INTVAL (operands[2]) > 12)
-+      || (optimize < 3 && INTVAL (operands[2]) > 100)
-+      || INTVAL (operands[2]) > 200)
-+    FAIL;
-+
-+  st_addr_reg
-+    = replace_equiv_address (operands[0],
-+			     copy_to_mode_reg (Pmode, XEXP (operands[0], 0)));
-+  ld_addr_reg
-+    = replace_equiv_address (operands[1],
-+			     copy_to_mode_reg (Pmode, XEXP (operands[1], 0)));
-+  emit_insn (gen_movstrsi_internal (st_addr_reg, ld_addr_reg,
-+				    operands[2], operands[3]));
-+
-+  DONE;
-+})
-+
-+
-+(define_insn "movstrsi_internal"
-+  [(set (match_operand:BLK 0 "memory_operand"   "=o")
-+	(match_operand:BLK 1 "memory_operand"    "o"))
-+   (use (match_operand:SI 2 "const_int_operand"  "i"))
-+   (use (match_operand:SI 3 "const_int_operand"  "i"))
-+   (clobber (match_scratch:SI 4                "=&r"))
-+   (clobber (match_scratch:SI 5                "=&r"))
-+   (clobber (match_scratch:SI 6                "=&r"))]
-+  "TARGET_INLINE_MEMCPY"
-+{
-+  int ld_offset = INTVAL (operands[2]);
-+  int ld_len = INTVAL (operands[2]);
-+  int ld_reg = 0;
-+  rtx ld_addr_reg = XEXP (operands[1], 0);
-+  int st_offset = INTVAL (operands[2]);
-+  int st_len = INTVAL (operands[2]);
-+  int st_reg = 0;
-+  rtx st_addr_reg = XEXP (operands[0], 0);
-+  int delay_count = 0;
-+  
-+  /* ops[0] is the address used by the insn
-+     ops[1] is the register being loaded or stored */
-+  rtx ops[2];
-+  
-+  if (INTVAL (operands[3]) < 4)
-+    abort ();
-+  
-+  while (ld_offset >= 4)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, SImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldw\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 4;
-+      delay_count++;
-+    }
-+  
-+  if (ld_offset >= 2)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, HImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldh\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 2;
-+      delay_count++;
-+    }
-+  
-+  if (ld_offset >= 1)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, QImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldb\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 1;
-+      delay_count++;
-+    }
-+
-+    while (st_offset >= 4)
-+      {
-+	ops[0] = gen_rtx (MEM, SImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("stw\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 4;
-+      }
-+  
-+    while (st_offset >= 2)
-+      {
-+	ops[0] = gen_rtx (MEM, HImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("sth\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 2;
-+      }
-+  
-+    while (st_offset >= 1)
-+      {
-+	ops[0] = gen_rtx (MEM, QImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("stb\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 1;
-+      }
-+  
-+  return "";
-+}
-+; ??? lengths are not being used yet, but I will probably forget
-+; to update this once I am using lengths, so set it to something
-+; definetely big enough to cover it. 400 allows for 200 bytes
-+; of motion.
-+  [(set_attr "length" "400")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Custom instructions
-+;*
-+;*****************************************************************************
-+
-+(define_constants [
-+  (CUSTOM_N 100)
-+  (CUSTOM_NI 101)
-+  (CUSTOM_NF 102)
-+  (CUSTOM_NP 103)
-+  (CUSTOM_NII 104)
-+  (CUSTOM_NIF 105)
-+  (CUSTOM_NIP 106)
-+  (CUSTOM_NFI 107)
-+  (CUSTOM_NFF 108)
-+  (CUSTOM_NFP 109)
-+  (CUSTOM_NPI 110)
-+  (CUSTOM_NPF 111)
-+  (CUSTOM_NPP 112)
-+  (CUSTOM_IN 113)
-+  (CUSTOM_INI 114)
-+  (CUSTOM_INF 115)
-+  (CUSTOM_INP 116)
-+  (CUSTOM_INII 117)
-+  (CUSTOM_INIF 118)
-+  (CUSTOM_INIP 119)
-+  (CUSTOM_INFI 120)
-+  (CUSTOM_INFF 121)
-+  (CUSTOM_INFP 122)
-+  (CUSTOM_INPI 123)
-+  (CUSTOM_INPF 124)
-+  (CUSTOM_INPP 125)
-+  (CUSTOM_FN 126)
-+  (CUSTOM_FNI 127)
-+  (CUSTOM_FNF 128)
-+  (CUSTOM_FNP 129)
-+  (CUSTOM_FNII 130)
-+  (CUSTOM_FNIF 131)
-+  (CUSTOM_FNIP 132)
-+  (CUSTOM_FNFI 133)
-+  (CUSTOM_FNFF 134)
-+  (CUSTOM_FNFP 135)
-+  (CUSTOM_FNPI 136)
-+  (CUSTOM_FNPF 137)
-+  (CUSTOM_FNPP 138)
-+  (CUSTOM_PN 139)
-+  (CUSTOM_PNI 140)
-+  (CUSTOM_PNF 141)
-+  (CUSTOM_PNP 142)
-+  (CUSTOM_PNII 143)
-+  (CUSTOM_PNIF 144)
-+  (CUSTOM_PNIP 145)
-+  (CUSTOM_PNFI 146)
-+  (CUSTOM_PNFF 147)
-+  (CUSTOM_PNFP 148)
-+  (CUSTOM_PNPI 149)
-+  (CUSTOM_PNPF 150)
-+  (CUSTOM_PNPP 151)
-+])
-+
-+
-+(define_insn "custom_n"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")] CUSTOM_N)]
-+  ""
-+  "custom\\t%0, zero, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_ni"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")] CUSTOM_NI)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nf"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")] CUSTOM_NF)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_np"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")] CUSTOM_NP)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nii"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NII)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nif"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NIF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nip"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NIP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nfi"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NFI)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nff"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NFF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nfp"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NFP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npi"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NPI)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npf"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NPF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npp"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NPP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+(define_insn "custom_in"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_IN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_ini"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_INI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_INF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_INP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inii"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inif"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inip"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_infi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inff"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_infp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+
-+
-+(define_insn "custom_fn"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_FN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fni"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_FNI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnf"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_FNF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_FNP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnii"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnif"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnip"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnfi"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnff"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnfp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpi"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpf"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+(define_insn "custom_pn"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_PN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pni"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_PNI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_PNF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_PNP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnii"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnif"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnip"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnfi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnff"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnfp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Misc
-+;*
-+;*****************************************************************************
-+
-+(define_insn "nop"
-+  [(const_int 0)]
-+  ""
-+  "nop\\t"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "sync"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_SYNC)]
-+  ""
-+  "sync\\t"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_insn "rdctl"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(match_operand:SI 1 "rdwrctl_operand" "O")] UNSPEC_RDCTL))]
-+  ""
-+  "rdctl\\t%0, ctl%1"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "wrctl"
-+  [(unspec_volatile:SI [(match_operand:SI 0 "rdwrctl_operand"  "O")
-+                        (match_operand:SI 1 "register_operand" "r")] UNSPEC_WRCTL)]
-+  ""
-+  "wrctl\\tctl%0, %1"
-+  [(set_attr "type" "control")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Peepholes
-+;*
-+;*****************************************************************************
-+
-+
---- gcc-3.4.3/gcc/config/nios2/t-nios2
-+++ gcc-3.4.3-nios2/gcc/config/nios2/t-nios2
-@@ -0,0 +1,123 @@
-+##
-+## Compiler flags to use when compiling libgcc2.c.
-+##
-+## LIB2FUNCS_EXTRA
-+## A list of source file names to be compiled or assembled and inserted into libgcc.a.
-+
-+LIB2FUNCS_EXTRA=$(srcdir)/config/nios2/lib2-divmod.c \
-+  $(srcdir)/config/nios2/lib2-divmod-hi.c \
-+  $(srcdir)/config/nios2/lib2-divtable.c \
-+  $(srcdir)/config/nios2/lib2-mul.c
-+
-+##
-+## Floating Point Emulation
-+## To have GCC include software floating point libraries in libgcc.a define FPBIT
-+## and DPBIT along with a few rules as follows:
-+##
-+## # We want fine grained libraries, so use the new code
-+## # to build the floating point emulation libraries.
-+FPBIT=$(srcdir)/config/nios2/nios2-fp-bit.c
-+DPBIT=$(srcdir)/config/nios2/nios2-dp-bit.c
-+
-+TARGET_LIBGCC2_CFLAGS = -O2
-+
-+# FLOAT_ONLY - no doubles
-+# SMALL_MACHINE - QI/HI is faster than SI
-+#     Actually SMALL_MACHINE uses chars and shorts instead of ints
-+#     since ints (16-bit ones as they are today) are at least as fast
-+#     as chars and shorts, don't define SMALL_MACHINE
-+# CMPtype - type returned by FP compare, i.e. INT (hard coded in fp-bit - see code )
-+
-+$(FPBIT): $(srcdir)/config/fp-bit.c Makefile
-+	echo '#define FLOAT'          >  ${FPBIT}
-+	cat $(srcdir)/config/fp-bit.c >> ${FPBIT}
-+
-+$(DPBIT): $(srcdir)/config/fp-bit.c Makefile
-+	echo ''          >  ${DPBIT}
-+	cat $(srcdir)/config/fp-bit.c >> ${DPBIT}
-+
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o 
-+
-+# Assemble startup files. 
-+$(T)crti.o: $(srcdir)/config/nios2/crti.asm $(GCC_PASSES) 
-+	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+	-c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/nios2/crti.asm 
-+
-+$(T)crtn.o: $(srcdir)/config/nios2/crtn.asm $(GCC_PASSES) 
-+	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+	-c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/nios2/crtn.asm 
-+
-+
-+## You may need to provide additional #defines at the beginning of
-+## fp-bit.c and dp-bit.c to control target endianness and other options
-+##
-+## CRTSTUFF_T_CFLAGS
-+## Special flags used when compiling crtstuff.c.  See Initialization.
-+##
-+## CRTSTUFF_T_CFLAGS_S
-+## Special flags used when compiling crtstuff.c for shared linking.  Used
-+## if you use crtbeginS.o and crtendS.o in EXTRA-PARTS. See Initialization.
-+##
-+## MULTILIB_OPTIONS
-+## For some targets, invoking GCC in different ways produces objects that
-+## can not be linked together.  For example, for some targets GCC produces
-+## both big and little endian code.  For these targets, you must arrange
-+## for multiple versions of libgcc.a to be compiled, one for each set of
-+## incompatible options.  When GCC invokes the linker, it arranges to link
-+## in the right version of libgcc.a, based on the command line options
-+## used.
-+## The MULTILIB_OPTIONS macro lists the set of options for which special
-+## versions of libgcc.a must be built.  Write options that are mutually
-+## incompatible side by side, separated by a slash.  Write options that may
-+## be used together separated by a space.  The build procedure will build
-+## all combinations of compatible options.
-+##
-+## For example, if you set MULTILIB_OPTIONS to m68000/m68020 msoft-float,
-+## Makefile will build special versions of libgcc.a using the following
-+## sets of options: -m68000, -m68020, -msoft-float, -m68000 -msoft-float,
-+## and -m68020 -msoft-float.
-+
-+MULTILIB_OPTIONS = mno-hw-mul mhw-mulx
-+
-+## MULTILIB_DIRNAMES
-+## If MULTILIB_OPTIONS is used, this variable specifies the directory names
-+## that should be used to hold the various libraries.  Write one element in
-+## MULTILIB_DIRNAMES for each element in MULTILIB_OPTIONS. If
-+## MULTILIB_DIRNAMES is not used, the default value will be
-+## MULTILIB_OPTIONS, with all slashes treated as spaces.
-+## For example, if MULTILIB_OPTIONS is set to m68000/m68020 msoft-float,
-+## then the default value of MULTILIB_DIRNAMES is m68000 m68020
-+## msoft-float.  You may specify a different value if you desire a
-+## different set of directory names.
-+
-+# MULTILIB_DIRNAMES =
-+
-+## MULTILIB_MATCHES
-+## Sometimes the same option may be written in two different ways.  If an
-+## option is listed in MULTILIB_OPTIONS, GCC needs to know about any
-+## synonyms.  In that case, set MULTILIB_MATCHES to a list of items of the
-+## form option=option to describe all relevant synonyms.  For example,
-+## m68000=mc68000 m68020=mc68020.
-+##
-+## MULTILIB_EXCEPTIONS
-+## Sometimes when there are multiple sets of MULTILIB_OPTIONS being
-+## specified, there are combinations that should not be built.  In that
-+## case, set MULTILIB_EXCEPTIONS to be all of the switch exceptions in
-+## shell case syntax that should not be built.
-+## For example, in the PowerPC embedded ABI support, it is not desirable to
-+## build libraries compiled with the -mcall-aix option and either of the
-+## -fleading-underscore or -mlittle options at the same time.  Therefore
-+## MULTILIB_EXCEPTIONS is set to
-+##
-+## *mcall-aix/*fleading-underscore* *mlittle/*mcall-aix*
-+##
-+
-+MULTILIB_EXCEPTIONS = *mno-hw-mul/*mhw-mulx*
-+
-+##
-+## MULTILIB_EXTRA_OPTS Sometimes it is desirable that when building
-+## multiple versions of libgcc.a certain options should always be passed on
-+## to the compiler.  In that case, set MULTILIB_EXTRA_OPTS to be the list
-+## of options to be used for all builds.
-+##
-+
---- gcc-3.4.3/gcc/config.gcc
-+++ gcc-3.4.3-nios2/gcc/config.gcc
-@@ -1321,6 +1321,10 @@ m32rle-*-linux*)
- 		thread_file='posix'
- 	fi
- 	;;
-+# JBG
-+nios2-*-* | nios2-*-*)
-+	tm_file="elfos.h ${tm_file}"
-+	;;
- # m68hc11 and m68hc12 share the same machine description.
- m68hc11-*-*|m6811-*-*)
- 	tm_file="dbxelf.h elfos.h m68hc11/m68hc11.h"
---- gcc-3.4.3/gcc/cse.c
-+++ gcc-3.4.3-nios2/gcc/cse.c
-@@ -3134,6 +3134,10 @@ find_comparison_args (enum rtx_code code
- #ifdef FLOAT_STORE_FLAG_VALUE
- 	  REAL_VALUE_TYPE fsfv;
- #endif
-+#ifdef __nios2__
-+	  if (p->is_const)
-+	    break;
-+#endif
- 
- 	  /* If the entry isn't valid, skip it.  */
- 	  if (! exp_equiv_p (p->exp, p->exp, 1, 0))
---- gcc-3.4.3/gcc/doc/extend.texi
-+++ gcc-3.4.3-nios2/gcc/doc/extend.texi
-@@ -5636,12 +5636,118 @@ to those machines.  Generally these gene
- instructions, but allow the compiler to schedule those calls.
- 
- @menu
-+* Altera Nios II Built-in Functions::
- * Alpha Built-in Functions::
- * ARM Built-in Functions::
- * X86 Built-in Functions::
- * PowerPC AltiVec Built-in Functions::
- @end menu
- 
-+@node Altera Nios II Built-in Functions
-+@subsection Altera Nios II Built-in Functions
-+
-+These built-in functions are available for the Altera Nios II
-+family of processors.
-+
-+The following built-in functions are always available.  They
-+all generate the machine instruction that is part of the name.
-+
-+@example
-+int __builtin_ldbio (volatile const void *)
-+int __builtin_ldbuio (volatile const void *)
-+int __builtin_ldhio (volatile const void *)
-+int __builtin_ldhuio (volatile const void *)
-+int __builtin_ldwio (volatile const void *)
-+void __builtin_stbio (volatile void *, int)
-+void __builtin_sthio (volatile void *, int)
-+void __builtin_stwio (volatile void *, int)
-+void __builtin_sync (void)
-+int __builtin_rdctl (int) 
-+void __builtin_wrctl (int, int)
-+@end example
-+
-+The following built-in functions are always available.  They
-+all generate a Nios II Custom Instruction. The name of the 
-+function represents the types that the function takes and 
-+returns. The letter before the @code{n} is the return type
-+or void if absent. The @code{n} represnts the first parameter
-+to all the custom instructions, the custom instruction number.
-+The two letters after the @code{n} represent the up to two 
-+parameters to the function.
-+
-+The letters reprsent the following data types:
-+@table @code
-+@item <no letter>
-+@code{void} for return type and no parameter for parameter types.
-+
-+@item i
-+@code{int} for return type and parameter type
-+
-+@item f
-+@code{float} for return type and parameter type
-+
-+@item p
-+@code{void *} for return type and parameter type
-+
-+@end table
-+
-+And the function names are:
-+@example
-+void __builtin_custom_n (void)
-+void __builtin_custom_ni (int)
-+void __builtin_custom_nf (float)
-+void __builtin_custom_np (void *)
-+void __builtin_custom_nii (int, int)
-+void __builtin_custom_nif (int, float)
-+void __builtin_custom_nip (int, void *)
-+void __builtin_custom_nfi (float, int)
-+void __builtin_custom_nff (float, float)
-+void __builtin_custom_nfp (float, void *)
-+void __builtin_custom_npi (void *, int)
-+void __builtin_custom_npf (void *, float)
-+void __builtin_custom_npp (void *, void *)
-+int __builtin_custom_in (void)
-+int __builtin_custom_ini (int)
-+int __builtin_custom_inf (float)
-+int __builtin_custom_inp (void *)
-+int __builtin_custom_inii (int, int)
-+int __builtin_custom_inif (int, float)
-+int __builtin_custom_inip (int, void *)
-+int __builtin_custom_infi (float, int)
-+int __builtin_custom_inff (float, float)
-+int __builtin_custom_infp (float, void *)
-+int __builtin_custom_inpi (void *, int)
-+int __builtin_custom_inpf (void *, float)
-+int __builtin_custom_inpp (void *, void *)
-+float __builtin_custom_fn (void)
-+float __builtin_custom_fni (int)
-+float __builtin_custom_fnf (float)
-+float __builtin_custom_fnp (void *)
-+float __builtin_custom_fnii (int, int)
-+float __builtin_custom_fnif (int, float)
-+float __builtin_custom_fnip (int, void *)
-+float __builtin_custom_fnfi (float, int)
-+float __builtin_custom_fnff (float, float)
-+float __builtin_custom_fnfp (float, void *)
-+float __builtin_custom_fnpi (void *, int)
-+float __builtin_custom_fnpf (void *, float)
-+float __builtin_custom_fnpp (void *, void *)
-+void * __builtin_custom_pn (void)
-+void * __builtin_custom_pni (int)
-+void * __builtin_custom_pnf (float)
-+void * __builtin_custom_pnp (void *)
-+void * __builtin_custom_pnii (int, int)
-+void * __builtin_custom_pnif (int, float)
-+void * __builtin_custom_pnip (int, void *)
-+void * __builtin_custom_pnfi (float, int)
-+void * __builtin_custom_pnff (float, float)
-+void * __builtin_custom_pnfp (float, void *)
-+void * __builtin_custom_pnpi (void *, int)
-+void * __builtin_custom_pnpf (void *, float)
-+void * __builtin_custom_pnpp (void *, void *)
-+@end example
-+
-+
- @node Alpha Built-in Functions
- @subsection Alpha Built-in Functions
- 
---- gcc-3.4.3/gcc/doc/invoke.texi
-+++ gcc-3.4.3-nios2/gcc/doc/invoke.texi
-@@ -337,6 +337,14 @@ in the following sections.
- @item Machine Dependent Options
- @xref{Submodel Options,,Hardware Models and Configurations}.
- 
-+@emph{Altera Nios II Options}
-+@gccoptlist{-msmallc -mno-bypass-cache -mbypass-cache @gol
-+-mno-cache-volatile -mcache-volatile -mno-inline-memcpy @gol 
-+-minline-memcpy -mno-fast-sw-div -mfast-sw-div @gol
-+-mhw-mul -mno-hw-mul -mhw-mulx -mno-hw-mulx @gol
-+-mno-hw-div -mhw-div @gol
-+-msys-crt0= -msys-lib= -msys=nosys }
-+
- @emph{M680x0 Options}
- @gccoptlist{-m68000  -m68020  -m68020-40  -m68020-60  -m68030  -m68040 @gol
- -m68060  -mcpu32  -m5200  -m68881  -mbitfield  -mc68000  -mc68020   @gol
-@@ -5836,6 +5844,7 @@ machine description.  The default for th
- that macro, which enables you to change the defaults.
- 
- @menu
-+* Altera Nios II Options::
- * M680x0 Options::
- * M68hc1x Options::
- * VAX Options::
-@@ -5871,6 +5880,103 @@ that macro, which enables you to change 
- * FRV Options::
- @end menu
- 
-+
-+@node Altera Nios II Options
-+@subsection Altera Nios II Options
-+@cindex Altera Nios II options
-+
-+These are the @samp{-m} options defined for the Altera Nios II 
-+processor.
-+
-+@table @gcctabopt
-+
-+@item -msmallc
-+@opindex msmallc
-+
-+Link with a limited version of the C library, -lsmallc. For more 
-+information see the C Library Documentation.
-+
-+
-+@item -mbypass-cache
-+@itemx -mno-bypass-cache
-+@opindex mno-bypass-cache
-+@opindex mbypass-cache
-+
-+Force all load and store instructions to always bypass cache by 
-+using io variants of the instructions. The default is to not
-+bypass the cache.
-+
-+@item -mno-cache-volatile 
-+@itemx -mcache-volatile       
-+@opindex mcache-volatile 
-+@opindex mno-cache-volatile
-+
-+Volatile memory access bypass the cache using the io variants of 
-+the ld and st instructions. The default is to cache volatile 
-+accesses. 
-+
-+-mno-cache-volatile is deprecated and will be deleted in a 
-+future GCC release.
-+
-+
-+@item -mno-inline-memcpy
-+@itemx -minline-memcpy
-+@opindex mno-inline-memcpy 
-+@opindex minline-memcpy
-+
-+Do not inline memcpy. The default is to inline when -O is on.
-+
-+
-+@item -mno-fast-sw-div
-+@itemx -mfast-sw-div
-+@opindex mno-fast-sw-div
-+@opindex mfast-sw-div
-+
-+Do no use table based fast divide for small numbers. The default 
-+is to use the fast divide at -O3 and above.
-+
-+
-+@item -mno-hw-mul
-+@itemx -mhw-mul
-+@itemx -mno-hw-mulx
-+@itemx -mhw-mulx
-+@itemx -mno-hw-div
-+@itemx -mhw-div
-+@opindex mno-hw-mul
-+@opindex mhw-mul
-+@opindex mno-hw-mulx
-+@opindex mhw-mulx
-+@opindex mno-hw-div
-+@opindex mhw-div
-+
-+Enable or disable emitting @code{mul}, @code{mulx} and @code{div} family of 
-+instructions by the compiler. The default is to emit @code{mul}
-+and not emit @code{div} and @code{mulx}.
-+
-+The different combinations of @code{mul} and @code{mulx} instructions 
-+generate a different multilib options. 
-+
-+
-+@item -msys-crt0=@var{startfile}
-+@opindex msys-crt0
-+
-+@var{startfile} is the file name  of the startfile (crt0) to use 
-+when linking. The default is crt0.o that comes with libgloss
-+and is only suitable for use with the instruction set
-+simulator.
-+
-+@item -msys-lib=@var{systemlib}
-+@itemx -msys-lib=nosys
-+@opindex msys-lib
-+
-+@var{systemlib} is the library name of the library which provides
-+the system calls required by the C library, e.g. @code{read}, @code{write}
-+etc. The default is to use nosys, this library provides
-+stub implementations of the calls and is part of libgloss.
-+
-+@end table
-+
-+
- @node M680x0 Options
- @subsection M680x0 Options
- @cindex M680x0 options
---- gcc-3.4.3/gcc/doc/md.texi
-+++ gcc-3.4.3-nios2/gcc/doc/md.texi
-@@ -1335,6 +1335,49 @@ However, here is a summary of the machin
- available on some particular machines.
- 
- @table @emph
-+
-+@item Altera Nios II family---@file{nios2.h}
-+@table @code
-+
-+@item I
-+Integer that is valid as an immediate operand in an
-+instruction taking a signed 16-bit number. Range
-+@minus{}32768 to 32767.
-+
-+@item J
-+Integer that is valid as an immediate operand in an
-+instruction taking an unsigned 16-bit number. Range
-+0 to 65535.
-+
-+@item K
-+Integer that is valid as an immediate operand in an
-+instruction taking only the upper 16-bits of a
-+32-bit number. Range 32-bit numbers with the lower
-+16-bits being 0.
-+
-+@item L
-+Integer that is valid as an immediate operand for a 
-+shift instruction. Range 0 to 31.
-+
-+
-+@item M
-+Integer that is valid as an immediate operand for
-+only the value 0. Can be used in conjunction with
-+the format modifier @code{z} to use @code{r0}
-+instead of @code{0} in the assembly output.
-+
-+@item N
-+Integer that is valid as an immediate operand for
-+a custom instruction opcode. Range 0 to 255.
-+
-+@item S
-+Matches immediates which are addresses in the small
-+data section and therefore can be added to @code{gp}
-+as a 16-bit immediate to re-create their 32-bit value.
-+
-+@end table
-+
-+
- @item ARM family---@file{arm.h}
- @table @code
- @item f
Index: toolchain/gcc/3.3.5/120-softfloat.patch
===================================================================
--- toolchain/gcc/3.3.5/120-softfloat.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/120-softfloat.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.3.5/specs-mips-soft-float
===================================================================
--- toolchain/gcc/3.3.5/specs-mips-soft-float	(revision 20005)
+++ toolchain/gcc/3.3.5/specs-mips-soft-float	(working copy)
@@ -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*} }}}}}}
-
Index: toolchain/gcc/3.3.5/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/3.3.5/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/100-uclibc-conf.patch	(working copy)
@@ -1,1613 +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/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
Index: toolchain/gcc/3.3.5/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/3.3.5/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/800-arm-bigendian.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.3.5/810-arm-bigendian-uclibc.patch
===================================================================
--- toolchain/gcc/3.3.5/810-arm-bigendian-uclibc.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/810-arm-bigendian-uclibc.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.3.5/specs-mipsel-soft-float
===================================================================
--- toolchain/gcc/3.3.5/specs-mipsel-soft-float	(revision 20005)
+++ toolchain/gcc/3.3.5/specs-mipsel-soft-float	(working copy)
@@ -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*} }}}}}}
-
Index: toolchain/gcc/3.3.5/110-uclibc-conf.patch
===================================================================
--- toolchain/gcc/3.3.5/110-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/110-uclibc-conf.patch	(working copy)
@@ -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 },		\
Index: toolchain/gcc/3.3.5/999-cvs-updates.patch
===================================================================
--- toolchain/gcc/3.3.5/999-cvs-updates.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/999-cvs-updates.patch	(working copy)
@@ -1,4522 +0,0 @@
-Index: ChangeLog
-===================================================================
-RCS file: /cvs/gcc/gcc/ChangeLog,v
-retrieving revision 1.621.2.52
-retrieving revision 1.621.2.53
-diff -u -r1.621.2.52 -r1.621.2.53
---- gcc/ChangeLog	30 Sep 2004 16:47:59 -0000	1.621.2.52
-+++ gcc/ChangeLog	6 Oct 2004 12:00:52 -0000	1.621.2.53
-@@ -1,3 +1,7 @@
-+2004-10-06  Josef Zlomek  <josef.zlomek@email.cz>
-+
-+	* MAINTAINERS: Update my e-mail address.
-+
- 2004-09-30  Release Manager
- 
- 	* GCC 3.3.5 Released.
-Index: MAINTAINERS
-===================================================================
-RCS file: /cvs/gcc/gcc/MAINTAINERS,v
-retrieving revision 1.253.2.18
-retrieving revision 1.253.2.19
-diff -u -r1.253.2.18 -r1.253.2.19
---- gcc/MAINTAINERS	16 Jan 2004 23:33:12 -0000	1.253.2.18
-+++ gcc/MAINTAINERS	6 Oct 2004 12:00:53 -0000	1.253.2.19
-@@ -258,7 +258,7 @@
- John Wehle					john@feith.com
- Florian Weimer					fw@deneb.enyo.de
- Mark Wielaard					mark@gcc.gnu.org
--Josef Zlomek					zlomekj@suse.cz
-+Josef Zlomek					josef.zlomek@email.cz
- 
- GNATS only accounts
- 
-Index: gcc/ChangeLog
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/ChangeLog,v
-retrieving revision 1.16114.2.1019
-retrieving revision 1.16114.2.1059
-diff -u -r1.16114.2.1019 -r1.16114.2.1059
---- gcc/gcc/ChangeLog	30 Sep 2004 16:45:01 -0000	1.16114.2.1019
-+++ gcc/gcc/ChangeLog	29 Jan 2005 11:53:57 -0000	1.16114.2.1059
-@@ -1,3 +1,314 @@
-+2005-01-29  Alan Modra  <amodra@bigpond.net.au>
-+
-+	* unwind-dw2.c (execute_stack_op): Add missing cases for
-+	DW_OP_shl, DW_OP_shr, DW_OP_shra, DW_OP_xor.
-+
-+2005-01-28  Stephane Carrez  <stcarrez@nerim.fr>
-+
-+	PR target/15384
-+	* config/m68hc11/t-m68hc11-gas (dp-bit.c): Fix typo causing a
-+	configuration part of dp-bit.c to be lost.
-+
-+2005-01-27  Ulrich Weigand  <uweigand@de.ibm.com>
-+
-+	PR target/17771
-+	Backport from mainline:
-+	* config/s390/s390.md ("reload_outti"): Remove predicate for
-+	output operand.  Abort if operand is not a MEM.
-+	("reload_outdi", "reload_outdf"): Likewise.
-+
-+2005-01-22  Roger Sayle  <roger@eyesopen.com>
-+
-+	PR target/18402
-+	Backport from mainline
-+	2003-02-05  Jakub Jelinek  <jakub@redhat.com>
-+ 
-+ 	PR optimization/8555
-+ 	* config/i386/i386.md (sse_mov?fcc split): Handle op2 == op3 case
-+ 	instead of aborting.
-+
-+2005-01-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
-+
-+	* gccbug.in: Update optimization -> tree-optimization/rtl-optimization.
-+
-+2005-01-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
-+
-+	PR c++/17115
-+	* tree-inline.c (expand_call_inline): Do not warn for functions
-+	marked with attribute noinline.
-+
-+2005-01-18  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	PR rtl-optimization/19296
-+	* combine.c (simplify_comparison): Rewrite the condition under
-+	which a non-paradoxical SUBREG of a PLUS can be lifted when
-+	compared against a constant.
-+
-+2004-01-14  David Mosberger  <davidm@hpl.hp.com>
-+	    James E Wilson  <wilson@specifixinc.com>
-+
-+	PR target/18987
-+	* config/ia64/ia64.c (process_set): For alloc insn, only call
-+	process_epilogue is !frame_pointer_needed.
-+
-+	PR target/13158
-+	* config/ia64/ia64.c (ia64_expand_epilogue): Set RTX_FRAME_RELATED_P on
-+	sibcall alloc instruction.
-+	(process_set): Handle sibcall alloc instruction.
-+
-+2005-01-13  David O'Brien  <obrien@FreeBSD.org>
-+
-+	Backport from mainline:
-+	* config/freebsd-spec.h:  Use KSE pthread lib for -pthread.
-+
-+2005-01-08  Sergey M. Samoylov  <ssamoylov@dev.rtsoft.ru>
-+
-+	Backport:
-+	2004-02-12  Richard Sandiford  <rsandifo@redhat.com>
-+	PR bootstrap/13617
-+	* config/mips/mips-protos.h (mips_output_aligned_decl_common): Declare.
-+	(mips_declare_object): Make variadic.
-+	* config/mips/mips.h (ASM_OUTPUT_ALIGNED_DECL_COMMON): Use
-+	mips_output_aligned_decl_common.
-+	* config/mips/mips.c (mips_output_aligned_decl_common): New function.
-+	(mips_declare_object): Make variadic.
-+
-+2005-01-08  Richard Sandiford  <rsandifo@redhat.com>
-+
-+	PR target/17565
-+	* config/mips/mips.md (define_asm_attributes): Set can_delay to no.
-+
-+2004-12-27 John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	* vax.c (vax_address_cost, vax_rtx_cost): Correct casts.
-+	(vax_rtx_cost): Handle small offsets for both PLUS and MINUS.
-+
-+2004-12-27  Steven Bosscher  <stevenb@suse.de>
-+	    John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	rtl-optimization/12863
-+        * config/vax/vax.h (CASE_DROPS_THROUGH): Don't define.
-+        * config/vax/vax.md (casesi): Emit a test-and-branch to make sure
-+        that the case is in range, to make sure the casesi insn is always
-+        in range and never falls through.
-+        (casesi1): Add comment to explain why casesi never falls through.
-+        Remove the unnamed special case casesi pattern.
-+
-+2004-12-26  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	PR target/17643
-+	* config/pa/pa32-linux.h (FUNCTION_OK_FOR_SIBCALL): Return false when
-+	TARGET_PORTABLE_RUNTIME is true.
-+
-+2004-12-25  Alan Modra  <amodra@bigpond.net.au>
-+
-+	PR target/19147
-+	* config/rs6000/rs6000.md (andsi3_internal7, andsi3_internal8): Delete.
-+
-+2004-12-21  Joseph S. Myers  <jsm@polyomino.org.uk>
-+
-+	PR c/14765
-+	* c-parse.in (compstmt_primary_start): Set last_expr_type to
-+	NULL_TREE.
-+
-+2004-12-19  Roger Sayle  <roger@eyesopen.com>
-+
-+	PR middle-end/19068
-+	* expr.c (expand_expr_real_1) <MAX_EXPR>: Ensure that target, op0
-+	and op1 are all registers (or constants) before expanding the RTL
-+	comparison sequence [to avoid reg_overlap_mentioned (target, op1)].
-+
-+2004-12-16  Eric Botcazou  <ebotcazou@adacore.com>
-+
-+	PR middle-end/18882
-+	* function.c (assign_stack_local_1): Use BITS_PER_UNIT alignment
-+	when passed -2 as 'align'.
-+	(put_var_into_stack): Adjust calls to put_reg_into_stack.
-+	When passed a CONCAT, instruct put_reg_into_stack to use
-+	a consecutive stack slot for the second part.
-+	(put_reg_into_stack): Remove 'promoted_mode' parameter, add
-+	'consecutive_p' parameter.  Retrieve the register mode from 'reg'.
-+	When consecutive_p is true, instruct assign_stack_local_1 to use
-+	BITS_PER_UNIT alignment.
-+	(put_addressof_into_stack): Adjust call to put_reg_into_stack.
-+
-+2004-12-16  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	PR middle-end/18590
-+	* function.c (fixup_var_refs_insns_with_hash): Do not invoke
-+	fixup_var_refs_insn on insns marked as deleted.
-+
-+2004-12-15  Richard Henderson  <rth@redhat.com>
-+
-+        PR target/19005
-+        * config/i386/i386.md (swaphi_1): Swap with swaphi_2, allow with
-+        optimize_size.
-+        (swapqi_1): Rename from swapqi.  Enable only for no partial reg
-+        stall and optimize_size.
-+        (swapqi_2): New.
-+        (swaphi_1, swaphi_2, swapqi_1): Add athlon_decode.
-+        (swapsi, swaphi_1, swaphi_2, swapqi_1, swapdi): Remove modrm override.
-+
-+2004-12-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	PR middle-end/18730
-+	* emit-rtl.c (get_first_nonnote_insn, get_last_nonnote_insn): When
-+	the first/last insn is a sequence, return the first/last insn of the
-+	sequence.
-+
-+2004-12-12  Richard Henderson  <rth@redhat.com>
-+
-+        PR target/18932
-+        * config/i386/i386.md (all splits and peepholes): Use flags_reg_operand
-+        and compare_operator to propagate the input CC mode to the output.
-+        * config/i386/i386.c (flags_reg_operand, compare_operator): New.
-+        * config/i386/i386.h (PREDICATE_CODES): Add them.
-+        * config/i386/i386-protos.h: Update.
-+
-+2004-12-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
-+
-+	PR rtl-optimization/16536
-+	Backport from mainline:
-+	2004-06-25  Mark Mitchell  <mark@codesourcery.com>
-+	* alias.c (get_alias_set): Adjust setting of
-+	DECL_POINTER_ALIAS_SET for pointers to aggregates.
-+
-+2004-12-09  Richard Henderson  <rth@redhat.com>
-+
-+	PR target/17025
-+	* config/i386/i386.md (testqi_1_maybe_si, andqi_2_maybe_si): New.
-+	(test_qi_1, andqi_2): Do not promote to simode.
-+
-+2004-12-07  David Mosberger  <davidm@hpl.hp.com>
-+
-+	PR target/18443
-+	* config/ia64/ia64.c (ia64_assemble_integer): Add support for
-+	emitting unaligned pointer-sized integers.
-+
-+2004-12-05  Richard Henderson  <rth@redhat.com>
-+
-+	PR target/18841
-+	* config/alpha/alpha.md (UNSPECV_SETJMPR_ER): New.
-+	(builtin_setjmp_receiver_er_sl_1): Use it.
-+	(builtin_setjmp_receiver_er_1): Likewise.
-+	(builtin_setjmp_receiver_er, exception_receiver_er): Remove.
-+	(builtin_setjmp_receiver): Don't split for explicit relocs until
-+	after reload.
-+	(exception_receiver): Likewise.
-+
-+2004-12-03  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	2003-10-31  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+	Backport from mainline
-+	* aclocal.m4 (gcc_AC_FUNC_MMAP_BLACKLIST): Blacklist ultrix*.
-+	* configure: Rebuilt.
-+
-+2004-12-03  Richard Henderson  <rth@redhat.com>
-+
-+	2004-09-24  Richard Henderson  <rth@redhat.com>
-+	PR rtl-opt/17503
-+	* regclass.c (subregs_of_mode): Turn into an htab.  Make static.
-+	(som_hash, som_eq): New.
-+	(init_subregs_of_mode, record_subregs_of_mode): New.
-+	(cannot_change_mode_set_regs): Rewrite for htab implementation.
-+	(invalid_mode_change_p): Likewise.
-+	* combine.c (gen_lowpart_for_combine): Use record_subregs_of_mode.
-+	* flow.c (mark_used_regs): Likewise.
-+	(life_analysis): Use init_subregs_of_mode.
-+	* regs.h (subregs_of_mode): Remove.
-+	* rtl.h (init_subregs_of_mode, record_subregs_of_mode): Declare.
-+
-+2004-12-03  Roger Sayle  <roger@eyesopen.com>
-+
-+	PR target/9908
-+	* config/i386/i386.md (*call_value_1): Correct Intel assembler
-+	syntax by using %A1 instead of %*%1.
-+
-+2004-12-01  Alan Modra  <amodra@bigpond.net.au>
-+
-+	PR target/12817
-+	* config/rs6000/rs6000.c (rs6000_emit_prologue): Use r0 for vrsave.
-+
-+2004-11-29  Roger Sayle  <roger@eyesopen.com>
-+
-+	PR rtl-optimization/9771
-+	* regclass.c (CALL_REALLY_USED_REGNO_P): New macro to eliminate
-+	conditional compilation in init_reg_sets_1.
-+	(init_reg_sets_1): Let global_regs[i] take priority over the frame
-+	(but not stack) pointer exceptions to regs_invalidated_by_call.
-+	(globalize_reg): Globalizing a fixed register may need to update
-+	regs_invalidated_by_call.
-+
-+2004-11-27  Falk Hueffner  <falk@debian.org>
-+	    Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	PR optimization/18577
-+	* unroll.c (unroll_loop): Test both REGNO_LAST_UID and
-+	REGNO_LAST_NOTE_UID to decide whether a pseudo is local
-+	to the loop.
-+
-+2004-11-27  Alan Modra  <amodra@bigpond.net.au>
-+
-+	PR target/12769
-+	* config/rs6000/rs6000.c (init_cumulative_args): Set call_cookie
-+	from rs6000_default_long_calls for libcalls.
-+
-+2004-11-25  Richard Henderson  <rth@redhat.com>
-+
-+	PR c++/6764
-+	* reload1.c (set_initial_eh_label_offset): New.
-+	(set_initial_label_offsets): Use it.
-+
-+2004-11-22  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
-+
-+	PR rtl-optimization/14838
-+	* emit-rtl.c (get_first_nonnote_insn): Don't assume first insn is a
-+	note.
-+	(get_last_nonnote_insn): Don't assume last insn is a note.
-+
-+2004-10-14  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
-+
-+	* doc/install.texi (*-*-solaris2*): Update with info about kernel
-+	patches to solve spurious testsuite failures.
-+
-+2004-10-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	PR target/14454
-+	* config/sparc/sparc.c (TARGET_ASM_CAN_OUTPUT_MI_THUNK): Set to
-+	sparc_can_output_mi_thunk.
-+	(sparc_output_mi_thunk): Simplify handling of delta offset.  Add
-+	handling of vcall offset.
-+	(sparc_can_output_mi_thunk): New predicate.
-+	* doc/tm.texi (TARGET_ASM_OUTPUT_MI_THUNK): Document VCALL_OFFSET.
-+	(TARGET_ASM_OUTPUT_MI_VCALL_THUNK): Delete.
-+	(TARGET_ASM_CAN_OUTPUT_MI_THUNK): New target hook.
-+
-+	* config/sparc/sparc.md (movdi): Remove redundant test.
-+
-+2004-10-07  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	* doc/install.texi (*-*-solaris2*): Fix marker for URL.
-+
-+2004-10-06  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	PR target/16007
-+	* doc/install.texi (*-*-solaris2*): Mention potential problem
-+	with Sun assembler + GNU linker and C++ programs.
-+	Document status of binutils 2.15 release.
-+
-+2004-09-30  Richard Henderson  <rth@redhat.com>
-+ 
-+	* config/alpha/qrnnd.asm: Mark for noexecstack.
-+ 
-+2004-09-30  Richard Henderson  <rth@redhat.com>
-+  
-+	* unwind-dw2.c (_Unwind_GetGR): Honor DWARF_ZERO_REG.
-+	* doc/tm.texi (DWARF_ZERO_REG): New.
-+  
-+	* config/alpha/alpha.c (alpha_sa_mask, alpha_expand_prologue,
-+	alpha_expand_epilogue): Revert 2003-09-30 change to store zero.
-+	* config/alpha/alpha.h (DWARF_ZERO_REG): New.
-+
- 2004-09-30  Release Manager
- 
- 	* GCC 3.3.5 Released.
-@@ -19,12 +330,12 @@
- 
- 2004-09-13  Richard Henderson  <rth@redhat.com>
- 
--        PR inline-asm/6806
--        * cselib.c (cselib_invalidate_rtx): Export.  Remove unused args.
--        (cselib_invalidate_rtx_note_stores): New.
--        (cselib_record_sets, cselib_process_insn): Update to match.
--        * cselib.h (cselib_invalidate_rtx): Declare.
--        * reload1.c (reload_cse_simplify): Invalidate asm clobbers.
-+	PR inline-asm/6806
-+	* cselib.c (cselib_invalidate_rtx): Export.  Remove unused args.
-+	(cselib_invalidate_rtx_note_stores): New.
-+	(cselib_record_sets, cselib_process_insn): Update to match.
-+	* cselib.h (cselib_invalidate_rtx): Declare.
-+	* reload1.c (reload_cse_simplify): Invalidate asm clobbers.
- 
- 2004-08-29  Jonathan Wakely  <redi@gcc.gnu.org>
- 
-@@ -83,7 +394,7 @@
- 2004-07-25  Andreas Jaeger  <aj@suse.de>
- 
- 	Backport from mainline:
--        * libgcc-std.ver: Add __unorddf2 and __unordsf2 with version 3.3.4.
-+	* libgcc-std.ver: Add __unorddf2 and __unordsf2 with version 3.3.4.
- 
- 2004-07-25  Kaz Kojima  <kkojima@gcc.gnu.org>
- 
-@@ -155,14 +466,14 @@
- 	side-effect of having a length greater or equal to 3.
- 
- 2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
--            Lloyd Parkes  <lloyd@must-have-coffee.gen.nz>
-+	    Lloyd Parkes  <lloyd@must-have-coffee.gen.nz>
- 
- 	PR target/15186
- 	* config/sparc/sol2-bi.h (LINK_ARCH64_SPEC_BASE): Pass
- 	/usr/ucblib/sparcv9 as -R path when -compat-bsd is specified.
- 
- 2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
--            Martin Sebor  <sebor@roguewave.com>
-+	    Martin Sebor  <sebor@roguewave.com>
- 
- 	PR target/12602
- 	* doc/invoke.texi (SPARC options): Document -threads
-@@ -252,18 +563,18 @@
- 
- 	Backport from mainline:
- 	2004-01-19  Richard Henderson  <rth@redhat.com>
--        * alpha.md (UNSPEC_NT_LDA): Renumber.
--        (UNSPEC_CVTLQ, cvtlq): New.
--        (extendsidi2_1): Rename from extendsidi2_nofix; remove f/f.
--        (extendsidi2_fix): Remove.
--        (extendsidi2 splitter): Use cvtlq.
--        (extendsidi2 fp peepholes): Remove.
--        (cvtql): Use SFmode instead of SImode.
--        (fix_trunc?fsi): Update to match.
--        (floatsisf2_ieee, floatsisf2, floatsidf2_ieee, floatsidf2): New.
--        (movsi): Rename from movsi_nofix, remove f alternatives.
--        (movsi_nt_vms): Similarly.
--        (movsi_fix, movsi_nt_vms_fix): Remove.
-+	* alpha.md (UNSPEC_NT_LDA): Renumber.
-+	(UNSPEC_CVTLQ, cvtlq): New.
-+	(extendsidi2_1): Rename from extendsidi2_nofix; remove f/f.
-+	(extendsidi2_fix): Remove.
-+	(extendsidi2 splitter): Use cvtlq.
-+	(extendsidi2 fp peepholes): Remove.
-+	(cvtql): Use SFmode instead of SImode.
-+	(fix_trunc?fsi): Update to match.
-+	(floatsisf2_ieee, floatsisf2, floatsidf2_ieee, floatsidf2): New.
-+	(movsi): Rename from movsi_nofix, remove f alternatives.
-+	(movsi_nt_vms): Similarly.
-+	(movsi_fix, movsi_nt_vms_fix): Remove.
- 
- 2004-05-26  Hans-Peter Nilsson  <hp@axis.com>
- 
-Index: gcc/aclocal.m4
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/aclocal.m4,v
-retrieving revision 1.61.2.4
-retrieving revision 1.61.2.5
-diff -u -r1.61.2.4 -r1.61.2.5
---- gcc/gcc/aclocal.m4	1 Oct 2003 21:56:34 -0000	1.61.2.4
-+++ gcc/gcc/aclocal.m4	4 Dec 2004 01:51:47 -0000	1.61.2.5
-@@ -413,7 +413,7 @@
-    # read() to the same fd.  The only system known to have a problem here
-    # is VMS, where text files have record structure.
-    case "$host_os" in
--     vms*) 
-+     vms* | ultrix*) 
-         gcc_cv_func_mmap_file=no ;;
-      *)
-         gcc_cv_func_mmap_file=yes;;
-Index: gcc/alias.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/alias.c,v
-retrieving revision 1.181.2.6
-retrieving revision 1.181.2.7
-diff -u -r1.181.2.6 -r1.181.2.7
---- gcc/gcc/alias.c	28 May 2004 17:27:27 -0000	1.181.2.6
-+++ gcc/gcc/alias.c	10 Dec 2004 17:25:00 -0000	1.181.2.7
-@@ -508,6 +508,8 @@
- 	      /* If we haven't computed the actual alias set, do it now.  */
- 	      if (DECL_POINTER_ALIAS_SET (decl) == -2)
- 		{
-+		  tree pointed_to_type = TREE_TYPE (TREE_TYPE (decl));
-+
- 		  /* No two restricted pointers can point at the same thing.
- 		     However, a restricted pointer can point at the same thing
- 		     as an unrestricted pointer, if that unrestricted pointer
-@@ -516,11 +518,22 @@
- 		     alias set for the type pointed to by the type of the
- 		     decl.  */
- 		  HOST_WIDE_INT pointed_to_alias_set
--		    = get_alias_set (TREE_TYPE (TREE_TYPE (decl)));
-+		    = get_alias_set (pointed_to_type);
- 
- 		  if (pointed_to_alias_set == 0)
- 		    /* It's not legal to make a subset of alias set zero.  */
--		    ;
-+		    DECL_POINTER_ALIAS_SET (decl) = 0;
-+		  else if (AGGREGATE_TYPE_P (pointed_to_type))
-+		    /* For an aggregate, we must treat the restricted
-+		       pointer the same as an ordinary pointer.  If we
-+		       were to make the type pointed to by the
-+		       restricted pointer a subset of the pointed-to
-+		       type, then we would believe that other subsets
-+		       of the pointed-to type (such as fields of that
-+		       type) do not conflict with the type pointed to
-+		       by the restricted pointer.   */
-+		    DECL_POINTER_ALIAS_SET (decl)
-+		      = pointed_to_alias_set;
- 		  else
- 		    {
- 		      DECL_POINTER_ALIAS_SET (decl) = new_alias_set ();
-Index: gcc/c-parse.in
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/c-parse.in,v
-retrieving revision 1.152.14.1
-retrieving revision 1.152.14.2
-diff -u -r1.152.14.1 -r1.152.14.2
---- gcc/gcc/c-parse.in	28 Jan 2003 01:54:03 -0000	1.152.14.1
-+++ gcc/gcc/c-parse.in	21 Dec 2004 21:51:26 -0000	1.152.14.2
-@@ -2177,6 +2177,7 @@
- 		  push_label_level ();
- 		  compstmt_count++;
- 		  $$ = add_stmt (build_stmt (COMPOUND_STMT, last_tree));
-+		  last_expr_type = NULL_TREE;
- 		}
-         ;
- 
-Index: gcc/combine.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/combine.c,v
-retrieving revision 1.325.2.17
-retrieving revision 1.325.2.19
-diff -u -r1.325.2.17 -r1.325.2.19
---- gcc/gcc/combine.c	25 Jul 2004 18:49:54 -0000	1.325.2.17
-+++ gcc/gcc/combine.c	18 Jan 2005 08:39:05 -0000	1.325.2.19
-@@ -10138,13 +10138,8 @@
- 
-   result = gen_lowpart_common (mode, x);
- #ifdef CANNOT_CHANGE_MODE_CLASS
--  if (result != 0
--      && GET_CODE (result) == SUBREG
--      && GET_CODE (SUBREG_REG (result)) == REG
--      && REGNO (SUBREG_REG (result)) >= FIRST_PSEUDO_REGISTER)
--    bitmap_set_bit (&subregs_of_mode, REGNO (SUBREG_REG (result))
--				      * MAX_MACHINE_MODE
--				      + GET_MODE (result));
-+  if (result != 0 && GET_CODE (result) == SUBREG)
-+    record_subregs_of_mode (result);
- #endif
- 
-   if (result)
-@@ -10818,34 +10813,61 @@
- 	  break;
- 
- 	case SUBREG:
--	  /* Check for the case where we are comparing A - C1 with C2,
--	     both constants are smaller than 1/2 the maximum positive
--	     value in MODE, and the comparison is equality or unsigned.
--	     In that case, if A is either zero-extended to MODE or has
--	     sufficient sign bits so that the high-order bit in MODE
--	     is a copy of the sign in the inner mode, we can prove that it is
--	     safe to do the operation in the wider mode.  This simplifies
--	     many range checks.  */
-+	  /* Check for the case where we are comparing A - C1 with C2, that is
-+
-+	       (subreg:MODE (plus (A) (-C1))) op (C2)
-+
-+	     with C1 a constant, and try to lift the SUBREG, i.e. to do the
-+	     comparison in the wider mode.  One of the following two conditions
-+	     must be true in order for this to be valid:
-+
-+	       1. The mode extension results in the same bit pattern being added
-+		  on both sides and the comparison is equality or unsigned.  As
-+		  C2 has been truncated to fit in MODE, the pattern can only be
-+		  all 0s or all 1s.
-+
-+	       2. The mode extension results in the sign bit being copied on
-+		  each side.
-+
-+	     The difficulty here is that we have predicates for A but not for
-+	     (A - C1) so we need to check that C1 is within proper bounds so
-+	     as to perturbate A as little as possible.  */
- 
- 	  if (mode_width <= HOST_BITS_PER_WIDE_INT
- 	      && subreg_lowpart_p (op0)
-+	      && GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (op0))) > mode_width
- 	      && GET_CODE (SUBREG_REG (op0)) == PLUS
--	      && GET_CODE (XEXP (SUBREG_REG (op0), 1)) == CONST_INT
--	      && INTVAL (XEXP (SUBREG_REG (op0), 1)) < 0
--	      && (-INTVAL (XEXP (SUBREG_REG (op0), 1))
--		  < (HOST_WIDE_INT) (GET_MODE_MASK (mode) / 2))
--	      && (unsigned HOST_WIDE_INT) const_op < GET_MODE_MASK (mode) / 2
--	      && (0 == (nonzero_bits (XEXP (SUBREG_REG (op0), 0),
--				      GET_MODE (SUBREG_REG (op0)))
--			& ~GET_MODE_MASK (mode))
--		  || (num_sign_bit_copies (XEXP (SUBREG_REG (op0), 0),
--					   GET_MODE (SUBREG_REG (op0)))
--		      > (unsigned int)
--			(GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (op0)))
--			 - GET_MODE_BITSIZE (mode)))))
-+	      && GET_CODE (XEXP (SUBREG_REG (op0), 1)) == CONST_INT)
- 	    {
--	      op0 = SUBREG_REG (op0);
--	      continue;
-+	      enum machine_mode inner_mode = GET_MODE (SUBREG_REG (op0));
-+	      rtx a = XEXP (SUBREG_REG (op0), 0);
-+	      HOST_WIDE_INT c1 = -INTVAL (XEXP (SUBREG_REG (op0), 1));
-+
-+	      if ((c1 > 0
-+	           && (unsigned HOST_WIDE_INT) c1
-+		       < (unsigned HOST_WIDE_INT) 1 << (mode_width - 1)
-+		   && (equality_comparison_p || unsigned_comparison_p)
-+		   /* (A - C1) zero-extends if it is positive and sign-extends
-+		      if it is negative, C2 both zero- and sign-extends.  */
-+		   && ((0 == (nonzero_bits (a, inner_mode)
-+			      & ~GET_MODE_MASK (mode))
-+			&& const_op >= 0)
-+		       /* (A - C1) sign-extends if it is positive and 1-extends
-+			  if it is negative, C2 both sign- and 1-extends.  */
-+		       || (num_sign_bit_copies (a, inner_mode)
-+			   > (unsigned int) (GET_MODE_BITSIZE (inner_mode)
-+					     - mode_width)
-+			   && const_op < 0)))
-+		  || ((unsigned HOST_WIDE_INT) c1
-+		       < (unsigned HOST_WIDE_INT) 1 << (mode_width - 2)
-+		      /* (A - C1) always sign-extends, like C2.  */
-+		      && num_sign_bit_copies (a, inner_mode)
-+			 > (unsigned int) (GET_MODE_BITSIZE (inner_mode)
-+					   - mode_width - 1)))
-+		{
-+		  op0 = SUBREG_REG (op0);
-+		  continue;
-+	        }
- 	    }
- 
- 	  /* If the inner mode is narrower and we are extracting the low part,
-Index: gcc/configure
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/configure,v
-retrieving revision 1.641.2.23
-retrieving revision 1.641.2.24
-diff -u -r1.641.2.23 -r1.641.2.24
---- gcc/gcc/configure	1 Apr 2004 16:55:23 -0000	1.641.2.23
-+++ gcc/gcc/configure	4 Dec 2004 01:51:43 -0000	1.641.2.24
-@@ -2399,7 +2399,7 @@
- fi
- 
- # Find some useful tools
--for ac_prog in gawk mawk nawk awk
-+for ac_prog in mawk gawk nawk awk
- do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
- set dummy $ac_prog; ac_word=$2
-@@ -3947,7 +3947,7 @@
-    # read() to the same fd.  The only system known to have a problem here
-    # is VMS, where text files have record structure.
-    case "$host_os" in
--     vms*) 
-+     vms* | ultrix*) 
-         gcc_cv_func_mmap_file=no ;;
-      *)
-         gcc_cv_func_mmap_file=yes;;
-@@ -8120,7 +8120,7 @@
- echo "$ac_t""$gcc_cv_ld_eh_frame_hdr" 1>&6
- 
- echo $ac_n "checking linker --as-needed support""... $ac_c" 1>&6
--echo "configure:8250: checking linker --as-needed support" >&5
-+echo "configure:8124: checking linker --as-needed support" >&5
- gcc_cv_ld_as_needed=no
- if test x$gcc_cv_gld_major_version != x -a x$gcc_cv_gld_minor_version != x; then
-   if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2 && grep 'EMUL = elf' ../ld/Makefile > /dev/null; then
-@@ -8144,7 +8144,7 @@
- case "$target" in
-   mips*-*-*)
-     echo $ac_n "checking whether libgloss uses STARTUP directives consistently""... $ac_c" 1>&6
--echo "configure:8127: checking whether libgloss uses STARTUP directives consistently" >&5
-+echo "configure:8148: checking whether libgloss uses STARTUP directives consistently" >&5
-     gcc_cv_mips_libgloss_startup=no
-     gcc_cv_libgloss_srcdir=`echo $srcdir | sed -e 's,/gcc$,,'`/libgloss
-     if test "x$exec_prefix" = xNONE; then
-@@ -8349,7 +8349,7 @@
- 
- 
- echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
--echo "configure:8332: checking whether to enable maintainer-specific portions of Makefiles" >&5
-+echo "configure:8353: checking whether to enable maintainer-specific portions of Makefiles" >&5
-     # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
- if test "${enable_maintainer_mode+set}" = set; then
-   enableval="$enable_maintainer_mode"
-Index: gcc/emit-rtl.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/emit-rtl.c,v
-retrieving revision 1.303.2.5
-retrieving revision 1.303.2.7
-diff -u -r1.303.2.5 -r1.303.2.7
---- gcc/gcc/emit-rtl.c	18 Jun 2004 17:08:48 -0000	1.303.2.5
-+++ gcc/gcc/emit-rtl.c	14 Dec 2004 04:06:08 -0000	1.303.2.7
-@@ -2890,11 +2890,19 @@
- {
-   rtx insn = first_insn;
- 
--  while (insn)
-+  if (insn)
-     {
--      insn = next_insn (insn);
--      if (insn == 0 || GET_CODE (insn) != NOTE)
--	break;
-+      if (NOTE_P (insn))
-+	for (insn = next_insn (insn);
-+	     insn && NOTE_P (insn);
-+	     insn = next_insn (insn))
-+	  continue;
-+      else
-+	{
-+	  if (GET_CODE (insn) == INSN
-+	      && GET_CODE (PATTERN (insn)) == SEQUENCE)
-+	    insn = XVECEXP (PATTERN (insn), 0, 0);
-+	}
-     }
- 
-   return insn;
-@@ -2908,11 +2916,20 @@
- {
-   rtx insn = last_insn;
- 
--  while (insn)
-+  if (insn)
-     {
--      insn = previous_insn (insn);
--      if (insn == 0 || GET_CODE (insn) != NOTE)
--	break;
-+      if (NOTE_P (insn))
-+	for (insn = previous_insn (insn);
-+	     insn && NOTE_P (insn);
-+	     insn = previous_insn (insn))
-+	  continue;
-+      else
-+	{
-+	  if (GET_CODE (insn) == INSN
-+	      && GET_CODE (PATTERN (insn)) == SEQUENCE)
-+	    insn = XVECEXP (PATTERN (insn), 0,
-+			    XVECLEN (PATTERN (insn), 0) - 1);
-+	}
-     }
- 
-   return insn;
-Index: gcc/expr.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/expr.c,v
-retrieving revision 1.498.2.31
-retrieving revision 1.498.2.32
-diff -u -r1.498.2.31 -r1.498.2.32
---- gcc/gcc/expr.c	16 May 2004 20:27:15 -0000	1.498.2.31
-+++ gcc/gcc/expr.c	20 Dec 2004 02:43:00 -0000	1.498.2.32
-@@ -8462,9 +8462,14 @@
-       /* At this point, a MEM target is no longer useful; we will get better
- 	 code without it.  */
- 
--      if (GET_CODE (target) == MEM)
-+      if (! REG_P (target))
- 	target = gen_reg_rtx (mode);
- 
-+      /* We generate better code and avoid problems with op1 mentioning
-+	 target by forcing op1 into a pseudo if it isn't a constant.  */
-+      if (! CONSTANT_P (op1))
-+	op1 = force_reg (mode, op1);
-+
-       if (target != op0)
- 	emit_move_insn (target, op0);
- 
-Index: gcc/flow.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/flow.c,v
-retrieving revision 1.541.2.6
-retrieving revision 1.541.2.7
-diff -u -r1.541.2.6 -r1.541.2.7
---- gcc/gcc/flow.c	5 Mar 2004 17:55:50 -0000	1.541.2.6
-+++ gcc/gcc/flow.c	4 Dec 2004 00:36:35 -0000	1.541.2.7
-@@ -431,9 +431,8 @@
-   SET_HARD_REG_BIT (elim_reg_set, FRAME_POINTER_REGNUM);
- #endif
- 
--
- #ifdef CANNOT_CHANGE_MODE_CLASS
--  bitmap_initialize (&subregs_of_mode, 1);
-+  init_subregs_of_mode ();
- #endif
- 
-   if (! optimize)
-@@ -3851,11 +3850,7 @@
- 
-     case SUBREG:
- #ifdef CANNOT_CHANGE_MODE_CLASS
--      if (GET_CODE (SUBREG_REG (x)) == REG
--	  && REGNO (SUBREG_REG (x)) >= FIRST_PSEUDO_REGISTER)
--	bitmap_set_bit (&subregs_of_mode, REGNO (SUBREG_REG (x))
--					  * MAX_MACHINE_MODE
--					  + GET_MODE (x));
-+      record_subregs_of_mode (x);
- #endif
- 
-       /* While we're here, optimize this case.  */
-@@ -3900,12 +3895,8 @@
- 	       || GET_CODE (testreg) == SUBREG)
- 	  {
- #ifdef CANNOT_CHANGE_MODE_CLASS
--	    if (GET_CODE (testreg) == SUBREG
--		&& GET_CODE (SUBREG_REG (testreg)) == REG
--		&& REGNO (SUBREG_REG (testreg)) >= FIRST_PSEUDO_REGISTER)
--	      bitmap_set_bit (&subregs_of_mode, REGNO (SUBREG_REG (testreg))
--						* MAX_MACHINE_MODE
--						+ GET_MODE (testreg));
-+	    if (GET_CODE (testreg) == SUBREG)
-+	      record_subregs_of_mode (testreg);
- #endif
- 
- 	    /* Modifying a single register in an alternate mode
-Index: gcc/function.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/function.c,v
-retrieving revision 1.389.2.16
-retrieving revision 1.389.2.18
-diff -u -r1.389.2.16 -r1.389.2.18
---- gcc/gcc/function.c	16 May 2004 20:27:16 -0000	1.389.2.16
-+++ gcc/gcc/function.c	16 Dec 2004 14:04:34 -0000	1.389.2.18
-@@ -226,9 +226,8 @@
- 					 int, struct function *));
- static struct temp_slot *find_temp_slot_from_address  PARAMS ((rtx));
- static void put_reg_into_stack	PARAMS ((struct function *, rtx, tree,
--					 enum machine_mode, enum machine_mode,
--					 int, unsigned int, int,
--					 htab_t));
-+					 enum machine_mode, unsigned int,
-+					 int, int, int, htab_t));
- static void schedule_fixup_var_refs PARAMS ((struct function *, rtx, tree,
- 					     enum machine_mode,
- 					     htab_t));
-@@ -508,6 +507,7 @@
-    ALIGN controls the amount of alignment for the address of the slot:
-    0 means according to MODE,
-    -1 means use BIGGEST_ALIGNMENT and round size to multiple of that,
-+   -2 means use BITS_PER_UNIT,
-    positive specifies alignment boundary in bits.
- 
-    We do not round to stack_boundary here.
-@@ -548,6 +548,8 @@
-       alignment = BIGGEST_ALIGNMENT / BITS_PER_UNIT;
-       size = CEIL_ROUND (size, alignment);
-     }
-+  else if (align == -2)
-+    alignment = 1; /* BITS_PER_UNIT / BITS_PER_UNIT */
-   else
-     alignment = align / BITS_PER_UNIT;
- 
-@@ -1342,9 +1344,9 @@
-   enum machine_mode promoted_mode, decl_mode;
-   struct function *function = 0;
-   tree context;
--  int can_use_addressof;
--  int volatilep = TREE_CODE (decl) != SAVE_EXPR && TREE_THIS_VOLATILE (decl);
--  int usedp = (TREE_USED (decl)
-+  int can_use_addressof_p;
-+  int volatile_p = TREE_CODE (decl) != SAVE_EXPR && TREE_THIS_VOLATILE (decl);
-+  int used_p = (TREE_USED (decl)
- 	       || (TREE_CODE (decl) != SAVE_EXPR && DECL_INITIAL (decl) != 0));
- 
-   context = decl_function_context (decl);
-@@ -1391,7 +1393,7 @@
-   /* If this variable lives in the current function and we don't need to put it
-      in the stack for the sake of setjmp or the non-locality, try to keep it in
-      a register until we know we actually need the address.  */
--  can_use_addressof
-+  can_use_addressof_p
-     = (function == 0
-        && ! (TREE_CODE (decl) != SAVE_EXPR && DECL_NONLOCAL (decl))
-        && optimize > 0
-@@ -1404,7 +1406,8 @@
- 
-   /* If we can't use ADDRESSOF, make sure we see through one we already
-      generated.  */
--  if (! can_use_addressof && GET_CODE (reg) == MEM
-+  if (! can_use_addressof_p
-+      && GET_CODE (reg) == MEM
-       && GET_CODE (XEXP (reg, 0)) == ADDRESSOF)
-     reg = XEXP (XEXP (reg, 0), 0);
- 
-@@ -1412,11 +1415,11 @@
- 
-   if (GET_CODE (reg) == REG)
-     {
--      if (can_use_addressof)
-+      if (can_use_addressof_p)
- 	gen_mem_addressof (reg, decl, rescan);
-       else
--	put_reg_into_stack (function, reg, TREE_TYPE (decl), promoted_mode,
--			    decl_mode, volatilep, 0, usedp, 0);
-+	put_reg_into_stack (function, reg, TREE_TYPE (decl), decl_mode,
-+			    0, volatile_p, used_p, 0, 0);
-     }
-   else if (GET_CODE (reg) == CONCAT)
-     {
-@@ -1432,14 +1435,14 @@
- #ifdef FRAME_GROWS_DOWNWARD
-       /* Since part 0 should have a lower address, do it second.  */
-       put_reg_into_stack (function, hipart, part_type, part_mode,
--			  part_mode, volatilep, 0, 0, 0);
-+			  0, volatile_p, 0, 0, 0);
-       put_reg_into_stack (function, lopart, part_type, part_mode,
--			  part_mode, volatilep, 0, 0, 0);
-+			  0, volatile_p, 0, 1, 0);
- #else
-       put_reg_into_stack (function, lopart, part_type, part_mode,
--			  part_mode, volatilep, 0, 0, 0);
-+			  0, volatile_p, 0, 0, 0);
-       put_reg_into_stack (function, hipart, part_type, part_mode,
--			  part_mode, volatilep, 0, 0, 0);
-+			  0, volatile_p, 0, 1, 0);
- #endif
- 
-       /* Change the CONCAT into a combined MEM for both parts.  */
-@@ -1460,7 +1463,7 @@
-       /* Prevent sharing of rtl that might lose.  */
-       if (GET_CODE (XEXP (reg, 0)) == PLUS)
- 	XEXP (reg, 0) = copy_rtx (XEXP (reg, 0));
--      if (usedp && rescan)
-+      if (used_p && rescan)
- 	{
- 	  schedule_fixup_var_refs (function, reg, TREE_TYPE (decl),
- 				   promoted_mode, 0);
-@@ -1474,26 +1477,29 @@
- 
- /* Subroutine of put_var_into_stack.  This puts a single pseudo reg REG
-    into the stack frame of FUNCTION (0 means the current function).
-+   TYPE is the user-level data type of the value hold in the register.
-    DECL_MODE is the machine mode of the user-level data type.
--   PROMOTED_MODE is the machine mode of the register.
--   VOLATILE_P is nonzero if this is for a "volatile" decl.
--   USED_P is nonzero if this reg might have already been used in an insn.  */
-+   ORIGINAL_REGNO must be set if the real regno is not visible in REG.
-+   VOLATILE_P is true if this is for a "volatile" decl.
-+   USED_P is true if this reg might have already been used in an insn.
-+   CONSECUTIVE_P is true if the stack slot assigned to reg must be
-+   consecutive with the previous stack slot.  */
- 
- static void
--put_reg_into_stack (function, reg, type, promoted_mode, decl_mode, volatile_p,
--		    original_regno, used_p, ht)
-+put_reg_into_stack (function, reg, type, decl_mode, original_regno,
-+		    volatile_p, used_p, consecutive_p, ht)
-      struct function *function;
-      rtx reg;
-      tree type;
--     enum machine_mode promoted_mode, decl_mode;
--     int volatile_p;
-+     enum machine_mode decl_mode;
-      unsigned int original_regno;
--     int used_p;
-+     int volatile_p, used_p, consecutive_p;
-      htab_t ht;
- {
-   struct function *func = function ? function : cfun;
--  rtx new = 0;
-+  enum machine_mode mode = GET_MODE (reg);
-   unsigned int regno = original_regno;
-+  rtx new = 0;
- 
-   if (regno == 0)
-     regno = REGNO (reg);
-@@ -1506,7 +1512,8 @@
-     }
- 
-   if (new == 0)
--    new = assign_stack_local_1 (decl_mode, GET_MODE_SIZE (decl_mode), 0, func);
-+    new = assign_stack_local_1 (decl_mode, GET_MODE_SIZE (decl_mode),
-+				consecutive_p ? -2 : 0, func);
- 
-   PUT_CODE (reg, MEM);
-   PUT_MODE (reg, decl_mode);
-@@ -1528,7 +1535,7 @@
-     }
- 
-   if (used_p)
--    schedule_fixup_var_refs (function, reg, type, promoted_mode, ht);
-+    schedule_fixup_var_refs (function, reg, type, mode, ht);
- }
- 
- /* Make sure that all refs to the variable, previously made
-@@ -1716,7 +1723,7 @@
-   tmp.key = var;
-   ime = (struct insns_for_mem_entry *) htab_find (ht, &tmp);
-   for (insn_list = ime->insns; insn_list != 0; insn_list = XEXP (insn_list, 1))
--    if (INSN_P (XEXP (insn_list, 0)))
-+    if (INSN_P (XEXP (insn_list, 0)) && !INSN_DELETED_P (XEXP (insn_list, 0)))
-       fixup_var_refs_insn (XEXP (insn_list, 0), var, promoted_mode,
- 			   unsignedp, 1, may_share);
- }
-@@ -3025,8 +3032,8 @@
-       used_p = 1;
-     }
- 
--  put_reg_into_stack (0, reg, type, GET_MODE (reg), GET_MODE (reg),
--		      volatile_p, ADDRESSOF_REGNO (r), used_p, ht);
-+  put_reg_into_stack (0, reg, type, GET_MODE (reg), ADDRESSOF_REGNO (r),
-+		      volatile_p, used_p, 0, ht);
- }
- 
- /* List of replacements made below in purge_addressof_1 when creating
-Index: gcc/gccbug.in
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/gccbug.in,v
-retrieving revision 1.15.34.1
-retrieving revision 1.15.34.2
-diff -u -r1.15.34.1 -r1.15.34.2
---- gcc/gcc/gccbug.in	2 Jan 2003 05:22:37 -0000	1.15.34.1
-+++ gcc/gcc/gccbug.in	21 Jan 2005 10:08:47 -0000	1.15.34.2
-@@ -198,7 +198,7 @@
- done
- 
- # spam does not need to be listed here
--CATEGORIES="ada bootstrap c++ c debug driver fortran inline-asm java libf2c libgcj libobjc libstdc++ middle-end objc optimization other preprocessor target web"
-+CATEGORIES="ada bootstrap c++ c debug driver fortran inline-asm java libf2c libgcj libobjc libstdc++ middle-end objc other preprocessor rtl-optimization target tree-optimization web"
- 
- case "$FORMAT" in
-   lisp) echo "$CATEGORIES" | \
-Index: gcc/regclass.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/regclass.c,v
-retrieving revision 1.160.4.5
-retrieving revision 1.160.4.8
-diff -u -r1.160.4.5 -r1.160.4.8
---- gcc/gcc/regclass.c	3 Mar 2003 11:00:15 -0000	1.160.4.5
-+++ gcc/gcc/regclass.c	4 Dec 2004 00:36:37 -0000	1.160.4.8
-@@ -41,6 +41,7 @@
- #include "toplev.h"
- #include "output.h"
- #include "ggc.h"
-+#include "hashtab.h"
- 
- #ifndef REGISTER_MOVE_COST
- #define REGISTER_MOVE_COST(m, x, y) 2
-@@ -105,6 +106,13 @@
- char call_really_used_regs[] = CALL_REALLY_USED_REGISTERS;
- #endif
- 
-+#ifdef CALL_REALLY_USED_REGISTERS
-+#define CALL_REALLY_USED_REGNO_P(X)  call_really_used_regs[X]
-+#else
-+#define CALL_REALLY_USED_REGNO_P(X)  call_used_regs[X]
-+#endif
-+
-+
- /* Indexed by hard register number, contains 1 for registers that are
-    fixed use or call used registers that cannot hold quantities across
-    calls even if we are willing to save and restore them.  call fixed
-@@ -228,12 +236,6 @@
- 
- #endif /* FORBIDDEN_INC_DEC_CLASSES */
- 
--#ifdef CANNOT_CHANGE_MODE_CLASS
--/* All registers that have been subreged.  Indexed by regno * MAX_MACHINE_MODE
--   + mode.  */
--bitmap_head subregs_of_mode;
--#endif
--
- /* Sample MEM values for use by memory_move_secondary_cost.  */
- 
- static GTY(()) rtx top_of_stack[MAX_MACHINE_MODE];
-@@ -447,7 +449,11 @@
- 	 If we are generating PIC code, the PIC offset table register is
- 	 preserved across calls, though the target can override that.  */
- 
--      if (i == STACK_POINTER_REGNUM || i == FRAME_POINTER_REGNUM)
-+      if (i == STACK_POINTER_REGNUM)
-+	;
-+      else if (global_regs[i])
-+	SET_HARD_REG_BIT (regs_invalidated_by_call, i);
-+      else if (i == FRAME_POINTER_REGNUM)
- 	;
- #if HARD_FRAME_POINTER_REGNUM != FRAME_POINTER_REGNUM
-       else if (i == HARD_FRAME_POINTER_REGNUM)
-@@ -461,13 +467,7 @@
-       else if (i == PIC_OFFSET_TABLE_REGNUM && fixed_regs[i])
- 	;
- #endif
--      else if (0
--#ifdef CALL_REALLY_USED_REGISTERS
--	       || call_really_used_regs[i]
--#else
--	       || call_used_regs[i]
--#endif
--	       || global_regs[i])
-+      else if (CALL_REALLY_USED_REGNO_P (i))
- 	SET_HARD_REG_BIT (regs_invalidated_by_call, i);
-     }
- 
-@@ -792,6 +792,12 @@
- 
-   global_regs[i] = 1;
- 
-+  /* If we're globalizing the frame pointer, we need to set the
-+     appropriate regs_invalidated_by_call bit, even if it's already
-+     set in fixed_regs.  */
-+  if (i != STACK_POINTER_REGNUM)
-+    SET_HARD_REG_BIT (regs_invalidated_by_call, i);
-+
-   /* If already fixed, nothing else to do.  */
-   if (fixed_regs[i])
-     return;
-@@ -802,7 +808,6 @@
-   SET_HARD_REG_BIT (fixed_reg_set, i);
-   SET_HARD_REG_BIT (call_used_reg_set, i);
-   SET_HARD_REG_BIT (call_fixed_reg_set, i);
--  SET_HARD_REG_BIT (regs_invalidated_by_call, i);
- }
- 
- /* Now the data and code for the `regclass' pass, which happens
-@@ -2415,9 +2420,15 @@
- 
- 	if (regno >= min_regno)
- 	  {
-+	    /* While the following 3 lines means that the inequality
-+	         REGNO_LAST_UID (regno) <= REGNO_LAST_NOTE_UID (regno)
-+	       is true at the end of the scanning, it may be subsequently
-+	       invalidated (e.g. in load_mems) so it should not be relied
-+	       upon.  */
- 	    REGNO_LAST_NOTE_UID (regno) = INSN_UID (insn);
- 	    if (!note_flag)
- 	      REGNO_LAST_UID (regno) = INSN_UID (insn);
-+
- 	    if (REGNO_FIRST_UID (regno) == 0)
- 	      REGNO_FIRST_UID (regno) = INSN_UID (insn);
- 	    /* If we are called by reg_scan_update() (indicated by min_regno
-@@ -2614,6 +2625,77 @@
- }
- 
- #ifdef CANNOT_CHANGE_MODE_CLASS
-+
-+struct subregs_of_mode_node
-+{
-+  unsigned int block;
-+  unsigned char modes[MAX_MACHINE_MODE];
-+};
-+
-+static htab_t subregs_of_mode;
-+
-+static hashval_t som_hash PARAMS ((const void *));
-+static int som_eq PARAMS ((const void *, const void *));
-+
-+static hashval_t
-+som_hash (x)
-+     const void *x;
-+{
-+  const struct subregs_of_mode_node *a = x;
-+  return a->block;
-+}
-+
-+static int
-+som_eq (x, y)
-+     const void *x;
-+     const void *y;
-+{
-+  const struct subregs_of_mode_node *a = x;
-+  const struct subregs_of_mode_node *b = y;
-+  return a->block == b->block;
-+}
-+
-+void
-+init_subregs_of_mode ()
-+{
-+  if (subregs_of_mode)
-+    htab_empty (subregs_of_mode);
-+  else
-+    subregs_of_mode = htab_create (100, som_hash, som_eq, free);
-+}
-+
-+void
-+record_subregs_of_mode (subreg)
-+     rtx subreg;
-+{
-+  struct subregs_of_mode_node dummy, *node;
-+  enum machine_mode mode;
-+  unsigned int regno;
-+  void **slot;
-+
-+  if (!REG_P (SUBREG_REG (subreg)))
-+    return;
-+
-+  regno = REGNO (SUBREG_REG (subreg));
-+  mode = GET_MODE (subreg);
-+
-+  if (regno < FIRST_PSEUDO_REGISTER)
-+    return;
-+
-+  dummy.block = regno & -8;
-+  slot = htab_find_slot_with_hash (subregs_of_mode, &dummy,
-+				   dummy.block, INSERT);
-+  node = *slot;
-+  if (node == NULL)
-+    {
-+      node = xcalloc (1, sizeof (*node));
-+      node->block = regno & -8;
-+      *slot = node;
-+    }
-+
-+  node->modes[mode] |= 1 << (regno & 7);
-+}
-+
- /* Set bits in *USED which correspond to registers which can't change
-    their mode from FROM to any mode in which REGNO was encountered.  */
- 
-@@ -2623,42 +2705,50 @@
-      enum machine_mode from;
-      unsigned int regno;
- {
-+  struct subregs_of_mode_node dummy, *node;
-   enum machine_mode to;
--  int n, i;
--  int start = regno * MAX_MACHINE_MODE;
-+  unsigned char mask;
-+  unsigned int i;
- 
--  EXECUTE_IF_SET_IN_BITMAP (&subregs_of_mode, start, n,
--    if (n >= MAX_MACHINE_MODE + start)
--      return;
--    to = n - start;
--    for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
--      if (! TEST_HARD_REG_BIT (*used, i)
--	  && REG_CANNOT_CHANGE_MODE_P (i, from, to))
--	SET_HARD_REG_BIT (*used, i);
--  );
-+  dummy.block = regno & -8;
-+  node = htab_find_with_hash (subregs_of_mode, &dummy, dummy.block);
-+  if (node == NULL)
-+    return;
-+
-+  mask = 1 << (regno & 7);
-+  for (to = VOIDmode; to < NUM_MACHINE_MODES; to++)
-+    if (node->modes[to] & mask)
-+      for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+	if (!TEST_HARD_REG_BIT (*used, i)
-+	    && REG_CANNOT_CHANGE_MODE_P (i, from, to))
-+	  SET_HARD_REG_BIT (*used, i);
- }
- 
- /* Return 1 if REGNO has had an invalid mode change in CLASS from FROM
-    mode.  */
- 
- bool
--invalid_mode_change_p (regno, class, from_mode)
-+invalid_mode_change_p (regno, class, from)
-      unsigned int regno;
--      enum reg_class class;
--     enum machine_mode from_mode;
-+     enum reg_class class;
-+     enum machine_mode from;
- {
--  enum machine_mode to_mode;
--  int n;
--  int start = regno * MAX_MACHINE_MODE;
--
--  EXECUTE_IF_SET_IN_BITMAP (&subregs_of_mode, start, n,
--    if (n >= MAX_MACHINE_MODE + start)
--      return 0;
--    to_mode = n - start;
--    if (CANNOT_CHANGE_MODE_CLASS (from_mode, to_mode, class))
--      return 1;
--  );
--  return 0;
-+  struct subregs_of_mode_node dummy, *node;
-+  enum machine_mode to;
-+  unsigned char mask;
-+
-+  dummy.block = regno & -8;
-+  node = htab_find_with_hash (subregs_of_mode, &dummy, dummy.block);
-+  if (node == NULL)
-+    return false;
-+
-+  mask = 1 << (regno & 7);
-+  for (to = VOIDmode; to < NUM_MACHINE_MODES; to++)
-+    if (node->modes[to] & mask)
-+      if (CANNOT_CHANGE_MODE_CLASS (from, to, class))
-+	return true;
-+
-+  return false;
- }
- #endif /* CANNOT_CHANGE_MODE_CLASS */
- 
-Index: gcc/regs.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/regs.h,v
-retrieving revision 1.26.4.1
-retrieving revision 1.26.4.3
-diff -u -r1.26.4.1 -r1.26.4.3
---- gcc/gcc/regs.h	3 Mar 2003 11:00:15 -0000	1.26.4.1
-+++ gcc/gcc/regs.h	4 Dec 2004 00:36:38 -0000	1.26.4.3
-@@ -49,6 +49,9 @@
-   int first_uid;		/* UID of first insn to use (REG n) */
-   int last_uid;			/* UID of last insn to use (REG n) */
-   int last_note_uid;		/* UID of last note to use (REG n) */
-+				/* See the comment in reg_scan_mark_refs on
-+				   the relationship between last_uid and
-+				   last_note_uid.  */
- 
- 				/* fields set by reg_scan & flow_analysis */
-   int sets;			/* # of times (REG n) is set */
-@@ -66,8 +69,6 @@
- 
- extern varray_type reg_n_info;
- 
--extern bitmap_head subregs_of_mode;
--
- /* Indexed by n, gives number of times (REG n) is used or set.  */
- 
- #define REG_N_REFS(N) (VARRAY_REG (reg_n_info, N)->refs)
-Index: gcc/reload1.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/reload1.c,v
-retrieving revision 1.366.2.11
-retrieving revision 1.366.2.12
-diff -u -r1.366.2.11 -r1.366.2.12
---- gcc/gcc/reload1.c	13 Sep 2004 08:54:35 -0000	1.366.2.11
-+++ gcc/gcc/reload1.c	26 Nov 2004 05:08:45 -0000	1.366.2.12
-@@ -3389,6 +3389,16 @@
-   num_not_at_initial_offset = 0;
- }
- 
-+/* Subroutine of set_initial_label_offsets called via for_each_eh_label.  */
-+
-+static void set_initial_eh_label_offset PARAMS ((rtx));
-+static void
-+set_initial_eh_label_offset (label)
-+     rtx label;
-+{
-+  set_label_offsets (label, NULL_RTX, 1);
-+}
-+
- /* Initialize the known label offsets.
-    Set a known offset for each forced label to be at the initial offset
-    of each elimination.  We do this because we assume that all
-@@ -3405,6 +3415,8 @@
-   for (x = forced_labels; x; x = XEXP (x, 1))
-     if (XEXP (x, 0))
-       set_label_offsets (XEXP (x, 0), NULL_RTX, 1);
-+
-+  for_each_eh_label (set_initial_eh_label_offset);
- }
- 
- /* Set all elimination offsets to the known values for the code label given
-Index: gcc/rtl.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/rtl.h,v
-retrieving revision 1.375.2.8
-retrieving revision 1.375.2.9
-diff -u -r1.375.2.8 -r1.375.2.9
---- gcc/gcc/rtl.h	24 Apr 2004 19:40:45 -0000	1.375.2.8
-+++ gcc/gcc/rtl.h	4 Dec 2004 00:36:38 -0000	1.375.2.9
-@@ -2120,6 +2120,8 @@
- extern void reg_scan			PARAMS ((rtx, unsigned int, int));
- extern void reg_scan_update		PARAMS ((rtx, rtx, unsigned int));
- extern void fix_register		PARAMS ((const char *, int, int));
-+extern void init_subregs_of_mode	PARAMS ((void));
-+extern void record_subregs_of_mode	PARAMS ((rtx));
- #ifdef HARD_CONST
- extern void cannot_change_mode_set_regs PARAMS ((HARD_REG_SET *,
- 						 enum machine_mode,
-Index: gcc/tree-inline.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/tree-inline.c,v
-retrieving revision 1.38.2.12
-retrieving revision 1.38.2.13
-diff -u -r1.38.2.12 -r1.38.2.13
---- gcc/gcc/tree-inline.c	12 Mar 2004 22:43:29 -0000	1.38.2.12
-+++ gcc/gcc/tree-inline.c	21 Jan 2005 10:02:12 -0000	1.38.2.13
-@@ -1173,7 +1173,8 @@
-   if (!inlinable_function_p (fn, id))
-     {
-       if (warn_inline && DECL_INLINE (fn) && !DID_INLINE_FUNC (fn)
--	  && !DECL_IN_SYSTEM_HEADER (fn))
-+	  && !DECL_IN_SYSTEM_HEADER (fn)
-+	  && !lookup_attribute ("noinline", DECL_ATTRIBUTES (fn)))
- 	{
- 	  warning_with_decl (fn, "inlining failed in call to `%s'");
- 	  warning ("called from here");
-Index: gcc/unroll.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/Attic/unroll.c,v
-retrieving revision 1.184.2.9
-retrieving revision 1.184.2.10
-diff -u -r1.184.2.9 -r1.184.2.10
---- gcc/gcc/unroll.c	17 May 2004 21:05:48 -0000	1.184.2.9
-+++ gcc/gcc/unroll.c	27 Nov 2004 16:59:15 -0000	1.184.2.10
-@@ -794,6 +794,10 @@
-       for (r = FIRST_PSEUDO_REGISTER; r < max_reg_before_loop; ++r)
- 	if (REGNO_FIRST_UID (r) > 0 && REGNO_FIRST_UID (r) < max_uid_for_loop
- 	    && REGNO_FIRST_LUID (r) >= copy_start_luid
-+	    /* See the comment in reg_scan_mark_refs on the relationship between
-+	       last_uid and last_note_uid.  */
-+	    && REGNO_LAST_UID (r) > 0 && REGNO_LAST_UID (r) < max_uid_for_loop
-+	    && REGNO_LAST_LUID (r) <= copy_end_luid
- 	    && REGNO_LAST_NOTE_UID (r) > 0 && REGNO_LAST_NOTE_UID (r) < max_uid_for_loop
- 	    && REGNO_LAST_NOTE_LUID (r) <= copy_end_luid)
- 	  {
-Index: gcc/unwind-dw2.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/unwind-dw2.c,v
-retrieving revision 1.22.2.9
-retrieving revision 1.22.2.11
-diff -u -r1.22.2.9 -r1.22.2.11
---- gcc/gcc/unwind-dw2.c	8 May 2004 21:52:42 -0000	1.22.2.9
-+++ gcc/gcc/unwind-dw2.c	29 Jan 2005 11:54:24 -0000	1.22.2.11
-@@ -1,5 +1,5 @@
- /* DWARF2 exception handling and frame unwind runtime interface routines.
--   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
-+   Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-    Free Software Foundation, Inc.
- 
-    This file is part of GCC.
-@@ -165,6 +165,11 @@
- inline _Unwind_Word
- _Unwind_GetGR (struct _Unwind_Context *context, int index)
- {
-+#ifdef DWARF_ZERO_REG
-+  if (index == DWARF_ZERO_REG)
-+    return 0;
-+#endif
-+
-   /* This will segfault if the register hasn't been saved.  */
-   return * (_Unwind_Word *) context->reg[index];
- }
-@@ -604,6 +609,10 @@
- 	case DW_OP_mul:
- 	case DW_OP_or:
- 	case DW_OP_plus:
-+	case DW_OP_shl:
-+	case DW_OP_shr:
-+	case DW_OP_shra:
-+	case DW_OP_xor:
- 	case DW_OP_le:
- 	case DW_OP_ge:
- 	case DW_OP_eq:
-Index: gcc/config/freebsd-spec.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/freebsd-spec.h,v
-retrieving revision 1.2.4.1
-retrieving revision 1.2.4.2
-diff -u -r1.2.4.1 -r1.2.4.2
---- gcc/gcc/config/freebsd-spec.h	12 Mar 2003 02:38:01 -0000	1.2.4.1
-+++ gcc/gcc/config/freebsd-spec.h	14 Jan 2005 02:06:26 -0000	1.2.4.2
-@@ -130,13 +130,7 @@
-     %{pg:  -lc_p}							\
-   }"
- #else
--#if FBSD_MAJOR >= 5
--#define FBSD_LIB_SPEC "							\
--  %{!shared:								\
--    %{!pg: %{pthread:-lc_r} -lc}					\
--    %{pg:  %{pthread:-lc_r_p} -lc_p}					\
--  }"
--#else
-+#if FBSD_MAJOR < 5
- #define FBSD_LIB_SPEC "							\
-   %{!shared:								\
-     %{!pg:								\
-@@ -146,5 +140,11 @@
-       %{!pthread:-lc_p}							\
-       %{pthread:-lc_r_p}}						\
-   }"
-+#else
-+#define FBSD_LIB_SPEC "							\
-+  %{!shared:								\
-+    %{!pg: %{pthread:-lpthread} -lc}					\
-+    %{pg:  %{pthread:-lpthread_p} -lc_p}				\
-+  }"
- #endif
- #endif
-Index: gcc/config/alpha/alpha.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha.c,v
-retrieving revision 1.282.4.11
-retrieving revision 1.282.4.12
-diff -u -r1.282.4.11 -r1.282.4.12
---- gcc/gcc/config/alpha/alpha.c	8 Mar 2004 03:21:46 -0000	1.282.4.11
-+++ gcc/gcc/config/alpha/alpha.c	30 Sep 2004 19:36:26 -0000	1.282.4.12
-@@ -6766,11 +6766,6 @@
- 	    break;
- 	  imask |= 1L << regno;
- 	}
--
--      /* Glibc likes to use $31 as an unwind stopper for crt0.  To
--	 avoid hackery in unwind-dw2.c, we need to actively store a
--	 zero in the prologue of _Unwind_RaiseException et al.  */
--      imask |= 1UL << 31;
-     }
- 
-   /* If any register spilled, then spill the return address also.  */
-@@ -7236,24 +7231,6 @@
- 	    reg_offset += 8;
- 	  }
- 
--      /* Store a zero if requested for unwinding.  */
--      if (imask & (1UL << 31))
-- 	{
-- 	  rtx insn, t;
-- 
-- 	  mem = gen_rtx_MEM (DImode, plus_constant (sa_reg, reg_offset));
-- 	  set_mem_alias_set (mem, alpha_sr_alias_set);
-- 	  insn = emit_move_insn (mem, const0_rtx);
-- 
-- 	  RTX_FRAME_RELATED_P (insn) = 1;
-- 	  t = gen_rtx_REG (Pmode, 31);
-- 	  t = gen_rtx_SET (VOIDmode, mem, t);
-- 	  t = gen_rtx_EXPR_LIST (REG_FRAME_RELATED_EXPR, t, REG_NOTES (insn));
-- 	  REG_NOTES (insn) = t;
-- 
-- 	  reg_offset += 8;
-- 	}
-- 
-       for (i = 0; i < 31; i++)
- 	if (fmask & (1L << i))
- 	  {
-@@ -7674,9 +7651,6 @@
- 	    reg_offset += 8;
- 	  }
- 
--      if (imask & (1UL << 31))
--	reg_offset += 8;
--
-       for (i = 0; i < 31; ++i)
- 	if (fmask & (1L << i))
- 	  {
-Index: gcc/config/alpha/alpha.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha.h,v
-retrieving revision 1.185.4.6
-retrieving revision 1.185.4.7
-diff -u -r1.185.4.6 -r1.185.4.7
---- gcc/gcc/config/alpha/alpha.h	27 Aug 2004 00:01:15 -0000	1.185.4.6
-+++ gcc/gcc/config/alpha/alpha.h	30 Sep 2004 19:36:28 -0000	1.185.4.7
-@@ -1299,6 +1299,7 @@
- #define INCOMING_RETURN_ADDR_RTX  gen_rtx_REG (Pmode, 26)
- #define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (26)
- #define DWARF_ALT_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (64)
-+#define DWARF_ZERO_REG 31
- 
- /* Describe how we implement __builtin_eh_return.  */
- #define EH_RETURN_DATA_REGNO(N)	((N) < 4 ? (N) + 16 : INVALID_REGNUM)
-Index: gcc/config/alpha/alpha.md
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/alpha/alpha.md,v
-retrieving revision 1.199.4.6
-retrieving revision 1.199.4.7
-diff -u -r1.199.4.6 -r1.199.4.7
---- gcc/gcc/config/alpha/alpha.md	28 May 2004 00:02:03 -0000	1.199.4.6
-+++ gcc/gcc/config/alpha/alpha.md	5 Dec 2004 19:58:42 -0000	1.199.4.7
-@@ -80,6 +80,7 @@
-    (UNSPECV_PLDGP2	11)	; prologue ldgp
-    (UNSPECV_SET_TP	12)
-    (UNSPECV_RPCC	13)
-+   (UNSPECV_SETJMPR_ER	14)	; builtin_setjmp_receiver fragment
-   ])
- 
- ;; Where necessary, the suffixes _le and _be are used to distinguish between
-@@ -6764,70 +6765,44 @@
-   "jmp $31,(%0),0"
-   [(set_attr "type" "ibr")])
- 
--(define_insn "*builtin_setjmp_receiver_er_sl_1"
--  [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]
--  "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF && TARGET_AS_CAN_SUBTRACT_LABELS"
--  "lda $27,$LSJ%=-%l0($27)\n$LSJ%=:")
--  
--(define_insn "*builtin_setjmp_receiver_er_1"
--  [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]
--  "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
--  "br $27,$LSJ%=\n$LSJ%=:"
--  [(set_attr "type" "ibr")])
--
--(define_split
--  [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]
--  "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF
--   && prev_nonnote_insn (insn) == operands[0]"
--  [(const_int 0)]
--  "
--{
--  emit_note (NULL, NOTE_INSN_DELETED);
--  DONE;
--}")
--
--(define_insn "*builtin_setjmp_receiver_1"
-+(define_expand "builtin_setjmp_receiver"
-   [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]
-   "TARGET_ABI_OSF"
--  "br $27,$LSJ%=\n$LSJ%=:\;ldgp $29,0($27)"
--  [(set_attr "length" "12")
--   (set_attr "type" "multi")])
-+  "")
- 
--(define_expand "builtin_setjmp_receiver_er"
--  [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)
-+(define_insn_and_split "*builtin_setjmp_receiver_1"
-+  [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_SETJMPR)]
-+  "TARGET_ABI_OSF"
-+{
-+  if (TARGET_EXPLICIT_RELOCS)
-+    return "#";
-+  else
-+    return "br $27,$LSJ%=\n$LSJ%=:\;ldgp $29,0($27)";
-+}
-+  "&& TARGET_EXPLICIT_RELOCS && reload_completed"
-+  [(unspec_volatile [(match_dup 0)] UNSPECV_SETJMPR_ER)
-    (set (match_dup 1)
- 	(unspec_volatile:DI [(match_dup 2) (match_dup 3)] UNSPECV_LDGP1))
-    (set (match_dup 1)
- 	(unspec:DI [(match_dup 1) (match_dup 3)] UNSPEC_LDGP2))]
--  ""
- {
-   operands[1] = pic_offset_table_rtx;
-   operands[2] = gen_rtx_REG (Pmode, 27);
-   operands[3] = GEN_INT (alpha_next_sequence_number++);
--})
-+}
-+  [(set_attr "length" "12")
-+   (set_attr "type" "multi")])
- 
--(define_expand "builtin_setjmp_receiver"
--  [(unspec_volatile [(label_ref (match_operand 0 "" ""))] UNSPECV_SETJMPR)]
--  "TARGET_ABI_OSF"
--{
--  if (TARGET_EXPLICIT_RELOCS)
--    {
--      emit_insn (gen_builtin_setjmp_receiver_er (operands[0]));
--      DONE;
--    }
--})
-+(define_insn "*builtin_setjmp_receiver_er_sl_1"
-+  [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_SETJMPR_ER)]
-+  "TARGET_ABI_OSF && TARGET_EXPLICIT_RELOCS && TARGET_AS_CAN_SUBTRACT_LABELS"
-+  "lda $27,$LSJ%=-%l0($27)\n$LSJ%=:")
- 
--(define_expand "exception_receiver_er"
--  [(set (match_dup 0)
--	(unspec_volatile:DI [(match_dup 1) (match_dup 2)] UNSPECV_LDGP1))
--   (set (match_dup 0)
--	(unspec:DI [(match_dup 0) (match_dup 2)] UNSPEC_LDGP2))]
--  ""
--{
--  operands[0] = pic_offset_table_rtx;
--  operands[1] = gen_rtx_REG (Pmode, 26);
--  operands[2] = GEN_INT (alpha_next_sequence_number++);
--})
-+(define_insn "*builtin_setjmp_receiver_er_1"
-+  [(unspec_volatile [(match_operand 0 "" "")] UNSPECV_SETJMPR_ER)]
-+  "TARGET_ABI_OSF && TARGET_EXPLICIT_RELOCS"
-+  "br $27,$LSJ%=\n$LSJ%=:"
-+  [(set_attr "type" "ibr")])
- 
- (define_expand "exception_receiver"
-   [(unspec_volatile [(match_dup 0)] UNSPECV_EHR)]
-@@ -6835,28 +6810,38 @@
- {
-   if (TARGET_LD_BUGGY_LDGP)
-     operands[0] = alpha_gp_save_rtx ();
--  else if (TARGET_EXPLICIT_RELOCS)
--    {
--      emit_insn (gen_exception_receiver_er ());
--      DONE;
--    }
-   else
-     operands[0] = const0_rtx;
- })
- 
--(define_insn "*exception_receiver_1"
--  [(unspec_volatile [(const_int 0)] UNSPECV_EHR)]
--  "! TARGET_LD_BUGGY_LDGP"
--  "ldgp $29,0($26)"
--  [(set_attr "length" "8")
--   (set_attr "type" "multi")])
--
- (define_insn "*exception_receiver_2"
-   [(unspec_volatile [(match_operand:DI 0 "memory_operand" "m")] UNSPECV_EHR)]
--  "TARGET_LD_BUGGY_LDGP"
-+  "TARGET_ABI_OSF && TARGET_LD_BUGGY_LDGP"
-   "ldq $29,%0"
-   [(set_attr "type" "ild")])
- 
-+(define_insn_and_split "*exception_receiver_1"
-+  [(unspec_volatile [(const_int 0)] UNSPECV_EHR)]
-+  "TARGET_ABI_OSF"
-+{
-+  if (TARGET_EXPLICIT_RELOCS)
-+    return "ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*";
-+  else
-+    return "ldgp $29,0($26)";
-+}
-+  "&& TARGET_EXPLICIT_RELOCS && reload_completed"
-+  [(set (match_dup 0)
-+	(unspec_volatile:DI [(match_dup 1) (match_dup 2)] UNSPECV_LDGP1))
-+   (set (match_dup 0)
-+	(unspec:DI [(match_dup 0) (match_dup 2)] UNSPEC_LDGP2))]
-+{
-+  operands[0] = pic_offset_table_rtx;
-+  operands[1] = gen_rtx_REG (Pmode, 26);
-+  operands[2] = GEN_INT (alpha_next_sequence_number++);
-+}
-+  [(set_attr "length" "8")
-+   (set_attr "type" "multi")])
-+
- (define_expand "nonlocal_goto_receiver"
-   [(unspec_volatile [(const_int 0)] UNSPECV_BLOCKAGE)
-    (set (reg:DI 27) (mem:DI (reg:DI 29)))
-Index: gcc/config/alpha/qrnnd.asm
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/alpha/qrnnd.asm,v
-retrieving revision 1.1
-retrieving revision 1.1.60.1
-diff -u -r1.1 -r1.1.60.1
---- gcc/gcc/config/alpha/qrnnd.asm	15 Apr 2000 16:34:38 -0000	1.1
-+++ gcc/gcc/config/alpha/qrnnd.asm	30 Sep 2004 19:36:28 -0000	1.1.60.1
-@@ -26,6 +26,10 @@
-  # Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-  # MA 02111-1307, USA.
- 
-+#ifdef __ELF__
-+.section .note.GNU-stack,""
-+#endif
-+
-         .set noreorder
-         .set noat
- 
-Index: gcc/config/i386/i386-protos.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/i386/i386-protos.h,v
-retrieving revision 1.86.2.2
-retrieving revision 1.86.2.3
-diff -u -r1.86.2.2 -r1.86.2.3
---- gcc/gcc/config/i386/i386-protos.h	8 Jul 2003 19:16:44 -0000	1.86.2.2
-+++ gcc/gcc/config/i386/i386-protos.h	12 Dec 2004 21:00:44 -0000	1.86.2.3
-@@ -88,6 +88,8 @@
- extern int cmpsi_operand PARAMS ((rtx, enum machine_mode));
- extern int long_memory_operand PARAMS ((rtx, enum machine_mode));
- extern int aligned_operand PARAMS ((rtx, enum machine_mode));
-+extern int compare_operator PARAMS ((rtx, enum machine_mode));
-+extern int flags_reg_operand PARAMS ((rtx, enum machine_mode));
- extern enum machine_mode ix86_cc_mode PARAMS ((enum rtx_code, rtx, rtx));
- 
- extern int ix86_expand_movstr PARAMS ((rtx, rtx, rtx, rtx));
-Index: gcc/config/i386/i386.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.c,v
-retrieving revision 1.495.2.36
-retrieving revision 1.495.2.37
-diff -u -r1.495.2.36 -r1.495.2.37
---- gcc/gcc/config/i386/i386.c	18 May 2004 05:07:52 -0000	1.495.2.36
-+++ gcc/gcc/config/i386/i386.c	12 Dec 2004 21:00:44 -0000	1.495.2.37
-@@ -3609,6 +3609,20 @@
-   return ANY_QI_REG_P (op);
- }
- 
-+/* Return true if op is an flags register.  */
-+
-+int
-+flags_reg_operand (op, mode)
-+     register rtx op;
-+     enum machine_mode mode;
-+{
-+  if (mode != VOIDmode && GET_MODE (op) != mode)
-+    return 0;
-+  return (GET_CODE (op) == REG
-+	  && REGNO (op) == FLAGS_REG
-+	  && GET_MODE (op) != VOIDmode);
-+}
-+
- /* Return true if op is a NON_Q_REGS class register.  */
- 
- int
-@@ -3969,6 +3983,14 @@
-   /* Didn't find one -- this must be an aligned address.  */
-   return 1;
- }
-+
-+int
-+compare_operator (op, mode)
-+     rtx op;
-+     enum machine_mode mode ATTRIBUTE_UNUSED;
-+{
-+  return GET_CODE (op) == COMPARE;
-+}
- 
- /* Return true if the constant is something that can be loaded with
-    a special instruction.  Only handle 0.0 and 1.0; others are less
-Index: gcc/config/i386/i386.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.h,v
-retrieving revision 1.309.2.11
-retrieving revision 1.309.2.12
-diff -u -r1.309.2.11 -r1.309.2.12
---- gcc/gcc/config/i386/i386.h	6 Feb 2004 19:43:31 -0000	1.309.2.11
-+++ gcc/gcc/config/i386/i386.h	12 Dec 2004 21:00:47 -0000	1.309.2.12
-@@ -3319,6 +3319,7 @@
- 			SYMBOL_REF, LABEL_REF, SUBREG, REG, MEM}},	\
-   {"nonmemory_no_elim_operand", {CONST_INT, REG, SUBREG}},		\
-   {"index_register_operand", {SUBREG, REG}},				\
-+  {"flags_reg_operand", {REG}},						\
-   {"q_regs_operand", {SUBREG, REG}},					\
-   {"non_q_regs_operand", {SUBREG, REG}},				\
-   {"fcmov_comparison_operator", {EQ, NE, LTU, GTU, LEU, GEU, UNORDERED, \
-@@ -3354,6 +3355,7 @@
-   {"fp_register_operand", {REG}},					\
-   {"register_and_not_fp_reg_operand", {REG}},				\
-   {"vector_move_operand", {CONST_VECTOR, SUBREG, REG, MEM}},		\
-+  {"compare_operator", {COMPARE}},
- 
- /* A list of predicates that do special things with modes, and so
-    should not elicit warnings for VOIDmode match_operand.  */
-Index: gcc/config/i386/i386.md
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
-retrieving revision 1.404.2.24
-retrieving revision 1.404.2.29
-diff -u -r1.404.2.24 -r1.404.2.29
---- gcc/gcc/config/i386/i386.md	28 Apr 2004 17:00:03 -0000	1.404.2.24
-+++ gcc/gcc/config/i386/i386.md	23 Jan 2005 05:15:59 -0000	1.404.2.29
-@@ -1188,10 +1188,9 @@
-   ""
-   "xchg{l}\t%1, %0"
-   [(set_attr "type" "imov")
-+   (set_attr "mode" "SI")
-    (set_attr "pent_pair" "np")
-    (set_attr "athlon_decode" "vector")
--   (set_attr "mode" "SI")
--   (set_attr "modrm" "0")
-    (set_attr "ppro_uops" "few")])
- 
- (define_expand "movhi"
-@@ -1304,12 +1303,12 @@
- 	(match_operand:HI 1 "register_operand" "+r"))
-    (set (match_dup 1)
- 	(match_dup 0))]
--  "TARGET_PARTIAL_REG_STALL"
--  "xchg{w}\t%1, %0"
-+  "!TARGET_PARTIAL_REG_STALL || optimize_size"
-+  "xchg{l}\t%k1, %k0"
-   [(set_attr "type" "imov")
-+   (set_attr "mode" "SI")
-    (set_attr "pent_pair" "np")
--   (set_attr "mode" "HI")
--   (set_attr "modrm" "0")
-+   (set_attr "athlon_decode" "vector")
-    (set_attr "ppro_uops" "few")])
- 
- (define_insn "*swaphi_2"
-@@ -1317,12 +1316,12 @@
- 	(match_operand:HI 1 "register_operand" "+r"))
-    (set (match_dup 1)
- 	(match_dup 0))]
--  "! TARGET_PARTIAL_REG_STALL"
--  "xchg{l}\t%k1, %k0"
-+  "TARGET_PARTIAL_REG_STALL"
-+  "xchg{w}\t%1, %0"
-   [(set_attr "type" "imov")
-+   (set_attr "mode" "HI")
-    (set_attr "pent_pair" "np")
--   (set_attr "mode" "SI")
--   (set_attr "modrm" "0")
-+   (set_attr "athlon_decode" "vector")
-    (set_attr "ppro_uops" "few")])
- 
- (define_expand "movstricthi"
-@@ -1470,17 +1469,30 @@
-   DONE;
- })
- 
--(define_insn "*swapqi"
-+(define_insn "*swapqi_1"
-   [(set (match_operand:QI 0 "register_operand" "+r")
- 	(match_operand:QI 1 "register_operand" "+r"))
-    (set (match_dup 1)
- 	(match_dup 0))]
--  ""
--  "xchg{b}\t%1, %0"
-+  "!TARGET_PARTIAL_REG_STALL || optimize_size"
-+  "xchg{l}\t%k1, %k0"
-   [(set_attr "type" "imov")
-+   (set_attr "mode" "SI")
-    (set_attr "pent_pair" "np")
-+   (set_attr "athlon_decode" "vector")
-+   (set_attr "ppro_uops" "few")])
-+
-+(define_insn "*swapqi_2"
-+  [(set (match_operand:QI 0 "register_operand" "+q")
-+	(match_operand:QI 1 "register_operand" "+q"))
-+   (set (match_dup 1)
-+	(match_dup 0))]
-+  "TARGET_PARTIAL_REG_STALL"
-+  "xchg{b}\t%1, %0"
-+  [(set_attr "type" "imov")
-    (set_attr "mode" "QI")
--   (set_attr "modrm" "0")
-+   (set_attr "pent_pair" "np")
-+   (set_attr "athlon_decode" "vector")
-    (set_attr "ppro_uops" "few")])
- 
- (define_expand "movstrictqi"
-@@ -1987,13 +1999,11 @@
-   "TARGET_64BIT"
-   "xchg{q}\t%1, %0"
-   [(set_attr "type" "imov")
-+   (set_attr "mode" "DI")
-    (set_attr "pent_pair" "np")
-    (set_attr "athlon_decode" "vector")
--   (set_attr "mode" "DI")
--   (set_attr "modrm" "0")
-    (set_attr "ppro_uops" "few")])
- 
--  
- (define_expand "movsf"
-   [(set (match_operand:SF 0 "nonimmediate_operand" "")
- 	(match_operand:SF 1 "general_operand" ""))]
-@@ -7559,17 +7569,21 @@
-   ""
-   "")
- 
--(define_insn "*testqi_1"
-+(define_insn "*testqi_1_maybe_si"
-   [(set (reg 17)
--        (compare (and:QI (match_operand:QI 0 "nonimmediate_operand" "%*a,q,qm,r")
--			 (match_operand:QI 1 "nonmemory_operand" "n,n,qn,n"))
--		 (const_int 0)))]
--  "ix86_match_ccmode (insn, CCNOmode)"
-+        (compare
-+	  (and:QI
-+	    (match_operand:QI 0 "nonimmediate_operand" "%*a,q,qm,r")
-+	    (match_operand:QI 1 "nonmemory_operand" "n,n,qn,n"))
-+	  (const_int 0)))]
-+   "(GET_CODE (operands[0]) != MEM || GET_CODE (operands[1]) != MEM)
-+    && ix86_match_ccmode (insn,
-+ 			  GET_CODE (operands[1]) == CONST_INT
-+ 			  && INTVAL (operands[1]) >= 0 ? CCNOmode : CCZmode)"
- {
-   if (which_alternative == 3)
-     {
--      if (GET_CODE (operands[1]) == CONST_INT
--	  && (INTVAL (operands[1]) & 0xffffff00))
-+      if (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) < 0)
- 	operands[1] = GEN_INT (INTVAL (operands[1]) & 0xff);
-       return "test{l}\t{%1, %k0|%k0, %1}";
-     }
-@@ -7580,6 +7594,18 @@
-    (set_attr "mode" "QI,QI,QI,SI")
-    (set_attr "pent_pair" "uv,np,uv,np")])
- 
-+(define_insn "*testqi_1"
-+  [(set (reg 17)
-+        (compare (and:QI (match_operand:QI 0 "nonimmediate_operand" "%*a,q,qm")
-+			 (match_operand:QI 1 "nonmemory_operand" "n,n,qn"))
-+		 (const_int 0)))]
-+  "ix86_match_ccmode (insn, CCNOmode)"
-+  "test{b}\t{%1, %0|%0, %1}"
-+  [(set_attr "type" "test")
-+   (set_attr "modrm" "0,1,1")
-+   (set_attr "mode" "QI")
-+   (set_attr "pent_pair" "uv,np,uv")])
-+
- (define_expand "testqi_ext_ccno_0"
-   [(set (reg:CCNO 17)
- 	(compare:CCNO
-@@ -7697,51 +7723,53 @@
-   "#")
- 
- (define_split
--  [(set (reg 17)
--        (compare (zero_extract
--		   (match_operand 0 "nonimmediate_operand" "")
--		   (match_operand 1 "const_int_operand" "")
--		   (match_operand 2 "const_int_operand" ""))
--		 (const_int 0)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+        (match_operator 1 "compare_operator"
-+	  [(zero_extract
-+	     (match_operand 2 "nonimmediate_operand" "")
-+	     (match_operand 3 "const_int_operand" "")
-+	     (match_operand 4 "const_int_operand" ""))
-+	   (const_int 0)]))]
-   "ix86_match_ccmode (insn, CCNOmode)"
--  [(set (reg:CCNO 17) (compare:CCNO (match_dup 3) (const_int 0)))]
-+  [(set (match_dup 0) (match_op_dup 1 [(match_dup 2) (const_int 0)]))]
- {
--  HOST_WIDE_INT len = INTVAL (operands[1]);
--  HOST_WIDE_INT pos = INTVAL (operands[2]);
-+  rtx val = operands[2];
-+  HOST_WIDE_INT len = INTVAL (operands[3]);
-+  HOST_WIDE_INT pos = INTVAL (operands[4]);
-   HOST_WIDE_INT mask;
-   enum machine_mode mode, submode;
- 
--  mode = GET_MODE (operands[0]);
--  if (GET_CODE (operands[0]) == MEM)
-+  mode = GET_MODE (val);
-+  if (GET_CODE (val) == MEM)
-     {
-       /* ??? Combine likes to put non-volatile mem extractions in QImode
- 	 no matter the size of the test.  So find a mode that works.  */
--      if (! MEM_VOLATILE_P (operands[0]))
-+      if (! MEM_VOLATILE_P (val))
- 	{
- 	  mode = smallest_mode_for_size (pos + len, MODE_INT);
--	  operands[0] = adjust_address (operands[0], mode, 0);
-+	  val = adjust_address (val, mode, 0);
- 	}
-     }
--  else if (GET_CODE (operands[0]) == SUBREG
--	   && (submode = GET_MODE (SUBREG_REG (operands[0])),
-+  else if (GET_CODE (val) == SUBREG
-+	   && (submode = GET_MODE (SUBREG_REG (val)),
- 	       GET_MODE_BITSIZE (mode) > GET_MODE_BITSIZE (submode))
- 	   && pos + len <= GET_MODE_BITSIZE (submode))
-     {
-       /* Narrow a paradoxical subreg to prevent partial register stalls.  */
-       mode = submode;
--      operands[0] = SUBREG_REG (operands[0]);
-+      val = SUBREG_REG (val);
-     }
-   else if (mode == HImode && pos + len <= 8)
-     {
-       /* Small HImode tests can be converted to QImode.  */
-       mode = QImode;
--      operands[0] = gen_lowpart (QImode, operands[0]);
-+      val = gen_lowpart (QImode, val);
-     }
- 
-   mask  = ((HOST_WIDE_INT)1 << (pos + len)) - 1;
-   mask &= ~(((HOST_WIDE_INT)1 << pos) - 1);
- 
--  operands[3] = gen_rtx_AND (mode, operands[0], gen_int_mode (mask, mode));
-+  operands[2] = gen_rtx_AND (mode, val, gen_int_mode (mask, mode));
- })
- 
- ;; Convert HImode/SImode test instructions with immediate to QImode ones.
-@@ -7750,46 +7778,44 @@
- ;; Do the converison only post-reload to avoid limiting of the register class
- ;; to QI regs.
- (define_split
--  [(set (reg 17)
--	(compare
--	  (and (match_operand 0 "register_operand" "")
--	       (match_operand 1 "const_int_operand" ""))
--	  (const_int 0)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 1 "compare_operator"
-+	  [(and (match_operand 2 "register_operand" "")
-+	        (match_operand 3 "const_int_operand" ""))
-+	   (const_int 0)]))]
-    "reload_completed
--    && QI_REG_P (operands[0])
-+    && QI_REG_P (operands[2])
-+    && GET_MODE (operands[2]) != QImode
-     && ((ix86_match_ccmode (insn, CCZmode)
--    	 && !(INTVAL (operands[1]) & ~(255 << 8)))
-+    	 && !(INTVAL (operands[3]) & ~(255 << 8)))
- 	|| (ix86_match_ccmode (insn, CCNOmode)
--	    && !(INTVAL (operands[1]) & ~(127 << 8))))
--    && GET_MODE (operands[0]) != QImode"
--  [(set (reg:CCNO 17)
--	(compare:CCNO
--	  (and:SI (zero_extract:SI (match_dup 0) (const_int 8) (const_int 8))
--		  (match_dup 1))
--	  (const_int 0)))]
--  "operands[0] = gen_lowpart (SImode, operands[0]);
--   operands[1] = gen_int_mode (INTVAL (operands[1]) >> 8, SImode);")
-+	    && !(INTVAL (operands[3]) & ~(127 << 8))))"
-+  [(set (match_dup 0)
-+	(match_op_dup 1
-+	  [(and:SI (zero_extract:SI (match_dup 2) (const_int 8) (const_int 8))
-+		   (match_dup 3))
-+	   (const_int 0)]))]
-+  "operands[2] = gen_lowpart (SImode, operands[2]);
-+   operands[3] = gen_int_mode (INTVAL (operands[3]) >> 8, SImode);")
- 
- (define_split
--  [(set (reg 17)
--	(compare
--	  (and (match_operand 0 "nonimmediate_operand" "")
--	       (match_operand 1 "const_int_operand" ""))
--	  (const_int 0)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 1 "compare_operator"
-+	  [(and (match_operand 2 "nonimmediate_operand" "")
-+	        (match_operand 3 "const_int_operand" ""))
-+	   (const_int 0)]))]
-    "reload_completed
--    && (!REG_P (operands[0]) || ANY_QI_REG_P (operands[0]))
-+    && GET_MODE (operands[2]) != QImode
-+    && (!REG_P (operands[2]) || ANY_QI_REG_P (operands[2]))
-     && ((ix86_match_ccmode (insn, CCZmode)
--	 && !(INTVAL (operands[1]) & ~255))
-+	 && !(INTVAL (operands[3]) & ~255))
- 	|| (ix86_match_ccmode (insn, CCNOmode)
--	    && !(INTVAL (operands[1]) & ~127)))
--    && GET_MODE (operands[0]) != QImode"
--  [(set (reg:CCNO 17)
--	(compare:CCNO
--	  (and:QI (match_dup 0)
--		  (match_dup 1))
--	  (const_int 0)))]
--  "operands[0] = gen_lowpart (QImode, operands[0]);
--   operands[1] = gen_lowpart (QImode, operands[1]);")
-+	    && !(INTVAL (operands[3]) & ~127)))"
-+  [(set (match_dup 0)
-+	(match_op_dup 1 [(and:QI (match_dup 2) (match_dup 3))
-+			 (const_int 0)]))]
-+  "operands[2] = gen_lowpart (QImode, operands[2]);
-+   operands[3] = gen_lowpart (QImode, operands[3]);")
- 
- 
- ;; %%% This used to optimize known byte-wide and operations to memory,
-@@ -8066,7 +8092,7 @@
-   [(set_attr "type" "alu1")
-    (set_attr "mode" "QI")])
- 
--(define_insn "*andqi_2"
-+(define_insn "*andqi_2_maybe_si"
-   [(set (reg 17)
- 	(compare (and:QI
- 		   (match_operand:QI 1 "nonimmediate_operand" "%0,0,0")
-@@ -8074,13 +8100,14 @@
- 		 (const_int 0)))
-    (set (match_operand:QI 0 "nonimmediate_operand" "=q,qm,*r")
- 	(and:QI (match_dup 1) (match_dup 2)))]
--  "ix86_match_ccmode (insn, CCNOmode)
--   && ix86_binary_operator_ok (AND, QImode, operands)"
-+   "ix86_binary_operator_ok (AND, QImode, operands)
-+    && ix86_match_ccmode (insn,
-+ 			  GET_CODE (operands[2]) == CONST_INT
-+ 			  && INTVAL (operands[2]) >= 0 ? CCNOmode : CCZmode)"
- {
-   if (which_alternative == 2)
-     {
--      if (GET_CODE (operands[2]) == CONST_INT
--          && (INTVAL (operands[2]) & 0xffffff00))
-+      if (GET_CODE (operands[2]) == CONST_INT && INTVAL (operands[2]) < 0)
-         operands[2] = GEN_INT (INTVAL (operands[2]) & 0xff);
-       return "and{l}\t{%2, %k0|%k0, %2}";
-     }
-@@ -8089,6 +8116,20 @@
-   [(set_attr "type" "alu")
-    (set_attr "mode" "QI,QI,SI")])
- 
-+(define_insn "*andqi_2"
-+  [(set (reg 17)
-+	(compare (and:QI
-+		   (match_operand:QI 1 "nonimmediate_operand" "%0,0")
-+		   (match_operand:QI 2 "general_operand" "qim,qi"))
-+		 (const_int 0)))
-+   (set (match_operand:QI 0 "nonimmediate_operand" "=q,qm")
-+	(and:QI (match_dup 1) (match_dup 2)))]
-+  "ix86_match_ccmode (insn, CCNOmode)
-+   && ix86_binary_operator_ok (AND, QImode, operands)"
-+  "and{b}\t{%2, %0|%0, %2}"
-+  [(set_attr "type" "alu")
-+   (set_attr "mode" "QI")])
-+
- (define_insn "*andqi_2_slp"
-   [(set (reg 17)
- 	(compare (and:QI
-@@ -10147,17 +10188,19 @@
-    (set_attr "mode" "DI")])
- 
- (define_split
--  [(set (reg 17)
--	(compare (not:DI (match_operand:DI 1 "nonimmediate_operand" ""))
--		 (const_int 0)))
--   (set (match_operand:DI 0 "nonimmediate_operand" "")
--	(not:DI (match_dup 1)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 2 "compare_operator"
-+	  [(not:DI (match_operand:DI 3 "nonimmediate_operand" ""))
-+	   (const_int 0)]))
-+   (set (match_operand:DI 1 "nonimmediate_operand" "")
-+	(not:DI (match_dup 3)))]
-   "TARGET_64BIT && ix86_match_ccmode (insn, CCNOmode)"
--  [(parallel [(set (reg:CCNO 17)
--		   (compare:CCNO (xor:DI (match_dup 1) (const_int -1))
--				 (const_int 0)))
--	      (set (match_dup 0)
--		   (xor:DI (match_dup 1) (const_int -1)))])]
-+  [(parallel [(set (match_dup 0)
-+		   (match_op_dup 2
-+		     [(xor:DI (match_dup 3) (const_int -1))
-+		      (const_int 0)]))
-+	      (set (match_dup 1)
-+		   (xor:DI (match_dup 3) (const_int -1)))])]
-   "")
- 
- (define_expand "one_cmplsi2"
-@@ -10196,17 +10239,18 @@
-    (set_attr "mode" "SI")])
- 
- (define_split
--  [(set (reg 17)
--	(compare (not:SI (match_operand:SI 1 "nonimmediate_operand" ""))
--		 (const_int 0)))
--   (set (match_operand:SI 0 "nonimmediate_operand" "")
--	(not:SI (match_dup 1)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 2 "compare_operator"
-+	  [(not:SI (match_operand:SI 3 "nonimmediate_operand" ""))
-+	   (const_int 0)]))
-+   (set (match_operand:SI 1 "nonimmediate_operand" "")
-+	(not:SI (match_dup 3)))]
-   "ix86_match_ccmode (insn, CCNOmode)"
--  [(parallel [(set (reg:CCNO 17)
--		   (compare:CCNO (xor:SI (match_dup 1) (const_int -1))
--				 (const_int 0)))
--	      (set (match_dup 0)
--		   (xor:SI (match_dup 1) (const_int -1)))])]
-+  [(parallel [(set (match_dup 0)
-+		   (match_op_dup 2 [(xor:SI (match_dup 3) (const_int -1))
-+				    (const_int 0)]))
-+	      (set (match_dup 1)
-+		   (xor:SI (match_dup 3) (const_int -1)))])]
-   "")
- 
- ;; ??? Currently never generated - xor is used instead.
-@@ -10223,17 +10267,18 @@
-    (set_attr "mode" "SI")])
- 
- (define_split
--  [(set (reg 17)
--	(compare (not:SI (match_operand:SI 1 "register_operand" ""))
--		 (const_int 0)))
--   (set (match_operand:DI 0 "register_operand" "")
--	(zero_extend:DI (not:SI (match_dup 1))))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 2 "compare_operator"
-+	  [(not:SI (match_operand:SI 3 "register_operand" ""))
-+	   (const_int 0)]))
-+   (set (match_operand:DI 1 "register_operand" "")
-+	(zero_extend:DI (not:SI (match_dup 3))))]
-   "ix86_match_ccmode (insn, CCNOmode)"
--  [(parallel [(set (reg:CCNO 17)
--		   (compare:CCNO (xor:SI (match_dup 1) (const_int -1))
--				 (const_int 0)))
--	      (set (match_dup 0)
--		   (zero_extend:DI (xor:SI (match_dup 1) (const_int -1))))])]
-+  [(parallel [(set (match_dup 0)
-+		   (match_op_dup 2 [(xor:SI (match_dup 3) (const_int -1))
-+				    (const_int 0)]))
-+	      (set (match_dup 1)
-+		   (zero_extend:DI (xor:SI (match_dup 3) (const_int -1))))])]
-   "")
- 
- (define_expand "one_cmplhi2"
-@@ -10263,17 +10308,18 @@
-    (set_attr "mode" "HI")])
- 
- (define_split
--  [(set (reg 17)
--	(compare (not:HI (match_operand:HI 1 "nonimmediate_operand" ""))
--		 (const_int 0)))
--   (set (match_operand:HI 0 "nonimmediate_operand" "")
--	(not:HI (match_dup 1)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 2 "compare_operator"
-+	  [(not:HI (match_operand:HI 3 "nonimmediate_operand" ""))
-+	   (const_int 0)]))
-+   (set (match_operand:HI 1 "nonimmediate_operand" "")
-+	(not:HI (match_dup 3)))]
-   "ix86_match_ccmode (insn, CCNOmode)"
--  [(parallel [(set (reg:CCNO 17)
--		   (compare:CCNO (xor:HI (match_dup 1) (const_int -1))
--		      		 (const_int 0)))
--	      (set (match_dup 0)
--		   (xor:HI (match_dup 1) (const_int -1)))])]
-+  [(parallel [(set (match_dup 0)
-+		   (match_op_dup 2 [(xor:HI (match_dup 3) (const_int -1))
-+		      		    (const_int 0)]))
-+	      (set (match_dup 1)
-+		   (xor:HI (match_dup 3) (const_int -1)))])]
-   "")
- 
- ;; %%% Potential partial reg stall on alternative 1.  What to do?
-@@ -10306,17 +10352,18 @@
-    (set_attr "mode" "QI")])
- 
- (define_split
--  [(set (reg 17)
--	(compare (not:QI (match_operand:QI 1 "nonimmediate_operand" ""))
--		 (const_int 0)))
--   (set (match_operand:QI 0 "nonimmediate_operand" "")
--	(not:QI (match_dup 1)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 2 "compare_operator"
-+	  [(not:QI (match_operand:QI 3 "nonimmediate_operand" ""))
-+	   (const_int 0)]))
-+   (set (match_operand:QI 1 "nonimmediate_operand" "")
-+	(not:QI (match_dup 3)))]
-   "ix86_match_ccmode (insn, CCNOmode)"
--  [(parallel [(set (reg:CCNO 17)
--		   (compare:CCNO (xor:QI (match_dup 1) (const_int -1))
--		      		 (const_int 0)))
--	      (set (match_dup 0)
--		   (xor:QI (match_dup 1) (const_int -1)))])]
-+  [(parallel [(set (match_dup 0)
-+		   (match_op_dup 2 [(xor:QI (match_dup 3) (const_int -1))
-+		      		    (const_int 0)]))
-+	      (set (match_dup 1)
-+		   (xor:QI (match_dup 3) (const_int -1)))])]
-   "")
- 
- ;; Arithmetic shift instructions
-@@ -16639,10 +16686,12 @@
-    (set (subreg:TI (match_dup 0) 0) (ior:TI (subreg:TI (match_dup 6) 0)
- 					    (subreg:TI (match_dup 7) 0)))]
- {
--  /* If op2 == op3, op3 will be clobbered before it is used.
--     This should be optimized out though.  */
-+  /* If op2 == op3, op3 would be clobbered before it is used.  */
-   if (operands_match_p (operands[2], operands[3]))
--    abort ();
-+    {
-+      emit_move_insn (operands[0], operands[2]);
-+      DONE;
-+    }
-   PUT_MODE (operands[1], GET_MODE (operands[0]));
-   if (operands_match_p (operands[0], operands[4]))
-     operands[6] = operands[4], operands[7] = operands[2];
-@@ -16863,52 +16912,56 @@
- ; instruction size is unchanged, except in the %eax case for
- ; which it is increased by one byte, hence the ! optimize_size.
- (define_split
--  [(set (reg 17)
--	(compare (and (match_operand 1 "aligned_operand" "")
--		      (match_operand 2 "const_int_operand" ""))
--		 (const_int 0)))
--   (set (match_operand 0 "register_operand" "")
--	(and (match_dup 1) (match_dup 2)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 2 "compare_operator"
-+	  [(and (match_operand 3 "aligned_operand" "")
-+		(match_operand 4 "const_int_operand" ""))
-+	   (const_int 0)]))
-+   (set (match_operand 1 "register_operand" "")
-+	(and (match_dup 3) (match_dup 4)))]
-   "! TARGET_PARTIAL_REG_STALL && reload_completed
-    /* Ensure that the operand will remain sign-extended immediate.  */
--   && ix86_match_ccmode (insn, INTVAL (operands[2]) >= 0 ? CCNOmode : CCZmode)
-+   && ix86_match_ccmode (insn, INTVAL (operands[4]) >= 0 ? CCNOmode : CCZmode)
-    && ! optimize_size
--   && ((GET_MODE (operands[0]) == HImode && ! TARGET_FAST_PREFIX)
--       || (GET_MODE (operands[0]) == QImode && TARGET_PROMOTE_QImode))"
--  [(parallel [(set (reg:CCNO 17)
--		   (compare:CCNO (and:SI (match_dup 1) (match_dup 2))
--			         (const_int 0)))
--	      (set (match_dup 0)
--		   (and:SI (match_dup 1) (match_dup 2)))])]
--  "operands[2]
--     = gen_int_mode (INTVAL (operands[2])
--		     & GET_MODE_MASK (GET_MODE (operands[0])),
--		     SImode);
--   operands[0] = gen_lowpart (SImode, operands[0]);
--   operands[1] = gen_lowpart (SImode, operands[1]);")
-+   && ((GET_MODE (operands[1]) == HImode && ! TARGET_FAST_PREFIX)
-+       || (GET_MODE (operands[1]) == QImode && TARGET_PROMOTE_QImode))"
-+  [(parallel [(set (match_dup 0)
-+		   (match_op_dup 2 [(and:SI (match_dup 3) (match_dup 4))
-+			            (const_int 0)]))
-+	      (set (match_dup 1)
-+		   (and:SI (match_dup 3) (match_dup 4)))])]
-+{
-+  operands[4]
-+    = gen_int_mode (INTVAL (operands[4])
-+		    & GET_MODE_MASK (GET_MODE (operands[1])), SImode);
-+  operands[1] = gen_lowpart (SImode, operands[1]);
-+  operands[3] = gen_lowpart (SImode, operands[3]);
-+})
- 
- ; Don't promote the QImode tests, as i386 doesn't have encoding of
- ; the TEST instruction with 32-bit sign-extended immediate and thus
- ; the instruction size would at least double, which is not what we
- ; want even with ! optimize_size.
- (define_split
--  [(set (reg 17)
--	(compare (and (match_operand:HI 0 "aligned_operand" "")
--		      (match_operand:HI 1 "const_int_operand" ""))
--		 (const_int 0)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 1 "compare_operator"
-+	  [(and (match_operand:HI 2 "aligned_operand" "")
-+		(match_operand:HI 3 "const_int_operand" ""))
-+	   (const_int 0)]))]
-   "! TARGET_PARTIAL_REG_STALL && reload_completed
-    /* Ensure that the operand will remain sign-extended immediate.  */
--   && ix86_match_ccmode (insn, INTVAL (operands[1]) >= 0 ? CCNOmode : CCZmode)
-+   && ix86_match_ccmode (insn, INTVAL (operands[3]) >= 0 ? CCNOmode : CCZmode)
-    && ! TARGET_FAST_PREFIX
-    && ! optimize_size"
--  [(set (reg:CCNO 17)
--	(compare:CCNO (and:SI (match_dup 0) (match_dup 1))
--		      (const_int 0)))]
--  "operands[1]
--     = gen_int_mode (INTVAL (operands[1])
--		     & GET_MODE_MASK (GET_MODE (operands[0])),
--		     SImode);
--   operands[0] = gen_lowpart (SImode, operands[0]);")
-+  [(set (match_dup 0)
-+	(match_op_dup 1 [(and:SI (match_dup 2) (match_dup 3))
-+		         (const_int 0)]))]
-+{
-+  operands[3]
-+    = gen_int_mode (INTVAL (operands[3])
-+		    & GET_MODE_MASK (GET_MODE (operands[2])), SImode);
-+  operands[2] = gen_lowpart (SImode, operands[2]);
-+})
- 
- (define_split
-   [(set (match_operand 0 "register_operand" "")
-@@ -17081,13 +17134,14 @@
- 
- ;; Don't compare memory with zero, load and use a test instead.
- (define_peephole2
--  [(set (reg 17)
--	(compare (match_operand:SI 0 "memory_operand" "")
--	         (const_int 0)))
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+ 	(match_operator 1 "compare_operator"
-+	  [(match_operand:SI 2 "memory_operand" "")
-+	   (const_int 0)]))
-    (match_scratch:SI 3 "r")]
-   "ix86_match_ccmode (insn, CCNOmode) && ! optimize_size"
--  [(set (match_dup 3) (match_dup 0))
--   (set (reg:CCNO 17) (compare:CCNO (match_dup 3) (const_int 0)))]
-+  [(set (match_dup 3) (match_dup 2))
-+   (set (match_dup 0) (match_op_dup 1 [(match_dup 3) (const_int 0)]))]
-   "")
- 
- ;; NOT is not pairable on Pentium, while XOR is, but one byte longer. 
-@@ -17151,77 +17205,77 @@
- ;; versions if we're concerned about partial register stalls.
- 
- (define_peephole2
--  [(set (reg 17)
--	(compare (and:SI (match_operand:SI 0 "register_operand" "")
--			 (match_operand:SI 1 "immediate_operand" ""))
--		 (const_int 0)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 1 "compare_operator"
-+	  [(and:SI (match_operand:SI 2 "register_operand" "")
-+		   (match_operand:SI 3 "immediate_operand" ""))
-+	   (const_int 0)]))]
-   "ix86_match_ccmode (insn, CCNOmode)
--   && (true_regnum (operands[0]) != 0
--       || (GET_CODE (operands[1]) == CONST_INT
--	   && CONST_OK_FOR_LETTER_P (INTVAL (operands[1]), 'K')))
--   && find_regno_note (insn, REG_DEAD, true_regnum (operands[0]))"
-+   && (true_regnum (operands[2]) != 0
-+       || (GET_CODE (operands[3]) == CONST_INT
-+	   && CONST_OK_FOR_LETTER_P (INTVAL (operands[3]), 'K')))
-+   && peep2_reg_dead_p (1, operands[2])"
-   [(parallel
--     [(set (reg:CCNO 17)
--	   (compare:CCNO (and:SI (match_dup 0)
--			         (match_dup 1))
--		         (const_int 0)))
--      (set (match_dup 0)
--	   (and:SI (match_dup 0) (match_dup 1)))])]
-+     [(set (match_dup 0)
-+	   (match_op_dup 1 [(and:SI (match_dup 2) (match_dup 3))
-+		            (const_int 0)]))
-+      (set (match_dup 2)
-+	   (and:SI (match_dup 2) (match_dup 3)))])]
-   "")
- 
- ;; We don't need to handle HImode case, because it will be promoted to SImode
- ;; on ! TARGET_PARTIAL_REG_STALL
- 
- (define_peephole2
--  [(set (reg 17)
--	(compare (and:QI (match_operand:QI 0 "register_operand" "")
--			 (match_operand:QI 1 "immediate_operand" ""))
--		 (const_int 0)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 1 "compare_operator"
-+	  [(and:QI (match_operand:QI 2 "register_operand" "")
-+		   (match_operand:QI 3 "immediate_operand" ""))
-+	   (const_int 0)]))]
-   "! TARGET_PARTIAL_REG_STALL
-    && ix86_match_ccmode (insn, CCNOmode)
--   && true_regnum (operands[0]) != 0
--   && find_regno_note (insn, REG_DEAD, true_regnum (operands[0]))"
-+   && true_regnum (operands[2]) != 0
-+   && peep2_reg_dead_p (1, operands[2])"
-   [(parallel
--     [(set (reg:CCNO 17)
--	   (compare:CCNO (and:QI (match_dup 0)
-- 			         (match_dup 1))
--		         (const_int 0)))
--      (set (match_dup 0)
--	   (and:QI (match_dup 0) (match_dup 1)))])]
-+     [(set (match_dup 0)
-+	   (match_op_dup 1 [(and:QI (match_dup 2) (match_dup 3))
-+		            (const_int 0)]))
-+      (set (match_dup 2)
-+	   (and:QI (match_dup 2) (match_dup 3)))])]
-   "")
- 
- (define_peephole2
--  [(set (reg 17)
--	(compare
--	  (and:SI
--	    (zero_extract:SI
--	      (match_operand 0 "ext_register_operand" "")
--	      (const_int 8)
--	      (const_int 8))
--	    (match_operand 1 "const_int_operand" ""))
--	  (const_int 0)))]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 1 "compare_operator"
-+	  [(and:SI
-+	     (zero_extract:SI
-+	       (match_operand 2 "ext_register_operand" "")
-+	       (const_int 8)
-+	       (const_int 8))
-+	     (match_operand 3 "const_int_operand" ""))
-+	   (const_int 0)]))]
-   "! TARGET_PARTIAL_REG_STALL
-    && ix86_match_ccmode (insn, CCNOmode)
--   && true_regnum (operands[0]) != 0
--   && find_regno_note (insn, REG_DEAD, true_regnum (operands[0]))"
--  [(parallel [(set (reg:CCNO 17)
--		   (compare:CCNO
--		       (and:SI
--			 (zero_extract:SI
--			 (match_dup 0)
--			 (const_int 8)
--			 (const_int 8))
--			(match_dup 1))
--		   (const_int 0)))
--	      (set (zero_extract:SI (match_dup 0)
-+   && true_regnum (operands[2]) != 0
-+   && peep2_reg_dead_p (1, operands[2])"
-+  [(parallel [(set (match_dup 0)
-+		   (match_op_dup 1
-+		     [(and:SI
-+			(zero_extract:SI
-+			  (match_dup 2)
-+			  (const_int 8)
-+			  (const_int 8))
-+			(match_dup 3))
-+		      (const_int 0)]))
-+	      (set (zero_extract:SI (match_dup 2)
- 				    (const_int 8)
- 				    (const_int 8))
- 		   (and:SI 
- 		     (zero_extract:SI
--		       (match_dup 0)
-+		       (match_dup 2)
- 		       (const_int 8)
- 		       (const_int 8))
--		     (match_dup 1)))])]
-+		     (match_dup 3)))])]
-   "")
- 
- ;; Don't do logical operations with memory inputs.
-@@ -17523,66 +17577,20 @@
-   "")
- 
- ;; Convert compares with 1 to shorter inc/dec operations when CF is not
--;; required and register dies.
--(define_peephole2
--  [(set (reg 17)
--	(compare (match_operand:SI 0 "register_operand" "")
--		 (match_operand:SI 1 "incdec_operand" "")))]
--  "ix86_match_ccmode (insn, CCGCmode)
--   && find_regno_note (insn, REG_DEAD, true_regnum (operands[0]))"
--  [(parallel [(set (reg:CCGC 17)
--		   (compare:CCGC (match_dup 0)
--				 (match_dup 1)))
--	      (clobber (match_dup 0))])]
--  "")
--
-+;; required and register dies.  Similarly for 128 to plus -128.
- (define_peephole2
--  [(set (reg 17)
--	(compare (match_operand:HI 0 "register_operand" "")
--		 (match_operand:HI 1 "incdec_operand" "")))]
--  "ix86_match_ccmode (insn, CCGCmode)
--   && find_regno_note (insn, REG_DEAD, true_regnum (operands[0]))"
--  [(parallel [(set (reg:CCGC 17)
--		   (compare:CCGC (match_dup 0)
--				 (match_dup 1)))
--	      (clobber (match_dup 0))])]
--  "")
--
--(define_peephole2
--  [(set (reg 17)
--	(compare (match_operand:QI 0 "register_operand" "")
--		 (match_operand:QI 1 "incdec_operand" "")))]
--  "ix86_match_ccmode (insn, CCGCmode)
--   && find_regno_note (insn, REG_DEAD, true_regnum (operands[0]))"
--  [(parallel [(set (reg:CCGC 17)
--		   (compare:CCGC (match_dup 0)
--				 (match_dup 1)))
--	      (clobber (match_dup 0))])]
--  "")
--
--;; Convert compares with 128 to shorter add -128
--(define_peephole2
--  [(set (reg 17)
--	(compare (match_operand:SI 0 "register_operand" "")
--		 (const_int 128)))]
--  "ix86_match_ccmode (insn, CCGCmode)
--   && find_regno_note (insn, REG_DEAD, true_regnum (operands[0]))"
--  [(parallel [(set (reg:CCGC 17)
--		   (compare:CCGC (match_dup 0)
--			         (const_int 128)))
--	      (clobber (match_dup 0))])]
--  "")
--
--(define_peephole2
--  [(set (reg 17)
--	(compare (match_operand:HI 0 "register_operand" "")
--		 (const_int 128)))]
--  "ix86_match_ccmode (insn, CCGCmode)
--   && find_regno_note (insn, REG_DEAD, true_regnum (operands[0]))"
--  [(parallel [(set (reg:CCGC 17)
--		   (compare:CCGC (match_dup 0)
--			         (const_int 128)))
--	      (clobber (match_dup 0))])]
-+  [(set (match_operand 0 "flags_reg_operand" "")
-+	(match_operator 1 "compare_operator"
-+	  [(match_operand 2 "register_operand" "")
-+	   (match_operand 3 "const_int_operand" "")]))]
-+  "(INTVAL (operands[3]) == -1
-+    || INTVAL (operands[3]) == 1
-+    || INTVAL (operands[3]) == 128)
-+   && ix86_match_ccmode (insn, CCGCmode)
-+   && peep2_reg_dead_p (1, operands[2])"
-+  [(parallel [(set (match_dup 0)
-+		   (match_op_dup 1 [(match_dup 2) (match_dup 3)]))
-+	      (clobber (match_dup 2))])]
-   "")
- 
- (define_peephole2
-@@ -17780,9 +17788,9 @@
- 	return "call\t%P1";
-     }
-   if (SIBLING_CALL_P (insn))
--    return "jmp\t%*%1";
-+    return "jmp\t%A1";
-   else
--    return "call\t%*%1";
-+    return "call\t%A1";
- }
-   [(set_attr "type" "callv")])
- 
-Index: gcc/config/ia64/ia64.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/ia64/ia64.c,v
-retrieving revision 1.198.2.22
-retrieving revision 1.198.2.24
-diff -u -r1.198.2.22 -r1.198.2.24
---- gcc/gcc/config/ia64/ia64.c	17 Sep 2004 17:56:32 -0000	1.198.2.22
-+++ gcc/gcc/config/ia64/ia64.c	14 Jan 2005 19:15:40 -0000	1.198.2.24
-@@ -2884,10 +2884,13 @@
- 	 preserve those input registers used as arguments to the sibling call.
- 	 It is unclear how to compute that number here.  */
-       if (current_frame_info.n_input_regs != 0)
--	emit_insn (gen_alloc (gen_rtx_REG (DImode, fp),
--			      GEN_INT (0), GEN_INT (0),
--			      GEN_INT (current_frame_info.n_input_regs),
--			      GEN_INT (0)));
-+	{
-+	  rtx n_inputs = GEN_INT (current_frame_info.n_input_regs);
-+	  insn = emit_insn (gen_alloc (gen_rtx_REG (DImode, fp),
-+				const0_rtx, const0_rtx,
-+				n_inputs, const0_rtx));
-+	  RTX_FRAME_RELATED_P (insn) = 1;
-+	}
-     }
- }
- 
-@@ -3021,15 +3024,16 @@
-      int aligned_p;
- {
-   if (size == (TARGET_ILP32 ? 4 : 8)
--      && aligned_p
-       && !(TARGET_NO_PIC || TARGET_AUTO_PIC)
-       && GET_CODE (x) == SYMBOL_REF
-       && SYMBOL_REF_FLAG (x))
-     {
--      if (TARGET_ILP32)
--	fputs ("\tdata4\t@fptr(", asm_out_file);
--      else
--	fputs ("\tdata8\t@fptr(", asm_out_file);
-+      static const char * const directive[2][2] = {
-+	  /* 64-bit pointer */  /* 32-bit pointer */
-+	{ "\tdata8.ua\t@fptr(", "\tdata4.ua\t@fptr("},	/* unaligned */
-+	{ "\tdata8\t@fptr(",    "\tdata4\t@fptr("}	/* aligned */
-+      };
-+      fputs (directive[aligned_p != 0][TARGET_ILP32 != 0], asm_out_file);
-       output_addr_const (asm_out_file, x);
-       fputs (")\n", asm_out_file);
-       return true;
-@@ -7451,13 +7455,24 @@
-     {
-       dest_regno = REGNO (dest);
- 
--      /* If this isn't the final destination for ar.pfs, the alloc
--	 shouldn't have been marked frame related.  */
--      if (dest_regno != current_frame_info.reg_save_ar_pfs)
--	abort ();
--
--      fprintf (asm_out_file, "\t.save ar.pfs, r%d\n",
--	       ia64_dbx_register_number (dest_regno));
-+      /* If this is the final destination for ar.pfs, then this must
-+	 be the alloc in the prologue.  */
-+      if (dest_regno == current_frame_info.reg_save_ar_pfs)
-+	fprintf (asm_out_file, "\t.save ar.pfs, r%d\n",
-+		 ia64_dbx_register_number (dest_regno));
-+      else
-+	{
-+	  /* This must be an alloc before a sibcall.  We must drop the
-+	     old frame info.  The easiest way to drop the old frame
-+	     info is to ensure we had a ".restore sp" directive
-+	     followed by a new prologue.  If the procedure doesn't
-+	     have a memory-stack frame, we'll issue a dummy ".restore
-+	     sp" now.  */
-+	  if (current_frame_info.total_size == 0 && !frame_pointer_needed)
-+	    /* if haven't done process_epilogue() yet, do it now */
-+	    process_epilogue ();
-+	  fprintf (asm_out_file, "\t.prologue\n");
-+	}
-       return 1;
-     }
- 
-Index: gcc/config/m68hc11/t-m68hc11-gas
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/m68hc11/t-m68hc11-gas,v
-retrieving revision 1.7.14.3
-retrieving revision 1.7.14.4
-diff -u -r1.7.14.3 -r1.7.14.4
---- gcc/gcc/config/m68hc11/t-m68hc11-gas	4 Oct 2003 19:45:57 -0000	1.7.14.3
-+++ gcc/gcc/config/m68hc11/t-m68hc11-gas	28 Jan 2005 22:21:39 -0000	1.7.14.4
-@@ -53,7 +53,7 @@
- dp-bit.c: $(srcdir)/config/fp-bit.c
- 	echo '#define SMALL_MACHINE' >> dp-bit.c
- 	echo '#define CMPtype HItype' >> dp-bit.c
--	echo '#ifdef __LITTLE_ENDIAN__' > dp-bit.c
-+	echo '#ifdef __LITTLE_ENDIAN__' >> dp-bit.c
- 	echo '#define FLOAT_BIT_ORDER_MISMATCH' >>dp-bit.c
- 	echo '#endif' 		>> dp-bit.c
- 	cat $(srcdir)/config/fp-bit.c >> dp-bit.c
-Index: gcc/config/mips/mips-protos.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/mips/mips-protos.h,v
-retrieving revision 1.30.4.1
-retrieving revision 1.30.4.2
-diff -u -r1.30.4.1 -r1.30.4.2
---- gcc/gcc/config/mips/mips-protos.h	31 Jan 2003 23:51:22 -0000	1.30.4.1
-+++ gcc/gcc/config/mips/mips-protos.h	8 Jan 2005 14:33:32 -0000	1.30.4.2
-@@ -1,6 +1,6 @@
- /* Prototypes of target machine for GNU compiler.  MIPS version.
-    Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
--   1999, 2001, 2002 Free Software Foundation, Inc.
-+   1999, 2001, 2002, 2005 Free Software Foundation, Inc.
-    Contributed by A. Lichnewsky (lich@inria.inria.fr).
-    Changed by Michael Meissner	(meissner@osf.org).
-    64 bit r4000 support by Ian Lance Taylor (ian@cygnus.com) and
-@@ -36,9 +36,13 @@
- extern const char *	current_section_name PARAMS ((void));
- extern unsigned int	current_section_flags PARAMS ((void));
- extern int		mips_can_use_return_insn PARAMS ((void));
--extern void		mips_declare_object PARAMS ((FILE *, const char *,
--						     const char *,
--						     const char *, int));
-+extern void 		mips_output_aligned_decl_common
-+				PARAMS ((FILE *, tree, const char *,
-+					 unsigned HOST_WIDE_INT,
-+					 unsigned int));
-+extern void		mips_declare_object
-+				PARAMS ((FILE *, const char *, const char *,
-+					 const char *, ...));
- extern void		mips_expand_epilogue PARAMS ((void));
- extern void		mips_expand_prologue PARAMS ((void));
- extern void		mips_output_filename PARAMS ((FILE *, const char *));
-Index: gcc/config/mips/mips.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/mips/mips.c,v
-retrieving revision 1.241.2.4
-retrieving revision 1.241.2.5
-diff -u -r1.241.2.4 -r1.241.2.5
---- gcc/gcc/config/mips/mips.c	27 Jun 2003 11:44:23 -0000	1.241.2.4
-+++ gcc/gcc/config/mips/mips.c	8 Jan 2005 14:33:33 -0000	1.241.2.5
-@@ -1,6 +1,6 @@
- /* Subroutines for insn-output.c for MIPS
-    Copyright (C) 1989, 1990, 1991, 1993, 1994, 1995, 1996, 1997, 1998,
--   1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+   1999, 2000, 2001, 2002, 2005 Free Software Foundation, Inc.
-    Contributed by A. Lichnewsky, lich@inria.inria.fr.
-    Changes by Michael Meissner, meissner@osf.org.
-    64 bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
-@@ -6562,26 +6562,84 @@
-     fatal_io_error ("can't close temp file");
- }
- 
--/* Emit either a label, .comm, or .lcomm directive, and mark that the symbol
--   is used, so that we don't emit an .extern for it in mips_asm_file_end.  */
-+/* Implement ASM_OUTPUT_ALIGNED_DECL_COMMON.  This is usually the same as
-+   the elfos.h version, but we also need to handle -muninit-const-in-rodata
-+   and the limitations of the SGI o32 assembler.  */
- 
- void
--mips_declare_object (stream, name, init_string, final_string, size)
-+mips_output_aligned_decl_common (stream, decl, name, size, align)
-      FILE *stream;
-+     tree decl;
-      const char *name;
--     const char *init_string;
--     const char *final_string;
--     int size;
-+     unsigned HOST_WIDE_INT size;
-+     unsigned int align;
- {
--  fputs (init_string, stream);		/* "", "\t.comm\t", or "\t.lcomm\t" */
-+  const char *format;
-+
-+  /* If the target wants uninitialized const declarations in
-+     .rdata then don't put them in .comm.   */
-+  if (TARGET_EMBEDDED_DATA && TARGET_UNINIT_CONST_IN_RODATA
-+      && TREE_CODE (decl) == VAR_DECL && TREE_READONLY (decl)
-+      && (DECL_INITIAL (decl) == 0 || DECL_INITIAL (decl) == error_mark_node))
-+    {
-+      if (TREE_PUBLIC (decl) && DECL_NAME (decl))
-+	targetm.asm_out.globalize_label (stream, name);
-+
-+      readonly_data_section ();
-+      ASM_OUTPUT_ALIGN (stream, floor_log2 (align / BITS_PER_UNIT));
-+
-+      format = ACONCAT ((":\n\t.space\t", HOST_WIDE_INT_PRINT_UNSIGNED,
-+			 "\n", NULL));
-+      mips_declare_object (stream, name, "", format, size);
-+    }
-+#ifdef TARGET_IRIX6
-+    /* The SGI o32 assembler doesn't accept an alignment, so round up
-+       the size instead.  */
-+  else if (mips_abi == ABI_32 && !TARGET_GAS)
-+    {
-+      size += (align / BITS_PER_UNIT) - 1;
-+      size -= size % (align / BITS_PER_UNIT);
-+      format = ACONCAT ((",", HOST_WIDE_INT_PRINT_UNSIGNED, "\n", NULL));
-+      mips_declare_object (stream, name, "\n\t.comm\t", format, size);
-+    }
-+#endif
-+  else
-+    {
-+      format = ACONCAT ((",", HOST_WIDE_INT_PRINT_UNSIGNED, ",%u\n", NULL));
-+      mips_declare_object (stream, name, "\n\t.comm\t", format,
-+			   size, align / BITS_PER_UNIT);
-+    }
-+}
-+
-+/* Emit either a label, .comm, or .lcomm directive.  When using assembler
-+   macros, mark the symbol as written so that mips_file_end won't emit an
-+   .extern for it.  STREAM is the output file, NAME is the name of the
-+   symbol, INIT_STRING is the string that should be written before the
-+   symbol and FINAL_STRING is the string that shoulbe written after it.
-+   FINAL_STRING is a printf() format that consumes the remaining arguments.  */
-+
-+void
-+mips_declare_object VPARAMS ((FILE *stream, const char *name,
-+			      const char *init_string,
-+			      const char *final_string, ...))
-+{
-+  VA_OPEN (ap, final_string);
-+  VA_FIXEDARG (ap, FILE *, stream);
-+  VA_FIXEDARG (ap, const char *, name);
-+  VA_FIXEDARG (ap, const char *, init_string);
-+  VA_FIXEDARG (ap, const char *, final_string);
-+
-+  fputs (init_string, stream);
-   assemble_name (stream, name);
--  fprintf (stream, final_string, size);	/* ":\n", ",%u\n", ",%u\n" */
-+  vfprintf (stream, final_string, ap);
- 
-   if (TARGET_GP_OPT)
-     {
-       tree name_tree = get_identifier (name);
-       TREE_ASM_WRITTEN (name_tree) = 1;
-     }
-+
-+  VA_CLOSE (ap);
- }
- 
- /* Return the bytes needed to compute the frame pointer from the current
-Index: gcc/config/mips/mips.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/mips/mips.h,v
-retrieving revision 1.227.4.6
-retrieving revision 1.227.4.7
-diff -u -r1.227.4.6 -r1.227.4.7
---- gcc/gcc/config/mips/mips.h	30 May 2003 12:00:42 -0000	1.227.4.6
-+++ gcc/gcc/config/mips/mips.h	8 Jan 2005 14:33:34 -0000	1.227.4.7
-@@ -1,6 +1,6 @@
- /* Definitions of target machine for GNU compiler.  MIPS version.
-    Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998
--   1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+   1999, 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
-    Contributed by A. Lichnewsky (lich@inria.inria.fr).
-    Changed by Michael Meissner	(meissner@osf.org).
-    64 bit r4000 support by Ian Lance Taylor (ian@cygnus.com) and
-@@ -4326,28 +4326,7 @@
- 
- /* This says how to define a global common symbol.  */
- 
--#define ASM_OUTPUT_ALIGNED_DECL_COMMON(STREAM, DECL, NAME, SIZE, ALIGN) \
--  do {									\
--    /* If the target wants uninitialized const declarations in		\
--       .rdata then don't put them in .comm */				\
--    if (TARGET_EMBEDDED_DATA && TARGET_UNINIT_CONST_IN_RODATA		\
--	&& TREE_CODE (DECL) == VAR_DECL && TREE_READONLY (DECL)		\
--	&& (DECL_INITIAL (DECL) == 0					\
--	    || DECL_INITIAL (DECL) == error_mark_node))			\
--      {									\
--	if (TREE_PUBLIC (DECL) && DECL_NAME (DECL))			\
--	  (*targetm.asm_out.globalize_label) (STREAM, NAME);		\
--	    								\
--	readonly_data_section ();					\
--	ASM_OUTPUT_ALIGN (STREAM, floor_log2 (ALIGN / BITS_PER_UNIT));	\
--	mips_declare_object (STREAM, NAME, "", ":\n\t.space\t%u\n",	\
--	    (SIZE));							\
--      }									\
--    else								\
--	mips_declare_object (STREAM, NAME, "\n\t.comm\t", ",%u\n",	\
--	  (SIZE));							\
--  } while (0)
--
-+#define ASM_OUTPUT_ALIGNED_DECL_COMMON mips_output_aligned_decl_common
- 
- /* This says how to define a local common symbol (ie, not visible to
-    linker).  */
-Index: gcc/config/mips/mips.md
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/mips/mips.md,v
-retrieving revision 1.153.2.5
-retrieving revision 1.153.2.6
-diff -u -r1.153.2.5 -r1.153.2.6
---- gcc/gcc/config/mips/mips.md	27 Mar 2004 10:35:03 -0000	1.153.2.5
-+++ gcc/gcc/config/mips/mips.md	8 Jan 2005 14:11:12 -0000	1.153.2.6
-@@ -1,6 +1,6 @@
- ;;  Mips.md	     Machine Description for MIPS based processors
- ;;  Copyright (C) 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
--;;  1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-+;;  1999, 2000, 2001, 2002, 2005 Free Software Foundation, Inc.
- ;;  Contributed by   A. Lichnewsky, lich@inria.inria.fr
- ;;  Changes by       Michael Meissner, meissner@osf.org
- ;;  64 bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
-@@ -163,7 +163,8 @@
- 
- ;; Describe a user's asm statement.
- (define_asm_attributes
--  [(set_attr "type" "multi")])
-+  [(set_attr "type" "multi")
-+   (set_attr "can_delay" "no")])
- 
- ;; whether or not generating calls to position independent functions
- (define_attr "abicalls" "no,yes"
-Index: gcc/config/pa/pa32-linux.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/pa/pa32-linux.h,v
-retrieving revision 1.10
-retrieving revision 1.10.2.1
-diff -u -r1.10 -r1.10.2.1
---- gcc/gcc/config/pa/pa32-linux.h	6 Dec 2002 02:54:38 -0000	1.10
-+++ gcc/gcc/config/pa/pa32-linux.h	27 Dec 2004 02:55:49 -0000	1.10.2.1
-@@ -28,7 +28,7 @@
-    pointer into the frame.  This target does not need multiple
-    subspace stubs, so we allow sibcalls to all functions.  */
- #undef FUNCTION_OK_FOR_SIBCALL
--#define FUNCTION_OK_FOR_SIBCALL(DECL) 1
-+#define FUNCTION_OK_FOR_SIBCALL(DECL) (!TARGET_PORTABLE_RUNTIME)
- 
- /* The libcall __canonicalize_funcptr_for_compare is referenced in
-    crtend.o and the reference isn't resolved in objects that don't
-Index: gcc/config/rs6000/rs6000.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.c,v
-retrieving revision 1.403.2.14
-retrieving revision 1.403.2.16
-diff -u -r1.403.2.14 -r1.403.2.16
---- gcc/gcc/config/rs6000/rs6000.c	14 Jan 2004 14:03:58 -0000	1.403.2.14
-+++ gcc/gcc/config/rs6000/rs6000.c	1 Dec 2004 06:13:16 -0000	1.403.2.16
-@@ -150,7 +150,8 @@
- /* Call distance, overridden by -mlongcall and #pragma longcall(1).
-    The only place that looks at this is rs6000_set_default_type_attributes;
-    everywhere else should rely on the presence or absence of a longcall
--   attribute on the function declaration.  */
-+   attribute on the function declaration.  Exception: init_cumulative_args
-+   looks at it too, for libcalls.  */
- int rs6000_default_long_calls;
- const char *rs6000_longcall_switch;
- 
-@@ -2910,10 +2911,11 @@
-   cum->orig_nargs = cum->nargs_prototype;
- 
-   /* Check for a longcall attribute.  */
--  if (fntype
--      && lookup_attribute ("longcall", TYPE_ATTRIBUTES (fntype))
--      && !lookup_attribute ("shortcall", TYPE_ATTRIBUTES (fntype)))
--    cum->call_cookie = CALL_LONG;
-+  if ((!fntype && rs6000_default_long_calls)
-+      || (fntype
-+	  && lookup_attribute ("longcall", TYPE_ATTRIBUTES (fntype))
-+	  && !lookup_attribute ("shortcall", TYPE_ATTRIBUTES (fntype))))
-+    cum->call_cookie |= CALL_LONG;
- 
-   if (TARGET_DEBUG_ARG)
-     {
-@@ -10356,8 +10358,10 @@
-       rtx reg, mem, vrsave;
-       int offset;
- 
--      /* Get VRSAVE onto a GPR.  */
--      reg = gen_rtx_REG (SImode, 12);
-+      /* Get VRSAVE onto a GPR.  Note that ABI_V4 might be using r12
-+	 as frame_reg_rtx and r11 as the static chain pointer for
-+	 nested functions.  */
-+      reg = gen_rtx_REG (SImode, 0);
-       vrsave = gen_rtx_REG (SImode, VRSAVE_REGNO);
-       if (TARGET_MACHO)
- 	emit_insn (gen_get_vrsave_internal (reg));
-Index: gcc/config/rs6000/rs6000.md
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.md,v
-retrieving revision 1.224.2.6
-retrieving revision 1.224.2.7
-diff -u -r1.224.2.6 -r1.224.2.7
---- gcc/gcc/config/rs6000/rs6000.md	8 Mar 2004 04:20:45 -0000	1.224.2.6
-+++ gcc/gcc/config/rs6000/rs6000.md	24 Dec 2004 23:17:06 -0000	1.224.2.7
-@@ -3124,61 +3124,6 @@
- }"
-   [(set_attr "length" "8")])
- 
--(define_insn_and_split "*andsi3_internal7"
--  [(set (match_operand:CC 2 "cc_reg_operand" "=x,?y")
--	(compare:CC (and:SI (match_operand:SI 0 "gpc_reg_operand" "r,r")
--			    (match_operand:SI 1 "mask_operand_wrap" "i,i"))
--		    (const_int 0)))
--   (clobber (match_scratch:SI 3 "=r,r"))]
--  "TARGET_POWERPC64"
--  "#"
--  "TARGET_POWERPC64"
--  [(parallel [(set (match_dup 2)
--		   (compare:CC (and:SI (rotate:SI (match_dup 0) (match_dup 4))
--				       (match_dup 5))
--			       (const_int 0)))
--	      (clobber (match_dup 3))])]
--  "
--{
--  int mb = extract_MB (operands[1]);
--  int me = extract_ME (operands[1]);
--  operands[4] = GEN_INT (me + 1);
--  operands[5] = GEN_INT (~((HOST_WIDE_INT) -1 << (33 + me - mb)));
--}"
--  [(set_attr "type" "delayed_compare,compare")
--   (set_attr "length" "4,8")])
--
--(define_insn_and_split "*andsi3_internal8"
--  [(set (match_operand:CC 3 "cc_reg_operand" "=x,??y")
--	(compare:CC (and:SI (match_operand:SI 1 "gpc_reg_operand" "r,r")
--			    (match_operand:SI 2 "mask_operand_wrap" "i,i"))
--		    (const_int 0)))
--   (set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
--	(and:SI (match_dup 1)
--		(match_dup 2)))]
--  "TARGET_POWERPC64"
--  "#"
--  "TARGET_POWERPC64"
--  [(parallel [(set (match_dup 3)
--		   (compare:CC (and:SI (rotate:SI (match_dup 1) (match_dup 4))
--				       (match_dup 5))
--			       (const_int 0)))
--	      (set (match_dup 0)
--		   (and:SI (rotate:SI (match_dup 1) (match_dup 4))
--			   (match_dup 5)))])
--   (set (match_dup 0)
--	(rotate:SI (match_dup 0) (match_dup 6)))]
--  "
--{
--  int mb = extract_MB (operands[2]);
--  int me = extract_ME (operands[2]);
--  operands[4] = GEN_INT (me + 1);
--  operands[6] = GEN_INT (32 - (me + 1));
--  operands[5] = GEN_INT (~((HOST_WIDE_INT) -1 << (33 + me - mb)));
--}"
--  [(set_attr "type" "delayed_compare,compare")
--   (set_attr "length" "8,12")])
--
- (define_expand "iorsi3"
-   [(set (match_operand:SI 0 "gpc_reg_operand" "")
- 	(ior:SI (match_operand:SI 1 "gpc_reg_operand" "")
-Index: gcc/config/s390/s390.md
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/s390/s390.md,v
-retrieving revision 1.41.2.12
-retrieving revision 1.41.2.13
-diff -u -r1.41.2.12 -r1.41.2.13
---- gcc/gcc/config/s390/s390.md	3 Aug 2004 20:06:51 -0000	1.41.2.12
-+++ gcc/gcc/config/s390/s390.md	27 Jan 2005 23:38:39 -0000	1.41.2.13
-@@ -910,11 +910,13 @@
- })
- 
- (define_expand "reload_outti"
--  [(parallel [(match_operand:TI 0 "memory_operand" "")
-+  [(parallel [(match_operand:TI 0 "" "")
-               (match_operand:TI 1 "register_operand" "d")
-               (match_operand:DI 2 "register_operand" "=&a")])]
-   "TARGET_64BIT"
- {
-+  if (GET_CODE (operands[0]) != MEM)
-+    abort ();
-   s390_load_address (operands[2], XEXP (operands[0], 0));
-   operands[0] = replace_equiv_address (operands[0], operands[2]);
-   emit_move_insn (operands[0], operands[1]);
-@@ -1060,11 +1062,13 @@
- })
- 
- (define_expand "reload_outdi"
--  [(parallel [(match_operand:DI 0 "memory_operand" "")
-+  [(parallel [(match_operand:DI 0 "" "")
-               (match_operand:DI 1 "register_operand" "d")
-               (match_operand:SI 2 "register_operand" "=&a")])]
-   "!TARGET_64BIT"
- {
-+  if (GET_CODE (operands[0]) != MEM)
-+    abort ();
-   s390_load_address (operands[2], XEXP (operands[0], 0));
-   operands[0] = replace_equiv_address (operands[0], operands[2]);
-   emit_move_insn (operands[0], operands[1]);
-@@ -1374,11 +1378,13 @@
- })
- 
- (define_expand "reload_outdf"
--  [(parallel [(match_operand:DF 0 "memory_operand" "")
-+  [(parallel [(match_operand:DF 0 "" "")
-               (match_operand:DF 1 "register_operand" "d")
-               (match_operand:SI 2 "register_operand" "=&a")])]
-   "!TARGET_64BIT"
- {
-+  if (GET_CODE (operands[0]) != MEM)
-+    abort ();
-   s390_load_address (operands[2], XEXP (operands[0], 0));
-   operands[0] = replace_equiv_address (operands[0], operands[2]);
-   emit_move_insn (operands[0], operands[1]);
-Index: gcc/config/sparc/sparc.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/sparc/sparc.c,v
-retrieving revision 1.233.4.12
-retrieving revision 1.233.4.13
-diff -u -r1.233.4.12 -r1.233.4.13
---- gcc/gcc/config/sparc/sparc.c	17 Jul 2004 19:49:21 -0000	1.233.4.12
-+++ gcc/gcc/config/sparc/sparc.c	14 Oct 2004 06:54:26 -0000	1.233.4.13
-@@ -178,6 +178,8 @@
- static void sparc_encode_section_info PARAMS ((tree, int));
- static void sparc_output_mi_thunk PARAMS ((FILE *, tree, HOST_WIDE_INT,
- 					   HOST_WIDE_INT, tree));
-+static bool sparc_can_output_mi_thunk PARAMS ((tree, HOST_WIDE_INT,
-+					       HOST_WIDE_INT, tree));
- 
- /* Option handling.  */
- 
-@@ -244,7 +246,7 @@
- #undef TARGET_ASM_OUTPUT_MI_THUNK
- #define TARGET_ASM_OUTPUT_MI_THUNK sparc_output_mi_thunk
- #undef TARGET_ASM_CAN_OUTPUT_MI_THUNK
--#define TARGET_ASM_CAN_OUTPUT_MI_THUNK default_can_output_mi_thunk_no_vcall
-+#define TARGET_ASM_CAN_OUTPUT_MI_THUNK sparc_can_output_mi_thunk
- 
- struct gcc_target targetm = TARGET_INITIALIZER;
- 
-@@ -8622,18 +8624,21 @@
-     SYMBOL_REF_FLAG (XEXP (DECL_RTL (decl), 0)) = 1;
- }
- 
--/* Output code to add DELTA to the first argument, and then jump to FUNCTION.
--   Used for C++ multiple inheritance.  */
-+/* Output the assembler code for a thunk function.  THUNK_DECL is the
-+   declaration for the thunk function itself, FUNCTION is the decl for
-+   the target function.  DELTA is an immediate constant offset to be
-+   added to THIS.  If VCALL_OFFSET is nonzero, the word at address
-+   (*THIS + VCALL_OFFSET) should be additionally added to THIS.  */
- 
- static void
- sparc_output_mi_thunk (file, thunk_fndecl, delta, vcall_offset, function)
-      FILE *file;
-      tree thunk_fndecl ATTRIBUTE_UNUSED;
-      HOST_WIDE_INT delta;
--     HOST_WIDE_INT vcall_offset ATTRIBUTE_UNUSED;
-+     HOST_WIDE_INT vcall_offset;
-      tree function;
- {
--  rtx this, insn, funexp, delta_rtx, tmp;
-+  rtx this, insn, funexp;
- 
-   reload_completed = 1;
-   no_new_pseudos = 1;
-@@ -8650,26 +8655,73 @@
- 
-   /* Add DELTA.  When possible use a plain add, otherwise load it into
-      a register first.  */
--  delta_rtx = GEN_INT (delta);
--  if (!SPARC_SIMM13_P (delta))
-+  if (delta)
-     {
-+      rtx delta_rtx = GEN_INT (delta);
-+
-+      if (! SPARC_SIMM13_P (delta))
-+	{
-+	  rtx scratch = gen_rtx_REG (Pmode, 1);
-+	  emit_move_insn (scratch, delta_rtx);
-+	  delta_rtx = scratch;
-+	}
-+
-+      /* THIS += DELTA.  */
-+      emit_insn (gen_add2_insn (this, delta_rtx));
-+    }
-+
-+  /* Add the word at address (*THIS + VCALL_OFFSET).  */
-+  if (vcall_offset)
-+    {
-+      rtx vcall_offset_rtx = GEN_INT (vcall_offset);
-       rtx scratch = gen_rtx_REG (Pmode, 1);
- 
--      if (input_operand (delta_rtx, GET_MODE (scratch)))
--	emit_insn (gen_rtx_SET (VOIDmode, scratch, delta_rtx));
-+      if (vcall_offset >= 0)
-+	abort ();
-+
-+      /* SCRATCH = *THIS.  */
-+      emit_move_insn (scratch, gen_rtx_MEM (Pmode, this));
-+
-+      /* Prepare for adding VCALL_OFFSET.  The difficulty is that we
-+	 may not have any available scratch register at this point.  */
-+      if (SPARC_SIMM13_P (vcall_offset))
-+	;
-+      /* This is the case if ARCH64 (unless -ffixed-g5 is passed).  */
-+      else if (! fixed_regs[5]
-+	       /* The below sequence is made up of at least 2 insns,
-+		  while the default method may need only one.  */
-+	       && vcall_offset < -8192)
-+	{
-+	  rtx scratch2 = gen_rtx_REG (Pmode, 5);
-+	  emit_move_insn (scratch2, vcall_offset_rtx);
-+	  vcall_offset_rtx = scratch2;
-+	}
-       else
- 	{
--	  if (TARGET_ARCH64)
--	    sparc_emit_set_const64 (scratch, delta_rtx);
--	  else
--	    sparc_emit_set_const32 (scratch, delta_rtx);
-+	  rtx increment = GEN_INT (-4096);
-+
-+	  /* VCALL_OFFSET is a negative number whose typical range can be
-+	     estimated as -32768..0 in 32-bit mode.  In almost all cases
-+	     it is therefore cheaper to emit multiple add insns than
-+	     spilling and loading the constant into a register (at least
-+	     6 insns).  */
-+	  while (! SPARC_SIMM13_P (vcall_offset))
-+	    {
-+	      emit_insn (gen_add2_insn (scratch, increment));
-+	      vcall_offset += 4096;
-+	    }
-+	  vcall_offset_rtx = GEN_INT (vcall_offset); /* cannot be 0 */
- 	}
- 
--      delta_rtx = scratch;
--    }
-+      /* SCRATCH = *(*THIS + VCALL_OFFSET).  */
-+      emit_move_insn (scratch, gen_rtx_MEM (Pmode,
-+					    gen_rtx_PLUS (Pmode,
-+							  scratch,
-+							  vcall_offset_rtx)));
- 
--  tmp = gen_rtx_PLUS (Pmode, this, delta_rtx);
--  emit_insn (gen_rtx_SET (VOIDmode, this, tmp));
-+      /* THIS += *(*THIS + VCALL_OFFSET).  */
-+      emit_insn (gen_add2_insn (this, scratch));
-+    }
- 
-   /* Generate a tail call to the target function.  */
-   if (! TREE_USED (function))
-@@ -8697,4 +8749,18 @@
-   no_new_pseudos = 0;
- }
- 
-+/* Return true if sparc_output_mi_thunk would be able to output the
-+   assembler code for the thunk function specified by the arguments
-+   it is passed, and false otherwise.  */
-+static bool
-+sparc_can_output_mi_thunk (thunk_fndecl, delta, vcall_offset, function)
-+     tree thunk_fndecl ATTRIBUTE_UNUSED;
-+     HOST_WIDE_INT delta ATTRIBUTE_UNUSED;
-+     HOST_WIDE_INT vcall_offset;
-+     tree function ATTRIBUTE_UNUSED;
-+{
-+  /* Bound the loop used in the default method above.  */
-+  return (vcall_offset >= -32768 || ! fixed_regs[5]);
-+}
-+
- #include "gt-sparc.h"
-Index: gcc/config/sparc/sparc.md
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/sparc/sparc.md,v
-retrieving revision 1.181.4.13
-retrieving revision 1.181.4.14
-diff -u -r1.181.4.13 -r1.181.4.14
---- gcc/gcc/config/sparc/sparc.md	17 Jul 2004 19:49:21 -0000	1.181.4.13
-+++ gcc/gcc/config/sparc/sparc.md	14 Oct 2004 06:54:27 -0000	1.181.4.14
-@@ -2048,7 +2048,6 @@
-   if (! CONSTANT_P (operands[1]) || input_operand (operands[1], DImode))
-     ;
-   else if (TARGET_ARCH64
--	   && CONSTANT_P (operands[1])
-            && GET_CODE (operands[1]) != HIGH
-            && GET_CODE (operands[1]) != LO_SUM)
-     {
-Index: gcc/config/vax/vax.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/vax/vax.c,v
-retrieving revision 1.38
-retrieving revision 1.38.4.1
-diff -u -r1.38 -r1.38.4.1
---- gcc/gcc/config/vax/vax.c	22 Oct 2002 23:05:24 -0000	1.38
-+++ gcc/gcc/config/vax/vax.c	28 Dec 2004 06:29:59 -0000	1.38.4.1
-@@ -462,7 +462,7 @@
-     case CONST_INT:
-       /* byte offsets cost nothing (on a VAX 2, they cost 1 cycle) */
-       if (offset == 0)
--	offset = (unsigned)(INTVAL(addr)+128) > 256;
-+	offset = (unsigned HOST_WIDE_INT)(INTVAL(addr)+128) > 256;
-       break;
-     case CONST:
-     case SYMBOL_REF:
-@@ -595,13 +595,13 @@
- 	fmt = "e";	/* all constant rotate counts are short */
-       break;
-     case PLUS:
--      /* Check for small negative integer operand: subl2 can be used with
--	 a short positive constant instead.  */
--      if (GET_CODE (XEXP (x, 1)) == CONST_INT)
--	if ((unsigned)(INTVAL (XEXP (x, 1)) + 63) < 127)
--	  fmt = "e";
-     case MINUS:
-       c = (mode == DFmode) ? 13 : 8;	/* 6/8 on VAX 9000, 16/15 on VAX 2 */
-+      /* Small integer operands can use subl2 and addl2.  */
-+      if ((GET_CODE (XEXP (x, 1)) == CONST_INT)
-+	  && (unsigned HOST_WIDE_INT)(INTVAL (XEXP (x, 1)) + 63) < 127)
-+	fmt = "e";
-+      break;
-     case IOR:
-     case XOR:
-       c = 3;
-@@ -611,7 +611,7 @@
-       c = 3;
-       if (GET_CODE (XEXP (x, 0)) == CONST_INT)
- 	{
--	  if ((unsigned)~INTVAL (XEXP (x, 0)) > 63)
-+	  if ((unsigned HOST_WIDE_INT)~INTVAL (XEXP (x, 0)) > 63)
- 	    c = 4;
- 	  fmt = "e";
- 	  i = 1;
-@@ -665,7 +665,8 @@
-       switch (code)
- 	{
- 	case CONST_INT:
--	  if ((unsigned)INTVAL (op) > 63 && GET_MODE (x) != QImode)
-+	  if ((unsigned HOST_WIDE_INT)INTVAL (op) > 63
-+	      && GET_MODE (x) != QImode)
- 	    c += 1;		/* 2 on VAX 2 */
- 	  break;
- 	case CONST:
-Index: gcc/config/vax/vax.h
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/vax/vax.h,v
-retrieving revision 1.54
-retrieving revision 1.54.4.1
-diff -u -r1.54 -r1.54.4.1
---- gcc/gcc/config/vax/vax.h	22 Oct 2002 23:05:24 -0000	1.54
-+++ gcc/gcc/config/vax/vax.h	28 Dec 2004 06:28:01 -0000	1.54.4.1
-@@ -800,11 +800,6 @@
-    Do not define this if the table should contain absolute addresses.  */
- #define CASE_VECTOR_PC_RELATIVE 1
- 
--/* Define this if the case instruction drops through after the table
--   when the index is out of range.  Don't define it if the case insn
--   jumps to the default label instead.  */
--#define CASE_DROPS_THROUGH
--
- /* Indicate that jump tables go in the text section.  This is
-    necessary when compiling PIC code.  */
- #define JUMP_TABLES_IN_TEXT_SECTION 1
-Index: gcc/config/vax/vax.md
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/config/vax/vax.md,v
-retrieving revision 1.23
-retrieving revision 1.23.4.1
-diff -u -r1.23 -r1.23.4.1
---- gcc/gcc/config/vax/vax.md	1 Oct 2002 20:16:04 -0000	1.23
-+++ gcc/gcc/config/vax/vax.md	28 Dec 2004 06:28:01 -0000	1.23.4.1
-@@ -1969,68 +1969,63 @@
-   "jmp (%0)")
- 
- ;; This is here to accept 5 arguments (as passed by expand_end_case)
--;; and pass the first 4 along to the casesi1 pattern that really does the work.
-+;; and pass the first 4 along to the casesi1 pattern that really does
-+;; the actual casesi work.  We emit a jump here to the default label
-+;; _before_ the casesi so that we can be sure that the casesi never
-+;; drops through.
-+;; This is suboptimal perhaps, but so is much of the rest of this
-+;; machine description.  For what it's worth, HPPA uses the same trick.
-+;;
-+;; operand 0 is index
-+;; operand 1 is the minimum bound (a const_int)
-+;; operand 2 is the maximum bound - minimum bound + 1 (also a const_int)
-+;; operand 3 is CODE_LABEL for the table;
-+;; operand 4 is the CODE_LABEL to go to if index out of range (ie. default).
-+;;
-+;; We emit:
-+;;	i = index - minimum_bound
-+;;	if (i > (maximum_bound - minimum_bound + 1) goto default;
-+;;	casesi (i, 0, table);
-+;;
- (define_expand "casesi"
--  [(match_operand:SI 0 "general_operand" "")	; index
--   (match_operand:SI 1 "general_operand" "")	; lower
--   (match_operand:SI 2 "general_operand" "")	; upper-lower
--   (match_operand 3 "" "")			; table label
--   (match_operand 4 "" "")]			; default label
--  ""
--{
--  emit_jump_insn (gen_casesi1 (operands[0], operands[1],
--			       operands[2], operands[3]));
-+  [(match_operand:SI 0 "general_operand" "")
-+   (match_operand:SI 1 "general_operand" "")
-+   (match_operand:SI 2 "general_operand" "")
-+   (match_operand 3 "" "")
-+   (match_operand 4 "" "")]
-+  ""
-+{
-+  /* i = index - minimum_bound;
-+     But only if the lower bound is not already zero.  */
-+  if (operands[1] != const0_rtx)
-+    {
-+      rtx index = gen_reg_rtx (SImode);
-+      emit_insn (gen_addsi3 (index,
-+			     operands[0],
-+			     GEN_INT (-INTVAL (operands[1]))));
-+      operands[0] = index;
-+    }
-+
-+  /* if (i > (maximum_bound - minimum_bound + 1) goto default;  */
-+  emit_insn (gen_cmpsi (operands[0], operands[2]));
-+  emit_jump_insn (gen_bgtu (operands[4]));
-+
-+  /* casesi (i, 0, table);  */
-+  emit_jump_insn (gen_casesi1 (operands[0], operands[2], operands[3]));
-   DONE;
- })
- 
-+;; This insn is a bit of a lier.  It actually falls through if no case
-+;; matches.  But, we prevent that from ever happening by emiting a jump
-+;; before this, see the define_expand above.
- (define_insn "casesi1"
--  [(set (pc)
--	(if_then_else
--	 (leu (minus:SI (match_operand:SI 0 "general_operand" "g")
--			(match_operand:SI 1 "general_operand" "g"))
--	      (match_operand:SI 2 "general_operand" "g"))
--	 (plus:SI (sign_extend:SI
--		   (mem:HI (plus:SI (mult:SI (minus:SI (match_dup 0)
--						       (match_dup 1))
--					     (const_int 2))
--				    (pc))))
--		  (label_ref:SI (match_operand 3 "" "")))
--	 (pc)))]
--  ""
--  "casel %0,%1,%2")
--
--;; This can arise by simplification when operand 1 is a constant int.
--(define_insn ""
--  [(set (pc)
--	(if_then_else
--	 (leu (plus:SI (match_operand:SI 0 "general_operand" "g")
--		       (match_operand:SI 1 "const_int_operand" "n"))
--	      (match_operand:SI 2 "general_operand" "g"))
--	 (plus:SI (sign_extend:SI
--		   (mem:HI (plus:SI (mult:SI (plus:SI (match_dup 0)
--						      (match_dup 1))
--					     (const_int 2))
--				    (pc))))
--		  (label_ref:SI (match_operand 3 "" "")))
--	 (pc)))]
--  ""
--  "*
--{
--  operands[1] = GEN_INT (-INTVAL (operands[1]));
--  return \"casel %0,%1,%2\";
--}")
--
--;; This can arise by simplification when the base for the case insn is zero.
--(define_insn ""
--  [(set (pc)
--	(if_then_else (leu (match_operand:SI 0 "general_operand" "g")
--			   (match_operand:SI 1 "general_operand" "g"))
--		      (plus:SI (sign_extend:SI
--				(mem:HI (plus:SI (mult:SI (match_dup 0)
--							  (const_int 2))
--					(pc))))
--			       (label_ref:SI (match_operand 2 "" "")))
--		      (pc)))]
-+  [(match_operand:SI 1 "const_int_operand" "n")
-+   (set (pc)
-+	(plus:SI (sign_extend:SI
-+		  (mem:HI (plus:SI (mult:SI (match_operand:SI 0 "general_operand" "g")
-+					    (const_int 2))
-+			  (pc))))
-+		 (label_ref:SI (match_operand 2 "" ""))))]
-   ""
-   "casel %0,$0,%1")
- 
-Index: gcc/cp/ChangeLog
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/cp/ChangeLog,v
-retrieving revision 1.3076.2.277
-retrieving revision 1.3076.2.281
-diff -u -r1.3076.2.277 -r1.3076.2.281
---- gcc/gcc/cp/ChangeLog	30 Sep 2004 16:44:00 -0000	1.3076.2.277
-+++ gcc/gcc/cp/ChangeLog	18 Dec 2004 20:26:04 -0000	1.3076.2.281
-@@ -1,3 +1,25 @@
-+2004-12-18  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
-+
-+	PR c++/17456
-+	* cvt.c (convert_to_void): Set expr to void_zero_node after
-+	overload failure.
-+
-+2004-12-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
-+
-+	PR c++/16806
-+	* error.c (dump_expr) [BASELINK]: Use dump_expr.
-+
-+2004-12-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
-+
-+	PR c++/17868
-+	* error.c (dump_expr): Add missing case for RDIV_EXPR.
-+
-+2004-12-09  Nathan Sidwell  <nathan@codesourcery.com>
-+
-+	PR c++/16681
-+	* init.c (build_zero_init): Build a RANGE_EXPR for an array
-+	initializer.
-+
- 2004-09-30  Release Manager
- 
- 	* GCC 3.3.5 Released.
-Index: gcc/cp/cvt.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/cp/cvt.c,v
-retrieving revision 1.126.2.4
-retrieving revision 1.126.2.5
-diff -u -r1.126.2.4 -r1.126.2.5
---- gcc/gcc/cp/cvt.c	23 Feb 2004 12:50:50 -0000	1.126.2.4
-+++ gcc/gcc/cp/cvt.c	18 Dec 2004 20:26:10 -0000	1.126.2.5
-@@ -903,6 +903,7 @@
- 	   of an overloaded function, and this is not one of them.  */
- 	pedwarn ("%s cannot resolve address of overloaded function",
- 		    implicit ? implicit : "void cast");
-+	expr = void_zero_node;
-       }
-     else if (implicit && probe == expr && is_overloaded_fn (probe))
-       /* Only warn when there is no &.  */
-Index: gcc/cp/error.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/cp/error.c,v
-retrieving revision 1.192.2.9
-retrieving revision 1.192.2.11
-diff -u -r1.192.2.9 -r1.192.2.11
---- gcc/gcc/cp/error.c	24 Jul 2004 13:03:23 -0000	1.192.2.9
-+++ gcc/gcc/cp/error.c	15 Dec 2004 16:45:23 -0000	1.192.2.11
-@@ -1724,6 +1724,7 @@
-     case CEIL_DIV_EXPR:
-     case FLOOR_DIV_EXPR:
-     case ROUND_DIV_EXPR:
-+    case RDIV_EXPR:
-       dump_binary_op ("/", t, flags);
-       break;
- 
-@@ -2070,7 +2071,7 @@
-       break;
- 
-     case BASELINK:
--      print_tree_identifier (scratch_buffer, DECL_NAME (get_first_fn (t)));
-+      dump_expr (get_first_fn (t), flags & ~TFF_EXPR_IN_PARENS);
-       break;
- 
-     case TREE_LIST:
-Index: gcc/cp/init.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/cp/init.c,v
-retrieving revision 1.299.2.18
-retrieving revision 1.299.2.19
-diff -u -r1.299.2.18 -r1.299.2.19
---- gcc/gcc/cp/init.c	28 Jul 2004 02:17:28 -0000	1.299.2.18
-+++ gcc/gcc/cp/init.c	9 Dec 2004 15:09:19 -0000	1.299.2.19
-@@ -235,7 +235,6 @@
-     }
-   else if (TREE_CODE (type) == ARRAY_TYPE)
-     {
--      tree index;
-       tree max_index;
-       tree inits;
- 
-@@ -249,15 +248,17 @@
-       /* A zero-sized array, which is accepted as an extension, will
-          have an upper bound of -1.  */
-       if (!tree_int_cst_equal (max_index, integer_minus_one_node))
--        for (index = size_zero_node;
--             !tree_int_cst_lt (max_index, index);
--             index = size_binop (PLUS_EXPR, index, size_one_node))
--          inits = tree_cons (index,
--                             build_zero_init (TREE_TYPE (type),
--                                              /*nelts=*/NULL_TREE,
--                                              static_storage_p),
--                             inits);
--         CONSTRUCTOR_ELTS (init) = nreverse (inits);
-+ 	{
-+ 	  tree elt_init = build_zero_init (TREE_TYPE (type),
-+ 					   /*nelts=*/NULL_TREE,
-+ 					   static_storage_p);
-+ 	  tree range = build (RANGE_EXPR,
-+			      sizetype, size_zero_node, max_index);
-+ 	  
-+ 	  inits = tree_cons (range, elt_init, inits);
-+ 	}
-+       
-+      CONSTRUCTOR_ELTS (init) = nreverse (inits);
-     }
-   else if (TREE_CODE (type) == REFERENCE_TYPE)
-     ;
-Index: gcc/doc/install.texi
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/doc/install.texi,v
-retrieving revision 1.151.2.53
-retrieving revision 1.151.2.56
-diff -u -r1.151.2.53 -r1.151.2.56
---- gcc/gcc/doc/install.texi	8 May 2004 17:37:31 -0000	1.151.2.53
-+++ gcc/gcc/doc/install.texi	14 Oct 2004 12:31:38 -0000	1.151.2.56
-@@ -3098,8 +3098,19 @@
- @file{/usr/bin} before @file{/usr/xpg4/bin} for the duration of the build.
- 
- All releases of GNU binutils prior to 2.11.2 have known bugs on this
--platform.  We recommend the use of GNU binutils 2.11.2 or the vendor
--tools (Sun @command{as}, Sun @command{ld}).
-+platform.  We recommend the use of GNU binutils 2.11.2 or later, or the
-+vendor tools (Sun @command{as}, Sun @command{ld}).  Note that your mileage
-+may vary if you use a combination of the GNU tools and the Sun tools: while
-+the combination GNU @command{as} + Sun @command{ld} should reasonably work,
-+the reverse combination Sun @command{as} + GNU @command{ld} is known to
-+cause memory corruption at runtime in some cases for C++ programs.
-+
-+The stock GNU binutils 2.15 release is broken on this platform because of a
-+single bug.  It has been fixed on the 2.15 branch in the CVS repository.
-+You can obtain a working version by checking out the binutils-2_15-branch
-+from the CVS repository or applying the patch
-+@uref{http://sources.redhat.com/ml/binutils-cvs/2004-09/msg00036.html} to the
-+release.
- 
- Sun bug 4296832 turns up when compiling X11 headers with GCC 2.95 or
- newer: @command{g++} will complain that types are missing.  These headers assume
-@@ -3115,6 +3126,17 @@
- 108377-20 for Intel), and Solaris 8 (108652-24 or newer for SPARC,
- 108653-22 for Intel) that fix this bug.
- 
-+Sun bug 4927647 sometimes causes random spurious testsuite failures
-+related to missing diagnostic output.  This bug doesn't affect GCC
-+itself, rather it is a kernel bug triggered by the @command{expect}
-+program which is used only by the GCC testsuite driver.  When the bug
-+causes the @command{expect} program to miss anticipated output, extra
-+testsuite failures appear.
-+
-+There are patches for Solaris 8 (117350-12 or newer for SPARC,
-+117351-12 or newer for Intel) and Solaris 9 (117171-11 or newer for
-+SPARC, 117172-11 or newer for Intel) that address this problem.
-+
- @html
- <hr />
- @end html
-Index: gcc/doc/tm.texi
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/doc/tm.texi,v
-retrieving revision 1.182.2.8
-retrieving revision 1.182.2.9
-diff -u -r1.182.2.8 -r1.182.2.9
---- gcc/gcc/doc/tm.texi	5 Mar 2004 17:55:57 -0000	1.182.2.8
-+++ gcc/gcc/doc/tm.texi	14 Oct 2004 06:54:32 -0000	1.182.2.9
-@@ -4160,7 +4160,7 @@
- @end table
- 
- @findex TARGET_ASM_OUTPUT_MI_THUNK
--@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_MI_THUNK (FILE *@var{file}, tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, tree @var{function})
-+@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_MI_THUNK (FILE *@var{file}, tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, HOST_WIDE_INT @var{vcall_offset}, tree @var{function})
- A function that outputs the assembler code for a thunk
- function, used to implement C++ virtual function calls with multiple
- inheritance.  The thunk acts as a wrapper around a virtual function,
-@@ -4174,7 +4174,15 @@
- e.g.@: @samp{%o0} on a sparc.  The addition must preserve the values of
- all other incoming arguments.
- 
--After the addition, emit code to jump to @var{function}, which is a
-+Then, if @var{vcall_offset} is nonzero, an additional adjustment should be
-+made after adding @code{delta}.  In particular, if @var{p} is the
-+adjusted pointer, the following adjustment should be made:
-+
-+@smallexample
-+p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
-+@end smallexample
-+
-+After the additions, emit code to jump to @var{function}, which is a
- @code{FUNCTION_DECL}.  This is a direct pure jump, not a call, and does
- not touch the return address.  Hence returning from @var{FUNCTION} will
- return to whoever called the current @samp{thunk}.
-@@ -4194,21 +4202,13 @@
- not support varargs.
- @end deftypefn
- 
--@findex TARGET_ASM_OUTPUT_MI_VCALL_THUNK
--@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_MI_VCALL_THUNK (FILE *@var{file}, tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, int @var{vcall_offset}, tree @var{function})
--A function like @code{TARGET_ASM_OUTPUT_MI_THUNK}, except that if
--@var{vcall_offset} is nonzero, an additional adjustment should be made
--after adding @code{delta}.  In particular, if @var{p} is the
--adjusted pointer, the following adjustment should be made:
--
--@example
--p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
--@end example
--
--@noindent
--If this function is defined, it will always be used in place of
--@code{TARGET_ASM_OUTPUT_MI_THUNK}.
--
-+@findex TARGET_ASM_CAN_OUTPUT_MI_THUNK
-+@deftypefn {Target Hook} bool TARGET_ASM_CAN_OUTPUT_MI_THUNK (tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, HOST_WIDE_INT @var{vcall_offset}, tree @var{function})
-+A function that returns true if TARGET_ASM_OUTPUT_MI_THUNK would be able
-+to output the assembler code for the thunk function specified by the
-+arguments it is passed, and false otherwise.  In the latter case, the
-+generic approach will be used by the C++ front end, with the limitations
-+previously exposed.
- @end deftypefn
- 
- @node Profiling
-Index: gcc/testsuite/ChangeLog
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/testsuite/ChangeLog,v
-retrieving revision 1.2261.2.384
-retrieving revision 1.2261.2.398
-diff -u -r1.2261.2.384 -r1.2261.2.398
---- gcc/gcc/testsuite/ChangeLog	30 Sep 2004 16:45:41 -0000	1.2261.2.384
-+++ gcc/gcc/testsuite/ChangeLog	23 Jan 2005 05:16:05 -0000	1.2261.2.398
-@@ -1,3 +1,78 @@
-+2005-01-22  Roger Sayle  <roger@eyesopen.com>
-+
-+	PR target/18402
-+	Backport from mainline
-+	2003-02-05  Jakub Jelinek  <jakub@redhat.com>
-+ 
-+ 	PR optimization/8555
-+	* gcc.dg/20030204-1.c: New test.
-+
-+2005-01-21  Giovanni Bajo  <giovannibajo@gcc.gnu.org>
-+
-+	PR c++/17115
-+	* g++.dg/warn/Winline-4.C: New test.
-+
-+2005-01-18  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	* gcc.dg/short-compare-1.c: New test.
-+	* gcc.dg/short-compare-2.c: Likewise.
-+
-+2005-01-03  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
-+
-+	Backport:
-+	2003-10-13  Geoffrey Keating  <geoffk@apple.com>
-+
-+	* gcc.dg/asm-names.c: Use scan-assembler-not rather
-+	than linker trickery.
-+
-+2005-01-02  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
-+
-+	* gcc.c-torture/execute/20020720-1.x: XFAIL for x86 when using
-+	-fpic or -fPIC.
-+
-+2004-12-21  Joseph S. Myers  <jsm@polyomino.org.uk>
-+
-+	PR c/14765
-+	* gcc.dg/pr14765-1.c: New test.
-+
-+2004-12-20  Andrew Pinski  <pinskia@physics.uc.edu>
-+
-+	PR other/19093
-+	* g++.dg/opt/max1.C: Fix for 64bit targets.
-+
-+2004-12-19  Roger Sayle  <roger@eyesopen.com>
-+
-+	PR middle-end/19068
-+	* g++.dg/opt/max1.C: New test case.
-+
-+2004-12-16  Wolfgang Bangerth  <bangerth@dealii.com>
-+
-+	* g++.dg/other/complex1.C: New test.
-+
-+2004-12-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
-+
-+	PR rtl-optimization/16536
-+	* gcc.c-torture/execute/restrict-1.c: New test.
-+
-+2004-12-09  Nathan Sidwell  <nathan@codesourcery.com>
-+
-+	PR c++/16681
-+	* g++.dg/init/array15.C: New.
-+	* g++.dg/init/array16.C: New.
-+
-+2004-11-29  Roger Sayle  <roger@eyesopen.com>
-+
-+	PR rtl-optimization/9771
-+	* gcc.dg/pr9771-1.c: New test case.
-+
-+2004-11-27  Falk Hueffner  <falk@debian.org>
-+
-+	* gcc.dg/loop-6.c: New test.
-+
-+2004-10-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
-+
-+	* g++.dg/inherit/thunk1.C: Run on the SPARC.
-+
- 2004-09-30  Release Manager
- 
- 	* GCC 3.3.5 Released.
-Index: gcc/testsuite/g++.dg/inherit/thunk1.C
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/testsuite/g++.dg/inherit/thunk1.C,v
-retrieving revision 1.5
-retrieving revision 1.5.12.1
-diff -u -r1.5 -r1.5.12.1
---- gcc/gcc/testsuite/g++.dg/inherit/thunk1.C	24 Oct 2002 09:16:36 -0000	1.5
-+++ gcc/gcc/testsuite/g++.dg/inherit/thunk1.C	14 Oct 2004 06:54:49 -0000	1.5.12.1
-@@ -1,4 +1,4 @@
--// { dg-do run { target i?86-*-* x86_64-*-* s390*-*-* alpha*-*-* ia64-*-* } }
-+// { dg-do run { target i?86-*-* x86_64-*-* s390*-*-* alpha*-*-* ia64-*-* sparc*-*-* } }
- 
- #include <stdarg.h>
- 
-Index: gcc/testsuite/g++.dg/init/array15.C
-===================================================================
-RCS file: gcc/testsuite/g++.dg/init/array15.C
-diff -N gcc/testsuite/g++.dg/init/array15.C
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/g++.dg/init/array15.C	9 Dec 2004 15:09:32 -0000	1.1.6.1
-@@ -0,0 +1,46 @@
-+// { dg-do run }
-+
-+// Copyright (C) 2004 Free Software Foundation, Inc.
-+// Contributed by Nathan Sidwell 8 Dec 2004 <nathan@codesourcery.com>
-+
-+// PR 16681 too much memory used
-+// Origin:  Matt LaFary <lafary@activmedia.com>
-+
-+struct foo {
-+  unsigned char buffer[4111222];
-+  foo() ;
-+  bool check () const;
-+};
-+
-+foo::foo ()
-+  : buffer()
-+{}
-+
-+bool foo::check () const
-+{
-+  for (unsigned ix = sizeof (buffer); ix--;)
-+    if (buffer[ix])
-+      return false;
-+  return true;
-+}
-+
-+void *operator new (__SIZE_TYPE__ size, void *p)
-+{
-+  return p;
-+}
-+
-+char heap[5000000];
-+
-+int main ()
-+{
-+  for (unsigned ix = sizeof (heap); ix--;)
-+    heap[ix] = ix;
-+  
-+  foo *f = new (heap) foo ();
-+
-+  if (!f->check ())
-+    return 1;
-+  return 0;
-+}
-+
-+  
-Index: gcc/testsuite/g++.dg/init/array16.C
-===================================================================
-RCS file: gcc/testsuite/g++.dg/init/array16.C
-diff -N gcc/testsuite/g++.dg/init/array16.C
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/g++.dg/init/array16.C	9 Dec 2004 15:09:32 -0000	1.1.6.1
-@@ -0,0 +1,106 @@
-+// { dg-do run }
-+
-+// Copyright (C) 2004 Free Software Foundation, Inc.
-+// Contributed by Nathan Sidwell 8 Dec 2004 <nathan@codesourcery.com>
-+
-+// PR 16681 too much memory used
-+// Origin:  Matt LaFary <lafary@activmedia.com>
-+
-+
-+struct elt 
-+{
-+  static int count;
-+  static elt*ptr;
-+  static int abort;
-+  char c;
-+  
-+  elt ();
-+  ~elt ();
-+  
-+};
-+
-+int elt::count;
-+elt *elt::ptr;
-+int elt::abort;
-+
-+elt::elt ()
-+  :c ()
-+{
-+  if (count >= 0)
-+    {
-+      if (!ptr)
-+	ptr = this;
-+      if (count == 100)
-+	throw 2;
-+      if (this != ptr)
-+	abort = 1;
-+      count++;
-+      ptr++;
-+    }
-+}
-+
-+elt::~elt ()
-+{
-+  if (count >= 0)
-+    {
-+      ptr--;
-+      count--;
-+      if (ptr != this)
-+	abort = 2;
-+    }
-+}
-+
-+struct foo {
-+  elt buffer[4111222];
-+  foo() ;
-+  bool check () const;
-+};
-+
-+foo::foo ()
-+  : buffer()
-+{}
-+
-+bool foo::check () const
-+{
-+  for (unsigned ix = sizeof (buffer)/ sizeof (buffer[0]); ix--;)
-+    if (buffer[ix].c)
-+      return false;
-+  return true;
-+}
-+
-+void *operator new (__SIZE_TYPE__ size, void *p)
-+{
-+  return p;
-+}
-+
-+char heap[5000000];
-+
-+int main ()
-+{
-+  for (unsigned ix = sizeof (heap); ix--;)
-+    heap[ix] = ix;
-+
-+  try
-+    {
-+      foo *f = new (heap) foo ();
-+      return 1;
-+    }
-+  catch (...)
-+    {
-+      if (elt::count)
-+	return 2;
-+      if (elt::abort)
-+	return elt::abort + 3;
-+    }
-+
-+  for (unsigned ix = sizeof (heap); ix--;)
-+    heap[ix] = ix;
-+
-+  elt::count = -1;
-+  foo *f = new (heap) foo ();
-+  if (!f->check ())
-+    return 3;
-+  return 0;
-+}
-+
-+  
-Index: gcc/testsuite/g++.dg/opt/max1.C
-===================================================================
-RCS file: gcc/testsuite/g++.dg/opt/max1.C
-diff -N gcc/testsuite/g++.dg/opt/max1.C
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/g++.dg/opt/max1.C	20 Dec 2004 21:12:34 -0000	1.2.2.2
-@@ -0,0 +1,29 @@
-+/* PR middle-end/19068 */
-+/* Test case by Andrew Pinski <pinskia@physics.uc.edu> */
-+/* { dg-do run } */
-+/* { dg-options "-O2" } */
-+
-+extern "C" void abort (void);
-+
-+long fff[10];
-+
-+void f(long a)
-+{
-+  int i;
-+  a =  *((long*)(a+1+sizeof(long))) >? *((long*)(a+1)); 
-+
-+  for(i=0;i<10;i++)
-+   fff[i] = a;
-+}
-+
-+int main(void)
-+{
-+  int i;
-+  long a[2] = {10,5};
-+  f((long)(&a)-1);
-+  for(i = 0;i<10;i++)
-+   if (fff[i]!=10)
-+    abort ();
-+  return 0;
-+}
-+
-Index: gcc/testsuite/g++.dg/other/complex1.C
-===================================================================
-RCS file: gcc/testsuite/g++.dg/other/complex1.C
-diff -N gcc/testsuite/g++.dg/other/complex1.C
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/g++.dg/other/complex1.C	16 Dec 2004 14:04:52 -0000	1.1.4.1
-@@ -0,0 +1,28 @@
-+// PR middle-end/18882
-+// Origin: Petr Mikulik <mikulik@physics.muni.cz>
-+// Testcase by Wolfgang Bangerth <bangerth@dealii.com>
-+
-+// { dg-do run }
-+// { dg-options "" }
-+
-+extern "C" void abort ();
-+
-+struct C {
-+  __complex__ long double c; 
-+};
-+
-+void foo()
-+{ 
-+  C x = {2+2i}; 
-+
-+  int n = 1; 
-+  C y = (n==1) ? x : (C){3+3i}; 
-+  if (__imag__ y.c != 2) 
-+    abort (); 
-+}
-+
-+int main(void)
-+{
-+  foo ();
-+  return 0;
-+}
-Index: gcc/testsuite/g++.dg/warn/Winline-4.C
-===================================================================
-RCS file: gcc/testsuite/g++.dg/warn/Winline-4.C
-diff -N gcc/testsuite/g++.dg/warn/Winline-4.C
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/g++.dg/warn/Winline-4.C	21 Jan 2005 10:02:30 -0000	1.1.42.1
-@@ -0,0 +1,17 @@
-+// { dg-do compile }
-+// { dg-options "-O2 -Winline" }
-+// Origin: <markus at oberhumer dot com>
-+// PR 17115: We should not emit -Winline warning for functions marked with
-+//  noinline
-+
-+struct Foo {
-+  __attribute__((noinline)) int a(int r) { return r & 1; }
-+  virtual __attribute__((noinline)) int b(int r) { return r & 1; }
-+  static  __attribute__((noinline)) int c(int r) { return r & 1; }
-+};
-+
-+int bar(int r) {
-+  Foo f;
-+  int k = 1; k &= f.a(r); k &= f.b(r); k &= f.a(r);
-+  return k;
-+}
-Index: gcc/testsuite/gcc.c-torture/execute/20020720-1.x
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20020720-1.x,v
-retrieving revision 1.8.6.2
-retrieving revision 1.8.6.3
-diff -u -r1.8.6.2 -r1.8.6.3
---- gcc/gcc/testsuite/gcc.c-torture/execute/20020720-1.x	8 Mar 2003 14:34:06 -0000	1.8.6.2
-+++ gcc/gcc/testsuite/gcc.c-torture/execute/20020720-1.x	3 Jan 2005 01:43:45 -0000	1.8.6.3
-@@ -11,6 +11,19 @@
- #     and can make the optimization.
- 
- # Don't XFAIL at -O0, that should never fail.
-+if { [istarget "i?86-*-*"] } {
-+    set torture_eval_before_compile {
-+        global compiler_conditional_xfail_data
-+        set compiler_conditional_xfail_data {
-+            "PR opt/10348" \
-+            { "*-*-*" } \
-+            { "-fpic" "-fPIC" } \
-+            { "-O0" }
-+        }
-+    }
-+    return 0
-+}
-+
- set torture_eval_before_compile {
-     global compiler_conditional_xfail_data
-     set compiler_conditional_xfail_data {
-Index: gcc/testsuite/gcc.c-torture/execute/restrict-1.c
-===================================================================
-RCS file: gcc/testsuite/gcc.c-torture/execute/restrict-1.c
-diff -N gcc/testsuite/gcc.c-torture/execute/restrict-1.c
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/gcc.c-torture/execute/restrict-1.c	10 Dec 2004 17:25:07 -0000	1.2.44.1
-@@ -0,0 +1,30 @@
-+/*  PR rtl-optimization/16536
-+    Origin:  Jeremy Denise      <jeremy.denise@libertysurf.fr>
-+    Reduced: Wolfgang Bangerth  <bangerth@dealii.org>
-+             Volker Reichelt    <reichelt@igpm.rwth-aachen.de>  */
-+
-+extern void abort ();
-+
-+typedef struct
-+{
-+  int i, dummy;
-+} A;
-+
-+inline A foo (const A* p, const A* q)
-+{
-+  return (A){p->i+q->i};
-+}
-+
-+void bar (A* __restrict__ p)
-+{
-+  *p=foo(p,p);
-+  if (p->i!=2)
-+    abort();
-+}
-+
-+int main ()
-+{
-+  A a={1};
-+  bar(&a);
-+  return 0;
-+}
-Index: gcc/testsuite/gcc.dg/20030204-1.c
-===================================================================
-RCS file: gcc/testsuite/gcc.dg/20030204-1.c
-diff -N gcc/testsuite/gcc.dg/20030204-1.c
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/gcc.dg/20030204-1.c	23 Jan 2005 05:16:14 -0000	1.3.6.1
-@@ -0,0 +1,16 @@
-+/* PR optimization/8555 */
-+/* { dg-do compile } */
-+/* { dg-options "-O -ffast-math -funroll-loops" } */
-+/* { dg-options "-march=pentium3 -O -ffast-math -funroll-loops" { target i?86-*-* } } */
-+
-+float foo (float *a, int i)
-+{
-+  int j;
-+  float x = a[j = i - 1], y;
-+
-+  for (j = i; --j >= 0; )
-+    if ((y = a[j]) > x)
-+      x = y;
-+
-+  return x;
-+}
-Index: gcc/testsuite/gcc.dg/asm-names.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/testsuite/gcc.dg/asm-names.c,v
-retrieving revision 1.2
-retrieving revision 1.2.44.1
-diff -u -r1.2 -r1.2.44.1
---- gcc/gcc/testsuite/gcc.dg/asm-names.c	27 Aug 2001 19:23:11 -0000	1.2
-+++ gcc/gcc/testsuite/gcc.dg/asm-names.c	4 Jan 2005 00:20:35 -0000	1.2.44.1
-@@ -2,26 +2,15 @@
-    to have an underscore prefixed, even if normal symbols are.
-    Problem reported by Krister Walfridsson <cato@df.lth.se>.  */
- 
--/* { dg-do link } */
-+/* { dg-do compile } */
- /* { dg-options "-fleading-underscore" } */
-+/* { dg-final { scan-assembler-not "____frob14" } } */
- 
- extern void frobnicate (void) asm ("___frob14");  /* three underscores */
- 
--void __frob14 (void) {} /* two underscores */
--
- int
- main (void)
- {
-   frobnicate ();
-   return 0;
- }
--
--/* In case built where the runtime expects no leading underscore on
--   main(). */
--extern int xmain (void) asm ("main");
--
--int xmain (void) { return main(); }
--
--/* In case built where the runtime calls __main.  */
--extern int ymain (void) asm ("___main");
--int ymain (void) { return main(); }
-Index: gcc/testsuite/gcc.dg/loop-6.c
-===================================================================
-RCS file: gcc/testsuite/gcc.dg/loop-6.c
-diff -N gcc/testsuite/gcc.dg/loop-6.c
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/gcc.dg/loop-6.c	27 Nov 2004 16:59:16 -0000	1.1.4.1
-@@ -0,0 +1,25 @@
-+/* PR optimization/18577 */
-+/* Origin: Falk Hueffner <falk@debian.org> */
-+
-+/* { dg-do run } */
-+/* { dg-options "-O2 -funroll-all-loops" } */
-+
-+static float tfcos12[3];
-+__attribute__((noinline)) double f(double x) { return x; }
-+int g;
-+
-+int main(void)
-+{
-+  int i, j;
-+  for (i = 0; i < 1; i++) 
-+    tfcos12[i] = 0.5;
-+    
-+  for (i = 0; i < 1; i++)
-+    {
-+      tfcos12[i] = 0.5 * f(i);
-+      for (j = 0; j < 12; j++)
-+	g++;
-+    }
-+
-+  return 0;
-+}
-Index: gcc/testsuite/gcc.dg/pr14765-1.c
-===================================================================
-RCS file: gcc/testsuite/gcc.dg/pr14765-1.c
-diff -N gcc/testsuite/gcc.dg/pr14765-1.c
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/gcc.dg/pr14765-1.c	21 Dec 2004 21:51:29 -0000	1.1.48.1
-@@ -0,0 +1,11 @@
-+/* Empty statement expressions should get void type.  Bug 14765 from
-+   Serge Belyshev <belyshev@lubercy.com>.  */
-+/* { dg-do compile } */
-+/* { dg-options "" } */
-+
-+int a;
-+void fun ()
-+{
-+	a = 0;
-+	a = ({}); /* { dg-error "not ignored" "void stmt expr" } */
-+}
-Index: gcc/testsuite/gcc.dg/pr9771-1.c
-===================================================================
-RCS file: gcc/testsuite/gcc.dg/pr9771-1.c
-diff -N gcc/testsuite/gcc.dg/pr9771-1.c
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/gcc.dg/pr9771-1.c	30 Nov 2004 04:34:21 -0000	1.1.44.1
-@@ -0,0 +1,43 @@
-+/* PR rtl-optimization/9771 */
-+/* { dg-do run { target i?86-*-* } } */
-+/* { dg-options "-O2 -fomit-frame-pointer -ffixed-ebp" } */
-+
-+extern void abort(void);
-+extern void exit(int);
-+
-+register long *B asm ("ebp");
-+
-+long x = 10;
-+long y = 20;
-+
-+void bar(void)
-+{
-+  B = &y;
-+}
-+
-+void foo()
-+{
-+  long *adr = B;
-+  long save = *adr;
-+
-+  *adr = 123;
-+
-+  bar();
-+
-+  *adr = save;
-+}
-+
-+int main()
-+{
-+  B = &x;
-+
-+  foo();
-+
-+  if (x != 10 || y != 20)
-+    abort();
-+
-+  /* We can't return, as our caller may assume %ebp is preserved!  */
-+  /* We could save/restore it (like foo), but its easier to exit.  */
-+  exit(0);
-+}
-+
-Index: gcc/testsuite/gcc.dg/short-compare-1.c
-===================================================================
-RCS file: gcc/testsuite/gcc.dg/short-compare-1.c
-diff -N gcc/testsuite/gcc.dg/short-compare-1.c
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/gcc.dg/short-compare-1.c	18 Jan 2005 08:39:29 -0000	1.1.4.1
-@@ -0,0 +1,21 @@
-+/* PR rtl-optimization/19296 */
-+/* Origin: Falk Hueffner <falk@debian.org> */
-+
-+/* { dg-do run } */
-+/* { dg-options "-O" } */
-+/* { dg-options "-O -mcpu=i686" { target i?86-*-* } } */
-+/* { dg-options "-O -m32 -mcpu=i686" { target x86_64-*-* } } */
-+
-+extern void abort(void);
-+
-+void f(unsigned short ad)
-+{
-+  if (ad >= 0x4000 && ad < 0xc000) 
-+    abort();
-+}
-+
-+int main(void)
-+{
-+  f(0xff00); 
-+  return 0;
-+}
-Index: gcc/testsuite/gcc.dg/short-compare-2.c
-===================================================================
-RCS file: gcc/testsuite/gcc.dg/short-compare-2.c
-diff -N gcc/testsuite/gcc.dg/short-compare-2.c
---- gcc//dev/null	1 Jan 1970 00:00:00 -0000
-+++ gcc/gcc/testsuite/gcc.dg/short-compare-2.c	18 Jan 2005 08:39:29 -0000	1.1.4.1
-@@ -0,0 +1,22 @@
-+/* PR rtl-optimization/19296 */
-+/* Origin: Falk Hueffner <falk@debian.org> */
-+/* Testcase by Andrew Pinski <pinskia@gcc.gnu.org> */
-+
-+/* { dg-do run } */
-+/* { dg-options "-O" } */
-+/* { dg-options "-O -mcpu=i686" { target i?86-*-* } } */
-+/* { dg-options "-O -m32 -mcpu=i686" { target x86_64-*-* } } */
-+
-+extern void abort();
-+
-+void f(unsigned short ad)
-+{
-+  if ((short) (ad - 0x4000) >= 0)
-+    abort();
-+}
-+
-+int main(void)
-+{
-+  f(0xc000);
-+  return 0;
-+}
-Index: libstdc++-v3/ChangeLog
-===================================================================
-RCS file: /cvs/gcc/gcc/libstdc++-v3/ChangeLog,v
-retrieving revision 1.1464.2.192
-retrieving revision 1.1464.2.195
-diff -u -r1.1464.2.192 -r1.1464.2.195
---- gcc/libstdc++-v3/ChangeLog	30 Sep 2004 16:47:23 -0000	1.1464.2.192
-+++ gcc/libstdc++-v3/ChangeLog	21 Jan 2005 23:52:45 -0000	1.1464.2.195
-@@ -1,3 +1,18 @@
-+2005-01-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
-+
-+	PR libstdc++/19510
-+	* include/bits/stl_list.h (_List_iterator_base): Initialize _M_node
-+	in constructor.
-+	(_List_iterator): Initialize _List_iterator_base in constructor.
-+	* include/bits/stl_tree.h (_Rb_tree_iterator): Initialize _M_node
-+	in constructor.
-+
-+2004-12-03  Richard Henderson  <rth@redhat.com>
-+
-+	PR 17856
-+	* config/cpu/i486/atomicity.h (__exchange_and_add, __atomic_add):
-+	Split in-out memory constraints.
-+
- 2004-09-30  Release Manager
- 
- 	* GCC 3.3.5 Released.
-Index: libstdc++-v3/config/cpu/i486/atomicity.h
-===================================================================
-RCS file: /cvs/gcc/gcc/libstdc++-v3/config/cpu/i486/atomicity.h,v
-retrieving revision 1.1.22.1
-retrieving revision 1.1.22.2
-diff -u -r1.1.22.1 -r1.1.22.2
---- gcc/libstdc++-v3/config/cpu/i486/atomicity.h	2 Jun 2003 18:48:52 -0000	1.1.22.1
-+++ gcc/libstdc++-v3/config/cpu/i486/atomicity.h	3 Dec 2004 23:44:07 -0000	1.1.22.2
-@@ -1,6 +1,6 @@
- // Low-level functions for atomic operations: x86, x >= 4 version  -*- C++ -*-
- 
--// Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
-+// Copyright (C) 1999, 2000, 2001, 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
-@@ -38,8 +38,8 @@
- {
-   register _Atomic_word __result;
-   __asm__ __volatile__ ("lock; xadd{l} {%0,%1|%1,%0}"
--			: "=r" (__result), "+m" (*__mem) 
--                        : "0" (__val)
-+			: "=r" (__result), "=m" (*__mem) 
-+                        : "0" (__val), "m"(*__mem)
-                         : "memory");
-   return __result;
- }
-@@ -49,7 +49,9 @@
- __atomic_add (volatile _Atomic_word* __mem, int __val)
- {
-   __asm__ __volatile__ ("lock; add{l} {%1,%0|%0,%1}"
--			: "+m" (*__mem) : "ir" (__val) : "memory");
-+			: "=m" (*__mem)
-+			: "ir" (__val), "m"(*__mem)
-+			: "memory");
- }
- 
- #endif /* atomicity.h */
-Index: libstdc++-v3/include/bits/c++config
-===================================================================
-RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/c++config,v
-retrieving revision 1.574.2.657
-retrieving revision 1.574.2.779
-diff -u -r1.574.2.657 -r1.574.2.779
---- gcc/libstdc++-v3/include/bits/c++config	30 Sep 2004 00:16:09 -0000	1.574.2.657
-+++ gcc/libstdc++-v3/include/bits/c++config	30 Jan 2005 00:16:14 -0000	1.574.2.779
-@@ -35,7 +35,7 @@
- #include <bits/os_defines.h>
- 
- // The current version of the C++ library in compressed ISO date format.
--#define __GLIBCPP__ 20040930
-+#define __GLIBCPP__ 20050130
- 
- // This is necessary until GCC supports separate template compilation.
- #define _GLIBCPP_NO_TEMPLATE_EXPORT 1
-Index: libstdc++-v3/include/bits/stl_list.h
-===================================================================
-RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_list.h,v
-retrieving revision 1.20
-retrieving revision 1.20.8.1
-diff -u -r1.20 -r1.20.8.1
---- gcc/libstdc++-v3/include/bits/stl_list.h	10 Sep 2002 23:19:10 -0000	1.20
-+++ gcc/libstdc++-v3/include/bits/stl_list.h	21 Jan 2005 23:52:48 -0000	1.20.8.1
-@@ -1,6 +1,6 @@
- // List implementation -*- C++ -*-
- 
--// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+// Copyright (C) 2001, 2002, 2005 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
-@@ -108,6 +108,7 @@
-     { }
-   
-     _List_iterator_base()
-+    : _M_node()
-     { }
-   
-     /// Walk the %list forward.
-@@ -156,6 +157,7 @@
-     { }
-   
-     _List_iterator()
-+    : _List_iterator_base()
-     { }
-   
-     _List_iterator(const iterator& __x)
-Index: libstdc++-v3/include/bits/stl_tree.h
-===================================================================
-RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/stl_tree.h,v
-retrieving revision 1.17
-retrieving revision 1.17.2.1
-diff -u -r1.17 -r1.17.2.1
---- gcc/libstdc++-v3/include/bits/stl_tree.h	22 Nov 2002 18:53:53 -0000	1.17
-+++ gcc/libstdc++-v3/include/bits/stl_tree.h	21 Jan 2005 23:52:49 -0000	1.17.2.1
-@@ -1,6 +1,6 @@
- // RB tree implementation -*- C++ -*-
- 
--// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+// Copyright (C) 2001, 2002, 2005 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
-@@ -191,7 +191,7 @@
-       typedef _Rb_tree_iterator<_Val, _Ref, _Ptr> _Self;
-       typedef _Rb_tree_node<_Val>* _Link_type;
-       
--      _Rb_tree_iterator() {}
-+      _Rb_tree_iterator() { _M_node = 0; }
-       _Rb_tree_iterator(_Link_type __x) { _M_node = __x; }
-       _Rb_tree_iterator(const iterator& __it) { _M_node = __it._M_node; }
- 
Index: toolchain/gcc/3.3.5/specs-arm-soft-float
===================================================================
--- toolchain/gcc/3.3.5/specs-arm-soft-float	(revision 20005)
+++ toolchain/gcc/3.3.5/specs-arm-soft-float	(working copy)
@@ -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*} }}}}}}
-
Index: toolchain/gcc/3.3.5/specs-powerpc-soft-float
===================================================================
--- toolchain/gcc/3.3.5/specs-powerpc-soft-float	(revision 20005)
+++ toolchain/gcc/3.3.5/specs-powerpc-soft-float	(working copy)
@@ -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*} }}}}}}
-
Index: toolchain/gcc/3.3.5/820-no-mips-empic-relocs.patch
===================================================================
--- toolchain/gcc/3.3.5/820-no-mips-empic-relocs.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/820-no-mips-empic-relocs.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.3.5/500-loop.patch
===================================================================
--- toolchain/gcc/3.3.5/500-loop.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/500-loop.patch	(working copy)
@@ -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.  */
Index: toolchain/gcc/3.3.5/830-gcc-bug-num-22167.patch
===================================================================
--- toolchain/gcc/3.3.5/830-gcc-bug-num-22167.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/830-gcc-bug-num-22167.patch	(working copy)
@@ -1,16 +0,0 @@
-Index: gcc/gcse.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/gcse.c,v
-retrieving revision 1.288.2.9
-diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.288.2.9 gcse.c
---- gcc/gcc/gcse.c	30 Oct 2004 18:02:53 -0000	1.288.2.9
-+++ gcc/gcc/gcse.c	14 Jul 2005 13:19:57 -0000
-@@ -6445,7 +6445,7 @@ hoist_code (void)
- 	  insn_inserted_p = 0;
- 
- 	  /* These tests should be the same as the tests above.  */
--	  if (TEST_BIT (hoist_vbeout[bb->index], i))
-+	  if (TEST_BIT (hoist_exprs[bb->index], i))
- 	    {
- 	      /* We've found a potentially hoistable expression, now
- 		 we look at every block BB dominates to see if it
Index: toolchain/gcc/3.3.5/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/3.3.5/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/3.3.5/200-uclibc-locale.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.4.4/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/3.4.4/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/100-uclibc-conf.patch	(working copy)
@@ -1,470 +0,0 @@
---- gcc-3.4.1/gcc/config/t-linux-uclibc
-+++ gcc-3.4.1/gcc/config/t-linux-uclibc
-@@ -0,0 +1,5 @@
-+# Remove glibc specific files added in t-linux
-+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
-+
-+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
-+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
---- gcc-3.4.1/gcc/config.gcc
-+++ gcc-3.4.1/gcc/config.gcc
-@@ -2310,10 +2310,16 @@
- *)
- 	echo "*** Configuration ${target} not supported" 1>&2
- 	exit 1
- 	;;
- esac
-+
-+# Rather than hook into each target, just do it after all the linux
-+# targets have been processed
-+case ${target} in
-+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
-+esac
- 
- # Support for --with-cpu and related options (and a few unrelated options,
- # too).
- case ${with_cpu} in
-   yes | no)
---- gcc-3.4.4/gcc/config/alpha/linux-elf.h
-+++ gcc-3.4.4/gcc/config/alpha/linux-elf.h
-@@ -27,7 +27,11 @@
- #define SUBTARGET_EXTRA_SPECS \
- { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
- #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
-+#endif
- 
- #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
-   %{O*:-O3} %{!O*:-O1}						\
---- 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
-@@ -80,14 +80,19 @@
- #define ENDFILE_SPEC \
-   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC "%{h*} %{version:-v} \
-    %{b} %{Wl,*:%*} \
-    %{static:-Bstatic} \
-    %{shared:-shared} \
-    %{symbolic:-Bsymbolic} \
-    %{rdynamic:-export-dynamic} \
--   %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
-+   %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \
-    -X \
-    %{mbig-endian:-EB}" \
-    SUBTARGET_EXTRA_LINK_SPEC
---- 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 */
- 
---- 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
-@@ -110,22 +110,21 @@
- 
- #undef	LINK_SPEC
- #ifdef USE_GNULIBC_1
--#define LINK_SPEC "-m elf_i386 %{shared:-shared} \
--  %{!shared: \
--    %{!ibcs: \
--      %{!static: \
--	%{rdynamic:-export-dynamic} \
--	%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \
--	%{static:-static}}}"
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.1"
-+#else
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
- #else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
-+#endif
- #define LINK_SPEC "-m elf_i386 %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
- 	%{rdynamic:-export-dynamic} \
--	%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+	%{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
- 	%{static:-static}}}"
--#endif
- 
- /* A C statement (sans semicolon) to output to the stdio stream
-    FILE the assembler definition of uninitialized global DECL named
---- gcc-3.4.4/gcc/config/i386/linux64.h
-+++ gcc-3.4.4/gcc/config/i386/linux64.h
-@@ -54,14 +54,21 @@
-    When the -shared link option is used a final link is not being
-    done.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
--      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
-+      %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
-+      %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
-     %{static:-static}}"
- 
- #define MULTILIB_DEFAULTS { "m64" }
---- gcc-3.4.4/gcc/config/ia64/linux.h
-+++ gcc-3.4.4/gcc/config/ia64/linux.h
-@@ -37,13 +37,18 @@
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- 
---- gcc-3.4.4/gcc/config/m68k/linux.h
-+++ gcc-3.4.4/gcc/config/m68k/linux.h
-@@ -131,12 +131,17 @@
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "-m m68kelf %{shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-     %{static}}"
- 
- /* For compatibility with linux/a.out */
---- 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,14 +109,19 @@
- 
- /* Borrowed from sparc/linux.h */
- #undef LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #define LINK_SPEC \
-  "%(endian_spec) \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- #undef SUBTARGET_ASM_SPEC
---- gcc-3.4.4/gcc/config/pa/pa-linux.h
-+++ gcc-3.4.4/gcc/config/pa/pa-linux.h
-@@ -77,13 +77,18 @@
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- /* glibc's profiling functions don't need gcc to allocate counters.  */
---- 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
-@@ -69,7 +69,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}"
---- 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)     }"
- 
-@@ -1125,6 +1126,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
-@@ -1291,6 +1296,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 },			\
---- gcc-3.4.4/gcc/config/s390/linux.h
-+++ gcc-3.4.4/gcc/config/s390/linux.h
-@@ -77,6 +77,13 @@
- #define MULTILIB_DEFAULTS { "m31" }
- #endif
- 
-+#ifdef USE_UCLIBC
-+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC \
-   "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
-@@ -86,8 +93,8 @@
-       %{!static: \
- 	%{rdynamic:-export-dynamic} \
- 	%{!dynamic-linker: \
--          %{m31:-dynamic-linker /lib/ld.so.1} \
--          %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
-+          %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
-+          %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
- 
- 
- #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
---- 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,11 +73,16 @@
- #undef SUBTARGET_LINK_EMUL_SUFFIX
- #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
- #undef SUBTARGET_LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #define SUBTARGET_LINK_SPEC \
-   "%{shared:-shared} \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
--     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+     %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-    %{static:-static}"
- 
- #undef LIB_SPEC
---- gcc-3.4.4/gcc/config/sparc/linux.h
-+++ gcc-3.4.4/gcc/config/sparc/linux.h
-@@ -162,13 +162,18 @@
-         %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \
-         %{static:-static}}}"
- #else
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!mno-relax:%{!r:-relax}} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- #endif
- 
---- gcc-3.4.4/gcc/config/sparc/linux64.h
-+++ gcc-3.4.4/gcc/config/sparc/linux64.h
-@@ -167,12 +166,17 @@
-   { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
-   { "link_arch",	 LINK_ARCH_SPEC },
-     
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER  "/lib/ld-linux.so.2"
-+#endif
- #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}} \
- "
- 
---- 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]+$']
---- 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
---- 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]+$'
---- 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
Index: toolchain/gcc/3.4.4/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/3.4.4/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/300-libstdc++-pic.patch	(working copy)
@@ -1,47 +0,0 @@
-# DP: Build and install libstdc++_pic.a library.
-
---- gcc/libstdc++-v3/src/Makefile.am
-+++ gcc/libstdc++-v3/src/Makefile.am
-@@ -224,6 +224,10 @@
- 	  @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Added bits to build debug library.
- if GLIBCPP_BUILD_DEBUG
- all-local: build_debug
-
---- gcc/libstdc++-v3/src/Makefile.in
-+++ gcc/libstdc++-v3/src/Makefile.in
-@@ -585,7 +585,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -618,6 +618,7 @@
- 	distclean-tags distdir dvi dvi-am info info-am install \
- 	install-am install-data install-data-am install-data-local \
- 	install-exec install-exec-am install-info install-info-am \
-+	install-exec-local \
- 	install-man install-strip install-toolexeclibLTLIBRARIES \
- 	installcheck installcheck-am installdirs maintainer-clean \
- 	maintainer-clean-generic mostlyclean mostlyclean-compile \
-@@ -707,6 +708,11 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/3.4.4/71_all_sh-pr16665-fix.patch
===================================================================
--- toolchain/gcc/3.4.4/71_all_sh-pr16665-fix.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/71_all_sh-pr16665-fix.patch	(working copy)
@@ -1,43 +0,0 @@
---- gcc/gcc/config/sh/sh.c
-+++ gcc/gcc/config/sh/sh.c
-@@ -9106,6 +9106,15 @@ sh_output_mi_thunk (FILE *file, tree thu
-     }
-   this = FUNCTION_ARG (cum, Pmode, ptr_type_node, 1);
- 
-+  /* In PIC case, we set PIC register to compute the target address.  We
-+     can use a scratch register to save and restore the original value  
-+     except for SHcompact.  For SHcompact, use stack.  */
-+  if (flag_pic && TARGET_SHCOMPACT)
-+    {
-+      push (PIC_OFFSET_TABLE_REGNUM);
-+      emit_insn (gen_GOTaddr2picreg ());
-+    }
-+
-   /* For SHcompact, we only have r0 for a scratch register: r1 is the
-      static chain pointer (even if you can't have nested virtual functions
-      right now, someone might implement them sometime), and the rest of the
-@@ -9188,8 +9197,24 @@ sh_output_mi_thunk (FILE *file, tree thu
-       assemble_external (function);
-       TREE_USED (function) = 1;
-     }
-+  /* We can use scratch1 to save and restore the original value of
-+     PIC register except for SHcompact.  */
-+  if (flag_pic && ! TARGET_SHCOMPACT)
-+    {
-+      emit_move_insn (scratch1,
-+		      gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM));
-+      emit_insn (gen_GOTaddr2picreg ());
-+    }
-   funexp = XEXP (DECL_RTL (function), 0);
-   emit_move_insn (scratch2, funexp);
-+  if (flag_pic)
-+    {
-+      if (! TARGET_SHCOMPACT)
-+	emit_move_insn (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM),
-+			scratch1);
-+      else
-+	pop (PIC_OFFSET_TABLE_REGNUM);
-+    }
-   funexp = gen_rtx_MEM (FUNCTION_MODE, scratch2);
-   sibcall = emit_call_insn (gen_sibcall (funexp, const0_rtx, NULL_RTX));
-   SIBLING_CALL_P (sibcall) = 1;
Index: toolchain/gcc/3.4.4/73_all_sh-pr20617.patch
===================================================================
--- toolchain/gcc/3.4.4/73_all_sh-pr20617.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/73_all_sh-pr20617.patch	(working copy)
@@ -1,28 +0,0 @@
-2005-03-24  J"orn Rennecke <joern.rennecke@st.com>
-
-	Band aid for PR target/20617:
-	* config/sh/lib1funcs.asm (FUNC, ALIAS): Add .hidden directive.
-
---- g/gcc/config/sh/lib1funcs.asm
-+++ g/gcc/config/sh/lib1funcs.asm
-@@ -37,9 +37,19 @@ Boston, MA 02111-1307, USA.  */
-    ELF local label prefixes by J"orn Rennecke
-    amylaar@cygnus.com  */
- 
-+#define ALIAS(X,Y)	.global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y)
-+
- #ifdef __ELF__
- #define LOCAL(X)	.L_##X
--#define FUNC(X)		.type X,@function
-+
-+#if 1 /* ??? The export list mechanism is broken, everything that is not
-+	 hidden is exported.  */
-+#undef FUNC
-+#define FUNC(X)		.type X,@function; .hidden X
-+#undef ALIAS
-+#define ALIAS(X,Y)	.global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y); .hidden GLOBAL(X)
-+#endif
-+
- #define ENDFUNC0(X)	.Lfe_##X: .size X,.Lfe_##X-X
- #define ENDFUNC(X)	ENDFUNC0(X)
- #else
Index: toolchain/gcc/3.4.4/830-gcc-bug-num-22167.patch
===================================================================
--- toolchain/gcc/3.4.4/830-gcc-bug-num-22167.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/830-gcc-bug-num-22167.patch	(working copy)
@@ -1,16 +0,0 @@
-Index: gcc/gcse.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/gcse.c,v
-retrieving revision 1.288.2.9
-diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.288.2.9 gcse.c
---- gcc/gcc/gcse.c	30 Oct 2004 18:02:53 -0000	1.288.2.9
-+++ gcc/gcc/gcse.c	14 Jul 2005 13:19:57 -0000
-@@ -6445,7 +6445,7 @@ hoist_code (void)
- 	  insn_inserted_p = 0;
- 
- 	  /* These tests should be the same as the tests above.  */
--	  if (TEST_BIT (hoist_vbeout[bb->index], i))
-+	  if (TEST_BIT (hoist_exprs[bb->index], i))
- 	    {
- 	      /* We've found a potentially hoistable expression, now
- 		 we look at every block BB dominates to see if it
Index: toolchain/gcc/3.4.4/600-gcc34-arm-ldm-peephole.patch
===================================================================
--- toolchain/gcc/3.4.4/600-gcc34-arm-ldm-peephole.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/600-gcc34-arm-ldm-peephole.patch	(working copy)
@@ -1,65 +0,0 @@
---- gcc-3.4.0/gcc/config/arm/arm.md.arm-ldm-peephole	2004-01-13 08:24:37.000000000 -0500
-+++ gcc-3.4.0/gcc/config/arm/arm.md	2004-04-24 18:18:04.000000000 -0400
-@@ -8810,13 +8810,16 @@
-    (set_attr "length" "4,8,8")]
- )
- 
-+; Try to convert LDR+LDR+arith into [add+]LDM+arith
-+; On XScale, LDM is always slower than two LDRs, so only do this if
-+; optimising for size.
- (define_insn "*arith_adjacentmem"
-   [(set (match_operand:SI 0 "s_register_operand" "=r")
- 	(match_operator:SI 1 "shiftable_operator"
- 	 [(match_operand:SI 2 "memory_operand" "m")
- 	  (match_operand:SI 3 "memory_operand" "m")]))
-    (clobber (match_scratch:SI 4 "=r"))]
--  "TARGET_ARM && adjacent_mem_locations (operands[2], operands[3])"
-+  "TARGET_ARM && (!arm_tune_xscale || optimize_size) && adjacent_mem_locations (operands[2], operands[3])"
-   "*
-   {
-     rtx ldm[3];
-@@ -8851,6 +8854,8 @@
-       }
-    if (val1 && val2)
-       {
-+	/* This would be a loss on a Harvard core, but adjacent_mem_locations()
-+	   will prevent it from happening.  */
- 	rtx ops[3];
- 	ldm[0] = ops[0] = operands[4];
- 	ops[1] = XEXP (XEXP (operands[2], 0), 0);
---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm-peephole	2004-04-24 18:16:25.000000000 -0400
-+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:18:04.000000000 -0400
-@@ -4838,6 +4841,11 @@
-       *load_offset = unsorted_offsets[order[0]];
-     }
- 
-+  /* For XScale a two-word LDM is a performance loss, so only do this if
-+     size is more important.  See comments in arm_gen_load_multiple.  */
-+  if (nops == 2 && arm_tune_xscale && !optimize_size)
-+    return 0;
-+
-   if (unsorted_offsets[order[0]] == 0)
-     return 1; /* ldmia */
- 
-@@ -5064,6 +5072,11 @@
-       *load_offset = unsorted_offsets[order[0]];
-     }
- 
-+  /* For XScale a two-word LDM is a performance loss, so only do this if
-+     size is more important.  See comments in arm_gen_load_multiple.  */
-+  if (nops == 2 && arm_tune_xscale && !optimize_size)
-+    return 0;
-+
-   if (unsorted_offsets[order[0]] == 0)
-     return 1; /* stmia */
- 
---- gcc-3.4.0/gcc/genpeep.c.arm-ldm-peephole	2003-07-05 01:27:22.000000000 -0400
-+++ gcc-3.4.0/gcc/genpeep.c	2004-04-24 18:18:04.000000000 -0400
-@@ -381,6 +381,7 @@
-   printf ("#include \"recog.h\"\n");
-   printf ("#include \"except.h\"\n\n");
-   printf ("#include \"function.h\"\n\n");
-+  printf ("#include \"flags.h\"\n\n");
- 
-   printf ("#ifdef HAVE_peephole\n");
-   printf ("extern rtx peep_operand[];\n\n");
Index: toolchain/gcc/3.4.4/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/3.4.4/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/200-uclibc-locale.patch	(working copy)
@@ -1,3255 +0,0 @@
-diff -urN gcc-3.4.2-dist/libstdc++-v3/acinclude.m4 gcc-3.4.2/libstdc++-v3/acinclude.m4
---- gcc-3.4.2-dist/libstdc++-v3/acinclude.m4	2004-07-15 12:42:45.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/acinclude.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -996,7 +996,7 @@
-   AC_MSG_CHECKING([for C locale to use])
-   GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@],
-     [use MODEL for target locale package],
--    [permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
-+    [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto])
-   
-   # If they didn't use this option switch, or if they specified --enable
-   # with no specific model, we'll have to look for one.  If they
-@@ -1012,6 +1012,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      x*-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1138,6 +1141,41 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      AC_MSG_RESULT(uclibc)
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+      AC_SUBST(glibcxx_MOFILES)
-+      AC_SUBST(glibcxx_POFILES)
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/aclocal.m4 gcc-3.4.2/libstdc++-v3/aclocal.m4
---- gcc-3.4.2-dist/libstdc++-v3/aclocal.m4	2004-08-13 15:44:03.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/aclocal.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -1025,6 +1025,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      x*-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1151,6 +1154,41 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      AC_MSG_RESULT(uclibc)
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+      AC_SUBST(glibcxx_MOFILES)
-+      AC_SUBST(glibcxx_POFILES)
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,59 @@
-+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
-+
-+// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+// Written by Jakub Jelinek <jakub@redhat.com>
-+
-+#include <clocale>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning clean this up
-+#endif
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+                                                  
-+extern "C" __typeof(iswctype_l) __iswctype_l;
-+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
-+extern "C" __typeof(strcoll_l) __strcoll_l;
-+extern "C" __typeof(strftime_l) __strftime_l;
-+extern "C" __typeof(strtod_l) __strtod_l;
-+extern "C" __typeof(strtof_l) __strtof_l;
-+extern "C" __typeof(strtold_l) __strtold_l;
-+extern "C" __typeof(strxfrm_l) __strxfrm_l;
-+extern "C" __typeof(towlower_l) __towlower_l;
-+extern "C" __typeof(towupper_l) __towupper_l;
-+extern "C" __typeof(wcscoll_l) __wcscoll_l;
-+extern "C" __typeof(wcsftime_l) __wcsftime_l;
-+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
-+extern "C" __typeof(wctype_l) __wctype_l;
-+extern "C" __typeof(newlocale) __newlocale;
-+extern "C" __typeof(freelocale) __freelocale;
-+extern "C" __typeof(duplocale) __duplocale;
-+extern "C" __typeof(uselocale) __uselocale;
-+
-+#endif // GLIBC 2.3 and later
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,160 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <cerrno>  // For errno
-+#include <locale>
-+#include <stdexcept>
-+#include <langinfo.h>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
-+#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
-+#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
-+#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
-+#define __strtof_l(S, E, L)         strtof((S), (E))
-+#define __strtod_l(S, E, L)         strtod((S), (E))
-+#define __strtold_l(S, E, L)        strtold((S), (E))
-+#warning should dummy __newlocale check for C|POSIX ?
-+#define __newlocale(a, b, c)        NULL
-+#define __freelocale(a)             ((void)0)
-+#define __duplocale(a)              __c_locale()
-+#endif
-+
-+namespace std 
-+{
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  float __f = __strtof_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __f;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  double __d = __strtod_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __d;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  long double __ld = __strtold_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __ld;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  void
-+  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, 
-+				    __c_locale __old)
-+  {
-+    __cloc = __newlocale(1 << LC_ALL, __s, __old);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    if (!__cloc)
-+      {
-+	// This named locale is not supported by the underlying OS.
-+	__throw_runtime_error(__N("locale::facet::_S_create_c_locale "
-+			      "name not valid"));
-+      }
-+#endif
-+  }
-+  
-+  void
-+  locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
-+  {
-+    if (_S_get_c_locale() != __cloc)
-+      __freelocale(__cloc); 
-+  }
-+
-+  __c_locale
-+  locale::facet::_S_clone_c_locale(__c_locale& __cloc)
-+  { return __duplocale(__cloc); }
-+} // namespace std
-+
-+namespace __gnu_cxx
-+{
-+  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
-+    {
-+      "LC_CTYPE", 
-+      "LC_NUMERIC",
-+      "LC_TIME", 
-+      "LC_COLLATE", 
-+      "LC_MONETARY",
-+      "LC_MESSAGES", 
-+#if _GLIBCXX_NUM_CATEGORIES != 0
-+      "LC_PAPER", 
-+      "LC_NAME", 
-+      "LC_ADDRESS",
-+      "LC_TELEPHONE", 
-+      "LC_MEASUREMENT", 
-+      "LC_IDENTIFICATION" 
-+#endif
-+    };
-+}
-+
-+namespace std
-+{
-+  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
-+}  // namespace std
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h	2004-09-10 10:48:08.000000000 -0500
-@@ -0,0 +1,115 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifndef _C_LOCALE_H
-+#define _C_LOCALE_H 1
-+
-+#pragma GCC system_header
-+
-+#include <cstring>              // get std::strlen
-+#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <clocale>
-+#include <langinfo.h>		// For codecvt
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC_HAS_LOCALE__
-+#include <iconv.h>		// For codecvt using iconv, iconv_t
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#include <libintl.h> 		// For messages
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning what is _GLIBCXX_C_LOCALE_GNU for
-+#endif
-+#define _GLIBCXX_C_LOCALE_GNU 1
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix categories
-+#endif
-+// #define _GLIBCXX_NUM_CATEGORIES 6
-+#define _GLIBCXX_NUM_CATEGORIES 0
-+ 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+namespace __gnu_cxx
-+{
-+  extern "C" __typeof(uselocale) __uselocale;
-+}
-+#endif
-+
-+namespace std
-+{
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+  typedef __locale_t		__c_locale;
-+#else
-+  typedef int*			__c_locale;
-+#endif
-+
-+  // Convert numeric value of type _Tv to string and return length of
-+  // string.  If snprintf is available use it, otherwise fall back to
-+  // the unsafe sprintf which, in general, can be dangerous and should
-+  // be avoided.
-+  template<typename _Tv>
-+    int
-+    __convert_from_v(char* __out, const int __size, const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,306 @@
-+// std::codecvt implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.5 - Template class codecvt
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+namespace std
-+{
-+  // Specializations.
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_out(state_type& __state, const intern_type* __from, 
-+	 const intern_type* __from_end, const intern_type*& __from_next,
-+	 extern_type* __to, extern_type* __to_end,
-+	 extern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // wcsnrtombs is *very* fast but stops if encounters NUL characters:
-+    // in case we fall back to wcrtomb and then continue, in a loop.
-+    // NB: wcsnrtombs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
-+						      __from_end - __from_next);
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	const size_t __conv = wcsnrtombs(__to_next, &__from_next,
-+					 __from_chunk_end - __from_next,
-+					 __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // wcrtomb.
-+	    for (; __from < __from_next; ++__from)
-+	      __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
-+	    __state = __tmp_state;
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    extern_type __buf[MB_LEN_MAX];
-+	    __tmp_state = __state;
-+	    const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
-+	    if (__conv > static_cast<size_t>(__to_end - __to_next))
-+	      __ret = partial;
-+	    else
-+	      {
-+		memcpy(__to_next, __buf, __conv);
-+		__state = __tmp_state;
-+		__to_next += __conv;
-+		++__from_next;
-+	      }
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+  
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_in(state_type& __state, const extern_type* __from, 
-+	const extern_type* __from_end, const extern_type*& __from_next,
-+	intern_type* __to, intern_type* __to_end,
-+	intern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we store a L'\0' and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0',
-+								  __from_end
-+								  - __from_next));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	size_t __conv = mbsnrtowcs(__to_next, &__from_next,
-+				   __from_chunk_end - __from_next,
-+				   __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (;; ++__to_next, __from += __conv)
-+	      {
-+		__conv = mbrtowc(__to_next, __from, __from_end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __from_next = __from;
-+	    __state = __tmp_state;	    
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    // It is unclear what to return in this case (see DR 382). 
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    if (__to_next < __to_end)
-+	      {
-+		// XXX Probably wrong for stateful encodings
-+		__tmp_state = __state;		
-+		++__from_next;
-+		*__to_next++ = L'\0';
-+	      }
-+	    else
-+	      __ret = partial;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_encoding() const throw()
-+  {
-+    // XXX This implementation assumes that the encoding is
-+    // stateless and is either single-byte or variable-width.
-+    int __ret = 0;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    if (MB_CUR_MAX == 1)
-+      __ret = 1;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }  
-+
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_max_length() const throw()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    // XXX Probably wrong for stateful encodings.
-+    int __ret = MB_CUR_MAX;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }
-+  
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_length(state_type& __state, const extern_type* __from,
-+	    const extern_type* __end, size_t __max) const
-+  {
-+    int __ret = 0;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we advance past it and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+  
-+    // A dummy internal buffer is needed in order for mbsnrtocws to consider
-+    // its fourth parameter (it wouldn't with NULL as first parameter).
-+    wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t) 
-+							   * __max));
-+    while (__from < __end && __max)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0',
-+								  __end
-+								  - __from));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __end;
-+
-+	const extern_type* __tmp_from = __from;
-+	size_t __conv = mbsnrtowcs(__to, &__from,
-+				   __from_chunk_end - __from,
-+				   __max, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (__from = __tmp_from;; __from += __conv)
-+	      {
-+		__conv = mbrtowc(NULL, __from, __end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __state = __tmp_state;
-+	    __ret += __from - __tmp_from;
-+	    break;
-+	  }
-+	if (!__from)
-+	  __from = __from_chunk_end;
-+	
-+	__ret += __from - __tmp_from;
-+	__max -= __conv;
-+
-+	if (__from < __end && __max)
-+	  {
-+	    // XXX Probably wrong for stateful encodings
-+	    __tmp_state = __state;
-+	    ++__from;
-+	    ++__ret;
-+	    --__max;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,80 @@
-+// std::collate implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
-+#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
-+#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
-+#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
-+#endif
-+
-+namespace std
-+{
-+  // These are basically extensions to char_traits, and perhaps should
-+  // be put there instead of here.
-+  template<>
-+    int 
-+    collate<char>::_M_compare(const char* __one, const char* __two) const
-+    { 
-+      int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+  
-+  template<>
-+    size_t
-+    collate<char>::_M_transform(char* __to, const char* __from, 
-+				size_t __n) const 
-+    { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    int 
-+    collate<wchar_t>::_M_compare(const wchar_t* __one, 
-+				 const wchar_t* __two) const
-+    {
-+      int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+  
-+  template<>
-+    size_t
-+    collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
-+				   size_t __n) const
-+    { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,300 @@
-+// std::ctype implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __wctype_l(S, L)           wctype((S))
-+#define __towupper_l(C, L)         towupper((C))
-+#define __towlower_l(C, L)         towlower((C))
-+#define __iswctype_l(C, M, L)      iswctype((C), (M))
-+#endif
-+
-+namespace std
-+{
-+  // NB: The other ctype<char> specializations are in src/locale.cc and
-+  // various /config/os/* files.
-+  template<>
-+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
-+    : ctype<char>(0, false, __refs) 
-+    { 		
-+      if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	{
-+	  this->_S_destroy_c_locale(this->_M_c_locale_ctype);
-+	  this->_S_create_c_locale(this->_M_c_locale_ctype, __s); 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
-+	  this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
-+	  this->_M_table = this->_M_c_locale_ctype->__ctype_b;
-+#endif
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T  
-+  ctype<wchar_t>::__wmask_type
-+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
-+  {
-+    __wmask_type __ret;
-+    switch (__m)
-+      {
-+      case space:
-+	__ret = __wctype_l("space", _M_c_locale_ctype);
-+	break;
-+      case print:
-+	__ret = __wctype_l("print", _M_c_locale_ctype);
-+	break;
-+      case cntrl:
-+	__ret = __wctype_l("cntrl", _M_c_locale_ctype);
-+	break;
-+      case upper:
-+	__ret = __wctype_l("upper", _M_c_locale_ctype);
-+	break;
-+      case lower:
-+	__ret = __wctype_l("lower", _M_c_locale_ctype);
-+	break;
-+      case alpha:
-+	__ret = __wctype_l("alpha", _M_c_locale_ctype);
-+	break;
-+      case digit:
-+	__ret = __wctype_l("digit", _M_c_locale_ctype);
-+	break;
-+      case punct:
-+	__ret = __wctype_l("punct", _M_c_locale_ctype);
-+	break;
-+      case xdigit:
-+	__ret = __wctype_l("xdigit", _M_c_locale_ctype);
-+	break;
-+      case alnum:
-+	__ret = __wctype_l("alnum", _M_c_locale_ctype);
-+	break;
-+      case graph:
-+	__ret = __wctype_l("graph", _M_c_locale_ctype);
-+	break;
-+      default:
-+	__ret = 0;
-+      }
-+    return __ret;
-+  }
-+  
-+  wchar_t
-+  ctype<wchar_t>::do_toupper(wchar_t __c) const
-+  { return __towupper_l(__c, _M_c_locale_ctype); }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+  
-+  wchar_t
-+  ctype<wchar_t>::do_tolower(wchar_t __c) const
-+  { return __towlower_l(__c, _M_c_locale_ctype); }
-+  
-+  const wchar_t*
-+  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+
-+  bool
-+  ctype<wchar_t>::
-+  do_is(mask __m, wchar_t __c) const
-+  { 
-+    // Highest bitmask in ctype_base == 10, but extra in "C"
-+    // library for blank.
-+    bool __ret = false;
-+    const size_t __bitmasksize = 11; 
-+    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+      if (__m & _M_bit[__bitcur]
-+	  && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	{
-+	  __ret = true;
-+	  break;
-+	}
-+    return __ret;    
-+  }
-+  
-+  const wchar_t* 
-+  ctype<wchar_t>::
-+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
-+  {
-+    for (; __lo < __hi; ++__vec, ++__lo)
-+      {
-+	// Highest bitmask in ctype_base == 10, but extra in "C"
-+	// library for blank.
-+	const size_t __bitmasksize = 11; 
-+	mask __m = 0;
-+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+	  if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	    __m |= _M_bit[__bitcur];
-+	*__vec = __m;
-+      }
-+    return __hi;
-+  }
-+  
-+  const wchar_t* 
-+  ctype<wchar_t>::
-+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi && !this->do_is(__m, *__lo))
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
-+  {
-+    while (__lo < __hi && this->do_is(__m, *__lo) != 0)
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  wchar_t
-+  ctype<wchar_t>::
-+  do_widen(char __c) const
-+  { return _M_widen[static_cast<unsigned char>(__c)]; }
-+
-+  const char* 
-+  ctype<wchar_t>::
-+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
-+  {
-+    while (__lo < __hi)
-+      {
-+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
-+	++__lo;
-+	++__dest;
-+      }
-+    return __hi;
-+  }
-+
-+  char
-+  ctype<wchar_t>::
-+  do_narrow(wchar_t __wc, char __dfault) const
-+  {
-+    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
-+      return _M_narrow[__wc];
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    const int __c = wctob(__wc);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return (__c == EOF ? __dfault : static_cast<char>(__c)); 
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, 
-+	    char* __dest) const
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    if (_M_narrow_ok)
-+      while (__lo < __hi)
-+	{
-+	  if (*__lo >= 0 && *__lo < 128)
-+	    *__dest = _M_narrow[*__lo];
-+	  else
-+	    {
-+	      const int __c = wctob(*__lo);
-+	      *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	    }
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+    else
-+      while (__lo < __hi)
-+	{
-+	  const int __c = wctob(*__lo);
-+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __hi;
-+  }
-+
-+  void
-+  ctype<wchar_t>::_M_initialize_ctype()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    wint_t __i;
-+    for (__i = 0; __i < 128; ++__i)
-+      {
-+	const int __c = wctob(__i);
-+	if (__c == EOF)
-+	  break;
-+	else
-+	  _M_narrow[__i] = static_cast<char>(__c);
-+      }
-+    if (__i == 128)
-+      _M_narrow_ok = true;
-+    else
-+      _M_narrow_ok = false;
-+    for (size_t __j = 0;
-+	 __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
-+      _M_widen[__j] = btowc(__j);
-+
-+    for (size_t __k = 0; __k <= 11; ++__k)
-+      { 
-+	_M_bit[__k] = static_cast<mask>(_ISbit(__k));
-+	_M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
-+      }
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+  }
-+#endif //  _GLIBCXX_USE_WCHAR_T
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,100 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix gettext stuff
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__dcgettext(const char *domainname,
-+			     const char *msgid, int category);
-+#undef gettext
-+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
-+#else
-+#undef gettext
-+#define gettext(msgid) (msgid)
-+#endif
-+
-+namespace std
-+{
-+  // Specializations.
-+  template<>
-+    string
-+    messages<char>::do_get(catalog, int, int, const string& __dfault) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      const char* __msg = const_cast<const char*>(gettext(__dfault.c_str()));
-+      __uselocale(__old);
-+      return string(__msg);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      const char* __msg = gettext(__dfault.c_str());
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return string(__msg);
-+#else
-+      const char* __msg = gettext(__dfault.c_str());
-+      return string(__msg);
-+#endif
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    wstring
-+    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
-+    {
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      __uselocale(__old);
-+      return _M_convert_from_char(__msg);
-+# elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return _M_convert_from_char(__msg);
-+# else
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      return _M_convert_from_char(__msg);
-+# endif
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,118 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix prototypes for *textdomain funcs
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__textdomain(const char *domainname);
-+extern "C" char *__bindtextdomain(const char *domainname,
-+				  const char *dirname);
-+#else
-+#undef __textdomain
-+#undef __bindtextdomain
-+#define __textdomain(D)           ((void)0)
-+#define __bindtextdomain(D,P)     ((void)0)
-+#endif
-+
-+  // Non-virtual member functions.
-+  template<typename _CharT>
-+     messages<_CharT>::messages(size_t __refs)
-+     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 
-+     _M_name_messages(_S_get_c_name())
-+     { }
-+
-+  template<typename _CharT>
-+     messages<_CharT>::messages(__c_locale __cloc, const char* __s, 
-+				size_t __refs) 
-+     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
-+     _M_name_messages(__s)
-+     {
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       _M_name_messages = __tmp;
-+     }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog 
-+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 
-+			   const char* __dir) const
-+    { 
-+      __bindtextdomain(__s.c_str(), __dir);
-+      return this->do_open(__s, __loc); 
-+    }
-+
-+  // Virtual member functions.
-+  template<typename _CharT>
-+    messages<_CharT>::~messages()
-+    { 
-+      if (_M_name_messages != _S_get_c_name())
-+	delete [] _M_name_messages;
-+      _S_destroy_c_locale(_M_c_locale_messages); 
-+    }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog 
-+    messages<_CharT>::do_open(const basic_string<char>& __s, 
-+			      const locale&) const
-+    { 
-+      // No error checking is done, assume the catalog exists and can
-+      // be used.
-+      __textdomain(__s.c_str());
-+      return 0;
-+    }
-+
-+  template<typename _CharT>
-+    void    
-+    messages<_CharT>::do_close(catalog) const 
-+    { }
-+
-+   // messages_byname
-+   template<typename _CharT>
-+     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
-+     : messages<_CharT>(__refs) 
-+     { 
-+       if (this->_M_name_messages != locale::facet::_S_get_c_name())
-+	 delete [] this->_M_name_messages;
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       this->_M_name_messages = __tmp;
-+
-+       if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	 {
-+	   this->_S_destroy_c_locale(this->_M_c_locale_messages);
-+	   this->_S_create_c_locale(this->_M_c_locale_messages, __s); 
-+	 }
-+     }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,698 @@
-+// std::moneypunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning optimize this for uclibc
-+#warning tailor for stub locale support
-+#endif
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  // Construct and return valid pattern consisting of some combination of:
-+  // space none symbol sign value
-+  money_base::pattern
-+  money_base::_S_construct_pattern(char __precedes, char __space, char __posn)
-+  { 
-+    pattern __ret;
-+
-+    // This insanely complicated routine attempts to construct a valid
-+    // pattern for use with monyepunct. A couple of invariants:
-+
-+    // if (__precedes) symbol -> value
-+    // else value -> symbol
-+    
-+    // if (__space) space
-+    // else none
-+
-+    // none == never first
-+    // space never first or last
-+
-+    // Any elegant implementations of this are welcome.
-+    switch (__posn)
-+      {
-+      case 0:
-+      case 1:
-+	// 1 The sign precedes the value and symbol.
-+	__ret.field[0] = sign;
-+	if (__space)
-+	  {
-+	    // Pattern starts with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[3] = symbol;
-+	      }
-+	    __ret.field[2] = space;
-+	  }
-+	else
-+	  {
-+	    // Pattern starts with sign and ends with none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 2:
-+	// 2 The sign follows the value and symbol.
-+	if (__space)
-+	  {
-+	    // Pattern either ends with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[1] = space;
-+	    __ret.field[3] = sign;
-+	  }
-+	else
-+	  {
-+	    // Pattern ends with sign then none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[1] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[1] = symbol;
-+	      }
-+	    __ret.field[2] = sign;
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 3:
-+	// 3 The sign immediately precedes the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = sign;
-+	    __ret.field[1] = symbol;	    
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;		
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = symbol;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = sign;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      case 4:
-+	// 4 The sign immediately follows the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = symbol;
-+	    __ret.field[1] = sign;
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = sign;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      default:
-+	;
-+      }
-+    return __ret;
-+  }
-+
-+  template<> 
-+    void
-+    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, 
-+						     const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, 
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == true
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+	}
-+    }
-+
-+  template<> 
-+    void
-+    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, 
-+						      const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, false>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == false
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+	}
-+    }
-+
-+  template<> 
-+    moneypunct<char, true>::~moneypunct()
-+    { delete _M_data; }
-+
-+  template<> 
-+    moneypunct<char, false>::~moneypunct()
-+    { delete _M_data; }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<> 
-+    void
-+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+							const char*)
-+#else
-+							const char* __name)
-+#endif
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<wchar_t, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
-+	      _M_data->_M_atoms[__i] = btowc(uc);
-+	    }
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  try
-+	    {
-+	      mbstate_t __state;
-+	      size_t __len = strlen(__cpossign);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+	      _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+	      
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{ 
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+	      _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+	      
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+	      _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+	  catch (...)
-+	    {
-+	      delete _M_data;
-+	      _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;	      
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+	      __throw_exception_again;
-+	    } 
-+	  
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<> 
-+  void
-+  moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+						       const char*)
-+#else
-+                                                       const char* __name)
-+#endif
-+  {
-+    if (!_M_data)
-+      _M_data = new __moneypunct_cache<wchar_t, false>;
-+
-+    if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+          _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
-+	      _M_data->_M_atoms[__i] = btowc(uc);
-+	    }
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+          _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  try
-+            {
-+              mbstate_t __state;
-+              size_t __len;
-+              __len = strlen(__cpossign);
-+              if (__len)
-+                {
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+              _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+	      
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{ 
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+              _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+              _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+          catch (...)
-+	    {
-+	      delete _M_data;
-+              _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;	      
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+              __throw_exception_again;
-+	    }
-+
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+	                                                __pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+	                                                __nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<> 
-+    moneypunct<wchar_t, true>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+
-+  template<> 
-+    moneypunct<wchar_t, false>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,183 @@
-+// std::numpunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<> 
-+    void
-+    numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, 
-+							__cloc));
-+
-+	  // Check for NULL, which implies no grouping.
-+	  if (_M_data->_M_thousands_sep == '\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = "true";
-+      _M_data->_M_truename_size = strlen(_M_data->_M_truename);
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = strlen(_M_data->_M_falsename);
-+    }
-+ 
-+  template<> 
-+    numpunct<char>::~numpunct()
-+    { delete _M_data; }
-+   
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<> 
-+    void
-+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<wchar_t>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(_S_get_c_locale());
-+#endif
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(__num_base::_S_atoms_out[__i]);
-+	      _M_data->_M_atoms_out[__i] = btowc(uc);
-+	    }
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    {
-+	      uc = static_cast<unsigned char>(__num_base::_S_atoms_in[__j]);
-+	      _M_data->_M_atoms_in[__j] = btowc(uc);
-+	    }
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#endif
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+
-+	  if (_M_data->_M_thousands_sep == L'\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = L"true";
-+      _M_data->_M_truename_size = wcslen(_M_data->_M_truename);
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = wcslen(_M_data->_M_falsename);
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc	2004-09-10 10:48:00.000000000 -0500
-@@ -0,0 +1,356 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc));
-+	  _M_data->_M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc));
-+	  _M_data->_M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc));
-+	  _M_data->_M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc));
-+	  _M_data->_M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc));
-+	  _M_data->_M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc));
-+	  _M_data->_M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc));
-+	  _M_data->_M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc));
-+	  _M_data->_M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc));
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc));
-+	  _M_data->_M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc));
-+	  _M_data->_M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc));
-+	  _M_data->_M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc));
-+	  _M_data->_M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc));
-+	  _M_data->_M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc));
-+	  _M_data->_M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc));
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc));
-+	  _M_data->_M_aday2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc));
-+	  _M_data->_M_aday3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc));
-+	  _M_data->_M_aday4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc));
-+	  _M_data->_M_aday5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc));
-+	  _M_data->_M_aday6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc));
-+	  _M_data->_M_aday7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc));
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc));
-+	  _M_data->_M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc));
-+	  _M_data->_M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc));
-+	  _M_data->_M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc));
-+	  _M_data->_M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc));
-+	  _M_data->_M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc));
-+	  _M_data->_M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc));
-+	  _M_data->_M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc));
-+	  _M_data->_M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc));
-+	  _M_data->_M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc));
-+	  _M_data->_M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc));
-+	  _M_data->_M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc));
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc));
-+	  _M_data->_M_amonth02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc));
-+	  _M_data->_M_amonth03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc));
-+	  _M_data->_M_amonth04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc));
-+	  _M_data->_M_amonth05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc));
-+	  _M_data->_M_amonth06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc));
-+	  _M_data->_M_amonth07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc));
-+	  _M_data->_M_amonth08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc));
-+	  _M_data->_M_amonth09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc));
-+	  _M_data->_M_amonth10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc));
-+	  _M_data->_M_amonth11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc));
-+	  _M_data->_M_amonth12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_12, __cloc));
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,68 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(size_t __refs) 
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 
-+    : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
-+				     size_t __refs) 
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(__s)
-+    { 
-+      char* __tmp = new char[std::strlen(__s) + 1];
-+      std::strcpy(__tmp, __s);
-+      _M_name_timepunct = __tmp;
-+      _M_initialize_timepunct(__cloc); 
-+    }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::~__timepunct()
-+    { 
-+      if (_M_name_timepunct != _S_get_c_name())
-+	delete [] _M_name_timepunct;
-+      delete _M_data; 
-+      _S_destroy_c_locale(_M_c_locale_timepunct); 
-+    }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,58 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003
-+// Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  struct ctype_base
-+  {
-+    // Note: In uClibc, the following two types depend on configuration.
-+ 
-+    // Non-standard typedefs.
-+    typedef const __ctype_touplow_t* __to_type;
-+
-+    // NB: Offsets into ctype<char>::_M_table force a particular size
-+    // on the mask type. Because of this, we don't use an enum.
-+    typedef __ctype_mask_t	mask;   
-+    static const mask upper    	= _ISupper;
-+    static const mask lower 	= _ISlower;
-+    static const mask alpha 	= _ISalpha;
-+    static const mask digit 	= _ISdigit;
-+    static const mask xdigit 	= _ISxdigit;
-+    static const mask space 	= _ISspace;
-+    static const mask print 	= _ISprint;
-+    static const mask graph 	= _ISalpha | _ISdigit | _ISpunct;
-+    static const mask cntrl 	= _IScntrl;
-+    static const mask punct 	= _ISpunct;
-+    static const mask alnum 	= _ISalpha | _ISdigit;
-+  };
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,69 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-+// functions go in ctype.cc
-+  
-+  bool
-+  ctype<char>::
-+  is(mask __m, char __c) const
-+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
-+
-+  const char*
-+  ctype<char>::
-+  is(const char* __low, const char* __high, mask* __vec) const
-+  {
-+    while (__low < __high)
-+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
-+    return __high;
-+  }
-+
-+  const char*
-+  ctype<char>::
-+  scan_is(mask __m, const char* __low, const char* __high) const
-+  {
-+    while (__low < __high 
-+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
-+      ++__low;
-+    return __low;
-+  }
-+
-+  const char*
-+  ctype<char>::
-+  scan_not(mask __m, const char* __low, const char* __high) const
-+  {
-+    while (__low < __high 
-+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
-+      ++__low;
-+    return __low;
-+  }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,92 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
-+// Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// Information as gleaned from /usr/include/ctype.h
-+
-+  const ctype_base::mask*
-+  ctype<char>::classic_table() throw()
-+  { return __C_ctype_b; }
-+
-+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
-+		     size_t __refs) 
-+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
-+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
-+  {
-+    _M_toupper = __C_ctype_toupper;
-+    _M_tolower = __C_ctype_tolower;
-+    _M_table = __table ? __table : __C_ctype_b;
-+    memset(_M_widen, 0, sizeof(_M_widen));
-+    memset(_M_narrow, 0, sizeof(_M_narrow));
-+  }
-+
-+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
-+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
-+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
-+  {
-+    _M_toupper = __C_ctype_toupper;
-+    _M_tolower = __C_ctype_tolower;
-+    _M_table = __table ? __table : __C_ctype_b;
-+    memset(_M_widen, 0, sizeof(_M_widen));
-+    memset(_M_narrow, 0, sizeof(_M_narrow));
-+  }
-+
-+  char
-+  ctype<char>::do_toupper(char __c) const
-+  { return _M_toupper[static_cast<unsigned char>(__c)]; }
-+
-+  const char*
-+  ctype<char>::do_toupper(char* __low, const char* __high) const
-+  {
-+    while (__low < __high)
-+      {
-+	*__low = _M_toupper[static_cast<unsigned char>(*__low)];
-+	++__low;
-+      }
-+    return __high;
-+  }
-+
-+  char
-+  ctype<char>::do_tolower(char __c) const
-+  { return _M_tolower[static_cast<unsigned char>(__c)]; }
-+
-+  const char* 
-+  ctype<char>::do_tolower(char* __low, const char* __high) const
-+  {
-+    while (__low < __high)
-+      {
-+	*__low = _M_tolower[static_cast<unsigned char>(*__low)];
-+	++__low;
-+      }
-+    return __high;
-+  }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,44 @@
-+// Specific definitions for GNU/Linux  -*- C++ -*-
-+
-+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+#ifndef _GLIBCXX_OS_DEFINES
-+#define _GLIBCXX_OS_DEFINES 1
-+
-+// System-specific #define, typedefs, corrections, etc, go here.  This
-+// file will come before all others.
-+
-+// This keeps isanum, et al from being propagated as macros.
-+#define __NO_CTYPE 1
-+
-+#include <features.h>
-+
-+// We must not see the optimized string functions GNU libc defines.
-+#define __NO_STRING_INLINES
-+
-+#endif
-diff -urN gcc-3.4.2-dist/libstdc++-v3/configure gcc-3.4.2/libstdc++-v3/configure
---- gcc-3.4.2-dist/libstdc++-v3/configure	2004-08-13 15:44:04.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/configure	2004-09-10 10:47:40.000000000 -0500
-@@ -3878,6 +3878,11 @@
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd*)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5479,7 +5479,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5545,6 +5550,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      xlinux-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
-@@ -5759,6 +5767,77 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      echo "$as_me:$LINENO: result: uclibc" >&5
-+echo "${ECHO_T}uclibc" >&6
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      # Extract the first word of "msgfmt", so it can be a program name with args.
-+set dummy msgfmt; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_check_msgfmt+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test -n "$check_msgfmt"; then
-+  ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+  for ac_exec_ext in '' $ac_executable_extensions; do
-+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_check_msgfmt="yes"
-+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+done
-+
-+  test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
-+fi
-+fi
-+check_msgfmt=$ac_cv_prog_check_msgfmt
-+if test -n "$check_msgfmt"; then
-+  echo "$as_me:$LINENO: result: $check_msgfmt" >&5
-+echo "${ECHO_T}$check_msgfmt" >&6
-+else
-+  echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+
-+
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/configure.host gcc-3.4.2/libstdc++-v3/configure.host
---- gcc-3.4.2-dist/libstdc++-v3/configure.host	2004-08-27 14:52:30.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/configure.host	2004-09-10 10:47:40.000000000 -0500
-@@ -217,6 +217,12 @@
-     ;;
- esac
- 
-+# Override for uClibc since linux-uclibc gets mishandled above.
-+case "${host_os}" in
-+  *-uclibc*)
-+    os_include_dir="os/uclibc"
-+    ;;
-+esac
- 
- # Set any OS-dependent and CPU-dependent bits.
- # THIS TABLE IS SORTED.  KEEP IT THAT WAY.
-diff -urN gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4 gcc-3.4.2/libstdc++-v3/crossconfig.m4
---- gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4	2004-07-06 20:23:49.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/crossconfig.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -138,6 +138,99 @@
- 	;;
-     esac
-     ;;
-+  *-uclibc*)
-+# Temporary hack until we implement the float versions of the libm funcs
-+    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-+      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-+      fp.h float.h endian.h inttypes.h locale.h float.h stdint.h])
-+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-+    AC_SUBST(SECTION_FLAGS)
-+    GLIBCXX_CHECK_LINKER_FEATURES
-+    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-+    GLIBCXX_CHECK_WCHAR_T_SUPPORT
-+
-+    # For LFS.
-+    AC_DEFINE(HAVE_INT64_T)
-+    case "$target" in
-+      *-uclinux*)
-+        # Don't enable LFS with uClinux
-+        ;;
-+      *)
-+        AC_DEFINE(_GLIBCXX_USE_LFS)
-+    esac
-+
-+    # For showmanyc_helper().
-+    AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
-+    GLIBCXX_CHECK_POLL
-+    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
-+
-+    # For xsputn_2().
-+    AC_CHECK_HEADERS(sys/uio.h)
-+    GLIBCXX_CHECK_WRITEV
-+
-+#     AC_DEFINE(HAVE_ACOSF)
-+#     AC_DEFINE(HAVE_ASINF)
-+#     AC_DEFINE(HAVE_ATANF)
-+#     AC_DEFINE(HAVE_ATAN2F)
-+    AC_DEFINE(HAVE_CEILF)
-+    AC_DEFINE(HAVE_COPYSIGN)
-+#     AC_DEFINE(HAVE_COPYSIGNF)
-+#     AC_DEFINE(HAVE_COSF)
-+#     AC_DEFINE(HAVE_COSHF)
-+#     AC_DEFINE(HAVE_EXPF)
-+#     AC_DEFINE(HAVE_FABSF)
-+    AC_DEFINE(HAVE_FINITE)
-+    AC_DEFINE(HAVE_FINITEF)
-+    AC_DEFINE(HAVE_FLOORF)
-+#     AC_DEFINE(HAVE_FMODF)
-+#     AC_DEFINE(HAVE_FREXPF)
-+    AC_DEFINE(HAVE_HYPOT)
-+#     AC_DEFINE(HAVE_HYPOTF)
-+    AC_DEFINE(HAVE_ISINF)
-+    AC_DEFINE(HAVE_ISINFF)
-+    AC_DEFINE(HAVE_ISNAN)
-+    AC_DEFINE(HAVE_ISNANF)
-+#     AC_DEFINE(HAVE_LOGF)
-+#     AC_DEFINE(HAVE_LOG10F)
-+#     AC_DEFINE(HAVE_MODFF)
-+#     AC_DEFINE(HAVE_SINF)
-+#     AC_DEFINE(HAVE_SINHF)
-+#     AC_DEFINE(HAVE_SINCOS)
-+#     AC_DEFINE(HAVE_SINCOSF)
-+    AC_DEFINE(HAVE_SQRTF)
-+#     AC_DEFINE(HAVE_TANF)
-+#     AC_DEFINE(HAVE_TANHF)
-+    if test x"long_double_math_on_this_cpu" = x"yes"; then
-+      AC_MSG_ERROR([long_double_math_on_this_cpu is yes!])
-+#       AC_DEFINE(HAVE_ACOSL)
-+#       AC_DEFINE(HAVE_ASINL)
-+#       AC_DEFINE(HAVE_ATANL)
-+#       AC_DEFINE(HAVE_ATAN2L)
-+#       AC_DEFINE(HAVE_CEILL)
-+#       AC_DEFINE(HAVE_COPYSIGNL)
-+#       AC_DEFINE(HAVE_COSL)
-+#       AC_DEFINE(HAVE_COSHL)
-+#       AC_DEFINE(HAVE_EXPL)
-+#       AC_DEFINE(HAVE_FABSL)
-+#       AC_DEFINE(HAVE_FINITEL)
-+#       AC_DEFINE(HAVE_FLOORL)
-+#       AC_DEFINE(HAVE_FMODL)
-+#       AC_DEFINE(HAVE_FREXPL)
-+#       AC_DEFINE(HAVE_HYPOTL)
-+#       AC_DEFINE(HAVE_ISINFL)
-+#       AC_DEFINE(HAVE_ISNANL)
-+#       AC_DEFINE(HAVE_LOGL)
-+#       AC_DEFINE(HAVE_LOG10L)
-+#       AC_DEFINE(HAVE_MODFL)
-+#       AC_DEFINE(HAVE_POWL)
-+#       AC_DEFINE(HAVE_SINL)
-+#       AC_DEFINE(HAVE_SINHL)
-+#       AC_DEFINE(HAVE_SINCOSL)
-+#       AC_DEFINE(HAVE_SQRTL)
-+#       AC_DEFINE(HAVE_TANL)
-+#       AC_DEFINE(HAVE_TANHL)
-+    fi
-+    ;;
-   *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
-     AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-       machine/endian.h machine/param.h sys/machine.h sys/types.h \
-@@ -152,7 +245,7 @@
-     AC_DEFINE(HAVE_INT64_T)
-     case "$target" in
-       *-uclinux*)
--        # Don't enable LFS with uClibc
-+        # Don't enable LFS with uClinux
-         ;;
-       *)
-         AC_DEFINE(_GLIBCXX_USE_LFS)
-diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h
---- gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h	2003-12-08 21:51:45.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h	2004-09-10 10:47:40.000000000 -0500
-@@ -101,7 +101,9 @@
- using std::wmemcpy;
- using std::wmemmove;
- using std::wmemset;
-+#if _GLIBCXX_HAVE_WCSFTIME
- using std::wcsftime;
-+#endif
- 
- #if _GLIBCXX_USE_C99
- using std::wcstold;
-diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h
---- gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h	2004-07-20 03:52:12.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h	2004-09-10 10:47:40.000000000 -0500
-@@ -179,7 +179,9 @@
-   using ::wcscoll;
-   using ::wcscpy;
-   using ::wcscspn;
-+#if _GLIBCXX_HAVE_WCSFTIME
-   using ::wcsftime;
-+#endif
-   using ::wcslen;
-   using ::wcsncat;
-   using ::wcsncmp;
Index: toolchain/gcc/3.4.4/601-gcc34-arm-ldm.patch
===================================================================
--- toolchain/gcc/3.4.4/601-gcc34-arm-ldm.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/601-gcc34-arm-ldm.patch	(working copy)
@@ -1,119 +0,0 @@
---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm	2004-02-27 09:51:05.000000000 -0500
-+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:16:25.000000000 -0400
-@@ -8520,6 +8520,26 @@
-   return_used_this_function = 0;  
- }
- 
-+/* Return the number (counting from 0) of
-+   the least significant set bit in MASK.  */
-+
-+#ifdef __GNUC__
-+inline
-+#endif
-+static int
-+number_of_first_bit_set (mask)
-+     int mask;
-+{
-+  int bit;
-+
-+  for (bit = 0;
-+       (mask & (1 << bit)) == 0;
-+       ++bit)
-+    continue;
-+
-+  return bit;
-+}
-+
- const char *
- arm_output_epilogue (rtx sibling)
- {
-@@ -8753,27 +8773,47 @@
- 	  saved_regs_mask |=   (1 << PC_REGNUM);
- 	}
- 
--      /* Load the registers off the stack.  If we only have one register
--	 to load use the LDR instruction - it is faster.  */
--      if (saved_regs_mask == (1 << LR_REGNUM))
--	{
--	  /* The exception handler ignores the LR, so we do
--	     not really need to load it off the stack.  */
--	  if (eh_ofs)
--	    asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM);
--	  else
--	    asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM);
--	}
--      else if (saved_regs_mask)
-+      if (saved_regs_mask)
- 	{
--	  if (saved_regs_mask & (1 << SP_REGNUM))
--	    /* Note - write back to the stack register is not enabled
--	       (ie "ldmfd sp!...").  We know that the stack pointer is
--	       in the list of registers and if we add writeback the
--	       instruction becomes UNPREDICTABLE.  */
--	    print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask);
-+	  /* Load the registers off the stack.  If we only have one register
-+	     to load use the LDR instruction - it is faster.  */
-+	  if (bit_count (saved_regs_mask) == 1)
-+	    {
-+	      int reg = number_of_first_bit_set (saved_regs_mask);
-+
-+	      switch (reg)
-+		{
-+		case SP_REGNUM:
-+		  /* Mustn't use base writeback when loading SP.  */
-+		  asm_fprintf (f, "\tldr\t%r, [%r]\n", SP_REGNUM, SP_REGNUM);
-+		  break;
-+		  
-+		case LR_REGNUM:
-+		  if (eh_ofs)
-+		    {
-+		      /* The exception handler ignores the LR, so we do
-+			 not really need to load it off the stack.  */
-+		      asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM);
-+		      break;
-+		    }
-+		  /* else fall through */
-+		  
-+		default:
-+		  asm_fprintf (f, "\tldr\t%r, [%r], #4\n", reg, SP_REGNUM);
-+		  break;
-+		}
-+	    }
- 	  else
--	    print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask);
-+	    {
-+	      if (saved_regs_mask & (1 << SP_REGNUM))
-+		/* Note - write back to the stack register is not enabled
-+		   (ie "ldmfd sp!...").  We know that the stack pointer is
-+		   in the list of registers and if we add writeback the
-+		   instruction becomes UNPREDICTABLE.  */
-+		print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask);
-+	      else
-+		print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask);
-+	    }
- 	}
- 
-       if (current_function_pretend_args_size)
-@@ -11401,22 +11441,6 @@
-     }
- }
- 
--/* Return the number (counting from 0) of
--   the least significant set bit in MASK.  */
--
--inline static int
--number_of_first_bit_set (int mask)
--{
--  int bit;
--
--  for (bit = 0;
--       (mask & (1 << bit)) == 0;
--       ++bit)
--    continue;
--
--  return bit;
--}
--
- /* Generate code to return from a thumb function.
-    If 'reg_containing_return_addr' is -1, then the return address is
-    actually on the stack, at the stack pointer.  */
Index: toolchain/gcc/3.4.4/72_all_sh-no-reorder-blocks.patch
===================================================================
--- toolchain/gcc/3.4.4/72_all_sh-no-reorder-blocks.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/72_all_sh-no-reorder-blocks.patch	(working copy)
@@ -1,13 +0,0 @@
---- g/gcc/config/sh/sh.h
-+++ g/gcc/config/sh/sh.h
-@@ -422,6 +422,10 @@
- do {									\
-   if (LEVEL)								\
-     flag_omit_frame_pointer = -1;					\
-+  if (LEVEL <= 2)							\
-+    {									\
-+      flag_reorder_blocks = 0;						\
-+    }									\
-   if (SIZE)								\
-     target_flags |= SPACE_BIT;						\
-   if (TARGET_SHMEDIA && LEVEL > 1)					\
Index: toolchain/gcc/3.4.4/900-nios2.patch
===================================================================
--- toolchain/gcc/3.4.4/900-nios2.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/900-nios2.patch	(working copy)
@@ -1,10211 +0,0 @@
---- gcc-3.4.3/gcc/Makefile.in
-+++ gcc-3.4.3-nios2/gcc/Makefile.in
-@@ -3085,7 +3085,7 @@ install-mkheaders: stmp-int-hdrs $(STMP_
- 	  $(INSTALL_DATA) $(srcdir)/README-fixinc \
- 	    $(DESTDIR)$(itoolsdatadir)/include/README ; \
- 	  $(INSTALL_SCRIPT) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh ; \
--	  $(INSTALL_PROGRAM) fixinc/fixincl $(DESTDIR)$(itoolsdir)/fixincl ; \
-+	  $(INSTALL_PROGRAM) fixinc/fixincl$(build_exeext) $(DESTDIR)$(itoolsdir)/fixincl$(build_exeext) ; \
- 	  $(INSTALL_DATA) $(srcdir)/gsyslimits.h \
- 	    $(DESTDIR)$(itoolsdatadir)/gsyslimits.h ; \
- 	else :; fi
---- gcc-3.4.3/gcc/combine.c
-+++ gcc-3.4.3-nios2/gcc/combine.c
-@@ -4380,6 +4380,14 @@ combine_simplify_rtx (rtx x, enum machin
- 					 mode);
- 	    }
- 
-+#ifndef __nios2__
-+/* This screws up Nios II in this test case:
-+
-+if (x & 1)
-+  return 2;
-+else
-+  return 3;
-+*/
- 	  else if (STORE_FLAG_VALUE == 1
- 		   && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
- 		   && op1 == const0_rtx
-@@ -4391,6 +4399,7 @@ combine_simplify_rtx (rtx x, enum machin
- 				 gen_lowpart_for_combine (mode, op0),
- 				 const1_rtx);
- 	    }
-+#endif
- 
- 	  else if (STORE_FLAG_VALUE == 1
- 		   && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
---- gcc-3.4.3/gcc/config/nios2/crti.asm
-+++ gcc-3.4.3-nios2/gcc/config/nios2/crti.asm
-@@ -0,0 +1,88 @@
-+/*
-+  Copyright (C) 2003 
-+ by Jonah Graham (jgraham@altera.com)
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with files
-+   compiled with GCC to produce an executable, this does not 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.
-+
-+
-+This file just make a stack frame for the contents of the .fini and
-+.init sections.  Users may put any desired instructions in those
-+sections.
-+
-+
-+While technically any code can be put in the init and fini sections
-+most stuff will not work other than stuff which obeys the call frame
-+and ABI. All the call-preserved registers are saved, the call clobbered
-+registers should have been saved by the code calling init and fini.
-+
-+See crtstuff.c for an example of code that inserts itself in the 
-+init and fini sections. 
-+
-+See crt0.s for the code that calls init and fini.
-+*/
-+
-+	.file	"crti.asm"
-+
-+	.section	".init"
-+	.align 2
-+	.global	_init
-+_init:
-+	addi	sp, sp, -48
-+	stw	ra, 44(sp)
-+	stw	r23, 40(sp)
-+	stw	r22, 36(sp)
-+	stw	r21, 32(sp)
-+	stw	r20, 28(sp)
-+	stw	r19, 24(sp)
-+	stw	r18, 20(sp)
-+	stw	r17, 16(sp)
-+	stw	r16, 12(sp)
-+	stw	fp, 8(sp)
-+	mov	fp, sp
-+	
-+	
-+	.section	".fini"
-+	.align	2
-+	.global	_fini
-+_fini:
-+	addi	sp, sp, -48
-+	stw	ra, 44(sp)
-+	stw	r23, 40(sp)
-+	stw	r22, 36(sp)
-+	stw	r21, 32(sp)
-+	stw	r20, 28(sp)
-+	stw	r19, 24(sp)
-+	stw	r18, 20(sp)
-+	stw	r17, 16(sp)
-+	stw	r16, 12(sp)
-+	stw	fp, 8(sp)
-+	mov	fp, sp
-+	
-+
---- gcc-3.4.3/gcc/config/nios2/crtn.asm
-+++ gcc-3.4.3-nios2/gcc/config/nios2/crtn.asm
-@@ -0,0 +1,70 @@
-+/*
-+  Copyright (C) 2003 
-+ by Jonah Graham (jgraham@altera.com)
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with files
-+   compiled with GCC to produce an executable, this does not 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.
-+
-+
-+This file just makes sure that the .fini and .init sections do in
-+fact return.  Users may put any desired instructions in those sections.
-+This file is the last thing linked into any executable.
-+*/	
-+	.file	"crtn.asm"
-+
-+
-+
-+	.section	".init"
-+	ldw	ra, 44(sp)
-+	ldw	r23, 40(sp)
-+	ldw	r22, 36(sp)
-+	ldw	r21, 32(sp)
-+	ldw	r20, 28(sp)
-+	ldw	r19, 24(sp)
-+	ldw	r18, 20(sp)
-+	ldw	r17, 16(sp)
-+	ldw	r16, 12(sp)
-+	ldw	fp, 8(sp)
-+	addi	sp, sp, -48
-+	ret
-+	
-+	.section	".fini"
-+	ldw	ra, 44(sp)
-+	ldw	r23, 40(sp)
-+	ldw	r22, 36(sp)
-+	ldw	r21, 32(sp)
-+	ldw	r20, 28(sp)
-+	ldw	r19, 24(sp)
-+	ldw	r18, 20(sp)
-+	ldw	r17, 16(sp)
-+	ldw	r16, 12(sp)
-+	ldw	fp, 8(sp)
-+	addi	sp, sp, -48
-+	ret
-+	
---- gcc-3.4.3/gcc/config/nios2/lib2-divmod-hi.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod-hi.c
-@@ -0,0 +1,123 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+extern HItype __modhi3 (HItype, HItype);
-+extern HItype __divhi3 (HItype, HItype);
-+extern HItype __umodhi3 (HItype, HItype);
-+extern HItype __udivhi3 (HItype, HItype);
-+
-+static UHItype udivmodhi4(UHItype, UHItype, word_type);
-+
-+static UHItype
-+udivmodhi4(UHItype num, UHItype den, word_type modwanted)
-+{
-+  UHItype bit = 1;
-+  UHItype res = 0;
-+
-+  while (den < num && bit && !(den & (1L<<15)))
-+    {
-+      den <<=1;
-+      bit <<=1;
-+    }
-+  while (bit)
-+    {
-+      if (num >= den)
-+	{
-+	  num -= den;
-+	  res |= bit;
-+	}
-+      bit >>=1;
-+      den >>=1;
-+    }
-+  if (modwanted) return num;
-+  return res;
-+}
-+
-+
-+HItype
-+__divhi3 (HItype a, HItype b)
-+{
-+  word_type neg = 0;
-+  HItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = !neg;
-+    }
-+
-+  if (b < 0)
-+    {
-+      b = -b;
-+      neg = !neg;
-+    }
-+
-+  res = udivmodhi4 (a, b, 0);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+HItype
-+__modhi3 (HItype a, HItype b)
-+{
-+  word_type neg = 0;
-+  HItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = 1;
-+    }
-+
-+  if (b < 0)
-+    b = -b;
-+
-+  res = udivmodhi4 (a, b, 1);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+HItype
-+__udivhi3 (HItype a, HItype b)
-+{
-+  return udivmodhi4 (a, b, 0);
-+}
-+
-+
-+HItype
-+__umodhi3 (HItype a, HItype b)
-+{
-+  return udivmodhi4 (a, b, 1);
-+}
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-divmod.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod.c
-@@ -0,0 +1,126 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+extern SItype __modsi3 (SItype, SItype);
-+extern SItype __divsi3 (SItype, SItype);
-+extern SItype __umodsi3 (SItype, SItype);
-+extern SItype __udivsi3 (SItype, SItype);
-+
-+static USItype udivmodsi4(USItype, USItype, word_type);
-+
-+/* 16-bit SI divide and modulo as used in NIOS */
-+
-+
-+static USItype
-+udivmodsi4(USItype num, USItype den, word_type modwanted)
-+{
-+  USItype bit = 1;
-+  USItype res = 0;
-+
-+  while (den < num && bit && !(den & (1L<<31)))
-+    {
-+      den <<=1;
-+      bit <<=1;
-+    }
-+  while (bit)
-+    {
-+      if (num >= den)
-+	{
-+	  num -= den;
-+	  res |= bit;
-+	}
-+      bit >>=1;
-+      den >>=1;
-+    }
-+  if (modwanted) return num;
-+  return res;
-+}
-+
-+
-+SItype
-+__divsi3 (SItype a, SItype b)
-+{
-+  word_type neg = 0;
-+  SItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = !neg;
-+    }
-+
-+  if (b < 0)
-+    {
-+      b = -b;
-+      neg = !neg;
-+    }
-+
-+  res = udivmodsi4 (a, b, 0);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+SItype
-+__modsi3 (SItype a, SItype b)
-+{
-+  word_type neg = 0;
-+  SItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = 1;
-+    }
-+
-+  if (b < 0)
-+    b = -b;
-+
-+  res = udivmodsi4 (a, b, 1);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+SItype
-+__udivsi3 (SItype a, SItype b)
-+{
-+  return udivmodsi4 (a, b, 0);
-+}
-+
-+
-+SItype
-+__umodsi3 (SItype a, SItype b)
-+{
-+  return udivmodsi4 (a, b, 1);
-+}
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-divtable.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divtable.c
-@@ -0,0 +1,46 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+UQItype __divsi3_table[] =
-+{
-+  0, 0/1, 0/2, 0/3, 0/4, 0/5, 0/6, 0/7, 0/8, 0/9, 0/10, 0/11, 0/12, 0/13, 0/14, 0/15,
-+  0, 1/1, 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15,
-+  0, 2/1, 2/2, 2/3, 2/4, 2/5, 2/6, 2/7, 2/8, 2/9, 2/10, 2/11, 2/12, 2/13, 2/14, 2/15,
-+  0, 3/1, 3/2, 3/3, 3/4, 3/5, 3/6, 3/7, 3/8, 3/9, 3/10, 3/11, 3/12, 3/13, 3/14, 3/15,
-+  0, 4/1, 4/2, 4/3, 4/4, 4/5, 4/6, 4/7, 4/8, 4/9, 4/10, 4/11, 4/12, 4/13, 4/14, 4/15,
-+  0, 5/1, 5/2, 5/3, 5/4, 5/5, 5/6, 5/7, 5/8, 5/9, 5/10, 5/11, 5/12, 5/13, 5/14, 5/15,
-+  0, 6/1, 6/2, 6/3, 6/4, 6/5, 6/6, 6/7, 6/8, 6/9, 6/10, 6/11, 6/12, 6/13, 6/14, 6/15,
-+  0, 7/1, 7/2, 7/3, 7/4, 7/5, 7/6, 7/7, 7/8, 7/9, 7/10, 7/11, 7/12, 7/13, 7/14, 7/15,
-+  0, 8/1, 8/2, 8/3, 8/4, 8/5, 8/6, 8/7, 8/8, 8/9, 8/10, 8/11, 8/12, 8/13, 8/14, 8/15,
-+  0, 9/1, 9/2, 9/3, 9/4, 9/5, 9/6, 9/7, 9/8, 9/9, 9/10, 9/11, 9/12, 9/13, 9/14, 9/15,
-+  0, 10/1, 10/2, 10/3, 10/4, 10/5, 10/6, 10/7, 10/8, 10/9, 10/10, 10/11, 10/12, 10/13, 10/14, 10/15,
-+  0, 11/1, 11/2, 11/3, 11/4, 11/5, 11/6, 11/7, 11/8, 11/9, 11/10, 11/11, 11/12, 11/13, 11/14, 11/15,
-+  0, 12/1, 12/2, 12/3, 12/4, 12/5, 12/6, 12/7, 12/8, 12/9, 12/10, 12/11, 12/12, 12/13, 12/14, 12/15,
-+  0, 13/1, 13/2, 13/3, 13/4, 13/5, 13/6, 13/7, 13/8, 13/9, 13/10, 13/11, 13/12, 13/13, 13/14, 13/15,
-+  0, 14/1, 14/2, 14/3, 14/4, 14/5, 14/6, 14/7, 14/8, 14/9, 14/10, 14/11, 14/12, 14/13, 14/14, 14/15,
-+  0, 15/1, 15/2, 15/3, 15/4, 15/5, 15/6, 15/7, 15/8, 15/9, 15/10, 15/11, 15/12, 15/13, 15/14, 15/15,
-+};
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-mul.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-mul.c
-@@ -0,0 +1,103 @@
-+/* while we are debugging (ie compile outside of gcc build) 
-+   disable gcc specific headers */
-+#ifndef DEBUG_MULSI3
-+
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+#else
-+#define SItype int
-+#define USItype unsigned int
-+#endif
-+
-+
-+extern SItype __mulsi3 (SItype, SItype);
-+
-+SItype
-+__mulsi3 (SItype a, SItype b)
-+{
-+  SItype res = 0;
-+  USItype cnt = a;
-+  
-+  while (cnt)
-+    {
-+      if (cnt & 1)
-+        {
-+	  res += b;	  
-+	}
-+      b <<= 1;
-+      cnt >>= 1;
-+    }
-+    
-+  return res;
-+}
-+/*
-+TODO: Choose best alternative implementation.
-+
-+SItype
-+__divsi3 (SItype a, SItype b)
-+{
-+  SItype res = 0;
-+  USItype cnt = 0;
-+  
-+  while (cnt < 32)
-+    {
-+      if (a & (1L << cnt))
-+        {
-+	  res += b;	  
-+	}
-+      b <<= 1;
-+      cnt++;
-+    }
-+    
-+  return res;
-+}
-+*/
-+
-+
-+#ifdef DEBUG_MULSI3
-+
-+int
-+main ()
-+{
-+  int i, j;
-+  int error = 0;
-+  
-+  for (i = -1000; i < 1000; i++)
-+    for (j = -1000; j < 1000; j++)
-+      {
-+	int expect = i * j;
-+	int actual = A__divsi3 (i, j);
-+	if (expect != actual)
-+	  {
-+	    printf ("error: %d * %d = %d not %d\n", i, j, expect, actual);
-+	    error = 1;
-+	  }
-+      }
-+
-+  return error;
-+}
-+#endif
---- gcc-3.4.3/gcc/config/nios2/nios2-dp-bit.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-dp-bit.c
-@@ -0,0 +1,1652 @@
-+
-+/* This is a software floating point library which can be used
-+   for targets without hardware floating point. 
-+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
-+   Free Software Foundation, Inc.
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with other files,
-+   some of which are compiled with GCC, to produce an executable,
-+   this library 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.  */
-+
-+/* This implements IEEE 754 format arithmetic, but does not provide a
-+   mechanism for setting the rounding mode, or for generating or handling
-+   exceptions.
-+
-+   The original code by Steve Chamberlain, hacked by Mark Eichin and Jim
-+   Wilson, all of Cygnus Support.  */
-+
-+/* The intended way to use this file is to make two copies, add `#define FLOAT'
-+   to one copy, then compile both copies and add them to libgcc.a.  */
-+
-+#include "tconfig.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "config/fp-bit.h"
-+
-+/* The following macros can be defined to change the behavior of this file:
-+   FLOAT: Implement a `float', aka SFmode, fp library.  If this is not
-+     defined, then this file implements a `double', aka DFmode, fp library.
-+   FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e.
-+     don't include float->double conversion which requires the double library.
-+     This is useful only for machines which can't support doubles, e.g. some
-+     8-bit processors.
-+   CMPtype: Specify the type that floating point compares should return.
-+     This defaults to SItype, aka int.
-+   US_SOFTWARE_GOFAST: This makes all entry points use the same names as the
-+     US Software goFast library.
-+   _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding
-+     two integers to the FLO_union_type.
-+   NO_DENORMALS: Disable handling of denormals.
-+   NO_NANS: Disable nan and infinity handling
-+   SMALL_MACHINE: Useful when operations on QIs and HIs are faster
-+     than on an SI */
-+
-+/* We don't currently support extended floats (long doubles) on machines
-+   without hardware to deal with them.
-+
-+   These stubs are just to keep the linker from complaining about unresolved
-+   references which can be pulled in from libio & libstdc++, even if the
-+   user isn't using long doubles.  However, they may generate an unresolved
-+   external to abort if abort is not used by the function, and the stubs
-+   are referenced from within libc, since libgcc goes before and after the
-+   system library.  */
-+
-+#ifdef DECLARE_LIBRARY_RENAMES
-+  DECLARE_LIBRARY_RENAMES
-+#endif
-+
-+#ifdef EXTENDED_FLOAT_STUBS
-+extern void abort (void);
-+void __extendsfxf2 (void) { abort(); }
-+void __extenddfxf2 (void) { abort(); }
-+void __truncxfdf2 (void) { abort(); }
-+void __truncxfsf2 (void) { abort(); }
-+void __fixxfsi (void) { abort(); }
-+void __floatsixf (void) { abort(); }
-+void __addxf3 (void) { abort(); }
-+void __subxf3 (void) { abort(); }
-+void __mulxf3 (void) { abort(); }
-+void __divxf3 (void) { abort(); }
-+void __negxf2 (void) { abort(); }
-+void __eqxf2 (void) { abort(); }
-+void __nexf2 (void) { abort(); }
-+void __gtxf2 (void) { abort(); }
-+void __gexf2 (void) { abort(); }
-+void __lexf2 (void) { abort(); }
-+void __ltxf2 (void) { abort(); }
-+
-+void __extendsftf2 (void) { abort(); }
-+void __extenddftf2 (void) { abort(); }
-+void __trunctfdf2 (void) { abort(); }
-+void __trunctfsf2 (void) { abort(); }
-+void __fixtfsi (void) { abort(); }
-+void __floatsitf (void) { abort(); }
-+void __addtf3 (void) { abort(); }
-+void __subtf3 (void) { abort(); }
-+void __multf3 (void) { abort(); }
-+void __divtf3 (void) { abort(); }
-+void __negtf2 (void) { abort(); }
-+void __eqtf2 (void) { abort(); }
-+void __netf2 (void) { abort(); }
-+void __gttf2 (void) { abort(); }
-+void __getf2 (void) { abort(); }
-+void __letf2 (void) { abort(); }
-+void __lttf2 (void) { abort(); }
-+#else	/* !EXTENDED_FLOAT_STUBS, rest of file */
-+
-+/* IEEE "special" number predicates */
-+
-+#ifdef NO_NANS
-+
-+#define nan() 0
-+#define isnan(x) 0
-+#define isinf(x) 0
-+#else
-+
-+#if   defined L_thenan_sf
-+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_df
-+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_tf
-+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined TFLOAT
-+extern const fp_number_type __thenan_tf;
-+#elif defined FLOAT
-+extern const fp_number_type __thenan_sf;
-+#else
-+extern const fp_number_type __thenan_df;
-+#endif
-+
-+INLINE
-+static fp_number_type *
-+nan (void)
-+{
-+  /* Discard the const qualifier...  */
-+#ifdef TFLOAT
-+  return (fp_number_type *) (& __thenan_tf);
-+#elif defined FLOAT  
-+  return (fp_number_type *) (& __thenan_sf);
-+#else
-+  return (fp_number_type *) (& __thenan_df);
-+#endif
-+}
-+
-+INLINE
-+static int
-+isnan ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_SNAN || x->class == CLASS_QNAN;
-+}
-+
-+INLINE
-+static int
-+isinf ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_INFINITY;
-+}
-+
-+#endif /* NO_NANS */
-+
-+INLINE
-+static int
-+iszero ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_ZERO;
-+}
-+
-+INLINE 
-+static void
-+flip_sign ( fp_number_type *  x)
-+{
-+  x->sign = !x->sign;
-+}
-+
-+extern FLO_type pack_d ( fp_number_type * );
-+
-+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf)
-+FLO_type
-+pack_d ( fp_number_type *  src)
-+{
-+  FLO_union_type dst;
-+  fractype fraction = src->fraction.ll;	/* wasn't unsigned before? */
-+  int sign = src->sign;
-+  int exp = 0;
-+
-+  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src)))
-+    {
-+      /* We can't represent these values accurately.  By using the
-+	 largest possible magnitude, we guarantee that the conversion
-+	 of infinity is at least as big as any finite number.  */
-+      exp = EXPMAX;
-+      fraction = ((fractype) 1 << FRACBITS) - 1;
-+    }
-+  else if (isnan (src))
-+    {
-+      exp = EXPMAX;
-+      if (src->class == CLASS_QNAN || 1)
-+	{
-+#ifdef QUIET_NAN_NEGATED
-+	  fraction |= QUIET_NAN - 1;
-+#else
-+	  fraction |= QUIET_NAN;
-+#endif
-+	}
-+    }
-+  else if (isinf (src))
-+    {
-+      exp = EXPMAX;
-+      fraction = 0;
-+    }
-+  else if (iszero (src))
-+    {
-+      exp = 0;
-+      fraction = 0;
-+    }
-+  else if (fraction == 0)
-+    {
-+      exp = 0;
-+    }
-+  else
-+    {
-+      if (src->normal_exp < NORMAL_EXPMIN)
-+	{
-+#ifdef NO_DENORMALS
-+	  /* Go straight to a zero representation if denormals are not
-+ 	     supported.  The denormal handling would be harmless but
-+ 	     isn't unnecessary.  */
-+	  exp = 0;
-+	  fraction = 0;
-+#else /* NO_DENORMALS */
-+	  /* This number's exponent is too low to fit into the bits
-+	     available in the number, so we'll store 0 in the exponent and
-+	     shift the fraction to the right to make up for it.  */
-+
-+	  int shift = NORMAL_EXPMIN - src->normal_exp;
-+
-+	  exp = 0;
-+
-+	  if (shift > FRAC_NBITS - NGARDS)
-+	    {
-+	      /* No point shifting, since it's more that 64 out.  */
-+	      fraction = 0;
-+	    }
-+	  else
-+	    {
-+	      int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0;
-+	      fraction = (fraction >> shift) | lowbit;
-+	    }
-+	  if ((fraction & GARDMASK) == GARDMSB)
-+	    {
-+	      if ((fraction & (1 << NGARDS)))
-+		fraction += GARDROUND + 1;
-+	    }
-+	  else
-+	    {
-+	      /* Add to the guards to round up.  */
-+	      fraction += GARDROUND;
-+	    }
-+	  /* Perhaps the rounding means we now need to change the
-+             exponent, because the fraction is no longer denormal.  */
-+	  if (fraction >= IMPLICIT_1)
-+	    {
-+	      exp += 1;
-+	    }
-+	  fraction >>= NGARDS;
-+#endif /* NO_DENORMALS */
-+	}
-+      else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS)
-+	       && src->normal_exp > EXPBIAS)
-+	{
-+	  exp = EXPMAX;
-+	  fraction = 0;
-+	}
-+      else
-+	{
-+	  exp = src->normal_exp + EXPBIAS;
-+	  if (!ROUND_TOWARDS_ZERO)
-+	    {
-+	      /* IF the gard bits are the all zero, but the first, then we're
-+		 half way between two numbers, choose the one which makes the
-+		 lsb of the answer 0.  */
-+	      if ((fraction & GARDMASK) == GARDMSB)
-+		{
-+		  if (fraction & (1 << NGARDS))
-+		    fraction += GARDROUND + 1;
-+		}
-+	      else
-+		{
-+		  /* Add a one to the guards to round up */
-+		  fraction += GARDROUND;
-+		}
-+	      if (fraction >= IMPLICIT_2)
-+		{
-+		  fraction >>= 1;
-+		  exp += 1;
-+		}
-+	    }
-+	  fraction >>= NGARDS;
-+
-+	  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX)
-+	    {
-+	      /* Saturate on overflow.  */
-+	      exp = EXPMAX;
-+	      fraction = ((fractype) 1 << FRACBITS) - 1;
-+	    }
-+	}
-+    }
-+
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  dst.bits.fraction = fraction;
-+  dst.bits.exp = exp;
-+  dst.bits.sign = sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low, unity;
-+   int lowsign, lowexp;
-+
-+   unity = (halffractype) 1 << HALFFRACBITS;
-+
-+   /* Set HIGH to the high double's significand, masking out the implicit 1.
-+      Set LOW to the low double's full significand.  */
-+   high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1);
-+   low = fraction & (unity * 2 - 1);
-+
-+   /* Get the initial sign and exponent of the low double.  */
-+   lowexp = exp - HALFFRACBITS - 1;
-+   lowsign = sign;
-+
-+   /* HIGH should be rounded like a normal double, making |LOW| <=
-+      0.5 ULP of HIGH.  Assume round-to-nearest.  */
-+   if (exp < EXPMAX)
-+     if (low > unity || (low == unity && (high & 1) == 1))
-+       {
-+	 /* Round HIGH up and adjust LOW to match.  */
-+	 high++;
-+	 if (high == unity)
-+	   {
-+	     /* May make it infinite, but that's OK.  */
-+	     high = 0;
-+	     exp++;
-+	   }
-+	 low = unity * 2 - low;
-+	 lowsign ^= 1;
-+       }
-+
-+   high |= (halffractype) exp << HALFFRACBITS;
-+   high |= (halffractype) sign << (HALFFRACBITS + EXPBITS);
-+
-+   if (exp == EXPMAX || exp == 0 || low == 0)
-+     low = 0;
-+   else
-+     {
-+       while (lowexp > 0 && low < unity)
-+	 {
-+	   low <<= 1;
-+	   lowexp--;
-+	 }
-+
-+       if (lowexp <= 0)
-+	 {
-+	   halffractype roundmsb, round;
-+	   int shift;
-+
-+	   shift = 1 - lowexp;
-+	   roundmsb = (1 << (shift - 1));
-+	   round = low & ((roundmsb << 1) - 1);
-+
-+	   low >>= shift;
-+	   lowexp = 0;
-+
-+	   if (round > roundmsb || (round == roundmsb && (low & 1) == 1))
-+	     {
-+	       low++;
-+	       if (low == unity)
-+		 /* LOW rounds up to the smallest normal number.  */
-+		 lowexp++;
-+	     }
-+	 }
-+
-+       low &= unity - 1;
-+       low |= (halffractype) lowexp << HALFFRACBITS;
-+       low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS);
-+     }
-+   dst.value_raw = ((fractype) high << HALFSHIFT) | low;
-+ }
-+# else
-+  dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
-+  dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS;
-+  dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS);
-+# endif
-+#endif
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+#ifdef TFLOAT
-+  {
-+    qrtrfractype tmp1 = dst.words[0];
-+    qrtrfractype tmp2 = dst.words[1];
-+    dst.words[0] = dst.words[3];
-+    dst.words[1] = dst.words[2];
-+    dst.words[2] = tmp2;
-+    dst.words[3] = tmp1;
-+  }
-+#else
-+  {
-+    halffractype tmp = dst.words[0];
-+    dst.words[0] = dst.words[1];
-+    dst.words[1] = tmp;
-+  }
-+#endif
-+#endif
-+
-+  return dst.value;
-+}
-+#endif
-+
-+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf)
-+void
-+unpack_d (FLO_union_type * src, fp_number_type * dst)
-+{
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+  fractype fraction;
-+  int exp;
-+  int sign;
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+  FLO_union_type swapped;
-+
-+#ifdef TFLOAT
-+  swapped.words[0] = src->words[3];
-+  swapped.words[1] = src->words[2];
-+  swapped.words[2] = src->words[1];
-+  swapped.words[3] = src->words[0];
-+#else
-+  swapped.words[0] = src->words[1];
-+  swapped.words[1] = src->words[0];
-+#endif
-+  src = &swapped;
-+#endif
-+  
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  fraction = src->bits.fraction;
-+  exp = src->bits.exp;
-+  sign = src->bits.sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low;
-+   
-+   high = src->value_raw >> HALFSHIFT;
-+   low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1);
-+
-+   fraction = high & ((((fractype)1) << HALFFRACBITS) - 1);
-+   fraction <<= FRACBITS - HALFFRACBITS;
-+   exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+   sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+
-+   if (exp != EXPMAX && exp != 0 && low != 0)
-+     {
-+       int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+       int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+       int shift;
-+       fractype xlow;
-+
-+       xlow = low & ((((fractype)1) << HALFFRACBITS) - 1);
-+       if (lowexp)
-+	 xlow |= (((halffractype)1) << HALFFRACBITS);
-+       else
-+	 lowexp = 1;
-+       shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp);
-+       if (shift > 0)
-+	 xlow <<= shift;
-+       else if (shift < 0)
-+	 xlow >>= -shift;
-+       if (sign == lowsign)
-+	 fraction += xlow;
-+       else if (fraction >= xlow)
-+	 fraction -= xlow;
-+       else
-+	 {
-+	   /* The high part is a power of two but the full number is lower.
-+	      This code will leave the implicit 1 in FRACTION, but we'd
-+	      have added that below anyway.  */
-+	   fraction = (((fractype) 1 << FRACBITS) - xlow) << 1;
-+	   exp--;
-+	 }
-+     }
-+ }
-+# else
-+  fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1);
-+  exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1);
-+  sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1;
-+# endif
-+#endif
-+
-+  dst->sign = sign;
-+  if (exp == 0)
-+    {
-+      /* Hmm.  Looks like 0 */
-+      if (fraction == 0
-+#ifdef NO_DENORMALS
-+	  || 1
-+#endif
-+	  )
-+	{
-+	  /* tastes like zero */
-+	  dst->class = CLASS_ZERO;
-+	}
-+      else
-+	{
-+	  /* Zero exponent with nonzero fraction - it's denormalized,
-+	     so there isn't a leading implicit one - we'll shift it so
-+	     it gets one.  */
-+	  dst->normal_exp = exp - EXPBIAS + 1;
-+	  fraction <<= NGARDS;
-+
-+	  dst->class = CLASS_NUMBER;
-+#if 1
-+	  while (fraction < IMPLICIT_1)
-+	    {
-+	      fraction <<= 1;
-+	      dst->normal_exp--;
-+	    }
-+#endif
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX)
-+    {
-+      /* Huge exponent*/
-+      if (fraction == 0)
-+	{
-+	  /* Attached to a zero fraction - means infinity */
-+	  dst->class = CLASS_INFINITY;
-+	}
-+      else
-+	{
-+	  /* Nonzero fraction, means nan */
-+#ifdef QUIET_NAN_NEGATED
-+	  if ((fraction & QUIET_NAN) == 0)
-+#else
-+	  if (fraction & QUIET_NAN)
-+#endif
-+	    {
-+	      dst->class = CLASS_QNAN;
-+	    }
-+	  else
-+	    {
-+	      dst->class = CLASS_SNAN;
-+	    }
-+	  /* Keep the fraction part as the nan number */
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else
-+    {
-+      /* Nothing strange about this number */
-+      dst->normal_exp = exp - EXPBIAS;
-+      dst->class = CLASS_NUMBER;
-+      dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1;
-+    }
-+}
-+#endif /* L_unpack_df || L_unpack_sf */
-+
-+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf)
-+static fp_number_type *
-+_fpadd_parts (fp_number_type * a,
-+	      fp_number_type * b,
-+	      fp_number_type * tmp)
-+{
-+  intfrac tfraction;
-+
-+  /* Put commonly used fields in local variables.  */
-+  int a_normal_exp;
-+  int b_normal_exp;
-+  fractype a_fraction;
-+  fractype b_fraction;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      /* Adding infinities with opposite signs yields a NaN.  */
-+      if (isinf (b) && a->sign != b->sign)
-+	return nan ();
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      return b;
-+    }
-+  if (iszero (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  *tmp = *a;
-+	  tmp->sign = a->sign & b->sign;
-+	  return tmp;
-+	}
-+      return a;
-+    }
-+  if (iszero (a))
-+    {
-+      return b;
-+    }
-+
-+  /* Got two numbers. shift the smaller and increment the exponent till
-+     they're the same */
-+  {
-+    int diff;
-+
-+    a_normal_exp = a->normal_exp;
-+    b_normal_exp = b->normal_exp;
-+    a_fraction = a->fraction.ll;
-+    b_fraction = b->fraction.ll;
-+
-+    diff = a_normal_exp - b_normal_exp;
-+
-+    if (diff < 0)
-+      diff = -diff;
-+    if (diff < FRAC_NBITS)
-+      {
-+	/* ??? This does shifts one bit at a time.  Optimize.  */
-+	while (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp++;
-+	    LSHIFT (b_fraction);
-+	  }
-+	while (b_normal_exp > a_normal_exp)
-+	  {
-+	    a_normal_exp++;
-+	    LSHIFT (a_fraction);
-+	  }
-+      }
-+    else
-+      {
-+	/* Somethings's up.. choose the biggest */
-+	if (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp = a_normal_exp;
-+	    b_fraction = 0;
-+	  }
-+	else
-+	  {
-+	    a_normal_exp = b_normal_exp;
-+	    a_fraction = 0;
-+	  }
-+      }
-+  }
-+
-+  if (a->sign != b->sign)
-+    {
-+      if (a->sign)
-+	{
-+	  tfraction = -a_fraction + b_fraction;
-+	}
-+      else
-+	{
-+	  tfraction = a_fraction - b_fraction;
-+	}
-+      if (tfraction >= 0)
-+	{
-+	  tmp->sign = 0;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = tfraction;
-+	}
-+      else
-+	{
-+	  tmp->sign = 1;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = -tfraction;
-+	}
-+      /* and renormalize it */
-+
-+      while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll)
-+	{
-+	  tmp->fraction.ll <<= 1;
-+	  tmp->normal_exp--;
-+	}
-+    }
-+  else
-+    {
-+      tmp->sign = a->sign;
-+      tmp->normal_exp = a_normal_exp;
-+      tmp->fraction.ll = a_fraction + b_fraction;
-+    }
-+  tmp->class = CLASS_NUMBER;
-+  /* Now the fraction is added, we have to shift down to renormalize the
-+     number */
-+
-+  if (tmp->fraction.ll >= IMPLICIT_2)
-+    {
-+      LSHIFT (tmp->fraction.ll);
-+      tmp->normal_exp++;
-+    }
-+  return tmp;
-+
-+}
-+
-+FLO_type
-+add (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+
-+FLO_type
-+sub (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  b.sign ^= 1;
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_addsub_sf || L_addsub_df */
-+
-+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpmul_parts ( fp_number_type *  a,
-+	       fp_number_type *  b,
-+	       fp_number_type * tmp)
-+{
-+  fractype low = 0;
-+  fractype high = 0;
-+
-+  if (isnan (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      if (iszero (b))
-+	return nan ();
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  return nan ();
-+	}
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (iszero (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both numbers to get a
-+     twice-as-wide number.  */
-+  {
-+#if defined(NO_DI_MODE) || defined(TFLOAT)
-+    {
-+      fractype x = a->fraction.ll;
-+      fractype ylow = b->fraction.ll;
-+      fractype yhigh = 0;
-+      int bit;
-+
-+      /* ??? This does multiplies one bit at a time.  Optimize.  */
-+      for (bit = 0; bit < FRAC_NBITS; bit++)
-+	{
-+	  int carry;
-+
-+	  if (x & 1)
-+	    {
-+	      carry = (low += ylow) < ylow;
-+	      high += yhigh + carry;
-+	    }
-+	  yhigh <<= 1;
-+	  if (ylow & FRACHIGH)
-+	    {
-+	      yhigh |= 1;
-+	    }
-+	  ylow <<= 1;
-+	  x >>= 1;
-+	}
-+    }
-+#elif defined(FLOAT) 
-+    /* Multiplying two USIs to get a UDI, we're safe.  */
-+    {
-+      UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll;
-+      
-+      high = answer >> BITS_PER_SI;
-+      low = answer;
-+    }
-+#else
-+    /* fractype is DImode, but we need the result to be twice as wide.
-+       Assuming a widening multiply from DImode to TImode is not
-+       available, build one by hand.  */
-+    {
-+      USItype nl = a->fraction.ll;
-+      USItype nh = a->fraction.ll >> BITS_PER_SI;
-+      USItype ml = b->fraction.ll;
-+      USItype mh = b->fraction.ll >> BITS_PER_SI;
-+      UDItype pp_ll = (UDItype) ml * nl;
-+      UDItype pp_hl = (UDItype) mh * nl;
-+      UDItype pp_lh = (UDItype) ml * nh;
-+      UDItype pp_hh = (UDItype) mh * nh;
-+      UDItype res2 = 0;
-+      UDItype res0 = 0;
-+      UDItype ps_hh__ = pp_hl + pp_lh;
-+      if (ps_hh__ < pp_hl)
-+	res2 += (UDItype)1 << BITS_PER_SI;
-+      pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI;
-+      res0 = pp_ll + pp_hl;
-+      if (res0 < pp_ll)
-+	res2++;
-+      res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh;
-+      high = res2;
-+      low = res0;
-+    }
-+#endif
-+  }
-+
-+  tmp->normal_exp = a->normal_exp + b->normal_exp
-+    + FRAC_NBITS - (FRACBITS + NGARDS);
-+  tmp->sign = a->sign != b->sign;
-+  while (high >= IMPLICIT_2)
-+    {
-+      tmp->normal_exp++;
-+      if (high & 1)
-+	{
-+	  low >>= 1;
-+	  low |= FRACHIGH;
-+	}
-+      high >>= 1;
-+    }
-+  while (high < IMPLICIT_1)
-+    {
-+      tmp->normal_exp--;
-+
-+      high <<= 1;
-+      if (low & FRACHIGH)
-+	high |= 1;
-+      low <<= 1;
-+    }
-+  /* rounding is tricky. if we only round if it won't make us round later.  */
-+#if 0
-+  if (low & FRACHIGH2)
-+    {
-+      if (((high & GARDMASK) != GARDMSB)
-+	  && (((high + 1) & GARDMASK) == GARDMSB))
-+	{
-+	  /* don't round, it gets done again later.  */
-+	}
-+      else
-+	{
-+	  high++;
-+	}
-+    }
-+#endif
-+  if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB)
-+    {
-+      if (high & (1 << NGARDS))
-+	{
-+	  /* half way, so round to even */
-+	  high += GARDROUND + 1;
-+	}
-+      else if (low)
-+	{
-+	  /* but we really weren't half way */
-+	  high += GARDROUND + 1;
-+	}
-+    }
-+  tmp->fraction.ll = high;
-+  tmp->class = CLASS_NUMBER;
-+  return tmp;
-+}
-+
-+FLO_type
-+multiply (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpmul_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_mul_sf || L_mul_df */
-+
-+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpdiv_parts (fp_number_type * a,
-+	      fp_number_type * b)
-+{
-+  fractype bit;
-+  fractype numerator;
-+  fractype denominator;
-+  fractype quotient;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+
-+  a->sign = a->sign ^ b->sign;
-+
-+  if (isinf (a) || iszero (a))
-+    {
-+      if (a->class == b->class)
-+	return nan ();
-+      return a;
-+    }
-+
-+  if (isinf (b))
-+    {
-+      a->fraction.ll = 0;
-+      a->normal_exp = 0;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      a->class = CLASS_INFINITY;
-+      return a;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both 64bit numbers to get a
-+     128 bit number */
-+  {
-+    /* quotient =
-+       ( numerator / denominator) * 2^(numerator exponent -  denominator exponent)
-+     */
-+
-+    a->normal_exp = a->normal_exp - b->normal_exp;
-+    numerator = a->fraction.ll;
-+    denominator = b->fraction.ll;
-+
-+    if (numerator < denominator)
-+      {
-+	/* Fraction will be less than 1.0 */
-+	numerator *= 2;
-+	a->normal_exp--;
-+      }
-+    bit = IMPLICIT_1;
-+    quotient = 0;
-+    /* ??? Does divide one bit at a time.  Optimize.  */
-+    while (bit)
-+      {
-+	if (numerator >= denominator)
-+	  {
-+	    quotient |= bit;
-+	    numerator -= denominator;
-+	  }
-+	bit >>= 1;
-+	numerator *= 2;
-+      }
-+
-+    if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB)
-+      {
-+	if (quotient & (1 << NGARDS))
-+	  {
-+	    /* half way, so round to even */
-+	    quotient += GARDROUND + 1;
-+	  }
-+	else if (numerator)
-+	  {
-+	    /* but we really weren't half way, more bits exist */
-+	    quotient += GARDROUND + 1;
-+	  }
-+      }
-+
-+    a->fraction.ll = quotient;
-+    return (a);
-+  }
-+}
-+
-+FLO_type
-+divide (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpdiv_parts (&a, &b);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_div_sf || L_div_df */
-+
-+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \
-+    || defined(L_fpcmp_parts_tf)
-+/* according to the demo, fpcmp returns a comparison with 0... thus
-+   a<b -> -1
-+   a==b -> 0
-+   a>b -> +1
-+ */
-+
-+int
-+__fpcmp_parts (fp_number_type * a, fp_number_type * b)
-+{
-+#if 0
-+  /* either nan -> unordered. Must be checked outside of this routine.  */
-+  if (isnan (a) && isnan (b))
-+    {
-+      return 1;			/* still unordered! */
-+    }
-+#endif
-+
-+  if (isnan (a) || isnan (b))
-+    {
-+      return 1;			/* how to indicate unordered compare? */
-+    }
-+  if (isinf (a) && isinf (b))
-+    {
-+      /* +inf > -inf, but +inf != +inf */
-+      /* b    \a| +inf(0)| -inf(1)
-+       ______\+--------+--------
-+       +inf(0)| a==b(0)| a<b(-1)
-+       -------+--------+--------
-+       -inf(1)| a>b(1) | a==b(0)
-+       -------+--------+--------
-+       So since unordered must be nonzero, just line up the columns...
-+       */
-+      return b->sign - a->sign;
-+    }
-+  /* but not both...  */
-+  if (isinf (a))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (isinf (b))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (a) && iszero (b))
-+    {
-+      return 0;
-+    }
-+  if (iszero (a))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (b))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  /* now both are "normal".  */
-+  if (a->sign != b->sign)
-+    {
-+      /* opposite signs */
-+      return a->sign ? -1 : 1;
-+    }
-+  /* same sign; exponents? */
-+  if (a->normal_exp > b->normal_exp)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->normal_exp < b->normal_exp)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* same exponents; check size.  */
-+  if (a->fraction.ll > b->fraction.ll)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->fraction.ll < b->fraction.ll)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* after all that, they're equal.  */
-+  return 0;
-+}
-+#endif
-+
-+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf)
-+CMPtype
-+compare (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_compare_sf || L_compare_df */
-+
-+#ifndef US_SOFTWARE_GOFAST
-+
-+/* These should be optimized for their specific tasks someday.  */
-+
-+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf)
-+CMPtype
-+_eq_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth == 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_eq_sf || L_eq_df */
-+
-+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf)
-+CMPtype
-+_ne_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* true, truth != 0 */
-+
-+  return  __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ne_sf || L_ne_df */
-+
-+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf)
-+CMPtype
-+_gt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth > 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_gt_sf || L_gt_df */
-+
-+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf)
-+CMPtype
-+_ge_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth >= 0 */
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ge_sf || L_ge_df */
-+
-+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf)
-+CMPtype
-+_lt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth < 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_lt_sf || L_lt_df */
-+
-+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf)
-+CMPtype
-+_le_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth <= 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_le_sf || L_le_df */
-+
-+#endif /* ! US_SOFTWARE_GOFAST */
-+
-+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf)
-+CMPtype
-+_unord_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return (isnan (&a) || isnan (&b));
-+}
-+#endif /* L_unord_sf || L_unord_df */
-+
-+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf)
-+FLO_type
-+si_to_float (SItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.class = CLASS_NUMBER;
-+  in.sign = arg_a < 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.normal_exp = FRACBITS + NGARDS;
-+      if (in.sign) 
-+	{
-+	  /* Special case for minint, since there is no +ve integer
-+	     representation for it */
-+	  if (arg_a == (- MAX_SI_INT - 1))
-+	    {
-+	      return (FLO_type)(- MAX_SI_INT - 1);
-+	    }
-+	  in.fraction.ll = (-arg_a);
-+	}
-+      else
-+	in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif /* L_si_to_sf || L_si_to_df */
-+
-+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf)
-+FLO_type
-+usi_to_float (USItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.sign = 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.class = CLASS_NUMBER;
-+      in.normal_exp = FRACBITS + NGARDS;
-+      in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS)))
-+        {
-+          in.fraction.ll >>= 1;
-+          in.normal_exp += 1;
-+        }
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif
-+
-+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si)
-+SItype
-+float_to_si (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  SItype tmp;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* get reasonable MAX_SI_INT...  */
-+  if (isinf (&a))
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 2)
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+  return a.sign ? (-tmp) : (tmp);
-+}
-+#endif /* L_sf_to_si || L_df_to_si */
-+
-+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi)
-+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi)
-+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines,
-+   we also define them for GOFAST because the ones in libgcc2.c have the
-+   wrong names and I'd rather define these here and keep GOFAST CYG-LOC's
-+   out of libgcc2.c.  We can't define these here if not GOFAST because then
-+   there'd be duplicate copies.  */
-+
-+USItype
-+float_to_usi (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* it is a negative number */
-+  if (a.sign)
-+    return 0;
-+  /* get reasonable MAX_USI_INT...  */
-+  if (isinf (&a))
-+    return MAX_USI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 1)
-+    return MAX_USI_INT;
-+  else if (a.normal_exp > (FRACBITS + NGARDS))
-+    return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS));
-+  else
-+    return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+}
-+#endif /* US_SOFTWARE_GOFAST */
-+#endif /* L_sf_to_usi || L_df_to_usi */
-+
-+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf)
-+FLO_type
-+negate (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  flip_sign (&a);
-+  return pack_d (&a);
-+}
-+#endif /* L_negate_sf || L_negate_df */
-+
-+#ifdef FLOAT
-+
-+#if defined(L_make_sf)
-+SFtype
-+__make_fp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     USItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_sf */
-+
-+#ifndef FLOAT_ONLY
-+
-+/* This enables one to build an fp library that supports float but not double.
-+   Otherwise, we would get an undefined reference to __make_dp.
-+   This is needed for some 8-bit ports that can't handle well values that
-+   are 8-bytes in size, so we just don't support double for them at all.  */
-+
-+#if defined(L_sf_to_df)
-+DFtype
-+sf_to_df (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp,
-+		    ((UDItype) in.fraction.ll) << F_D_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#if defined(L_sf_to_tf) && defined(TMODES)
-+TFtype
-+sf_to_tf (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << F_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#endif /* ! FLOAT_ONLY */
-+#endif /* FLOAT */
-+
-+#ifndef FLOAT
-+
-+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);
-+
-+#if defined(L_make_df)
-+DFtype
-+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_df */
-+
-+#if defined(L_df_to_sf)
-+SFtype
-+df_to_sf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_D_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_df_to_sf */
-+
-+#if defined(L_df_to_tf) && defined(TMODES) \
-+    && !defined(FLOAT) && !defined(TFLOAT)
-+TFtype
-+df_to_tf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << D_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#ifdef TFLOAT
-+#if defined(L_make_tf)
-+TFtype
-+__make_tp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     UTItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_tf */
-+
-+#if defined(L_tf_to_df)
-+DFtype
-+tf_to_df (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  UDItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> D_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_df */
-+
-+#if defined(L_tf_to_sf)
-+SFtype
-+tf_to_sf (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_sf */
-+#endif /* TFLOAT */
-+
-+#endif /* ! FLOAT */
-+#endif /* !EXTENDED_FLOAT_STUBS */
---- gcc-3.4.3/gcc/config/nios2/nios2-fp-bit.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-fp-bit.c
-@@ -0,0 +1,1652 @@
-+#define FLOAT
-+/* This is a software floating point library which can be used
-+   for targets without hardware floating point. 
-+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
-+   Free Software Foundation, Inc.
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with other files,
-+   some of which are compiled with GCC, to produce an executable,
-+   this library 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.  */
-+
-+/* This implements IEEE 754 format arithmetic, but does not provide a
-+   mechanism for setting the rounding mode, or for generating or handling
-+   exceptions.
-+
-+   The original code by Steve Chamberlain, hacked by Mark Eichin and Jim
-+   Wilson, all of Cygnus Support.  */
-+
-+/* The intended way to use this file is to make two copies, add `#define FLOAT'
-+   to one copy, then compile both copies and add them to libgcc.a.  */
-+
-+#include "tconfig.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "config/fp-bit.h"
-+
-+/* The following macros can be defined to change the behavior of this file:
-+   FLOAT: Implement a `float', aka SFmode, fp library.  If this is not
-+     defined, then this file implements a `double', aka DFmode, fp library.
-+   FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e.
-+     don't include float->double conversion which requires the double library.
-+     This is useful only for machines which can't support doubles, e.g. some
-+     8-bit processors.
-+   CMPtype: Specify the type that floating point compares should return.
-+     This defaults to SItype, aka int.
-+   US_SOFTWARE_GOFAST: This makes all entry points use the same names as the
-+     US Software goFast library.
-+   _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding
-+     two integers to the FLO_union_type.
-+   NO_DENORMALS: Disable handling of denormals.
-+   NO_NANS: Disable nan and infinity handling
-+   SMALL_MACHINE: Useful when operations on QIs and HIs are faster
-+     than on an SI */
-+
-+/* We don't currently support extended floats (long doubles) on machines
-+   without hardware to deal with them.
-+
-+   These stubs are just to keep the linker from complaining about unresolved
-+   references which can be pulled in from libio & libstdc++, even if the
-+   user isn't using long doubles.  However, they may generate an unresolved
-+   external to abort if abort is not used by the function, and the stubs
-+   are referenced from within libc, since libgcc goes before and after the
-+   system library.  */
-+
-+#ifdef DECLARE_LIBRARY_RENAMES
-+  DECLARE_LIBRARY_RENAMES
-+#endif
-+
-+#ifdef EXTENDED_FLOAT_STUBS
-+extern void abort (void);
-+void __extendsfxf2 (void) { abort(); }
-+void __extenddfxf2 (void) { abort(); }
-+void __truncxfdf2 (void) { abort(); }
-+void __truncxfsf2 (void) { abort(); }
-+void __fixxfsi (void) { abort(); }
-+void __floatsixf (void) { abort(); }
-+void __addxf3 (void) { abort(); }
-+void __subxf3 (void) { abort(); }
-+void __mulxf3 (void) { abort(); }
-+void __divxf3 (void) { abort(); }
-+void __negxf2 (void) { abort(); }
-+void __eqxf2 (void) { abort(); }
-+void __nexf2 (void) { abort(); }
-+void __gtxf2 (void) { abort(); }
-+void __gexf2 (void) { abort(); }
-+void __lexf2 (void) { abort(); }
-+void __ltxf2 (void) { abort(); }
-+
-+void __extendsftf2 (void) { abort(); }
-+void __extenddftf2 (void) { abort(); }
-+void __trunctfdf2 (void) { abort(); }
-+void __trunctfsf2 (void) { abort(); }
-+void __fixtfsi (void) { abort(); }
-+void __floatsitf (void) { abort(); }
-+void __addtf3 (void) { abort(); }
-+void __subtf3 (void) { abort(); }
-+void __multf3 (void) { abort(); }
-+void __divtf3 (void) { abort(); }
-+void __negtf2 (void) { abort(); }
-+void __eqtf2 (void) { abort(); }
-+void __netf2 (void) { abort(); }
-+void __gttf2 (void) { abort(); }
-+void __getf2 (void) { abort(); }
-+void __letf2 (void) { abort(); }
-+void __lttf2 (void) { abort(); }
-+#else	/* !EXTENDED_FLOAT_STUBS, rest of file */
-+
-+/* IEEE "special" number predicates */
-+
-+#ifdef NO_NANS
-+
-+#define nan() 0
-+#define isnan(x) 0
-+#define isinf(x) 0
-+#else
-+
-+#if   defined L_thenan_sf
-+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_df
-+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_tf
-+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined TFLOAT
-+extern const fp_number_type __thenan_tf;
-+#elif defined FLOAT
-+extern const fp_number_type __thenan_sf;
-+#else
-+extern const fp_number_type __thenan_df;
-+#endif
-+
-+INLINE
-+static fp_number_type *
-+nan (void)
-+{
-+  /* Discard the const qualifier...  */
-+#ifdef TFLOAT
-+  return (fp_number_type *) (& __thenan_tf);
-+#elif defined FLOAT  
-+  return (fp_number_type *) (& __thenan_sf);
-+#else
-+  return (fp_number_type *) (& __thenan_df);
-+#endif
-+}
-+
-+INLINE
-+static int
-+isnan ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_SNAN || x->class == CLASS_QNAN;
-+}
-+
-+INLINE
-+static int
-+isinf ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_INFINITY;
-+}
-+
-+#endif /* NO_NANS */
-+
-+INLINE
-+static int
-+iszero ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_ZERO;
-+}
-+
-+INLINE 
-+static void
-+flip_sign ( fp_number_type *  x)
-+{
-+  x->sign = !x->sign;
-+}
-+
-+extern FLO_type pack_d ( fp_number_type * );
-+
-+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf)
-+FLO_type
-+pack_d ( fp_number_type *  src)
-+{
-+  FLO_union_type dst;
-+  fractype fraction = src->fraction.ll;	/* wasn't unsigned before? */
-+  int sign = src->sign;
-+  int exp = 0;
-+
-+  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src)))
-+    {
-+      /* We can't represent these values accurately.  By using the
-+	 largest possible magnitude, we guarantee that the conversion
-+	 of infinity is at least as big as any finite number.  */
-+      exp = EXPMAX;
-+      fraction = ((fractype) 1 << FRACBITS) - 1;
-+    }
-+  else if (isnan (src))
-+    {
-+      exp = EXPMAX;
-+      if (src->class == CLASS_QNAN || 1)
-+	{
-+#ifdef QUIET_NAN_NEGATED
-+	  fraction |= QUIET_NAN - 1;
-+#else
-+	  fraction |= QUIET_NAN;
-+#endif
-+	}
-+    }
-+  else if (isinf (src))
-+    {
-+      exp = EXPMAX;
-+      fraction = 0;
-+    }
-+  else if (iszero (src))
-+    {
-+      exp = 0;
-+      fraction = 0;
-+    }
-+  else if (fraction == 0)
-+    {
-+      exp = 0;
-+    }
-+  else
-+    {
-+      if (src->normal_exp < NORMAL_EXPMIN)
-+	{
-+#ifdef NO_DENORMALS
-+	  /* Go straight to a zero representation if denormals are not
-+ 	     supported.  The denormal handling would be harmless but
-+ 	     isn't unnecessary.  */
-+	  exp = 0;
-+	  fraction = 0;
-+#else /* NO_DENORMALS */
-+	  /* This number's exponent is too low to fit into the bits
-+	     available in the number, so we'll store 0 in the exponent and
-+	     shift the fraction to the right to make up for it.  */
-+
-+	  int shift = NORMAL_EXPMIN - src->normal_exp;
-+
-+	  exp = 0;
-+
-+	  if (shift > FRAC_NBITS - NGARDS)
-+	    {
-+	      /* No point shifting, since it's more that 64 out.  */
-+	      fraction = 0;
-+	    }
-+	  else
-+	    {
-+	      int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0;
-+	      fraction = (fraction >> shift) | lowbit;
-+	    }
-+	  if ((fraction & GARDMASK) == GARDMSB)
-+	    {
-+	      if ((fraction & (1 << NGARDS)))
-+		fraction += GARDROUND + 1;
-+	    }
-+	  else
-+	    {
-+	      /* Add to the guards to round up.  */
-+	      fraction += GARDROUND;
-+	    }
-+	  /* Perhaps the rounding means we now need to change the
-+             exponent, because the fraction is no longer denormal.  */
-+	  if (fraction >= IMPLICIT_1)
-+	    {
-+	      exp += 1;
-+	    }
-+	  fraction >>= NGARDS;
-+#endif /* NO_DENORMALS */
-+	}
-+      else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS)
-+	       && src->normal_exp > EXPBIAS)
-+	{
-+	  exp = EXPMAX;
-+	  fraction = 0;
-+	}
-+      else
-+	{
-+	  exp = src->normal_exp + EXPBIAS;
-+	  if (!ROUND_TOWARDS_ZERO)
-+	    {
-+	      /* IF the gard bits are the all zero, but the first, then we're
-+		 half way between two numbers, choose the one which makes the
-+		 lsb of the answer 0.  */
-+	      if ((fraction & GARDMASK) == GARDMSB)
-+		{
-+		  if (fraction & (1 << NGARDS))
-+		    fraction += GARDROUND + 1;
-+		}
-+	      else
-+		{
-+		  /* Add a one to the guards to round up */
-+		  fraction += GARDROUND;
-+		}
-+	      if (fraction >= IMPLICIT_2)
-+		{
-+		  fraction >>= 1;
-+		  exp += 1;
-+		}
-+	    }
-+	  fraction >>= NGARDS;
-+
-+	  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX)
-+	    {
-+	      /* Saturate on overflow.  */
-+	      exp = EXPMAX;
-+	      fraction = ((fractype) 1 << FRACBITS) - 1;
-+	    }
-+	}
-+    }
-+
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  dst.bits.fraction = fraction;
-+  dst.bits.exp = exp;
-+  dst.bits.sign = sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low, unity;
-+   int lowsign, lowexp;
-+
-+   unity = (halffractype) 1 << HALFFRACBITS;
-+
-+   /* Set HIGH to the high double's significand, masking out the implicit 1.
-+      Set LOW to the low double's full significand.  */
-+   high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1);
-+   low = fraction & (unity * 2 - 1);
-+
-+   /* Get the initial sign and exponent of the low double.  */
-+   lowexp = exp - HALFFRACBITS - 1;
-+   lowsign = sign;
-+
-+   /* HIGH should be rounded like a normal double, making |LOW| <=
-+      0.5 ULP of HIGH.  Assume round-to-nearest.  */
-+   if (exp < EXPMAX)
-+     if (low > unity || (low == unity && (high & 1) == 1))
-+       {
-+	 /* Round HIGH up and adjust LOW to match.  */
-+	 high++;
-+	 if (high == unity)
-+	   {
-+	     /* May make it infinite, but that's OK.  */
-+	     high = 0;
-+	     exp++;
-+	   }
-+	 low = unity * 2 - low;
-+	 lowsign ^= 1;
-+       }
-+
-+   high |= (halffractype) exp << HALFFRACBITS;
-+   high |= (halffractype) sign << (HALFFRACBITS + EXPBITS);
-+
-+   if (exp == EXPMAX || exp == 0 || low == 0)
-+     low = 0;
-+   else
-+     {
-+       while (lowexp > 0 && low < unity)
-+	 {
-+	   low <<= 1;
-+	   lowexp--;
-+	 }
-+
-+       if (lowexp <= 0)
-+	 {
-+	   halffractype roundmsb, round;
-+	   int shift;
-+
-+	   shift = 1 - lowexp;
-+	   roundmsb = (1 << (shift - 1));
-+	   round = low & ((roundmsb << 1) - 1);
-+
-+	   low >>= shift;
-+	   lowexp = 0;
-+
-+	   if (round > roundmsb || (round == roundmsb && (low & 1) == 1))
-+	     {
-+	       low++;
-+	       if (low == unity)
-+		 /* LOW rounds up to the smallest normal number.  */
-+		 lowexp++;
-+	     }
-+	 }
-+
-+       low &= unity - 1;
-+       low |= (halffractype) lowexp << HALFFRACBITS;
-+       low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS);
-+     }
-+   dst.value_raw = ((fractype) high << HALFSHIFT) | low;
-+ }
-+# else
-+  dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
-+  dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS;
-+  dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS);
-+# endif
-+#endif
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+#ifdef TFLOAT
-+  {
-+    qrtrfractype tmp1 = dst.words[0];
-+    qrtrfractype tmp2 = dst.words[1];
-+    dst.words[0] = dst.words[3];
-+    dst.words[1] = dst.words[2];
-+    dst.words[2] = tmp2;
-+    dst.words[3] = tmp1;
-+  }
-+#else
-+  {
-+    halffractype tmp = dst.words[0];
-+    dst.words[0] = dst.words[1];
-+    dst.words[1] = tmp;
-+  }
-+#endif
-+#endif
-+
-+  return dst.value;
-+}
-+#endif
-+
-+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf)
-+void
-+unpack_d (FLO_union_type * src, fp_number_type * dst)
-+{
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+  fractype fraction;
-+  int exp;
-+  int sign;
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+  FLO_union_type swapped;
-+
-+#ifdef TFLOAT
-+  swapped.words[0] = src->words[3];
-+  swapped.words[1] = src->words[2];
-+  swapped.words[2] = src->words[1];
-+  swapped.words[3] = src->words[0];
-+#else
-+  swapped.words[0] = src->words[1];
-+  swapped.words[1] = src->words[0];
-+#endif
-+  src = &swapped;
-+#endif
-+  
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  fraction = src->bits.fraction;
-+  exp = src->bits.exp;
-+  sign = src->bits.sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low;
-+   
-+   high = src->value_raw >> HALFSHIFT;
-+   low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1);
-+
-+   fraction = high & ((((fractype)1) << HALFFRACBITS) - 1);
-+   fraction <<= FRACBITS - HALFFRACBITS;
-+   exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+   sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+
-+   if (exp != EXPMAX && exp != 0 && low != 0)
-+     {
-+       int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+       int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+       int shift;
-+       fractype xlow;
-+
-+       xlow = low & ((((fractype)1) << HALFFRACBITS) - 1);
-+       if (lowexp)
-+	 xlow |= (((halffractype)1) << HALFFRACBITS);
-+       else
-+	 lowexp = 1;
-+       shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp);
-+       if (shift > 0)
-+	 xlow <<= shift;
-+       else if (shift < 0)
-+	 xlow >>= -shift;
-+       if (sign == lowsign)
-+	 fraction += xlow;
-+       else if (fraction >= xlow)
-+	 fraction -= xlow;
-+       else
-+	 {
-+	   /* The high part is a power of two but the full number is lower.
-+	      This code will leave the implicit 1 in FRACTION, but we'd
-+	      have added that below anyway.  */
-+	   fraction = (((fractype) 1 << FRACBITS) - xlow) << 1;
-+	   exp--;
-+	 }
-+     }
-+ }
-+# else
-+  fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1);
-+  exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1);
-+  sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1;
-+# endif
-+#endif
-+
-+  dst->sign = sign;
-+  if (exp == 0)
-+    {
-+      /* Hmm.  Looks like 0 */
-+      if (fraction == 0
-+#ifdef NO_DENORMALS
-+	  || 1
-+#endif
-+	  )
-+	{
-+	  /* tastes like zero */
-+	  dst->class = CLASS_ZERO;
-+	}
-+      else
-+	{
-+	  /* Zero exponent with nonzero fraction - it's denormalized,
-+	     so there isn't a leading implicit one - we'll shift it so
-+	     it gets one.  */
-+	  dst->normal_exp = exp - EXPBIAS + 1;
-+	  fraction <<= NGARDS;
-+
-+	  dst->class = CLASS_NUMBER;
-+#if 1
-+	  while (fraction < IMPLICIT_1)
-+	    {
-+	      fraction <<= 1;
-+	      dst->normal_exp--;
-+	    }
-+#endif
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX)
-+    {
-+      /* Huge exponent*/
-+      if (fraction == 0)
-+	{
-+	  /* Attached to a zero fraction - means infinity */
-+	  dst->class = CLASS_INFINITY;
-+	}
-+      else
-+	{
-+	  /* Nonzero fraction, means nan */
-+#ifdef QUIET_NAN_NEGATED
-+	  if ((fraction & QUIET_NAN) == 0)
-+#else
-+	  if (fraction & QUIET_NAN)
-+#endif
-+	    {
-+	      dst->class = CLASS_QNAN;
-+	    }
-+	  else
-+	    {
-+	      dst->class = CLASS_SNAN;
-+	    }
-+	  /* Keep the fraction part as the nan number */
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else
-+    {
-+      /* Nothing strange about this number */
-+      dst->normal_exp = exp - EXPBIAS;
-+      dst->class = CLASS_NUMBER;
-+      dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1;
-+    }
-+}
-+#endif /* L_unpack_df || L_unpack_sf */
-+
-+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf)
-+static fp_number_type *
-+_fpadd_parts (fp_number_type * a,
-+	      fp_number_type * b,
-+	      fp_number_type * tmp)
-+{
-+  intfrac tfraction;
-+
-+  /* Put commonly used fields in local variables.  */
-+  int a_normal_exp;
-+  int b_normal_exp;
-+  fractype a_fraction;
-+  fractype b_fraction;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      /* Adding infinities with opposite signs yields a NaN.  */
-+      if (isinf (b) && a->sign != b->sign)
-+	return nan ();
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      return b;
-+    }
-+  if (iszero (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  *tmp = *a;
-+	  tmp->sign = a->sign & b->sign;
-+	  return tmp;
-+	}
-+      return a;
-+    }
-+  if (iszero (a))
-+    {
-+      return b;
-+    }
-+
-+  /* Got two numbers. shift the smaller and increment the exponent till
-+     they're the same */
-+  {
-+    int diff;
-+
-+    a_normal_exp = a->normal_exp;
-+    b_normal_exp = b->normal_exp;
-+    a_fraction = a->fraction.ll;
-+    b_fraction = b->fraction.ll;
-+
-+    diff = a_normal_exp - b_normal_exp;
-+
-+    if (diff < 0)
-+      diff = -diff;
-+    if (diff < FRAC_NBITS)
-+      {
-+	/* ??? This does shifts one bit at a time.  Optimize.  */
-+	while (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp++;
-+	    LSHIFT (b_fraction);
-+	  }
-+	while (b_normal_exp > a_normal_exp)
-+	  {
-+	    a_normal_exp++;
-+	    LSHIFT (a_fraction);
-+	  }
-+      }
-+    else
-+      {
-+	/* Somethings's up.. choose the biggest */
-+	if (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp = a_normal_exp;
-+	    b_fraction = 0;
-+	  }
-+	else
-+	  {
-+	    a_normal_exp = b_normal_exp;
-+	    a_fraction = 0;
-+	  }
-+      }
-+  }
-+
-+  if (a->sign != b->sign)
-+    {
-+      if (a->sign)
-+	{
-+	  tfraction = -a_fraction + b_fraction;
-+	}
-+      else
-+	{
-+	  tfraction = a_fraction - b_fraction;
-+	}
-+      if (tfraction >= 0)
-+	{
-+	  tmp->sign = 0;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = tfraction;
-+	}
-+      else
-+	{
-+	  tmp->sign = 1;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = -tfraction;
-+	}
-+      /* and renormalize it */
-+
-+      while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll)
-+	{
-+	  tmp->fraction.ll <<= 1;
-+	  tmp->normal_exp--;
-+	}
-+    }
-+  else
-+    {
-+      tmp->sign = a->sign;
-+      tmp->normal_exp = a_normal_exp;
-+      tmp->fraction.ll = a_fraction + b_fraction;
-+    }
-+  tmp->class = CLASS_NUMBER;
-+  /* Now the fraction is added, we have to shift down to renormalize the
-+     number */
-+
-+  if (tmp->fraction.ll >= IMPLICIT_2)
-+    {
-+      LSHIFT (tmp->fraction.ll);
-+      tmp->normal_exp++;
-+    }
-+  return tmp;
-+
-+}
-+
-+FLO_type
-+add (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+
-+FLO_type
-+sub (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  b.sign ^= 1;
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_addsub_sf || L_addsub_df */
-+
-+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpmul_parts ( fp_number_type *  a,
-+	       fp_number_type *  b,
-+	       fp_number_type * tmp)
-+{
-+  fractype low = 0;
-+  fractype high = 0;
-+
-+  if (isnan (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      if (iszero (b))
-+	return nan ();
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  return nan ();
-+	}
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (iszero (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both numbers to get a
-+     twice-as-wide number.  */
-+  {
-+#if defined(NO_DI_MODE) || defined(TFLOAT)
-+    {
-+      fractype x = a->fraction.ll;
-+      fractype ylow = b->fraction.ll;
-+      fractype yhigh = 0;
-+      int bit;
-+
-+      /* ??? This does multiplies one bit at a time.  Optimize.  */
-+      for (bit = 0; bit < FRAC_NBITS; bit++)
-+	{
-+	  int carry;
-+
-+	  if (x & 1)
-+	    {
-+	      carry = (low += ylow) < ylow;
-+	      high += yhigh + carry;
-+	    }
-+	  yhigh <<= 1;
-+	  if (ylow & FRACHIGH)
-+	    {
-+	      yhigh |= 1;
-+	    }
-+	  ylow <<= 1;
-+	  x >>= 1;
-+	}
-+    }
-+#elif defined(FLOAT) 
-+    /* Multiplying two USIs to get a UDI, we're safe.  */
-+    {
-+      UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll;
-+      
-+      high = answer >> BITS_PER_SI;
-+      low = answer;
-+    }
-+#else
-+    /* fractype is DImode, but we need the result to be twice as wide.
-+       Assuming a widening multiply from DImode to TImode is not
-+       available, build one by hand.  */
-+    {
-+      USItype nl = a->fraction.ll;
-+      USItype nh = a->fraction.ll >> BITS_PER_SI;
-+      USItype ml = b->fraction.ll;
-+      USItype mh = b->fraction.ll >> BITS_PER_SI;
-+      UDItype pp_ll = (UDItype) ml * nl;
-+      UDItype pp_hl = (UDItype) mh * nl;
-+      UDItype pp_lh = (UDItype) ml * nh;
-+      UDItype pp_hh = (UDItype) mh * nh;
-+      UDItype res2 = 0;
-+      UDItype res0 = 0;
-+      UDItype ps_hh__ = pp_hl + pp_lh;
-+      if (ps_hh__ < pp_hl)
-+	res2 += (UDItype)1 << BITS_PER_SI;
-+      pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI;
-+      res0 = pp_ll + pp_hl;
-+      if (res0 < pp_ll)
-+	res2++;
-+      res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh;
-+      high = res2;
-+      low = res0;
-+    }
-+#endif
-+  }
-+
-+  tmp->normal_exp = a->normal_exp + b->normal_exp
-+    + FRAC_NBITS - (FRACBITS + NGARDS);
-+  tmp->sign = a->sign != b->sign;
-+  while (high >= IMPLICIT_2)
-+    {
-+      tmp->normal_exp++;
-+      if (high & 1)
-+	{
-+	  low >>= 1;
-+	  low |= FRACHIGH;
-+	}
-+      high >>= 1;
-+    }
-+  while (high < IMPLICIT_1)
-+    {
-+      tmp->normal_exp--;
-+
-+      high <<= 1;
-+      if (low & FRACHIGH)
-+	high |= 1;
-+      low <<= 1;
-+    }
-+  /* rounding is tricky. if we only round if it won't make us round later.  */
-+#if 0
-+  if (low & FRACHIGH2)
-+    {
-+      if (((high & GARDMASK) != GARDMSB)
-+	  && (((high + 1) & GARDMASK) == GARDMSB))
-+	{
-+	  /* don't round, it gets done again later.  */
-+	}
-+      else
-+	{
-+	  high++;
-+	}
-+    }
-+#endif
-+  if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB)
-+    {
-+      if (high & (1 << NGARDS))
-+	{
-+	  /* half way, so round to even */
-+	  high += GARDROUND + 1;
-+	}
-+      else if (low)
-+	{
-+	  /* but we really weren't half way */
-+	  high += GARDROUND + 1;
-+	}
-+    }
-+  tmp->fraction.ll = high;
-+  tmp->class = CLASS_NUMBER;
-+  return tmp;
-+}
-+
-+FLO_type
-+multiply (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpmul_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_mul_sf || L_mul_df */
-+
-+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpdiv_parts (fp_number_type * a,
-+	      fp_number_type * b)
-+{
-+  fractype bit;
-+  fractype numerator;
-+  fractype denominator;
-+  fractype quotient;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+
-+  a->sign = a->sign ^ b->sign;
-+
-+  if (isinf (a) || iszero (a))
-+    {
-+      if (a->class == b->class)
-+	return nan ();
-+      return a;
-+    }
-+
-+  if (isinf (b))
-+    {
-+      a->fraction.ll = 0;
-+      a->normal_exp = 0;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      a->class = CLASS_INFINITY;
-+      return a;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both 64bit numbers to get a
-+     128 bit number */
-+  {
-+    /* quotient =
-+       ( numerator / denominator) * 2^(numerator exponent -  denominator exponent)
-+     */
-+
-+    a->normal_exp = a->normal_exp - b->normal_exp;
-+    numerator = a->fraction.ll;
-+    denominator = b->fraction.ll;
-+
-+    if (numerator < denominator)
-+      {
-+	/* Fraction will be less than 1.0 */
-+	numerator *= 2;
-+	a->normal_exp--;
-+      }
-+    bit = IMPLICIT_1;
-+    quotient = 0;
-+    /* ??? Does divide one bit at a time.  Optimize.  */
-+    while (bit)
-+      {
-+	if (numerator >= denominator)
-+	  {
-+	    quotient |= bit;
-+	    numerator -= denominator;
-+	  }
-+	bit >>= 1;
-+	numerator *= 2;
-+      }
-+
-+    if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB)
-+      {
-+	if (quotient & (1 << NGARDS))
-+	  {
-+	    /* half way, so round to even */
-+	    quotient += GARDROUND + 1;
-+	  }
-+	else if (numerator)
-+	  {
-+	    /* but we really weren't half way, more bits exist */
-+	    quotient += GARDROUND + 1;
-+	  }
-+      }
-+
-+    a->fraction.ll = quotient;
-+    return (a);
-+  }
-+}
-+
-+FLO_type
-+divide (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpdiv_parts (&a, &b);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_div_sf || L_div_df */
-+
-+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \
-+    || defined(L_fpcmp_parts_tf)
-+/* according to the demo, fpcmp returns a comparison with 0... thus
-+   a<b -> -1
-+   a==b -> 0
-+   a>b -> +1
-+ */
-+
-+int
-+__fpcmp_parts (fp_number_type * a, fp_number_type * b)
-+{
-+#if 0
-+  /* either nan -> unordered. Must be checked outside of this routine.  */
-+  if (isnan (a) && isnan (b))
-+    {
-+      return 1;			/* still unordered! */
-+    }
-+#endif
-+
-+  if (isnan (a) || isnan (b))
-+    {
-+      return 1;			/* how to indicate unordered compare? */
-+    }
-+  if (isinf (a) && isinf (b))
-+    {
-+      /* +inf > -inf, but +inf != +inf */
-+      /* b    \a| +inf(0)| -inf(1)
-+       ______\+--------+--------
-+       +inf(0)| a==b(0)| a<b(-1)
-+       -------+--------+--------
-+       -inf(1)| a>b(1) | a==b(0)
-+       -------+--------+--------
-+       So since unordered must be nonzero, just line up the columns...
-+       */
-+      return b->sign - a->sign;
-+    }
-+  /* but not both...  */
-+  if (isinf (a))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (isinf (b))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (a) && iszero (b))
-+    {
-+      return 0;
-+    }
-+  if (iszero (a))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (b))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  /* now both are "normal".  */
-+  if (a->sign != b->sign)
-+    {
-+      /* opposite signs */
-+      return a->sign ? -1 : 1;
-+    }
-+  /* same sign; exponents? */
-+  if (a->normal_exp > b->normal_exp)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->normal_exp < b->normal_exp)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* same exponents; check size.  */
-+  if (a->fraction.ll > b->fraction.ll)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->fraction.ll < b->fraction.ll)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* after all that, they're equal.  */
-+  return 0;
-+}
-+#endif
-+
-+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf)
-+CMPtype
-+compare (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_compare_sf || L_compare_df */
-+
-+#ifndef US_SOFTWARE_GOFAST
-+
-+/* These should be optimized for their specific tasks someday.  */
-+
-+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf)
-+CMPtype
-+_eq_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth == 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_eq_sf || L_eq_df */
-+
-+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf)
-+CMPtype
-+_ne_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* true, truth != 0 */
-+
-+  return  __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ne_sf || L_ne_df */
-+
-+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf)
-+CMPtype
-+_gt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth > 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_gt_sf || L_gt_df */
-+
-+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf)
-+CMPtype
-+_ge_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth >= 0 */
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ge_sf || L_ge_df */
-+
-+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf)
-+CMPtype
-+_lt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth < 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_lt_sf || L_lt_df */
-+
-+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf)
-+CMPtype
-+_le_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth <= 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_le_sf || L_le_df */
-+
-+#endif /* ! US_SOFTWARE_GOFAST */
-+
-+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf)
-+CMPtype
-+_unord_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return (isnan (&a) || isnan (&b));
-+}
-+#endif /* L_unord_sf || L_unord_df */
-+
-+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf)
-+FLO_type
-+si_to_float (SItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.class = CLASS_NUMBER;
-+  in.sign = arg_a < 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.normal_exp = FRACBITS + NGARDS;
-+      if (in.sign) 
-+	{
-+	  /* Special case for minint, since there is no +ve integer
-+	     representation for it */
-+	  if (arg_a == (- MAX_SI_INT - 1))
-+	    {
-+	      return (FLO_type)(- MAX_SI_INT - 1);
-+	    }
-+	  in.fraction.ll = (-arg_a);
-+	}
-+      else
-+	in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif /* L_si_to_sf || L_si_to_df */
-+
-+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf)
-+FLO_type
-+usi_to_float (USItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.sign = 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.class = CLASS_NUMBER;
-+      in.normal_exp = FRACBITS + NGARDS;
-+      in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS)))
-+        {
-+          in.fraction.ll >>= 1;
-+          in.normal_exp += 1;
-+        }
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif
-+
-+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si)
-+SItype
-+float_to_si (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  SItype tmp;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* get reasonable MAX_SI_INT...  */
-+  if (isinf (&a))
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 2)
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+  return a.sign ? (-tmp) : (tmp);
-+}
-+#endif /* L_sf_to_si || L_df_to_si */
-+
-+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi)
-+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi)
-+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines,
-+   we also define them for GOFAST because the ones in libgcc2.c have the
-+   wrong names and I'd rather define these here and keep GOFAST CYG-LOC's
-+   out of libgcc2.c.  We can't define these here if not GOFAST because then
-+   there'd be duplicate copies.  */
-+
-+USItype
-+float_to_usi (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* it is a negative number */
-+  if (a.sign)
-+    return 0;
-+  /* get reasonable MAX_USI_INT...  */
-+  if (isinf (&a))
-+    return MAX_USI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 1)
-+    return MAX_USI_INT;
-+  else if (a.normal_exp > (FRACBITS + NGARDS))
-+    return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS));
-+  else
-+    return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+}
-+#endif /* US_SOFTWARE_GOFAST */
-+#endif /* L_sf_to_usi || L_df_to_usi */
-+
-+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf)
-+FLO_type
-+negate (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  flip_sign (&a);
-+  return pack_d (&a);
-+}
-+#endif /* L_negate_sf || L_negate_df */
-+
-+#ifdef FLOAT
-+
-+#if defined(L_make_sf)
-+SFtype
-+__make_fp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     USItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_sf */
-+
-+#ifndef FLOAT_ONLY
-+
-+/* This enables one to build an fp library that supports float but not double.
-+   Otherwise, we would get an undefined reference to __make_dp.
-+   This is needed for some 8-bit ports that can't handle well values that
-+   are 8-bytes in size, so we just don't support double for them at all.  */
-+
-+#if defined(L_sf_to_df)
-+DFtype
-+sf_to_df (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp,
-+		    ((UDItype) in.fraction.ll) << F_D_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#if defined(L_sf_to_tf) && defined(TMODES)
-+TFtype
-+sf_to_tf (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << F_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#endif /* ! FLOAT_ONLY */
-+#endif /* FLOAT */
-+
-+#ifndef FLOAT
-+
-+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);
-+
-+#if defined(L_make_df)
-+DFtype
-+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_df */
-+
-+#if defined(L_df_to_sf)
-+SFtype
-+df_to_sf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_D_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_df_to_sf */
-+
-+#if defined(L_df_to_tf) && defined(TMODES) \
-+    && !defined(FLOAT) && !defined(TFLOAT)
-+TFtype
-+df_to_tf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << D_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#ifdef TFLOAT
-+#if defined(L_make_tf)
-+TFtype
-+__make_tp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     UTItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_tf */
-+
-+#if defined(L_tf_to_df)
-+DFtype
-+tf_to_df (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  UDItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> D_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_df */
-+
-+#if defined(L_tf_to_sf)
-+SFtype
-+tf_to_sf (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_sf */
-+#endif /* TFLOAT */
-+
-+#endif /* ! FLOAT */
-+#endif /* !EXTENDED_FLOAT_STUBS */
---- gcc-3.4.3/gcc/config/nios2/nios2-protos.h
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-protos.h
-@@ -0,0 +1,70 @@
-+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera 
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+extern void dump_frame_size (FILE *);
-+extern HOST_WIDE_INT compute_frame_size (void);
-+extern int nios2_initial_elimination_offset (int, int);
-+extern void override_options (void);
-+extern void optimization_options (int, int);
-+extern int nios2_can_use_return_insn (void);
-+extern void expand_prologue (void);
-+extern void expand_epilogue (bool);
-+extern void function_profiler (FILE *, int);
-+
-+
-+#ifdef RTX_CODE
-+extern int nios2_legitimate_address (rtx, enum machine_mode, int);
-+extern void nios2_print_operand (FILE *, rtx, int);
-+extern void nios2_print_operand_address (FILE *, rtx);
-+
-+extern int nios2_emit_move_sequence (rtx *, enum machine_mode);
-+extern int nios2_emit_expensive_div (rtx *, enum machine_mode);
-+
-+extern void gen_int_relational (enum rtx_code, rtx, rtx, rtx, rtx);
-+extern void gen_conditional_move (rtx *, enum machine_mode);
-+extern const char *asm_output_opcode (FILE *, const char *);
-+
-+/* predicates */
-+extern int arith_operand (rtx, enum machine_mode);
-+extern int uns_arith_operand (rtx, enum machine_mode);
-+extern int logical_operand (rtx, enum machine_mode);
-+extern int shift_operand (rtx, enum machine_mode);
-+extern int reg_or_0_operand (rtx, enum machine_mode);
-+extern int equality_op (rtx, enum machine_mode);
-+extern int custom_insn_opcode (rtx, enum machine_mode);
-+extern int rdwrctl_operand (rtx, enum machine_mode);
-+
-+# ifdef HAVE_MACHINE_MODES
-+#  if defined TREE_CODE
-+extern void function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern rtx function_arg (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern int function_arg_partial_nregs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
-+extern int nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+
-+#  endif /* TREE_CODE */
-+# endif	/* HAVE_MACHINE_MODES */
-+#endif
-+
-+#ifdef TREE_CODE
-+extern int nios2_return_in_memory (tree);
-+
-+#endif /* TREE_CODE */
---- gcc-3.4.3/gcc/config/nios2/nios2.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.c
-@@ -0,0 +1,2853 @@
-+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+
-+#include <stdio.h>
-+#include "config.h"
-+#include "system.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "rtl.h"
-+#include "tree.h"
-+#include "tm_p.h"
-+#include "regs.h"
-+#include "hard-reg-set.h"
-+#include "real.h"
-+#include "insn-config.h"
-+#include "conditions.h"
-+#include "output.h"
-+#include "insn-attr.h"
-+#include "flags.h"
-+#include "recog.h"
-+#include "expr.h"
-+#include "toplev.h"
-+#include "basic-block.h"
-+#include "function.h"
-+#include "ggc.h"
-+#include "reload.h"
-+#include "debug.h"
-+#include "optabs.h"
-+#include "target.h"
-+#include "target-def.h"
-+
-+/* local prototypes */
-+static bool nios2_rtx_costs (rtx, int, int, int *);
-+
-+static void nios2_asm_function_prologue (FILE *, HOST_WIDE_INT);
-+static int nios2_use_dfa_pipeline_interface (void);
-+static int nios2_issue_rate (void);
-+static struct machine_function *nios2_init_machine_status (void);
-+static bool nios2_in_small_data_p (tree);
-+static rtx save_reg (int, HOST_WIDE_INT, rtx);
-+static rtx restore_reg (int, HOST_WIDE_INT);
-+static unsigned int nios2_section_type_flags (tree, const char *, int);
-+static void nios2_init_builtins (void);
-+static rtx nios2_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
-+static bool nios2_function_ok_for_sibcall (tree, tree);
-+static void nios2_encode_section_info (tree, rtx, int);
-+
-+/* Initialize the GCC target structure.  */
-+#undef TARGET_ASM_FUNCTION_PROLOGUE
-+#define TARGET_ASM_FUNCTION_PROLOGUE nios2_asm_function_prologue
-+
-+#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE
-+#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE \
-+ nios2_use_dfa_pipeline_interface
-+#undef TARGET_SCHED_ISSUE_RATE
-+#define TARGET_SCHED_ISSUE_RATE nios2_issue_rate
-+#undef TARGET_IN_SMALL_DATA_P
-+#define TARGET_IN_SMALL_DATA_P nios2_in_small_data_p
-+#undef  TARGET_ENCODE_SECTION_INFO
-+#define TARGET_ENCODE_SECTION_INFO nios2_encode_section_info
-+#undef  TARGET_SECTION_TYPE_FLAGS
-+#define TARGET_SECTION_TYPE_FLAGS  nios2_section_type_flags
-+
-+#undef TARGET_INIT_BUILTINS
-+#define TARGET_INIT_BUILTINS nios2_init_builtins
-+#undef TARGET_EXPAND_BUILTIN
-+#define TARGET_EXPAND_BUILTIN nios2_expand_builtin
-+
-+#undef TARGET_FUNCTION_OK_FOR_SIBCALL
-+#define TARGET_FUNCTION_OK_FOR_SIBCALL nios2_function_ok_for_sibcall
-+
-+#undef TARGET_RTX_COSTS
-+#define TARGET_RTX_COSTS nios2_rtx_costs
-+
-+
-+struct gcc_target targetm = TARGET_INITIALIZER;
-+
-+
-+
-+/* Threshold for data being put into the small data/bss area, instead
-+   of the normal data area (references to the small data/bss area take
-+   1 instruction, and use the global pointer, references to the normal
-+   data area takes 2 instructions).  */
-+unsigned HOST_WIDE_INT nios2_section_threshold = NIOS2_DEFAULT_GVALUE;
-+
-+
-+/* Structure to be filled in by compute_frame_size with register
-+   save masks, and offsets for the current function.  */
-+
-+struct nios2_frame_info
-+GTY (())
-+{
-+  long total_size;		/* # bytes that the entire frame takes up */
-+  long var_size;		/* # bytes that variables take up */
-+  long args_size;		/* # bytes that outgoing arguments take up */
-+  int save_reg_size;		/* # bytes needed to store gp regs */
-+  int save_reg_rounded;		/* # bytes needed to store gp regs */
-+  long save_regs_offset;	/* offset from new sp to store gp registers */
-+  int initialized;		/* != 0 if frame size already calculated */
-+  int num_regs;			/* number of gp registers saved */
-+};
-+
-+struct machine_function
-+GTY (())
-+{
-+
-+  /* Current frame information, calculated by compute_frame_size.  */
-+  struct nios2_frame_info frame;
-+};
-+
-+
-+/***************************************
-+ * Section encodings
-+ ***************************************/
-+
-+
-+
-+
-+
-+/***************************************
-+ * Stack Layout and Calling Conventions
-+ ***************************************/
-+
-+
-+#define TOO_BIG_OFFSET(X) ((X) > ((1 << 15) - 1))
-+#define TEMP_REG_NUM 8
-+
-+static void
-+nios2_asm_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
-+{
-+  if (flag_verbose_asm || flag_debug_asm)
-+    {
-+      compute_frame_size ();
-+      dump_frame_size (file);
-+    }
-+}
-+
-+static rtx
-+save_reg (int regno, HOST_WIDE_INT offset, rtx cfa_store_reg)
-+{
-+  rtx insn, stack_slot;
-+
-+  stack_slot = gen_rtx_PLUS (SImode,
-+			     cfa_store_reg,
-+			     GEN_INT (offset));
-+
-+  insn = emit_insn (gen_rtx_SET (SImode,
-+				 gen_rtx_MEM (SImode, stack_slot),
-+				 gen_rtx_REG (SImode, regno)));
-+
-+  RTX_FRAME_RELATED_P (insn) = 1;
-+
-+  return insn;
-+}
-+
-+static rtx
-+restore_reg (int regno, HOST_WIDE_INT offset)
-+{
-+  rtx insn, stack_slot;
-+
-+  if (TOO_BIG_OFFSET (offset))
-+    {
-+      stack_slot = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     stack_slot,
-+				     GEN_INT (offset)));
-+
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     stack_slot,
-+                                     gen_rtx_PLUS (SImode,
-+				                   stack_slot,
-+				                   stack_pointer_rtx)));
-+    }
-+  else
-+    {
-+      stack_slot = gen_rtx_PLUS (SImode,
-+			         stack_pointer_rtx,
-+				 GEN_INT (offset));
-+    }
-+
-+  stack_slot = gen_rtx_MEM (SImode, stack_slot);
-+
-+  insn = emit_move_insn (gen_rtx_REG (SImode, regno), stack_slot);
-+
-+  return insn;
-+}
-+
-+
-+/* There are two possible paths for prologue expansion,
-+- the first is if the total frame size is < 2^15-1. In that
-+case all the immediates will fit into the 16-bit immediate
-+fields.
-+- the second is when the frame size is too big, in that
-+case an additional temporary register is used, first 
-+as a cfa_temp to offset the sp, second as the cfa_store
-+register.
-+
-+See the comment above dwarf2out_frame_debug_expr in 
-+dwarf2out.c for more explanation of the "rules."
-+
-+
-+Case 1:
-+Rule #  Example Insn                       Effect
-+2  	addi	sp, sp, -total_frame_size  cfa.reg=sp, cfa.offset=total_frame_size
-+                                           cfa_store.reg=sp, cfa_store.offset=total_frame_size
-+12  	stw	ra, offset(sp)		   
-+12  	stw	r16, offset(sp)
-+1  	mov	fp, sp
-+  
-+Case 2: 
-+Rule #  Example Insn                       Effect
-+6 	movi	r8, total_frame_size       cfa_temp.reg=r8, cfa_temp.offset=total_frame_size
-+2  	sub	sp, sp, r8                 cfa.reg=sp, cfa.offset=total_frame_size
-+                                           cfa_store.reg=sp, cfa_store.offset=total_frame_size
-+5   	add	r8, r8, sp                 cfa_store.reg=r8, cfa_store.offset=0
-+12  	stw	ra, offset(r8)
-+12  	stw	r16, offset(r8)
-+1  	mov	fp, sp
-+
-+*/
-+
-+void
-+expand_prologue ()
-+{
-+  int i;
-+  HOST_WIDE_INT total_frame_size;
-+  int cfa_store_offset;
-+  rtx insn;
-+  rtx cfa_store_reg = 0;
-+
-+  total_frame_size = compute_frame_size ();
-+
-+  if (total_frame_size)
-+    {
-+
-+      if (TOO_BIG_OFFSET (total_frame_size)) 
-+	{
-+	    /* cfa_temp and cfa_store_reg are the same register,
-+	       cfa_store_reg overwrites cfa_temp */
-+	    cfa_store_reg = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+	    insn = emit_insn (gen_rtx_SET (SImode,
-+					   cfa_store_reg,
-+					   GEN_INT (total_frame_size)));
-+
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+
-+	    insn = gen_rtx_SET (SImode,
-+				stack_pointer_rtx,
-+				gen_rtx_MINUS (SImode,
-+					       stack_pointer_rtx,
-+					       cfa_store_reg));
-+
-+	    insn = emit_insn (insn);
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+
-+	    /* if there are no registers to save, I don't need to
-+	       create a cfa_store */
-+	    if (cfun->machine->frame.save_reg_size) 
-+	      {
-+		insn = gen_rtx_SET (SImode,
-+				    cfa_store_reg,
-+				    gen_rtx_PLUS (SImode,
-+						  cfa_store_reg,
-+						  stack_pointer_rtx));
-+
-+		insn = emit_insn (insn);
-+		RTX_FRAME_RELATED_P (insn) = 1;
-+	      }
-+
-+	    cfa_store_offset 
-+	      = total_frame_size 
-+		- (cfun->machine->frame.save_regs_offset
-+		   + cfun->machine->frame.save_reg_rounded);
-+	}
-+      else
-+	{
-+	    insn = gen_rtx_SET (SImode,
-+				stack_pointer_rtx,
-+				gen_rtx_PLUS (SImode,
-+					      stack_pointer_rtx,
-+					      GEN_INT (-total_frame_size)));
-+	    insn = emit_insn (insn);
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+	    cfa_store_reg = stack_pointer_rtx;
-+	    cfa_store_offset 
-+	      = cfun->machine->frame.save_regs_offset
-+		+ cfun->machine->frame.save_reg_rounded;
-+	}
-+    }
-+
-+  if (MUST_SAVE_REGISTER (RA_REGNO))
-+    {
-+      cfa_store_offset -= 4;
-+      save_reg (RA_REGNO, cfa_store_offset, cfa_store_reg);
-+    }
-+  if (MUST_SAVE_REGISTER (FP_REGNO))
-+    {
-+      cfa_store_offset -= 4;
-+      save_reg (FP_REGNO, cfa_store_offset, cfa_store_reg);
-+    }
-+
-+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+    {
-+      if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO)
-+	{
-+	  cfa_store_offset -= 4;
-+	  save_reg (i, cfa_store_offset, cfa_store_reg);
-+	}
-+    }
-+
-+  if (frame_pointer_needed)
-+    {
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     gen_rtx_REG (SImode, FP_REGNO),
-+				     gen_rtx_REG (SImode, SP_REGNO)));
-+
-+      RTX_FRAME_RELATED_P (insn) = 1;
-+    }
-+
-+  /* If we are profiling, make sure no instructions are scheduled before
-+     the call to mcount.  */
-+  if (current_function_profile)
-+    emit_insn (gen_blockage ());
-+}
-+
-+void
-+expand_epilogue (bool sibcall_p)
-+{
-+  rtx insn;
-+  int i;
-+  HOST_WIDE_INT total_frame_size;
-+  int register_store_offset;
-+
-+  total_frame_size = compute_frame_size ();
-+
-+  if (!sibcall_p && nios2_can_use_return_insn ())
-+    {
-+      insn = emit_jump_insn (gen_return ());
-+      return;
-+    }
-+
-+  emit_insn (gen_blockage ());
-+
-+  register_store_offset =
-+    cfun->machine->frame.save_regs_offset +
-+    cfun->machine->frame.save_reg_rounded;
-+
-+  if (MUST_SAVE_REGISTER (RA_REGNO))
-+    {
-+      register_store_offset -= 4;
-+      restore_reg (RA_REGNO, register_store_offset);
-+    }
-+
-+  if (MUST_SAVE_REGISTER (FP_REGNO))
-+    {
-+      register_store_offset -= 4;
-+      restore_reg (FP_REGNO, register_store_offset);
-+    }
-+
-+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+    {
-+      if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO)
-+	{
-+	  register_store_offset -= 4;
-+	  restore_reg (i, register_store_offset);
-+	}
-+    }
-+
-+  if (total_frame_size)
-+    {
-+      rtx sp_adjust;
-+
-+      if (TOO_BIG_OFFSET (total_frame_size))
-+        {
-+	  sp_adjust = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+	  insn = emit_insn (gen_rtx_SET (SImode,
-+					 sp_adjust,
-+					 GEN_INT (total_frame_size)));
-+
-+      	}
-+      else
-+        {
-+	  sp_adjust = GEN_INT (total_frame_size);
-+	}
-+
-+      insn = gen_rtx_SET (SImode,
-+			  stack_pointer_rtx,
-+			  gen_rtx_PLUS (SImode,
-+					stack_pointer_rtx,
-+					sp_adjust));
-+      insn = emit_insn (insn);
-+    }
-+
-+
-+  if (!sibcall_p)
-+    {
-+      insn = emit_jump_insn (gen_return_from_epilogue (gen_rtx (REG, Pmode,
-+								RA_REGNO)));
-+    }
-+}
-+
-+
-+bool
-+nios2_function_ok_for_sibcall (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
-+{
-+  return true;
-+}
-+
-+
-+
-+
-+
-+/* ----------------------- *
-+ * Profiling
-+ * ----------------------- */
-+
-+void
-+function_profiler (FILE *file, int labelno)
-+{
-+  fprintf (file, "\t%s mcount begin, label: .LP%d\n", 
-+           ASM_COMMENT_START, labelno);
-+  fprintf (file, "\tnextpc\tr8\n");
-+  fprintf (file, "\tmov\tr9, ra\n");
-+  fprintf (file, "\tmovhi\tr10, %%hiadj(.LP%d)\n", labelno);
-+  fprintf (file, "\taddi\tr10, r10, %%lo(.LP%d)\n", labelno);
-+  fprintf (file, "\tcall\tmcount\n");
-+  fprintf (file, "\tmov\tra, r9\n");
-+  fprintf (file, "\t%s mcount end\n", ASM_COMMENT_START);
-+}
-+
-+
-+/***************************************
-+ * Stack Layout
-+ ***************************************/
-+
-+
-+void
-+dump_frame_size (FILE *file)
-+{
-+  fprintf (file, "\t%s Current Frame Info\n", ASM_COMMENT_START);
-+
-+  fprintf (file, "\t%s total_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.total_size);
-+  fprintf (file, "\t%s var_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.var_size);
-+  fprintf (file, "\t%s args_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.args_size);
-+  fprintf (file, "\t%s save_reg_size = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_reg_size);
-+  fprintf (file, "\t%s save_reg_rounded = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_reg_rounded);
-+  fprintf (file, "\t%s initialized = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.initialized);
-+  fprintf (file, "\t%s num_regs = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.num_regs);
-+  fprintf (file, "\t%s save_regs_offset = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_regs_offset);
-+  fprintf (file, "\t%s current_function_is_leaf = %d\n", ASM_COMMENT_START,
-+	   current_function_is_leaf);
-+  fprintf (file, "\t%s frame_pointer_needed = %d\n", ASM_COMMENT_START,
-+	   frame_pointer_needed);
-+  fprintf (file, "\t%s pretend_args_size = %d\n", ASM_COMMENT_START,
-+	   current_function_pretend_args_size);
-+
-+}
-+
-+
-+/* Return the bytes needed to compute the frame pointer from the current
-+   stack pointer.
-+*/
-+
-+HOST_WIDE_INT
-+compute_frame_size ()
-+{
-+  unsigned int regno;
-+  HOST_WIDE_INT var_size;	/* # of var. bytes allocated */
-+  HOST_WIDE_INT total_size;	/* # bytes that the entire frame takes up */
-+  HOST_WIDE_INT save_reg_size;	/* # bytes needed to store callee save regs */
-+  HOST_WIDE_INT save_reg_rounded;	
-+    /* # bytes needed to store callee save regs (rounded) */
-+  HOST_WIDE_INT out_args_size;	/* # bytes needed for outgoing args */
-+
-+  save_reg_size = 0;
-+  var_size = STACK_ALIGN (get_frame_size ());
-+  out_args_size = STACK_ALIGN (current_function_outgoing_args_size);
-+
-+  total_size = var_size + out_args_size;
-+
-+  /* Calculate space needed for gp registers.  */
-+  for (regno = 0; regno <= FIRST_PSEUDO_REGISTER; regno++)
-+    {
-+      if (MUST_SAVE_REGISTER (regno))
-+	{
-+	  save_reg_size += 4;
-+	}
-+    }
-+
-+  save_reg_rounded = STACK_ALIGN (save_reg_size);
-+  total_size += save_reg_rounded;
-+
-+  total_size += STACK_ALIGN (current_function_pretend_args_size);
-+
-+  /* Save other computed information.  */
-+  cfun->machine->frame.total_size = total_size;
-+  cfun->machine->frame.var_size = var_size;
-+  cfun->machine->frame.args_size = current_function_outgoing_args_size;
-+  cfun->machine->frame.save_reg_size = save_reg_size;
-+  cfun->machine->frame.save_reg_rounded = save_reg_rounded;
-+  cfun->machine->frame.initialized = reload_completed;
-+  cfun->machine->frame.num_regs = save_reg_size / UNITS_PER_WORD;
-+
-+  cfun->machine->frame.save_regs_offset
-+    = save_reg_rounded ? current_function_outgoing_args_size + var_size : 0;
-+
-+  return total_size;
-+}
-+
-+
-+int
-+nios2_initial_elimination_offset (int from, int to ATTRIBUTE_UNUSED)
-+{
-+  int offset;
-+
-+  /* Set OFFSET to the offset from the stack pointer.  */
-+  switch (from)
-+    {
-+    case FRAME_POINTER_REGNUM:
-+      offset = 0;
-+      break;
-+
-+    case ARG_POINTER_REGNUM:
-+      compute_frame_size ();
-+      offset = cfun->machine->frame.total_size;
-+      offset -= current_function_pretend_args_size;
-+      break;
-+
-+    case RETURN_ADDRESS_POINTER_REGNUM:
-+      compute_frame_size ();
-+      /* since the return address is always the first of the
-+         saved registers, return the offset to the beginning
-+         of the saved registers block */
-+      offset = cfun->machine->frame.save_regs_offset;
-+      break;
-+
-+    default:
-+      abort ();
-+    }
-+
-+  return offset;
-+}
-+
-+/* Return nonzero if this function is known to have a null epilogue.
-+   This allows the optimizer to omit jumps to jumps if no stack
-+   was created.  */
-+int
-+nios2_can_use_return_insn ()
-+{
-+  if (!reload_completed)
-+    return 0;
-+
-+  if (regs_ever_live[RA_REGNO] || current_function_profile)
-+    return 0;
-+
-+  if (cfun->machine->frame.initialized)
-+    return cfun->machine->frame.total_size == 0;
-+
-+  return compute_frame_size () == 0;
-+}
-+
-+
-+
-+
-+
-+/***************************************
-+ *
-+ ***************************************/
-+
-+const char *nios2_sys_nosys_string;    /* for -msys=nosys */
-+const char *nios2_sys_lib_string;    /* for -msys-lib= */
-+const char *nios2_sys_crt0_string;    /* for -msys-crt0= */
-+
-+void
-+override_options ()
-+{
-+  /* Function to allocate machine-dependent function status.  */
-+  init_machine_status = &nios2_init_machine_status;
-+
-+  nios2_section_threshold 
-+    = g_switch_set ? g_switch_value : NIOS2_DEFAULT_GVALUE;
-+
-+  if (nios2_sys_nosys_string && *nios2_sys_nosys_string)
-+    {
-+      error ("invalid option '-msys=nosys%s'", nios2_sys_nosys_string);
-+    }
-+
-+  /* If we don't have mul, we don't have mulx either! */
-+  if (!TARGET_HAS_MUL && TARGET_HAS_MULX) 
-+    {
-+      target_flags &= ~HAS_MULX_FLAG;
-+    }
-+
-+}
-+
-+void
-+optimization_options (int level, int size)
-+{
-+  if (level || size)
-+    {
-+      target_flags |= INLINE_MEMCPY_FLAG;
-+    }
-+
-+  if (level >= 3 && !size)
-+    {
-+      target_flags |= FAST_SW_DIV_FLAG;
-+    }
-+}
-+
-+/* Allocate a chunk of memory for per-function machine-dependent data.  */
-+static struct machine_function *
-+nios2_init_machine_status ()
-+{
-+  return ((struct machine_function *)
-+	  ggc_alloc_cleared (sizeof (struct machine_function)));
-+}
-+
-+
-+
-+/*****************
-+ * Describing Relative Costs of Operations
-+ *****************/
-+
-+/* Compute a (partial) cost for rtx X.  Return true if the complete
-+   cost has been computed, and false if subexpressions should be
-+   scanned.  In either case, *TOTAL contains the cost result.  */
-+
-+
-+
-+static bool
-+nios2_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, int *total)
-+{
-+  switch (code)
-+    {
-+      case CONST_INT:
-+	if (INTVAL (x) == 0)
-+	  {
-+	    *total = COSTS_N_INSNS (0);
-+	    return true;
-+	  }
-+	else if (SMALL_INT (INTVAL (x))
-+		|| SMALL_INT_UNSIGNED (INTVAL (x))
-+		|| UPPER16_INT (INTVAL (x)))
-+	  {
-+	    *total = COSTS_N_INSNS (2);
-+	    return true;
-+	  }
-+	else
-+	  {
-+	    *total = COSTS_N_INSNS (4);
-+	    return true;
-+	  }
-+
-+      case LABEL_REF:
-+      case SYMBOL_REF:
-+	/* ??? gp relative stuff will fit in here */
-+	/* fall through */
-+      case CONST:
-+      case CONST_DOUBLE:
-+	{
-+	  *total = COSTS_N_INSNS (4);
-+	  return true;
-+	}
-+
-+      case MULT:
-+	{
-+	  *total = COSTS_N_INSNS (1);
-+	  return false;
-+	}
-+      case SIGN_EXTEND:
-+	{
-+	  *total = COSTS_N_INSNS (3);
-+	  return false;
-+	}
-+      case ZERO_EXTEND:
-+	{
-+	  *total = COSTS_N_INSNS (1);
-+	  return false;
-+	}
-+
-+    default:
-+      return false;
-+    }
-+}
-+
-+
-+/***************************************
-+ * INSTRUCTION SUPPORT
-+ *
-+ * These functions are used within the Machine Description to
-+ * handle common or complicated output and expansions from
-+ * instructions.
-+ ***************************************/
-+
-+int
-+nios2_emit_move_sequence (rtx *operands, enum machine_mode mode)
-+{
-+  rtx to = operands[0];
-+  rtx from = operands[1];
-+
-+  if (!register_operand (to, mode) && !reg_or_0_operand (from, mode))
-+    {
-+      if (no_new_pseudos)
-+	internal_error ("Trying to force_reg no_new_pseudos == 1");
-+      from = copy_to_mode_reg (mode, from);
-+    }
-+
-+  operands[0] = to;
-+  operands[1] = from;
-+  return 0;
-+}
-+
-+/* Divide Support */
-+
-+/*
-+  If -O3 is used, we want to output a table lookup for
-+  divides between small numbers (both num and den >= 0
-+  and < 0x10). The overhead of this method in the worse
-+  case is 40 bytes in the text section (10 insns) and
-+  256 bytes in the data section. Additional divides do
-+  not incur additional penalties in the data section.
-+
-+  Code speed is improved for small divides by about 5x
-+  when using this method in the worse case (~9 cycles
-+  vs ~45). And in the worse case divides not within the
-+  table are penalized by about 10% (~5 cycles vs ~45).
-+  However in the typical case the penalty is not as bad
-+  because doing the long divide in only 45 cycles is
-+  quite optimistic.
-+
-+  ??? It would be nice to have some benchmarks other
-+  than Dhrystone to back this up.
-+
-+  This bit of expansion is to create this instruction
-+  sequence as rtl.
-+	or	$8, $4, $5
-+	slli	$9, $4, 4
-+	cmpgeui	$3, $8, 16
-+	beq	$3, $0, .L3
-+	or	$10, $9, $5
-+	add	$12, $11, divide_table
-+	ldbu	$2, 0($12)
-+	br	.L1
-+.L3:
-+	call	slow_div
-+.L1:
-+#	continue here with result in $2
-+
-+  ??? Ideally I would like the emit libcall block to contain
-+  all of this code, but I don't know how to do that. What it
-+  means is that if the divide can be eliminated, it may not
-+  completely disappear.
-+
-+  ??? The __divsi3_table label should ideally be moved out
-+  of this block and into a global. If it is placed into the
-+  sdata section we can save even more cycles by doing things
-+  gp relative.
-+*/
-+int
-+nios2_emit_expensive_div (rtx *operands, enum machine_mode mode)
-+{
-+  rtx or_result, shift_left_result;
-+  rtx lookup_value;
-+  rtx lab1, lab3;
-+  rtx insns;
-+  rtx libfunc;
-+  rtx final_result;
-+  rtx tmp;
-+
-+  /* it may look a little generic, but only SImode
-+     is supported for now */
-+  if (mode != SImode)
-+    abort ();
-+
-+  libfunc = sdiv_optab->handlers[(int) SImode].libfunc;
-+
-+
-+
-+  lab1 = gen_label_rtx ();
-+  lab3 = gen_label_rtx ();
-+
-+  or_result = expand_simple_binop (SImode, IOR,
-+				   operands[1], operands[2],
-+				   0, 0, OPTAB_LIB_WIDEN);
-+
-+  emit_cmp_and_jump_insns (or_result, GEN_INT (15), GTU, 0,
-+			   GET_MODE (or_result), 0, lab3);
-+  JUMP_LABEL (get_last_insn ()) = lab3;
-+
-+  shift_left_result = expand_simple_binop (SImode, ASHIFT,
-+					   operands[1], GEN_INT (4),
-+					   0, 0, OPTAB_LIB_WIDEN);
-+
-+  lookup_value = expand_simple_binop (SImode, IOR,
-+				      shift_left_result, operands[2],
-+				      0, 0, OPTAB_LIB_WIDEN);
-+
-+  convert_move (operands[0],
-+		gen_rtx (MEM, QImode,
-+			 gen_rtx (PLUS, SImode,
-+				  lookup_value,
-+				  gen_rtx_SYMBOL_REF (SImode, "__divsi3_table"))),
-+		1);
-+
-+
-+  tmp = emit_jump_insn (gen_jump (lab1));
-+  JUMP_LABEL (tmp) = lab1;
-+  emit_barrier ();
-+
-+  emit_label (lab3);
-+  LABEL_NUSES (lab3) = 1;
-+
-+  start_sequence ();
-+  final_result = emit_library_call_value (libfunc, NULL_RTX,
-+					  LCT_CONST, SImode, 2,
-+					  operands[1], SImode,
-+					  operands[2], SImode);
-+
-+
-+  insns = get_insns ();
-+  end_sequence ();
-+  emit_libcall_block (insns, operands[0], final_result,
-+		      gen_rtx (DIV, SImode, operands[1], operands[2]));
-+
-+  emit_label (lab1);
-+  LABEL_NUSES (lab1) = 1;
-+  return 1;
-+}
-+
-+/* Branches/Compares */
-+
-+/* the way of handling branches/compares
-+   in gcc is heavily borrowed from MIPS */
-+
-+enum internal_test
-+{
-+  ITEST_EQ,
-+  ITEST_NE,
-+  ITEST_GT,
-+  ITEST_GE,
-+  ITEST_LT,
-+  ITEST_LE,
-+  ITEST_GTU,
-+  ITEST_GEU,
-+  ITEST_LTU,
-+  ITEST_LEU,
-+  ITEST_MAX
-+};
-+
-+static enum internal_test map_test_to_internal_test (enum rtx_code);
-+
-+/* Cached operands, and operator to compare for use in set/branch/trap
-+   on condition codes.  */
-+rtx branch_cmp[2];
-+enum cmp_type branch_type;
-+
-+/* Make normal rtx_code into something we can index from an array */
-+
-+static enum internal_test
-+map_test_to_internal_test (enum rtx_code test_code)
-+{
-+  enum internal_test test = ITEST_MAX;
-+
-+  switch (test_code)
-+    {
-+    case EQ:
-+      test = ITEST_EQ;
-+      break;
-+    case NE:
-+      test = ITEST_NE;
-+      break;
-+    case GT:
-+      test = ITEST_GT;
-+      break;
-+    case GE:
-+      test = ITEST_GE;
-+      break;
-+    case LT:
-+      test = ITEST_LT;
-+      break;
-+    case LE:
-+      test = ITEST_LE;
-+      break;
-+    case GTU:
-+      test = ITEST_GTU;
-+      break;
-+    case GEU:
-+      test = ITEST_GEU;
-+      break;
-+    case LTU:
-+      test = ITEST_LTU;
-+      break;
-+    case LEU:
-+      test = ITEST_LEU;
-+      break;
-+    default:
-+      break;
-+    }
-+
-+  return test;
-+}
-+
-+/* Generate the code to compare (and possibly branch) two integer values
-+   TEST_CODE is the comparison code we are trying to emulate 
-+     (or implement directly)
-+   RESULT is where to store the result of the comparison, 
-+     or null to emit a branch
-+   CMP0 CMP1 are the two comparison operands
-+   DESTINATION is the destination of the branch, or null to only compare
-+   */
-+
-+void
-+gen_int_relational (enum rtx_code test_code, /* relational test (EQ, etc) */
-+		    rtx result,		/* result to store comp. or 0 if branch */
-+		    rtx cmp0,		/* first operand to compare */
-+		    rtx cmp1,		/* second operand to compare */
-+		    rtx destination)	/* destination of the branch, or 0 if compare */
-+{
-+  struct cmp_info
-+  {
-+    /* for register (or 0) compares */
-+    enum rtx_code test_code_reg;	/* code to use in instruction (LT vs. LTU) */
-+    int reverse_regs;		/* reverse registers in test */
-+
-+    /* for immediate compares */
-+    enum rtx_code test_code_const;	
-+         /* code to use in instruction (LT vs. LTU) */
-+    int const_low;		/* low bound of constant we can accept */
-+    int const_high;		/* high bound of constant we can accept */
-+    int const_add;		/* constant to add */
-+
-+    /* generic info */
-+    int unsignedp;		/* != 0 for unsigned comparisons.  */
-+  };
-+
-+  static const struct cmp_info info[(int) ITEST_MAX] = {
-+
-+    {EQ, 0, EQ, -32768, 32767, 0, 0}, /* EQ  */
-+    {NE, 0, NE, -32768, 32767, 0, 0}, /* NE  */
-+
-+    {LT, 1, GE, -32769, 32766, 1, 0}, /* GT  */
-+    {GE, 0, GE, -32768, 32767, 0, 0}, /* GE  */
-+    {LT, 0, LT, -32768, 32767, 0, 0}, /* LT  */
-+    {GE, 1, LT, -32769, 32766, 1, 0}, /* LE  */
-+
-+    {LTU, 1, GEU, 0, 65534, 1, 0}, /* GTU */
-+    {GEU, 0, GEU, 0, 65535, 0, 0}, /* GEU */
-+    {LTU, 0, LTU, 0, 65535, 0, 0}, /* LTU */
-+    {GEU, 1, LTU, 0, 65534, 1, 0}, /* LEU */
-+  };
-+
-+  enum internal_test test;
-+  enum machine_mode mode;
-+  const struct cmp_info *p_info;
-+  int branch_p;
-+
-+
-+
-+
-+  test = map_test_to_internal_test (test_code);
-+  if (test == ITEST_MAX)
-+    abort ();
-+
-+  p_info = &info[(int) test];
-+
-+  mode = GET_MODE (cmp0);
-+  if (mode == VOIDmode)
-+    mode = GET_MODE (cmp1);
-+
-+  branch_p = (destination != 0);
-+
-+  /* We can't, under any circumstances, have const_ints in cmp0
-+     ??? Actually we could have const0 */
-+  if (GET_CODE (cmp0) == CONST_INT)
-+    cmp0 = force_reg (mode, cmp0);
-+
-+  /* if the comparison is against an int not in legal range
-+     move it into a register */
-+  if (GET_CODE (cmp1) == CONST_INT)
-+    {
-+      HOST_WIDE_INT value = INTVAL (cmp1);
-+
-+      if (value < p_info->const_low || value > p_info->const_high)
-+	cmp1 = force_reg (mode, cmp1);
-+    }
-+
-+  /* Comparison to constants, may involve adding 1 to change a GT into GE.
-+     Comparison between two registers, may involve switching operands.  */
-+  if (GET_CODE (cmp1) == CONST_INT)
-+    {
-+      if (p_info->const_add != 0)
-+	{
-+	  HOST_WIDE_INT new = INTVAL (cmp1) + p_info->const_add;
-+
-+	  /* If modification of cmp1 caused overflow,
-+	     we would get the wrong answer if we follow the usual path;
-+	     thus, x > 0xffffffffU would turn into x > 0U.  */
-+	  if ((p_info->unsignedp
-+	       ? (unsigned HOST_WIDE_INT) new >
-+	       (unsigned HOST_WIDE_INT) INTVAL (cmp1)
-+	       : new > INTVAL (cmp1)) != (p_info->const_add > 0))
-+	    {
-+	      /* ??? This case can never happen with the current numbers,
-+	         but I am paranoid and would rather an abort than
-+	         a bug I will never find */
-+	      abort ();
-+	    }
-+	  else
-+	    cmp1 = GEN_INT (new);
-+	}
-+    }
-+
-+  else if (p_info->reverse_regs)
-+    {
-+      rtx temp = cmp0;
-+      cmp0 = cmp1;
-+      cmp1 = temp;
-+    }
-+
-+
-+
-+  if (branch_p)
-+    {
-+      if (register_operand (cmp0, mode) && register_operand (cmp1, mode))
-+	{
-+	  rtx insn;
-+	  rtx cond = gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1);
-+	  rtx label = gen_rtx_LABEL_REF (VOIDmode, destination);
-+
-+	  insn = gen_rtx_SET (VOIDmode, pc_rtx,
-+			      gen_rtx_IF_THEN_ELSE (VOIDmode,
-+						    cond, label, pc_rtx));
-+	  emit_jump_insn (insn);
-+	}
-+      else
-+	{
-+	  rtx cond, label;
-+
-+	  result = gen_reg_rtx (mode);
-+
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_const, mode, cmp0,
-+				   cmp1));
-+
-+	  cond = gen_rtx (NE, mode, result, const0_rtx);
-+	  label = gen_rtx_LABEL_REF (VOIDmode, destination);
-+
-+	  emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx,
-+				       gen_rtx_IF_THEN_ELSE (VOIDmode,
-+							     cond,
-+							     label, pc_rtx)));
-+	}
-+    }
-+  else
-+    {
-+      if (register_operand (cmp0, mode) && register_operand (cmp1, mode))
-+	{
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1));
-+	}
-+      else
-+	{
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_const, mode, cmp0,
-+				   cmp1));
-+	}
-+    }
-+
-+}
-+
-+
-+/* ??? For now conditional moves are only supported
-+   when the mode of the operands being compared are
-+   the same as the ones being moved */
-+
-+void
-+gen_conditional_move (rtx *operands, enum machine_mode mode)
-+{
-+  rtx insn, cond;
-+  rtx cmp_reg = gen_reg_rtx (mode);
-+  enum rtx_code cmp_code = GET_CODE (operands[1]);
-+  enum rtx_code move_code = EQ;
-+
-+  /* emit a comparison if it is not "simple".
-+     Simple comparisons are X eq 0 and X ne 0 */
-+  if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[1] == const0_rtx)
-+    {
-+      cmp_reg = branch_cmp[0];
-+      move_code = cmp_code;
-+    }
-+  else if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[0] == const0_rtx)
-+    {
-+      cmp_reg = branch_cmp[1];
-+      move_code = cmp_code == EQ ? NE : EQ;
-+    }
-+  else
-+    gen_int_relational (cmp_code, cmp_reg, branch_cmp[0], branch_cmp[1],
-+			NULL_RTX);
-+
-+  cond = gen_rtx (move_code, VOIDmode, cmp_reg, CONST0_RTX (mode));
-+  insn = gen_rtx_SET (mode, operands[0],
-+		      gen_rtx_IF_THEN_ELSE (mode,
-+					    cond, operands[2], operands[3]));
-+  emit_insn (insn);
-+}
-+
-+/*******************
-+ * Addressing Modes
-+ *******************/
-+
-+int
-+nios2_legitimate_address (rtx operand, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                          int strict)
-+{
-+  int ret_val = 0;
-+
-+  switch (GET_CODE (operand))
-+    {
-+      /* direct.  */
-+    case SYMBOL_REF:
-+      if (SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (operand))
-+        {
-+          ret_val = 1;
-+          break;
-+	}
-+      /* else, fall through */
-+    case LABEL_REF:
-+    case CONST_INT:
-+    case CONST:
-+    case CONST_DOUBLE:
-+      /* ??? In here I need to add gp addressing */
-+      ret_val = 0;
-+
-+      break;
-+
-+      /* Register indirect.  */
-+    case REG:
-+      ret_val = REG_OK_FOR_BASE_P2 (operand, strict);
-+      break;
-+
-+      /* Register indirect with displacement */
-+    case PLUS:
-+      {
-+	rtx op0 = XEXP (operand, 0);
-+	rtx op1 = XEXP (operand, 1);
-+
-+	if (REG_P (op0) && REG_P (op1))
-+	  ret_val = 0;
-+	else if (REG_P (op0) && CONSTANT_P (op1))
-+	  ret_val = REG_OK_FOR_BASE_P2 (op0, strict)
-+	    && SMALL_INT (INTVAL (op1));
-+	else if (REG_P (op1) && CONSTANT_P (op0))
-+	  ret_val = REG_OK_FOR_BASE_P2 (op1, strict)
-+	    && SMALL_INT (INTVAL (op0));
-+	else
-+	  ret_val = 0;
-+      }
-+      break;
-+
-+    default:
-+      ret_val = 0;
-+      break;
-+    }
-+
-+  return ret_val;
-+}
-+
-+/* Return true if EXP should be placed in the small data section.  */
-+
-+static bool
-+nios2_in_small_data_p (tree exp)
-+{
-+  /* We want to merge strings, so we never consider them small data.  */
-+  if (TREE_CODE (exp) == STRING_CST)
-+    return false;
-+
-+  if (TREE_CODE (exp) == VAR_DECL && DECL_SECTION_NAME (exp))
-+    {
-+      const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (exp));
-+      /* ??? these string names need moving into 
-+         an array in some header file */
-+      if (nios2_section_threshold > 0
-+          && (strcmp (section, ".sbss") == 0
-+	      || strncmp (section, ".sbss.", 6) == 0
-+	      || strcmp (section, ".sdata") == 0
-+	      || strncmp (section, ".sdata.", 7) == 0))
-+	return true;
-+    }
-+  else if (TREE_CODE (exp) == VAR_DECL)
-+    {
-+      HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
-+
-+      /* If this is an incomplete type with size 0, then we can't put it
-+         in sdata because it might be too big when completed.  */
-+      if (size > 0 && size <= nios2_section_threshold)
-+	return true;
-+    }
-+
-+  return false;
-+}
-+
-+static void
-+nios2_encode_section_info (tree decl, rtx rtl, int first)
-+{
-+
-+  rtx symbol;
-+  int flags;
-+
-+  default_encode_section_info (decl, rtl, first);
-+  
-+  /* Careful not to prod global register variables.  */
-+  if (GET_CODE (rtl) != MEM)
-+    return;
-+  symbol = XEXP (rtl, 0);
-+  if (GET_CODE (symbol) != SYMBOL_REF)
-+    return;
-+
-+  flags = SYMBOL_REF_FLAGS (symbol);
-+    
-+  /* We don't want weak variables to be addressed with gp in case they end up with
-+     value 0 which is not within 2^15 of $gp */
-+  if (DECL_P (decl) && DECL_WEAK (decl))
-+    flags |= SYMBOL_FLAG_WEAK_DECL;
-+
-+  SYMBOL_REF_FLAGS (symbol) = flags;
-+}
-+
-+
-+static unsigned int
-+nios2_section_type_flags (tree decl, const char *name, int reloc)
-+{
-+  unsigned int flags;
-+
-+  flags = default_section_type_flags (decl, name, reloc);
-+
-+  /* ??? these string names need moving into an array in some header file */
-+  if (strcmp (name, ".sbss") == 0
-+      || strncmp (name, ".sbss.", 6) == 0
-+      || strcmp (name, ".sdata") == 0
-+      || strncmp (name, ".sdata.", 7) == 0)
-+    flags |= SECTION_SMALL;
-+
-+  return flags;
-+}
-+
-+
-+
-+
-+/*****************************************
-+ * Defining the Output Assembler Language
-+ *****************************************/
-+
-+/* -------------- *
-+ * Output of Data
-+ * -------------- */
-+
-+
-+/* -------------------------------- *
-+ * Output of Assembler Instructions
-+ * -------------------------------- */
-+
-+
-+/* print the operand OP to file stream
-+   FILE modified by LETTER. LETTER
-+   can be one of:
-+     i: print "i" if OP is an immediate, except 0
-+     o: print "io" if OP is volatile
-+
-+     z: for const0_rtx print $0 instead of 0
-+     H: for %hiadj
-+     L: for %lo
-+     U: for upper half of 32 bit value
-+ */
-+
-+void
-+nios2_print_operand (FILE *file, rtx op, int letter)
-+{
-+
-+  switch (letter)
-+    {
-+    case 'i':
-+      if (CONSTANT_P (op) && (op != const0_rtx))
-+	fprintf (file, "i");
-+      return;
-+
-+    case 'o':
-+      if (GET_CODE (op) == MEM
-+          && ((MEM_VOLATILE_P (op) && !TARGET_CACHE_VOLATILE)
-+              || TARGET_BYPASS_CACHE))
-+	fprintf (file, "io");
-+      return;
-+
-+    default:
-+      break;
-+    }
-+
-+  if (comparison_operator (op, VOIDmode))
-+    {
-+      if (letter == 0)
-+	{
-+	  fprintf (file, "%s", GET_RTX_NAME (GET_CODE (op)));
-+	  return;
-+	}
-+    }
-+
-+
-+  switch (GET_CODE (op))
-+    {
-+    case REG:
-+      if (letter == 0 || letter == 'z')
-+	{
-+	  fprintf (file, "%s", reg_names[REGNO (op)]);
-+	  return;
-+	}
-+
-+    case CONST_INT:
-+      if (INTVAL (op) == 0 && letter == 'z')
-+	{
-+	  fprintf (file, "zero");
-+	  return;
-+	}
-+      else if (letter == 'U')
-+	{
-+	  HOST_WIDE_INT val = INTVAL (op);
-+	  rtx new_op;
-+	  val = (val / 65536) & 0xFFFF;
-+	  new_op = GEN_INT (val);
-+	  output_addr_const (file, new_op);
-+	  return;
-+	}
-+
-+      /* else, fall through */
-+    case CONST:
-+    case LABEL_REF:
-+    case SYMBOL_REF:
-+    case CONST_DOUBLE:
-+      if (letter == 0 || letter == 'z')
-+	{
-+	  output_addr_const (file, op);
-+	  return;
-+	}
-+      else if (letter == 'H')
-+	{
-+	  fprintf (file, "%%hiadj(");
-+	  output_addr_const (file, op);
-+	  fprintf (file, ")");
-+	  return;
-+	}
-+      else if (letter == 'L')
-+	{
-+	  fprintf (file, "%%lo(");
-+	  output_addr_const (file, op);
-+	  fprintf (file, ")");
-+	  return;
-+	}
-+
-+
-+    case SUBREG:
-+    case MEM:
-+      if (letter == 0)
-+	{
-+	  output_address (op);
-+	  return;
-+	}
-+
-+    case CODE_LABEL:
-+      if (letter == 0)
-+	{
-+	  output_addr_const (file, op);
-+	  return;
-+	}
-+
-+    default:
-+      break;
-+    }
-+
-+  fprintf (stderr, "Missing way to print (%c) ", letter);
-+  debug_rtx (op);
-+  abort ();
-+}
-+
-+static int gprel_constant (rtx);
-+
-+static int
-+gprel_constant (rtx op)
-+{
-+  if (GET_CODE (op) == SYMBOL_REF
-+      && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (op))
-+    {
-+      return 1;
-+    }
-+  else if (GET_CODE (op) == CONST
-+           && GET_CODE (XEXP (op, 0)) == PLUS)
-+    {
-+      return gprel_constant (XEXP (XEXP (op, 0), 0));
-+    }
-+  else
-+    {
-+      return 0;
-+    }
-+}
-+
-+void
-+nios2_print_operand_address (FILE *file, rtx op)
-+{
-+  switch (GET_CODE (op))
-+    {
-+    case CONST:
-+    case CONST_INT:
-+    case LABEL_REF:
-+    case CONST_DOUBLE:
-+    case SYMBOL_REF:
-+      if (gprel_constant (op))
-+        {
-+          fprintf (file, "%%gprel(");
-+          output_addr_const (file, op);
-+          fprintf (file, ")(%s)", reg_names[GP_REGNO]);
-+          return;
-+        }
-+
-+      break;
-+
-+    case PLUS:
-+      {
-+	rtx op0 = XEXP (op, 0);
-+	rtx op1 = XEXP (op, 1);
-+
-+	if (REG_P (op0) && CONSTANT_P (op1))
-+	  {
-+	    output_addr_const (file, op1);
-+	    fprintf (file, "(%s)", reg_names[REGNO (op0)]);
-+	    return;
-+	  }
-+	else if (REG_P (op1) && CONSTANT_P (op0))
-+	  {
-+	    output_addr_const (file, op0);
-+	    fprintf (file, "(%s)", reg_names[REGNO (op1)]);
-+	    return;
-+	  }
-+      }
-+      break;
-+
-+    case REG:
-+      fprintf (file, "0(%s)", reg_names[REGNO (op)]);
-+      return;
-+
-+    case MEM:
-+      {
-+	rtx base = XEXP (op, 0);
-+	PRINT_OPERAND_ADDRESS (file, base);
-+	return;
-+      }
-+    default:
-+      break;
-+    }
-+
-+  fprintf (stderr, "Missing way to print address\n");
-+  debug_rtx (op);
-+  abort ();
-+}
-+
-+
-+
-+
-+
-+/****************************
-+ * Predicates
-+ ****************************/
-+
-+int
-+arith_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SMALL_INT (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+uns_arith_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SMALL_INT_UNSIGNED (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+logical_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT
-+      && (SMALL_INT_UNSIGNED (INTVAL (op)) || UPPER16_INT (INTVAL (op))))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+shift_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SHIFT_INT (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+rdwrctl_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-+{
-+  return GET_CODE (op) == CONST_INT && RDWRCTL_INT (INTVAL (op));
-+}
-+
-+/* Return truth value of whether OP is a register or the constant 0. */
-+
-+int
-+reg_or_0_operand (rtx op, enum machine_mode mode)
-+{
-+  switch (GET_CODE (op))
-+    {
-+    case CONST_INT:
-+      return INTVAL (op) == 0;
-+
-+    case CONST_DOUBLE:
-+      return op == CONST0_RTX (mode);
-+
-+    default:
-+      break;
-+    }
-+
-+  return register_operand (op, mode);
-+}
-+
-+
-+int
-+equality_op (rtx op, enum machine_mode mode)
-+{
-+  if (mode != GET_MODE (op))
-+    return 0;
-+
-+  return GET_CODE (op) == EQ || GET_CODE (op) == NE;
-+}
-+
-+int
-+custom_insn_opcode (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-+{
-+  return GET_CODE (op) == CONST_INT && CUSTOM_INSN_OPCODE (INTVAL (op));
-+}
-+
-+
-+
-+
-+
-+
-+
-+/*****************************************************************************
-+**
-+** instruction scheduler
-+**
-+*****************************************************************************/
-+static int
-+nios2_use_dfa_pipeline_interface ()
-+{
-+  return 1;
-+}
-+
-+
-+static int
-+nios2_issue_rate ()
-+{
-+#ifdef MAX_DFA_ISSUE_RATE
-+  return MAX_DFA_ISSUE_RATE;
-+#else
-+  return 1;
-+#endif
-+}
-+
-+
-+const char *
-+asm_output_opcode (FILE *file ATTRIBUTE_UNUSED, 
-+                   const char *ptr ATTRIBUTE_UNUSED)
-+{
-+  const char *p;
-+
-+  p = ptr;
-+  return ptr;
-+}
-+
-+
-+
-+/*****************************************************************************
-+**
-+** function arguments
-+**
-+*****************************************************************************/
-+
-+void
-+init_cumulative_args (CUMULATIVE_ARGS *cum, 
-+                      tree fntype ATTRIBUTE_UNUSED, 
-+                      rtx libname ATTRIBUTE_UNUSED, 
-+                      tree fndecl ATTRIBUTE_UNUSED, 
-+                      int n_named_args ATTRIBUTE_UNUSED)
-+{
-+  cum->regs_used = 0;
-+}
-+
-+
-+/* Update the data in CUM to advance over an argument
-+   of mode MODE and data type TYPE.
-+   (TYPE is null for libcalls where that information may not be available.)  */
-+
-+void
-+function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode, 
-+                      tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED)
-+{
-+  HOST_WIDE_INT param_size;
-+
-+  if (mode == BLKmode)
-+    {
-+      param_size = int_size_in_bytes (type);
-+      if (param_size < 0)
-+	internal_error
-+	  ("Do not know how to handle large structs or variable length types");
-+    }
-+  else
-+    {
-+      param_size = GET_MODE_SIZE (mode);
-+    }
-+
-+  /* convert to words (round up) */
-+  param_size = (3 + param_size) / 4;
-+
-+  if (cum->regs_used + param_size > NUM_ARG_REGS)
-+    {
-+      cum->regs_used = NUM_ARG_REGS;
-+    }
-+  else
-+    {
-+      cum->regs_used += param_size;
-+    }
-+
-+  return;
-+}
-+
-+/* Define where to put the arguments to a function.  Value is zero to
-+   push the argument on the stack, or a hard register in which to
-+   store the argument.
-+
-+   MODE is the argument's machine mode.
-+   TYPE is the data type of the argument (as a tree).
-+   This is null for libcalls where that information may
-+   not be available.
-+   CUM is a variable of type CUMULATIVE_ARGS which gives info about
-+   the preceding args and about the function being called.
-+   NAMED is nonzero if this argument is a named parameter
-+   (otherwise it is an extra parameter matching an ellipsis).  */
-+rtx
-+function_arg (const CUMULATIVE_ARGS *cum, enum machine_mode mode, 
-+              tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED)
-+{
-+  rtx return_rtx = NULL_RTX;
-+
-+  if (cum->regs_used < NUM_ARG_REGS)
-+    {
-+      return_rtx = gen_rtx_REG (mode, FIRST_ARG_REGNO + cum->regs_used);
-+    }
-+
-+  return return_rtx;
-+}
-+
-+int
-+function_arg_partial_nregs (const CUMULATIVE_ARGS *cum,
-+                            enum machine_mode mode, tree type, 
-+                            int named ATTRIBUTE_UNUSED)
-+{
-+  HOST_WIDE_INT param_size;
-+
-+  if (mode == BLKmode)
-+    {
-+      param_size = int_size_in_bytes (type);
-+      if (param_size < 0)
-+	internal_error
-+	  ("Do not know how to handle large structs or variable length types");
-+    }
-+  else
-+    {
-+      param_size = GET_MODE_SIZE (mode);
-+    }
-+
-+  /* convert to words (round up) */
-+  param_size = (3 + param_size) / 4;
-+
-+  if (cum->regs_used < NUM_ARG_REGS
-+      && cum->regs_used + param_size > NUM_ARG_REGS)
-+    {
-+      return NUM_ARG_REGS - cum->regs_used;
-+    }
-+  else
-+    {
-+      return 0;
-+    }
-+}
-+
-+
-+int
-+nios2_return_in_memory (tree type)
-+{
-+  int res = ((int_size_in_bytes (type) > (2 * UNITS_PER_WORD))
-+  	     || (int_size_in_bytes (type) == -1));
-+
-+  return res;
-+}
-+
-+/* ??? It may be possible to eliminate the copyback and implement
-+       my own va_arg type, but that is more work for now. */
-+int
-+nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *cum, 
-+                              enum machine_mode mode, tree type, 
-+                              int no_rtl)
-+{
-+  CUMULATIVE_ARGS local_cum;
-+  int regs_to_push;
-+
-+  local_cum = *cum;
-+  FUNCTION_ARG_ADVANCE (local_cum, mode, type, 1);
-+
-+  regs_to_push = NUM_ARG_REGS - local_cum.regs_used;
-+
-+  if (!no_rtl)
-+    {
-+      if (regs_to_push > 0)
-+	{
-+	  rtx ptr, mem;
-+
-+	  ptr = virtual_incoming_args_rtx;
-+	  mem = gen_rtx_MEM (BLKmode, ptr);
-+
-+	  /* va_arg is an array access in this case, which causes
-+	     it to get MEM_IN_STRUCT_P set.  We must set it here
-+	     so that the insn scheduler won't assume that these
-+	     stores can't possibly overlap with the va_arg loads.  */
-+	  MEM_SET_IN_STRUCT_P (mem, 1);
-+
-+	  emit_insn (gen_blockage ());
-+	  move_block_from_reg (local_cum.regs_used + FIRST_ARG_REGNO, mem,
-+			       regs_to_push);
-+	  emit_insn (gen_blockage ());
-+	}
-+    }
-+
-+  return regs_to_push * UNITS_PER_WORD;
-+
-+}
-+
-+
-+
-+/*****************************************************************************
-+**
-+** builtins
-+**
-+** This method for handling builtins is from CSP where _many_ more types of
-+** expanders have already been written. Check there first before writing
-+** new ones.
-+**
-+*****************************************************************************/
-+
-+enum nios2_builtins
-+{
-+  NIOS2_BUILTIN_LDBIO,
-+  NIOS2_BUILTIN_LDBUIO,
-+  NIOS2_BUILTIN_LDHIO,
-+  NIOS2_BUILTIN_LDHUIO,
-+  NIOS2_BUILTIN_LDWIO,
-+  NIOS2_BUILTIN_STBIO,
-+  NIOS2_BUILTIN_STHIO,
-+  NIOS2_BUILTIN_STWIO,
-+  NIOS2_BUILTIN_SYNC,
-+  NIOS2_BUILTIN_RDCTL,
-+  NIOS2_BUILTIN_WRCTL,
-+
-+  NIOS2_BUILTIN_CUSTOM_N,
-+  NIOS2_BUILTIN_CUSTOM_NI,
-+  NIOS2_BUILTIN_CUSTOM_NF,
-+  NIOS2_BUILTIN_CUSTOM_NP,
-+  NIOS2_BUILTIN_CUSTOM_NII,
-+  NIOS2_BUILTIN_CUSTOM_NIF,
-+  NIOS2_BUILTIN_CUSTOM_NIP,
-+  NIOS2_BUILTIN_CUSTOM_NFI,
-+  NIOS2_BUILTIN_CUSTOM_NFF,
-+  NIOS2_BUILTIN_CUSTOM_NFP,
-+  NIOS2_BUILTIN_CUSTOM_NPI,
-+  NIOS2_BUILTIN_CUSTOM_NPF,
-+  NIOS2_BUILTIN_CUSTOM_NPP,
-+  NIOS2_BUILTIN_CUSTOM_IN,
-+  NIOS2_BUILTIN_CUSTOM_INI,
-+  NIOS2_BUILTIN_CUSTOM_INF,
-+  NIOS2_BUILTIN_CUSTOM_INP,
-+  NIOS2_BUILTIN_CUSTOM_INII,
-+  NIOS2_BUILTIN_CUSTOM_INIF,
-+  NIOS2_BUILTIN_CUSTOM_INIP,
-+  NIOS2_BUILTIN_CUSTOM_INFI,
-+  NIOS2_BUILTIN_CUSTOM_INFF,
-+  NIOS2_BUILTIN_CUSTOM_INFP,
-+  NIOS2_BUILTIN_CUSTOM_INPI,
-+  NIOS2_BUILTIN_CUSTOM_INPF,
-+  NIOS2_BUILTIN_CUSTOM_INPP,
-+  NIOS2_BUILTIN_CUSTOM_FN,
-+  NIOS2_BUILTIN_CUSTOM_FNI,
-+  NIOS2_BUILTIN_CUSTOM_FNF,
-+  NIOS2_BUILTIN_CUSTOM_FNP,
-+  NIOS2_BUILTIN_CUSTOM_FNII,
-+  NIOS2_BUILTIN_CUSTOM_FNIF,
-+  NIOS2_BUILTIN_CUSTOM_FNIP,
-+  NIOS2_BUILTIN_CUSTOM_FNFI,
-+  NIOS2_BUILTIN_CUSTOM_FNFF,
-+  NIOS2_BUILTIN_CUSTOM_FNFP,
-+  NIOS2_BUILTIN_CUSTOM_FNPI,
-+  NIOS2_BUILTIN_CUSTOM_FNPF,
-+  NIOS2_BUILTIN_CUSTOM_FNPP,
-+  NIOS2_BUILTIN_CUSTOM_PN,
-+  NIOS2_BUILTIN_CUSTOM_PNI,
-+  NIOS2_BUILTIN_CUSTOM_PNF,
-+  NIOS2_BUILTIN_CUSTOM_PNP,
-+  NIOS2_BUILTIN_CUSTOM_PNII,
-+  NIOS2_BUILTIN_CUSTOM_PNIF,
-+  NIOS2_BUILTIN_CUSTOM_PNIP,
-+  NIOS2_BUILTIN_CUSTOM_PNFI,
-+  NIOS2_BUILTIN_CUSTOM_PNFF,
-+  NIOS2_BUILTIN_CUSTOM_PNFP,
-+  NIOS2_BUILTIN_CUSTOM_PNPI,
-+  NIOS2_BUILTIN_CUSTOM_PNPF,
-+  NIOS2_BUILTIN_CUSTOM_PNPP,
-+
-+
-+  LIM_NIOS2_BUILTINS
-+};
-+
-+struct builtin_description
-+{
-+    const enum insn_code icode;
-+    const char *const name;
-+    const enum nios2_builtins code;
-+    const tree *type;
-+    rtx (* expander) PARAMS ((const struct builtin_description *,
-+                              tree, rtx, rtx, enum machine_mode, int));
-+};
-+
-+static rtx nios2_expand_STXIO (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_LDXIO (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_sync (const struct builtin_description *, 
-+                              tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_rdctl (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_wrctl (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+
-+static rtx nios2_expand_custom_n (const struct builtin_description *, 
-+                                  tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_Xn (const struct builtin_description *, 
-+                                   tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_nX (const struct builtin_description *, 
-+                                   tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_XnX (const struct builtin_description *, 
-+                                    tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_nXX (const struct builtin_description *, 
-+                                    tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_XnXX (const struct builtin_description *, 
-+                                     tree, rtx, rtx, enum machine_mode, int);
-+
-+static tree endlink;
-+
-+/* int fn (volatile const void *)
-+ */
-+static tree int_ftype_volatile_const_void_p;
-+
-+/* int fn (int)
-+ */
-+static tree int_ftype_int;
-+
-+/* void fn (int, int)
-+ */
-+static tree void_ftype_int_int;
-+
-+/* void fn (volatile void *, int)
-+ */
-+static tree void_ftype_volatile_void_p_int;
-+
-+/* void fn (void)
-+ */
-+static tree void_ftype_void;
-+
-+static tree custom_n;
-+static tree custom_ni;
-+static tree custom_nf;
-+static tree custom_np;
-+static tree custom_nii;
-+static tree custom_nif;
-+static tree custom_nip;
-+static tree custom_nfi;
-+static tree custom_nff;
-+static tree custom_nfp;
-+static tree custom_npi;
-+static tree custom_npf;
-+static tree custom_npp;
-+static tree custom_in;
-+static tree custom_ini;
-+static tree custom_inf;
-+static tree custom_inp;
-+static tree custom_inii;
-+static tree custom_inif;
-+static tree custom_inip;
-+static tree custom_infi;
-+static tree custom_inff;
-+static tree custom_infp;
-+static tree custom_inpi;
-+static tree custom_inpf;
-+static tree custom_inpp;
-+static tree custom_fn;
-+static tree custom_fni;
-+static tree custom_fnf;
-+static tree custom_fnp;
-+static tree custom_fnii;
-+static tree custom_fnif;
-+static tree custom_fnip;
-+static tree custom_fnfi;
-+static tree custom_fnff;
-+static tree custom_fnfp;
-+static tree custom_fnpi;
-+static tree custom_fnpf;
-+static tree custom_fnpp;
-+static tree custom_pn;
-+static tree custom_pni;
-+static tree custom_pnf;
-+static tree custom_pnp;
-+static tree custom_pnii;
-+static tree custom_pnif;
-+static tree custom_pnip;
-+static tree custom_pnfi;
-+static tree custom_pnff;
-+static tree custom_pnfp;
-+static tree custom_pnpi;
-+static tree custom_pnpf;
-+static tree custom_pnpp;
-+
-+
-+static const struct builtin_description bdesc[] = {
-+    {CODE_FOR_ldbio, "__builtin_ldbio", NIOS2_BUILTIN_LDBIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldbuio, "__builtin_ldbuio", NIOS2_BUILTIN_LDBUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldhio, "__builtin_ldhio", NIOS2_BUILTIN_LDHIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldhuio, "__builtin_ldhuio", NIOS2_BUILTIN_LDHUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldwio, "__builtin_ldwio", NIOS2_BUILTIN_LDWIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+
-+    {CODE_FOR_stbio, "__builtin_stbio", NIOS2_BUILTIN_STBIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+    {CODE_FOR_sthio, "__builtin_sthio", NIOS2_BUILTIN_STHIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+    {CODE_FOR_stwio, "__builtin_stwio", NIOS2_BUILTIN_STWIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+
-+    {CODE_FOR_sync, "__builtin_sync", NIOS2_BUILTIN_SYNC, &void_ftype_void, nios2_expand_sync},
-+    {CODE_FOR_rdctl, "__builtin_rdctl", NIOS2_BUILTIN_RDCTL, &int_ftype_int, nios2_expand_rdctl},
-+    {CODE_FOR_wrctl, "__builtin_wrctl", NIOS2_BUILTIN_WRCTL, &void_ftype_int_int, nios2_expand_wrctl},
-+
-+    {CODE_FOR_custom_n, "__builtin_custom_n", NIOS2_BUILTIN_CUSTOM_N, &custom_n, nios2_expand_custom_n},
-+    {CODE_FOR_custom_ni, "__builtin_custom_ni", NIOS2_BUILTIN_CUSTOM_NI, &custom_ni, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_nf, "__builtin_custom_nf", NIOS2_BUILTIN_CUSTOM_NF, &custom_nf, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_np, "__builtin_custom_np", NIOS2_BUILTIN_CUSTOM_NP, &custom_np, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_nii, "__builtin_custom_nii", NIOS2_BUILTIN_CUSTOM_NII, &custom_nii, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nif, "__builtin_custom_nif", NIOS2_BUILTIN_CUSTOM_NIF, &custom_nif, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nip, "__builtin_custom_nip", NIOS2_BUILTIN_CUSTOM_NIP, &custom_nip, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nfi, "__builtin_custom_nfi", NIOS2_BUILTIN_CUSTOM_NFI, &custom_nfi, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nff, "__builtin_custom_nff", NIOS2_BUILTIN_CUSTOM_NFF, &custom_nff, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nfp, "__builtin_custom_nfp", NIOS2_BUILTIN_CUSTOM_NFP, &custom_nfp, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npi, "__builtin_custom_npi", NIOS2_BUILTIN_CUSTOM_NPI, &custom_npi, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npf, "__builtin_custom_npf", NIOS2_BUILTIN_CUSTOM_NPF, &custom_npf, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npp, "__builtin_custom_npp", NIOS2_BUILTIN_CUSTOM_NPP, &custom_npp, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_in, "__builtin_custom_in", NIOS2_BUILTIN_CUSTOM_IN, &custom_in, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_ini, "__builtin_custom_ini", NIOS2_BUILTIN_CUSTOM_INI, &custom_ini, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inf, "__builtin_custom_inf", NIOS2_BUILTIN_CUSTOM_INF, &custom_inf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inp, "__builtin_custom_inp", NIOS2_BUILTIN_CUSTOM_INP, &custom_inp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inii, "__builtin_custom_inii", NIOS2_BUILTIN_CUSTOM_INII, &custom_inii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inif, "__builtin_custom_inif", NIOS2_BUILTIN_CUSTOM_INIF, &custom_inif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inip, "__builtin_custom_inip", NIOS2_BUILTIN_CUSTOM_INIP, &custom_inip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_infi, "__builtin_custom_infi", NIOS2_BUILTIN_CUSTOM_INFI, &custom_infi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inff, "__builtin_custom_inff", NIOS2_BUILTIN_CUSTOM_INFF, &custom_inff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_infp, "__builtin_custom_infp", NIOS2_BUILTIN_CUSTOM_INFP, &custom_infp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpi, "__builtin_custom_inpi", NIOS2_BUILTIN_CUSTOM_INPI, &custom_inpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpf, "__builtin_custom_inpf", NIOS2_BUILTIN_CUSTOM_INPF, &custom_inpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpp, "__builtin_custom_inpp", NIOS2_BUILTIN_CUSTOM_INPP, &custom_inpp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fn, "__builtin_custom_fn", NIOS2_BUILTIN_CUSTOM_FN, &custom_fn, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_fni, "__builtin_custom_fni", NIOS2_BUILTIN_CUSTOM_FNI, &custom_fni, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnf, "__builtin_custom_fnf", NIOS2_BUILTIN_CUSTOM_FNF, &custom_fnf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnp, "__builtin_custom_fnp", NIOS2_BUILTIN_CUSTOM_FNP, &custom_fnp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnii, "__builtin_custom_fnii", NIOS2_BUILTIN_CUSTOM_FNII, &custom_fnii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnif, "__builtin_custom_fnif", NIOS2_BUILTIN_CUSTOM_FNIF, &custom_fnif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnip, "__builtin_custom_fnip", NIOS2_BUILTIN_CUSTOM_FNIP, &custom_fnip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnfi, "__builtin_custom_fnfi", NIOS2_BUILTIN_CUSTOM_FNFI, &custom_fnfi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnff, "__builtin_custom_fnff", NIOS2_BUILTIN_CUSTOM_FNFF, &custom_fnff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnfp, "__builtin_custom_fnfp", NIOS2_BUILTIN_CUSTOM_FNFP, &custom_fnfp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpi, "__builtin_custom_fnpi", NIOS2_BUILTIN_CUSTOM_FNPI, &custom_fnpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpf, "__builtin_custom_fnpf", NIOS2_BUILTIN_CUSTOM_FNPF, &custom_fnpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpp, "__builtin_custom_fnpp", NIOS2_BUILTIN_CUSTOM_FNPP, &custom_fnpp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pn, "__builtin_custom_pn", NIOS2_BUILTIN_CUSTOM_PN, &custom_pn, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_pni, "__builtin_custom_pni", NIOS2_BUILTIN_CUSTOM_PNI, &custom_pni, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnf, "__builtin_custom_pnf", NIOS2_BUILTIN_CUSTOM_PNF, &custom_pnf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnp, "__builtin_custom_pnp", NIOS2_BUILTIN_CUSTOM_PNP, &custom_pnp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnii, "__builtin_custom_pnii", NIOS2_BUILTIN_CUSTOM_PNII, &custom_pnii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnif, "__builtin_custom_pnif", NIOS2_BUILTIN_CUSTOM_PNIF, &custom_pnif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnip, "__builtin_custom_pnip", NIOS2_BUILTIN_CUSTOM_PNIP, &custom_pnip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnfi, "__builtin_custom_pnfi", NIOS2_BUILTIN_CUSTOM_PNFI, &custom_pnfi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnff, "__builtin_custom_pnff", NIOS2_BUILTIN_CUSTOM_PNFF, &custom_pnff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnfp, "__builtin_custom_pnfp", NIOS2_BUILTIN_CUSTOM_PNFP, &custom_pnfp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpi, "__builtin_custom_pnpi", NIOS2_BUILTIN_CUSTOM_PNPI, &custom_pnpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpf, "__builtin_custom_pnpf", NIOS2_BUILTIN_CUSTOM_PNPF, &custom_pnpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpp, "__builtin_custom_pnpp", NIOS2_BUILTIN_CUSTOM_PNPP, &custom_pnpp, nios2_expand_custom_XnXX},
-+
-+
-+    {0, 0, 0, 0, 0},
-+};
-+
-+/* This does not have a closing bracket on purpose (see use) */
-+#define def_param(TYPE) \
-+  tree_cons (NULL_TREE, TYPE,
-+
-+static void
-+nios2_init_builtins ()
-+{
-+  const struct builtin_description *d;
-+
-+
-+  endlink = void_list_node;
-+
-+  /* Special indenting here because one of the brackets is in def_param */
-+  /* *INDENT-OFF* */
-+
-+  /* int fn (volatile const void *)
-+   */
-+  int_ftype_volatile_const_void_p
-+    = build_function_type (integer_type_node,
-+			   def_param (build_qualified_type (ptr_type_node,
-+			                                    TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE))
-+			   endlink));
-+
-+
-+  /* void fn (volatile void *, int)
-+   */
-+  void_ftype_volatile_void_p_int
-+    = build_function_type (void_type_node,
-+			   def_param (build_qualified_type (ptr_type_node,
-+			                                    TYPE_QUAL_VOLATILE))
-+			   def_param (integer_type_node)
-+			   endlink)));
-+
-+  /* void fn (void)
-+   */
-+  void_ftype_void
-+      = build_function_type (void_type_node,
-+                             endlink);
-+
-+  /* int fn (int)
-+   */
-+  int_ftype_int
-+      = build_function_type (integer_type_node,
-+                             def_param (integer_type_node)
-+                             endlink));
-+
-+  /* void fn (int, int)
-+   */
-+  void_ftype_int_int
-+      = build_function_type (void_type_node,
-+                             def_param (integer_type_node)
-+                             def_param (integer_type_node)
-+                             endlink)));
-+
-+
-+#define CUSTOM_NUM def_param (integer_type_node)
-+
-+  custom_n
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_ni
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_nf
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_np
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_nii
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_nif
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_nip
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_nfi
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_nff
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_nfp
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_npi
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_npf
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_npp
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+  custom_in
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_ini
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_inf
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_inp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_inii
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inif
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_inip
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_infi
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inff
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_infp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_inpi
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inpf
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_inpp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+  custom_fn
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_fni
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_fnf
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_fnp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_fnii
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnif
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnip
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_fnfi
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnff
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnfp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_fnpi
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnpf
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnpp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+
-+  custom_pn
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_pni
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_pnf
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_pnp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_pnii
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnif
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnip
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_pnfi
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnff
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnfp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_pnpi
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnpf
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnpp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+
-+
-+  /* *INDENT-ON* */
-+
-+
-+  for (d = bdesc; d->name; d++)
-+    {
-+      builtin_function (d->name, *d->type, d->code,
-+			BUILT_IN_MD, NULL, NULL);
-+    }
-+}
-+
-+/* Expand an expression EXP that calls a built-in function,
-+   with result going to TARGET if that's convenient
-+   (and in mode MODE if that's convenient).
-+   SUBTARGET may be used as the target for computing one of EXP's operands.
-+   IGNORE is nonzero if the value is to be ignored.  */
-+
-+static rtx
-+nios2_expand_builtin (tree exp, rtx target, rtx subtarget, 
-+                      enum machine_mode mode, int ignore)
-+{
-+  const struct builtin_description *d;
-+  tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
-+  unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
-+
-+  for (d = bdesc; d->name; d++)
-+    if (d->code == fcode)
-+      return (d->expander) (d, exp, target, subtarget, mode, ignore);
-+
-+  /* we should have seen one of the functins we registered */
-+  abort ();
-+}
-+
-+static rtx nios2_create_target (const struct builtin_description *, rtx);
-+
-+
-+static rtx
-+nios2_create_target (const struct builtin_description *d, rtx target)
-+{
-+  if (!target
-+      || !(*insn_data[d->icode].operand[0].predicate) (target,
-+                                                       insn_data[d->icode].operand[0].mode))
-+    {
-+      target = gen_reg_rtx (insn_data[d->icode].operand[0].mode);
-+    }
-+
-+  return target;
-+}
-+
-+
-+static rtx nios2_extract_opcode (const struct builtin_description *, int, tree);
-+static rtx nios2_extract_operand (const struct builtin_description *, int, int, tree);
-+
-+static rtx
-+nios2_extract_opcode (const struct builtin_description *d, int op, tree arglist)
-+{
-+  enum machine_mode mode = insn_data[d->icode].operand[op].mode;
-+  tree arg = TREE_VALUE (arglist);
-+  rtx opcode = expand_expr (arg, NULL_RTX, mode, 0);
-+  opcode = protect_from_queue (opcode, 0);
-+
-+  if (!(*insn_data[d->icode].operand[op].predicate) (opcode, mode))
-+    error ("Custom instruction opcode must be compile time constant in the range 0-255 for %s", d->name);
-+
-+  return opcode;
-+}
-+
-+static rtx
-+nios2_extract_operand (const struct builtin_description *d, int op, int argnum, tree arglist)
-+{
-+  enum machine_mode mode = insn_data[d->icode].operand[op].mode;
-+  tree arg = TREE_VALUE (arglist);
-+  rtx operand = expand_expr (arg, NULL_RTX, mode, 0);
-+  operand = protect_from_queue (operand, 0);
-+
-+  if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode))
-+    operand = copy_to_mode_reg (mode, operand);
-+
-+  /* ??? Better errors would be nice */
-+  if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode))
-+    error ("Invalid argument %d to %s", argnum, d->name);
-+
-+  return operand;
-+}
-+
-+
-+static rtx
-+nios2_expand_custom_n (const struct builtin_description *d, tree exp, 
-+                       rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, 
-+                       enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+
-+  /* custom_n should have exactly one operand */
-+  if (insn_data[d->icode].n_operands != 1)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+
-+  pat = GEN_FCN (d->icode) (opcode);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_Xn (const struct builtin_description *d, tree exp, 
-+                        rtx target, rtx subtarget ATTRIBUTE_UNUSED, 
-+                        enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                        int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+
-+  /* custom_Xn should have exactly two operands */
-+  if (insn_data[d->icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+
-+  pat = GEN_FCN (d->icode) (target, opcode);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_custom_nX (const struct builtin_description *d, tree exp, 
-+                        rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, 
-+                        enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[1];
-+  int i;
-+
-+
-+  /* custom_nX should have exactly two operands */
-+  if (insn_data[d->icode].n_operands != 2)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+  for (i = 0; i < 1; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (opcode, operands[0]);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_XnX (const struct builtin_description *d, tree exp, rtx target, 
-+                         rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                         int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[1];
-+  int i;
-+
-+  /* custom_Xn should have exactly three operands */
-+  if (insn_data[d->icode].n_operands != 3)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+
-+  for (i = 0; i < 1; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (target, opcode, operands[0]);
-+
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_custom_nXX (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, 
-+                         rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                         int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[2];
-+  int i;
-+
-+
-+  /* custom_nX should have exactly three operands */
-+  if (insn_data[d->icode].n_operands != 3)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+  for (i = 0; i < 2; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (opcode, operands[0], operands[1]);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_XnXX (const struct builtin_description *d, tree exp, rtx target, 
-+                          rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                          int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[2];
-+  int i;
-+
-+
-+  /* custom_XnX should have exactly four operands */
-+  if (insn_data[d->icode].n_operands != 4)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+  for (i = 0; i < 2; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (target, opcode, operands[0], operands[1]);
-+
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+
-+
-+static rtx
-+nios2_expand_STXIO (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, 
-+                    rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                    int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx store_dest, store_val;
-+  enum insn_code icode = d->icode;
-+
-+  /* stores should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  /* process the destination of the store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[0].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    store_dest = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    store_dest = protect_from_queue (store_dest, 0);
-+
-+    store_dest = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, store_dest));
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[0].predicate) (store_dest, mode))
-+      error ("Invalid argument 1 to %s", d->name);
-+  }
-+
-+
-+  /* process the value to store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (TREE_CHAIN (arglist));
-+    store_val = expand_expr (arg, NULL_RTX, mode, 0);
-+    store_val = protect_from_queue (store_val, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      store_val = copy_to_mode_reg (mode, store_val);
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      error ("Invalid argument 2 to %s", d->name);
-+  }
-+
-+  pat = GEN_FCN (d->icode) (store_dest, store_val);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+
-+static rtx
-+nios2_expand_LDXIO (const struct builtin_description * d, tree exp, rtx target, 
-+                    rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                    int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx ld_src;
-+  enum insn_code icode = d->icode;
-+
-+  /* loads should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    ld_src = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    ld_src = protect_from_queue (ld_src, 0);
-+
-+    ld_src = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, ld_src));
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (ld_src, mode))
-+      {
-+        error ("Invalid argument 1 to %s", d->name);
-+      }
-+  }
-+
-+  pat = GEN_FCN (d->icode) (target, ld_src);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+
-+static rtx
-+nios2_expand_sync (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  emit_insn (gen_sync ());
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_rdctl (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx rdctl_reg;
-+  enum insn_code icode = d->icode;
-+
-+  /* rdctl should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    rdctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    rdctl_reg = protect_from_queue (rdctl_reg, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (rdctl_reg, mode))
-+      {
-+        error ("Control register number must be in range 0-31 for %s", d->name);
-+      }
-+  }
-+
-+  pat = GEN_FCN (d->icode) (target, rdctl_reg);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_wrctl (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx wrctl_reg, store_val;
-+  enum insn_code icode = d->icode;
-+
-+  /* stores should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  /* process the destination of the store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[0].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    wrctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    wrctl_reg = protect_from_queue (wrctl_reg, 0);
-+
-+    if (!(*insn_data[icode].operand[0].predicate) (wrctl_reg, mode))
-+      error ("Control register number must be in range 0-31 for %s", d->name);
-+  }
-+
-+
-+  /* process the value to store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (TREE_CHAIN (arglist));
-+    store_val = expand_expr (arg, NULL_RTX, mode, 0);
-+    store_val = protect_from_queue (store_val, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      store_val = copy_to_mode_reg (mode, store_val);
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      error ("Invalid argument 2 to %s", d->name);
-+  }
-+
-+  pat = GEN_FCN (d->icode) (wrctl_reg, store_val);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+
-+#include "gt-nios2.h"
-+
---- gcc-3.4.3/gcc/config/nios2/nios2.h
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.h
-@@ -0,0 +1,824 @@
-+/* Definitions of target machine for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera 
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+
-+
-+#define TARGET_CPU_CPP_BUILTINS()		\
-+  do						\
-+    {						\
-+      builtin_define_std ("NIOS2");		\
-+      builtin_define_std ("nios2");		\
-+      builtin_define ("_GNU_SOURCE");		\
-+    }						\
-+  while (0)
-+#define TARGET_VERSION fprintf (stderr, " (Altera Nios II)")
-+
-+
-+
-+
-+
-+/*********************************
-+ * Run-time Target Specification
-+ *********************************/
-+
-+#define HAS_DIV_FLAG 0x0001
-+#define HAS_MUL_FLAG 0x0002
-+#define HAS_MULX_FLAG 0x0004
-+#define FAST_SW_DIV_FLAG 0x0008
-+#define INLINE_MEMCPY_FLAG 0x00010
-+#define CACHE_VOLATILE_FLAG 0x0020
-+#define BYPASS_CACHE_FLAG 0x0040
-+
-+extern int target_flags;
-+#define TARGET_HAS_DIV (target_flags & HAS_DIV_FLAG)
-+#define TARGET_HAS_MUL (target_flags & HAS_MUL_FLAG)
-+#define TARGET_HAS_MULX (target_flags & HAS_MULX_FLAG)
-+#define TARGET_FAST_SW_DIV (target_flags & FAST_SW_DIV_FLAG)
-+#define TARGET_INLINE_MEMCPY (target_flags & INLINE_MEMCPY_FLAG)
-+#define TARGET_CACHE_VOLATILE (target_flags & CACHE_VOLATILE_FLAG)
-+#define TARGET_BYPASS_CACHE (target_flags & BYPASS_CACHE_FLAG)
-+
-+#define TARGET_SWITCHES					\
-+{							\
-+    { "hw-div", HAS_DIV_FLAG,				\
-+      N_("Enable DIV, DIVU") },				\
-+    { "no-hw-div", -HAS_DIV_FLAG,			\
-+      N_("Disable DIV, DIVU (default)") },		\
-+    { "hw-mul", HAS_MUL_FLAG,				\
-+      N_("Enable MUL instructions (default)") },				\
-+    { "hw-mulx", HAS_MULX_FLAG,				\
-+      N_("Enable MULX instructions, assume fast shifter") },				\
-+    { "no-hw-mul", -HAS_MUL_FLAG,			\
-+      N_("Disable MUL instructions") },		\
-+    { "no-hw-mulx", -HAS_MULX_FLAG,			\
-+      N_("Disable MULX instructions, assume slow shifter (default and implied by -mno-hw-mul)") },		\
-+    { "fast-sw-div", FAST_SW_DIV_FLAG,				\
-+      N_("Use table based fast divide (default at -O3)") },				\
-+    { "no-fast-sw-div", -FAST_SW_DIV_FLAG,			\
-+      N_("Don't use table based fast divide ever") },		\
-+    { "inline-memcpy", INLINE_MEMCPY_FLAG,				\
-+      N_("Inline small memcpy (default when optimizing)") },				\
-+    { "no-inline-memcpy", -INLINE_MEMCPY_FLAG,			\
-+      N_("Don't Inline small memcpy") },		\
-+    { "cache-volatile", CACHE_VOLATILE_FLAG,				\
-+      N_("Volatile accesses use non-io variants of instructions (default)") },				\
-+    { "no-cache-volatile", -CACHE_VOLATILE_FLAG,			\
-+      N_("Volatile accesses use io variants of instructions") },		\
-+    { "bypass-cache", BYPASS_CACHE_FLAG,				\
-+      N_("All ld/st instructins use io variants") },				\
-+    { "no-bypass-cache", -BYPASS_CACHE_FLAG,			\
-+      N_("All ld/st instructins do not use io variants (default)") },		\
-+    { "smallc", 0,			\
-+      N_("Link with a limited version of the C library") },		\
-+    { "ctors-in-init", 0,			\
-+      "" /* undocumented: N_("Link with static constructors and destructors in init") */ },		\
-+    { "", TARGET_DEFAULT, 0 }				\
-+}
-+
-+
-+extern const char *nios2_sys_nosys_string;    /* for -msys=nosys */
-+extern const char *nios2_sys_lib_string;    /* for -msys-lib= */
-+extern const char *nios2_sys_crt0_string;    /* for -msys-crt0= */
-+
-+#define TARGET_OPTIONS					\
-+{							\
-+  { "sys=nosys",    &nios2_sys_nosys_string,		\
-+      N_("Use stub versions of OS library calls (default)"), 0},	\
-+  { "sys-lib=",    &nios2_sys_lib_string,		\
-+      N_("Name of System Library to link against. (Converted to a -l option)"), 0},	\
-+  { "sys-crt0=",    &nios2_sys_crt0_string,		\
-+      N_("Name of the startfile. (default is a crt0 for the ISS only)"), 0},	\
-+}
-+
-+
-+/* Default target_flags if no switches specified.  */
-+#ifndef TARGET_DEFAULT
-+# define TARGET_DEFAULT (HAS_MUL_FLAG | CACHE_VOLATILE_FLAG)
-+#endif
-+
-+/* Switch  Recognition by gcc.c.  Add -G xx support */
-+#undef  SWITCH_TAKES_ARG
-+#define SWITCH_TAKES_ARG(CHAR)						\
-+  (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G')
-+
-+#define OVERRIDE_OPTIONS override_options ()
-+#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) optimization_options (LEVEL, SIZE)
-+#define CAN_DEBUG_WITHOUT_FP
-+ 
-+#define CC1_SPEC "\
-+%{G*}"
-+
-+#undef LIB_SPEC
-+#define LIB_SPEC \
-+"--start-group %{msmallc: -lsmallc} %{!msmallc: -lc} -lgcc \
-+ %{msys-lib=*: -l%*} \
-+ %{!msys-lib=*: -lc } \
-+ --end-group \
-+ %{msys-lib=: %eYou need a library name for -msys-lib=} \
-+"
-+
-+
-+#undef STARTFILE_SPEC 
-+#define STARTFILE_SPEC  \
-+"%{msys-crt0=*: %*} %{!msys-crt0=*: crt1%O%s} \
-+ %{msys-crt0=: %eYou need a C startup file for -msys-crt0=} \
-+ %{mctors-in-init: crti%O%s crtbegin%O%s} \
-+"
-+
-+#undef ENDFILE_SPEC 
-+#define ENDFILE_SPEC \
-+ "%{mctors-in-init: crtend%O%s crtn%O%s}"
-+
-+
-+/***********************
-+ * Storage Layout
-+ ***********************/
-+
-+#define DEFAULT_SIGNED_CHAR 1
-+#define BITS_BIG_ENDIAN 0
-+#define BYTES_BIG_ENDIAN 0
-+#define WORDS_BIG_ENDIAN 0
-+#define BITS_PER_UNIT 8
-+#define BITS_PER_WORD 32
-+#define UNITS_PER_WORD 4
-+#define POINTER_SIZE 32
-+#define BIGGEST_ALIGNMENT 32
-+#define STRICT_ALIGNMENT 1
-+#define FUNCTION_BOUNDARY 32
-+#define PARM_BOUNDARY 32
-+#define STACK_BOUNDARY 32
-+#define PREFERRED_STACK_BOUNDARY 32
-+#define MAX_FIXED_MODE_SIZE 64
-+
-+#define CONSTANT_ALIGNMENT(EXP, ALIGN)				\
-+  ((TREE_CODE (EXP) == STRING_CST) 				\
-+   && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
-+
-+
-+/**********************
-+ * Layout of Source Language Data Types
-+ **********************/
-+
-+#define INT_TYPE_SIZE 32
-+#define SHORT_TYPE_SIZE 16
-+#define LONG_TYPE_SIZE 32
-+#define LONG_LONG_TYPE_SIZE 64
-+#define FLOAT_TYPE_SIZE 32
-+#define DOUBLE_TYPE_SIZE 64
-+#define LONG_DOUBLE_TYPE_SIZE DOUBLE_TYPE_SIZE
-+
-+
-+/*************************
-+ * Condition Code Status
-+ ************************/
-+
-+/* comparison type */
-+/* ??? currently only CMP_SI is used */
-+enum cmp_type {
-+  CMP_SI,				/* compare four byte integers */
-+  CMP_DI,				/* compare eight byte integers */
-+  CMP_SF,				/* compare single precision floats */
-+  CMP_DF,				/* compare double precision floats */
-+  CMP_MAX				/* max comparison type */
-+};
-+
-+extern GTY(()) rtx branch_cmp[2];	/* operands for compare */
-+extern enum cmp_type branch_type;	/* what type of branch to use */
-+
-+/**********************
-+ * Register Usage
-+ **********************/
-+
-+/* ---------------------------------- *
-+ * Basic Characteristics of Registers
-+ * ---------------------------------- */
-+
-+/*
-+Register Number
-+      Register Name
-+          Alternate Name
-+                Purpose
-+0     r0  zero  always zero
-+1     r1  at    Assembler Temporary
-+2-3   r2-r3     Return Location
-+4-7   r4-r7     Register Arguments
-+8-15  r8-r15    Caller Saved Registers
-+16-22 r16-r22   Callee Saved Registers
-+23    r23 sc    Static Chain (Callee Saved)
-+                ??? Does $sc want to be caller or callee 
-+                saved. If caller, 15, else 23. 
-+24    r24       Exception Temporary
-+25    r25       Breakpoint Temporary
-+26    r26 gp    Global Pointer
-+27    r27 sp    Stack Pointer
-+28    r28 fp    Frame Pointer
-+29    r29 ea    Exception Return Address
-+30    r30 ba    Breakpoint Return Address
-+31    r31 ra    Return Address
-+
-+32    ctl0 status
-+33    ctl1 estatus STATUS saved by exception ? 	
-+34    ctl2 bstatus STATUS saved by break ? 	
-+35    ctl3 ipri    Interrupt Priority Mask ?	
-+36    ctl4 ecause  Exception Cause ? 	
-+
-+37         pc   Not an actual register	
-+
-+38    rap      Return address pointer, this does not
-+                   actually exist and will be eliminated
-+
-+39    fake_fp  Fake Frame Pointer which will always be eliminated.
-+40    fake_ap  Fake Argument Pointer which will always be eliminated.
-+
-+41             First Pseudo Register
-+
-+
-+The definitions for all the hard register numbers
-+are located in nios2.md.
-+*/
-+
-+#define FIRST_PSEUDO_REGISTER 41
-+#define NUM_ARG_REGS (LAST_ARG_REGNO - FIRST_ARG_REGNO + 1)
-+
-+
-+
-+/* also see CONDITIONAL_REGISTER_USAGE */
-+#define FIXED_REGISTERS			     \
-+    {					     \
-+/*        +0  1  2  3  4  5  6  7  8  9 */   \
-+/*   0 */  1, 1, 0, 0, 0, 0, 0, 0, 0, 0,     \
-+/*  10 */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     \
-+/*  20 */  0, 0, 0, 0, 1, 1, 1, 1, 0, 1,     \
-+/*  30 */  1, 0, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  40 */  1,                                \
-+    }
-+
-+/* call used is the same as caller saved
-+   + fixed regs + args + ret vals */
-+#define CALL_USED_REGISTERS		     \
-+    { 					     \
-+/*        +0  1  2  3  4  5  6  7  8  9 */   \
-+/*   0 */  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  10 */  1, 1, 1, 1, 1, 1, 0, 0, 0, 0,     \
-+/*  20 */  0, 0, 0, 0, 1, 1, 1, 1, 0, 1,     \
-+/*  30 */  1, 0, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  40 */  1,                                \
-+    }
-+
-+#define HARD_REGNO_NREGS(REGNO, MODE)            \
-+   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
-+    / UNITS_PER_WORD)
-+
-+/* --------------------------- *
-+ * How Values Fit in Registers
-+ * --------------------------- */
-+
-+#define HARD_REGNO_MODE_OK(REGNO, MODE) 1
-+
-+#define MODES_TIEABLE_P(MODE1, MODE2) 1
-+
-+
-+/*************************
-+ * Register Classes
-+ *************************/
-+
-+enum reg_class
-+{
-+    NO_REGS,
-+    ALL_REGS,
-+    LIM_REG_CLASSES
-+};
-+
-+#define N_REG_CLASSES (int) LIM_REG_CLASSES
-+
-+#define REG_CLASS_NAMES   \
-+    {"NO_REGS",           \
-+     "ALL_REGS"}
-+
-+#define GENERAL_REGS ALL_REGS
-+
-+#define REG_CLASS_CONTENTS   \
-+/* NO_REGS  */       {{ 0, 0},     \
-+/* ALL_REGS */        {~0,~0}}    \
-+
-+#define REGNO_REG_CLASS(REGNO) ALL_REGS
-+
-+#define BASE_REG_CLASS ALL_REGS
-+#define INDEX_REG_CLASS ALL_REGS
-+
-+/* only one reg class, 'r', is handled automatically */
-+#define REG_CLASS_FROM_LETTER(CHAR) NO_REGS
-+
-+#define REGNO_OK_FOR_BASE_P2(REGNO, STRICT) \
-+    ((STRICT) \
-+     ? (REGNO) < FIRST_PSEUDO_REGISTER \
-+     : (REGNO) < FIRST_PSEUDO_REGISTER || (reg_renumber && reg_renumber[REGNO] < FIRST_PSEUDO_REGISTER))
-+
-+#define REGNO_OK_FOR_INDEX_P2(REGNO, STRICT) \
-+    (REGNO_OK_FOR_BASE_P2 (REGNO, STRICT))
-+
-+#define REGNO_OK_FOR_BASE_P(REGNO) \
-+    (REGNO_OK_FOR_BASE_P2 (REGNO, 1))
-+
-+#define REGNO_OK_FOR_INDEX_P(REGNO) \
-+    (REGNO_OK_FOR_INDEX_P2 (REGNO, 1))
-+
-+#define REG_OK_FOR_BASE_P2(X, STRICT)                                   \
-+    (STRICT                                                             \
-+     ? REGNO_OK_FOR_BASE_P2 (REGNO (X), 1)                              \
-+     : REGNO_OK_FOR_BASE_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER)
-+
-+#define REG_OK_FOR_INDEX_P2(X, STRICT)                                  \
-+    (STRICT                                                             \
-+     ? REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1)                             \
-+     : REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER)
-+
-+#define CLASS_MAX_NREGS(CLASS, MODE)             \
-+   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
-+    / UNITS_PER_WORD)
-+
-+
-+#define SMALL_INT(X) ((unsigned HOST_WIDE_INT) ((X) + 0x8000) < 0x10000)
-+#define SMALL_INT_UNSIGNED(X) ((unsigned HOST_WIDE_INT) (X) < 0x10000)
-+#define UPPER16_INT(X) (((X) & 0xffff) == 0)
-+#define SHIFT_INT(X) ((X) >= 0 && (X) <= 31)
-+#define RDWRCTL_INT(X) ((X) >= 0 && (X) <= 31)
-+#define CUSTOM_INSN_OPCODE(X) ((X) >= 0 && (X) <= 255)
-+
-+#define CONST_OK_FOR_LETTER_P(VALUE, C)			\
-+ (							\
-+  (C) == 'I' ? SMALL_INT (VALUE) :			\
-+  (C) == 'J' ? SMALL_INT_UNSIGNED (VALUE) :		\
-+  (C) == 'K' ? UPPER16_INT (VALUE) :         		\
-+  (C) == 'L' ? SHIFT_INT (VALUE) :			\
-+  (C) == 'M' ? (VALUE) == 0 :				\
-+  (C) == 'N' ? CUSTOM_INSN_OPCODE (VALUE) :		\
-+  (C) == 'O' ? RDWRCTL_INT (VALUE) :			\
-+  0)
-+
-+#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0
-+
-+#define PREFERRED_RELOAD_CLASS(X, CLASS) \
-+    ((CLASS) == NO_REGS ? GENERAL_REGS : (CLASS))
-+
-+/* 'S' matches immediates which are in small data 
-+   and therefore can be added to gp to create a 
-+   32-bit value. */
-+#define EXTRA_CONSTRAINT(VALUE, C)		\
-+  ((C) == 'S' 					\
-+   && (GET_CODE (VALUE) == SYMBOL_REF)   	\
-+   && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (VALUE))
-+
-+
-+
-+
-+/* Say that the epilogue uses the return address register.  Note that
-+   in the case of sibcalls, the values "used by the epilogue" are
-+   considered live at the start of the called function.  */
-+#define EPILOGUE_USES(REGNO) ((REGNO) == RA_REGNO)
-+
-+
-+#define DEFAULT_MAIN_RETURN  c_expand_return (integer_zero_node)
-+
-+/**********************************
-+ * Trampolines for Nested Functions
-+ ***********************************/
-+
-+#define TRAMPOLINE_TEMPLATE(FILE) \
-+    error ("trampolines not yet implemented")
-+#define TRAMPOLINE_SIZE 20
-+#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
-+    error ("trampolines not yet implemented")
-+
-+/***************************
-+ * Stack Layout and Calling Conventions
-+ ***************************/
-+
-+/* ------------------ *
-+ * Basic Stack Layout
-+ * ------------------ */
-+
-+/* The downward variants are used by the compiler,
-+   the upward ones serve as documentation */
-+#define STACK_GROWS_DOWNWARD
-+#define FRAME_GROWS_UPWARD
-+#define ARGS_GROW_UPWARD
-+
-+#define STARTING_FRAME_OFFSET current_function_outgoing_args_size
-+#define FIRST_PARM_OFFSET(FUNDECL) 0
-+
-+/* Before the prologue, RA lives in r31.  */
-+#define INCOMING_RETURN_ADDR_RTX  gen_rtx_REG (VOIDmode, RA_REGNO)
-+
-+/* -------------------------------------- *
-+ * Registers That Address the Stack Frame
-+ * -------------------------------------- */
-+
-+#define STACK_POINTER_REGNUM SP_REGNO
-+#define STATIC_CHAIN_REGNUM SC_REGNO
-+#define PC_REGNUM PC_REGNO
-+#define DWARF_FRAME_RETURN_COLUMN RA_REGNO
-+
-+/* Base register for access to local variables of the function.  We
-+   pretend that the frame pointer is a non-existent hard register, and 
-+   then eliminate it to HARD_FRAME_POINTER_REGNUM. */
-+#define FRAME_POINTER_REGNUM FAKE_FP_REGNO
-+
-+#define HARD_FRAME_POINTER_REGNUM FP_REGNO
-+#define RETURN_ADDRESS_POINTER_REGNUM RAP_REGNO
-+/* the argumnet pointer needs to always be eliminated
-+   so it is set to a fake hard register. */
-+#define ARG_POINTER_REGNUM FAKE_AP_REGNO
-+
-+/* ----------------------------------------- *
-+ * Eliminating Frame Pointer and Arg Pointer
-+ * ----------------------------------------- */
-+
-+#define FRAME_POINTER_REQUIRED 0
-+
-+#define ELIMINABLE_REGS							\
-+{{ ARG_POINTER_REGNUM,   STACK_POINTER_REGNUM},				\
-+ { ARG_POINTER_REGNUM,   HARD_FRAME_POINTER_REGNUM},			\
-+ { RETURN_ADDRESS_POINTER_REGNUM, STACK_POINTER_REGNUM},		\
-+ { RETURN_ADDRESS_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM},		\
-+ { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM},				\
-+ { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}}
-+
-+#define CAN_ELIMINATE(FROM, TO)	1
-+
-+#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
-+	(OFFSET) = nios2_initial_elimination_offset ((FROM), (TO))
-+
-+#define MUST_SAVE_REGISTER(regno) \
-+ ((regs_ever_live[regno] && !call_used_regs[regno])			\
-+  || (regno == HARD_FRAME_POINTER_REGNUM && frame_pointer_needed)	\
-+  || (regno == RA_REGNO && regs_ever_live[RA_REGNO]))
-+
-+/* Treat LOC as a byte offset from the stack pointer and round it up
-+   to the next fully-aligned offset.  */
-+#define STACK_ALIGN(LOC)						\
-+  (((LOC) + ((PREFERRED_STACK_BOUNDARY / 8) - 1)) & ~((PREFERRED_STACK_BOUNDARY / 8) - 1))
-+
-+
-+/* ------------------------------ *
-+ * Passing Arguments in Registers
-+ * ------------------------------ */
-+
-+/* see nios2.c */
-+#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
-+  (function_arg (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) \
-+  (function_arg_partial_nregs (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) 0
-+
-+#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 0
-+
-+typedef struct nios2_args
-+{
-+    int regs_used;
-+} CUMULATIVE_ARGS;
-+
-+/* This is to initialize the above unused CUM data type */
-+#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \
-+    (init_cumulative_args (&CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS))
-+
-+#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
-+    (function_arg_advance (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_REGNO_P(REGNO) \
-+    ((REGNO) >= FIRST_ARG_REGNO && (REGNO) <= LAST_ARG_REGNO)
-+
-+#define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL)   \
-+  {								    \
-+    int pret_size = nios2_setup_incoming_varargs (&(CUM), (MODE),	    \
-+						(TYPE), (NO_RTL));  \
-+    if (pret_size)						    \
-+      (PRETEND_SIZE) = pret_size;				    \
-+  }
-+
-+/* ----------------------------- *
-+ * Generating Code for Profiling
-+ * ----------------------------- */
-+
-+#define PROFILE_BEFORE_PROLOGUE
-+
-+#define FUNCTION_PROFILER(FILE, LABELNO) \
-+  function_profiler ((FILE), (LABELNO))
-+
-+/* --------------------------------------- *
-+ * Passing Function Arguments on the Stack
-+ * --------------------------------------- */
-+
-+#define PROMOTE_PROTOTYPES 1
-+
-+#define PUSH_ARGS 0
-+#define ACCUMULATE_OUTGOING_ARGS 1
-+
-+#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACKSIZE) 0
-+
-+/* --------------------------------------- *
-+ * How Scalar Function Values Are Returned
-+ * --------------------------------------- */
-+
-+#define FUNCTION_VALUE(VALTYPE, FUNC) \
-+    gen_rtx(REG, TYPE_MODE(VALTYPE), FIRST_RETVAL_REGNO)
-+
-+#define LIBCALL_VALUE(MODE) \
-+    gen_rtx(REG, MODE, FIRST_RETVAL_REGNO)
-+
-+#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == FIRST_RETVAL_REGNO)
-+
-+/* ----------------------------- *
-+ * How Large Values Are Returned
-+ * ----------------------------- */
-+
-+
-+#define RETURN_IN_MEMORY(TYPE)	\
-+  nios2_return_in_memory (TYPE)
-+
-+
-+#define STRUCT_VALUE 0
-+
-+#define DEFAULT_PCC_STRUCT_RETURN 0
-+
-+/*******************
-+ * Addressing Modes
-+ *******************/
-+
-+
-+#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)
-+
-+#define CONSTANT_ADDRESS_P(X) (CONSTANT_P (X))
-+
-+#define MAX_REGS_PER_ADDRESS 1
-+
-+/* Go to ADDR if X is a valid address.  */
-+#ifndef REG_OK_STRICT
-+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)        \
-+    {                                                  \
-+        if (nios2_legitimate_address ((X), (MODE), 0))  \
-+            goto ADDR;                                 \
-+    }
-+#else
-+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)        \
-+    {                                                  \
-+        if (nios2_legitimate_address ((X), (MODE), 1))  \
-+            goto ADDR;                                 \
-+    }
-+#endif
-+
-+#ifndef REG_OK_STRICT
-+#define REG_OK_FOR_BASE_P(X)   REGNO_OK_FOR_BASE_P2 (REGNO (X), 0)
-+#define REG_OK_FOR_INDEX_P(X)  REGNO_OK_FOR_INDEX_P2 (REGNO (X), 0)
-+#else
-+#define REG_OK_FOR_BASE_P(X)   REGNO_OK_FOR_BASE_P2 (REGNO (X), 1)
-+#define REG_OK_FOR_INDEX_P(X)  REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1)
-+#endif
-+
-+#define LEGITIMATE_CONSTANT_P(X) 1
-+
-+/* Nios II has no mode dependent addresses.  */
-+#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-+
-+/* Set if this has a weak declaration  */
-+#define SYMBOL_FLAG_WEAK_DECL	(1 << SYMBOL_FLAG_MACH_DEP_SHIFT)
-+#define SYMBOL_REF_WEAK_DECL_P(RTX) \
-+  ((SYMBOL_REF_FLAGS (RTX) & SYMBOL_FLAG_WEAK_DECL) != 0)
-+
-+
-+/* true if a symbol is both small and not weak. In this case, gp
-+   relative access can be used */
-+#define SYMBOL_REF_IN_NIOS2_SMALL_DATA_P(RTX) \
-+   (SYMBOL_REF_SMALL_P(RTX) && !SYMBOL_REF_WEAK_DECL_P(RTX))
-+
-+/*****************
-+ * Describing Relative Costs of Operations
-+ *****************/
-+
-+#define SLOW_BYTE_ACCESS 1
-+
-+/* It is as good to call a constant function address as to call an address
-+   kept in a register.
-+   ??? Not true anymore really. Now that call cannot address full range
-+   of memory callr may need to be used */
-+
-+#define NO_FUNCTION_CSE
-+#define NO_RECURSIVE_FUNCTION_CSE
-+
-+
-+
-+/*****************************************
-+ * Defining the Output Assembler Language
-+ *****************************************/
-+
-+/* ------------------------------------------ *
-+ * The Overall Framework of an Assembler File
-+ * ------------------------------------------ */
-+
-+#define ASM_APP_ON "#APP\n"
-+#define ASM_APP_OFF "#NO_APP\n"
-+
-+#define ASM_COMMENT_START "# "
-+
-+/* ------------------------------- *
-+ * Output and Generation of Labels
-+ * ------------------------------- */
-+
-+#define GLOBAL_ASM_OP "\t.global\t"
-+
-+
-+/* -------------- *
-+ * Output of Data
-+ * -------------- */
-+
-+#define DWARF2_UNWIND_INFO 0
-+
-+
-+/* -------------------------------- *
-+ * Assembler Commands for Alignment
-+ * -------------------------------- */
-+
-+#define ASM_OUTPUT_ALIGN(FILE, LOG) \
-+  do { \
-+    fprintf ((FILE), "%s%d\n", ALIGN_ASM_OP, (LOG)); \
-+  } while (0)
-+
-+
-+/* -------------------------------- *
-+ * Output of Assembler Instructions
-+ * -------------------------------- */
-+
-+#define REGISTER_NAMES \
-+{ \
-+    "zero", \
-+    "at", \
-+    "r2", \
-+    "r3", \
-+    "r4", \
-+    "r5", \
-+    "r6", \
-+    "r7", \
-+    "r8", \
-+    "r9", \
-+    "r10", \
-+    "r11", \
-+    "r12", \
-+    "r13", \
-+    "r14", \
-+    "r15", \
-+    "r16", \
-+    "r17", \
-+    "r18", \
-+    "r19", \
-+    "r20", \
-+    "r21", \
-+    "r22", \
-+    "r23", \
-+    "r24", \
-+    "r25", \
-+    "gp", \
-+    "sp", \
-+    "fp", \
-+    "ta", \
-+    "ba", \
-+    "ra", \
-+    "status", \
-+    "estatus", \
-+    "bstatus", \
-+    "ipri", \
-+    "ecause", \
-+    "pc", \
-+    "rap", \
-+    "fake_fp", \
-+    "fake_ap", \
-+}
-+
-+#define ASM_OUTPUT_OPCODE(STREAM, PTR)\
-+   (PTR) = asm_output_opcode (STREAM, PTR)
-+
-+#define PRINT_OPERAND(STREAM, X, CODE) \
-+    nios2_print_operand (STREAM, X, CODE)
-+
-+#define PRINT_OPERAND_ADDRESS(STREAM, X) \
-+    nios2_print_operand_address (STREAM, X)
-+
-+#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
-+do { fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \
-+     fprintf (FILE, ".L%u\n", (unsigned) (VALUE));               \
-+   } while (0)
-+
-+
-+/* ------------ *
-+ * Label Output
-+ * ------------ */
-+
-+
-+/* ---------------------------------------------------- *
-+ * Dividing the Output into Sections (Texts, Data, ...)
-+ * ---------------------------------------------------- */
-+
-+/* Output before read-only data.  */
-+#define TEXT_SECTION_ASM_OP ("\t.section\t.text")
-+
-+/* Output before writable data.  */
-+#define DATA_SECTION_ASM_OP ("\t.section\t.data")
-+
-+
-+/* Default the definition of "small data" to 8 bytes. */
-+/* ??? How come I can't use HOST_WIDE_INT here? */
-+extern unsigned long nios2_section_threshold;
-+#define NIOS2_DEFAULT_GVALUE 8
-+
-+
-+
-+/* This says how to output assembler code to declare an
-+   uninitialized external linkage data object.  Under SVR4,
-+   the linker seems to want the alignment of data objects
-+   to depend on their types.  We do exactly that here.  */
-+
-+#undef COMMON_ASM_OP
-+#define COMMON_ASM_OP	"\t.comm\t"
-+
-+#undef  ASM_OUTPUT_ALIGNED_COMMON
-+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)		\
-+do 									\
-+{									\
-+  if ((SIZE) <= nios2_section_threshold)				\
-+    {									\
-+      named_section (0, ".sbss", 0);					\
-+      (*targetm.asm_out.globalize_label) (FILE, NAME);			\
-+      ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
-+      if (!flag_inhibit_size_directive)					\
-+	ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE);			\
-+      ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT));	\
-+      ASM_OUTPUT_LABEL(FILE, NAME);					\
-+      ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1);			\
-+    }									\
-+  else									\
-+    {									\
-+      fprintf ((FILE), "%s", COMMON_ASM_OP);				\
-+      assemble_name ((FILE), (NAME));					\
-+      fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\
-+    }									\
-+}									\
-+while (0)
-+
-+
-+/* This says how to output assembler code to declare an
-+   uninitialized internal linkage data object.  Under SVR4,
-+   the linker seems to want the alignment of data objects
-+   to depend on their types.  We do exactly that here.  */
-+
-+#undef  ASM_OUTPUT_ALIGNED_LOCAL
-+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)		\
-+do {									\
-+  if ((SIZE) <= nios2_section_threshold)				\
-+    named_section (0, ".sbss", 0);					\
-+  else									\
-+    named_section (0, ".bss", 0);					\
-+  ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
-+  if (!flag_inhibit_size_directive)					\
-+    ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE);			\
-+  ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT));	\
-+  ASM_OUTPUT_LABEL(FILE, NAME);						\
-+  ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1);				\
-+} while (0)
-+
-+
-+
-+/***************************
-+ * Miscellaneous Parameters
-+ ***************************/
-+
-+#define MOVE_MAX 4
-+
-+#define Pmode SImode
-+#define FUNCTION_MODE QImode
-+
-+#define CASE_VECTOR_MODE Pmode
-+
-+#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
-+
-+#define LOAD_EXTEND_OP(MODE) (ZERO_EXTEND)
-+
-+#define WORD_REGISTER_OPERATIONS
---- gcc-3.4.3/gcc/config/nios2/nios2.md
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.md
-@@ -0,0 +1,2078 @@
-+;; Machine Description for Altera NIOS 2G NIOS2 version.
-+;;    Copyright (C) 2003 Altera 
-+;;    Contributed by Jonah Graham (jgraham@altera.com).
-+;; 
-+;; This file is part of GNU CC.
-+;; 
-+;; GNU CC 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.
-+;; 
-+;; GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+;; the Free Software Foundation, 59 Temple Place - Suite 330,
-+;; Boston, MA 02111-1307, USA.  */
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* constants
-+;*
-+;*****************************************************************************
-+(define_constants [
-+  (GP_REGNO 26)
-+  (SP_REGNO 27)
-+  (FP_REGNO 28)
-+  (RA_REGNO 31)
-+  (RAP_REGNO 38)
-+  (FIRST_RETVAL_REGNO 2)
-+  (LAST_RETVAL_REGNO 3)
-+  (FIRST_ARG_REGNO 4)
-+  (LAST_ARG_REGNO 7)
-+  (SC_REGNO 23)
-+  (PC_REGNO 37)
-+  (FAKE_FP_REGNO 39)
-+  (FAKE_AP_REGNO 40)
-+
-+
-+  (UNSPEC_BLOCKAGE 0)
-+  (UNSPEC_LDBIO 1)
-+  (UNSPEC_LDBUIO 2)
-+  (UNSPEC_LDHIO 3)
-+  (UNSPEC_LDHUIO 4)
-+  (UNSPEC_LDWIO 5)
-+  (UNSPEC_STBIO 6)
-+  (UNSPEC_STHIO 7)
-+  (UNSPEC_STWIO 8)
-+  (UNSPEC_SYNC 9)
-+  (UNSPEC_WRCTL 10)
-+  (UNSPEC_RDCTL 11)
-+  
-+])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* instruction scheduler
-+;*
-+;*****************************************************************************
-+
-+; No schedule info is currently available, using an assumption that no
-+; instruction can use the results of the previous instruction without
-+; incuring a stall.
-+
-+; length of an instruction (in bytes)
-+(define_attr "length" "" (const_int 4))
-+(define_attr "type" "unknown,complex,control,alu,cond_alu,st,ld,shift,mul,div,custom" (const_string "complex"))
-+
-+(define_asm_attributes
-+ [(set_attr "length" "4")
-+  (set_attr "type" "complex")])
-+
-+(define_automaton "nios2")
-+(automata_option "v")
-+;(automata_option "no-minimization")
-+(automata_option "ndfa")
-+
-+; The nios2 pipeline is fairly straightforward for the fast model.
-+; Every alu operation is pipelined so that an instruction can
-+; be issued every cycle. However, there are still potential
-+; stalls which this description tries to deal with.
-+
-+(define_cpu_unit "cpu" "nios2")
-+
-+(define_insn_reservation "complex" 1
-+  (eq_attr "type" "complex")
-+  "cpu")
-+
-+(define_insn_reservation "control" 1
-+  (eq_attr "type" "control")
-+  "cpu")
-+
-+(define_insn_reservation "alu" 1
-+  (eq_attr "type" "alu")
-+  "cpu")
-+
-+(define_insn_reservation "cond_alu" 1
-+  (eq_attr "type" "cond_alu")
-+  "cpu")
-+
-+(define_insn_reservation "st" 1
-+  (eq_attr "type" "st")
-+  "cpu")
-+  
-+(define_insn_reservation "custom" 1
-+  (eq_attr "type" "custom")
-+  "cpu")
-+
-+; shifts, muls and lds have three cycle latency
-+(define_insn_reservation "ld" 3
-+  (eq_attr "type" "ld")
-+  "cpu")
-+
-+(define_insn_reservation "shift" 3
-+  (eq_attr "type" "shift")
-+  "cpu")
-+
-+(define_insn_reservation "mul" 3
-+  (eq_attr "type" "mul")
-+  "cpu")
-+
-+(define_insn_reservation "div" 1
-+  (eq_attr "type" "div")
-+  "cpu")
-+
-+
-+;*****************************************************************************
-+;*
-+;* MOV Instructions
-+;*
-+;*****************************************************************************
-+
-+(define_expand "movqi"
-+  [(set (match_operand:QI 0 "nonimmediate_operand" "")
-+        (match_operand:QI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, QImode))
-+    DONE;
-+})
-+
-+(define_insn "movqi_internal"
-+  [(set (match_operand:QI 0 "nonimmediate_operand" "=m, r,r, r")
-+        (match_operand:QI 1 "general_operand"       "rM,m,rM,I"))]
-+  "(register_operand (operands[0], QImode)
-+    || register_operand (operands[1], QImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    stb%o0\\t%z1, %0
-+    ldbu%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1"
-+  [(set_attr "type" "st,ld,alu,alu")])
-+
-+(define_insn "ldbio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDBIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldbio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "ldbuio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDBUIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldbuio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "stbio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STBIO)]
-+  ""
-+  "stbio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+
-+(define_expand "movhi"
-+  [(set (match_operand:HI 0 "nonimmediate_operand" "")
-+        (match_operand:HI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, HImode))
-+    DONE;
-+})
-+
-+(define_insn "movhi_internal"
-+  [(set (match_operand:HI 0 "nonimmediate_operand" "=m, r,r, r,r")
-+        (match_operand:HI 1 "general_operand"       "rM,m,rM,I,J"))]
-+  "(register_operand (operands[0], HImode)
-+    || register_operand (operands[1], HImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    sth%o0\\t%z1, %0
-+    ldhu%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1
-+    movui\\t%0, %1"
-+  [(set_attr "type" "st,ld,alu,alu,alu")])
-+
-+(define_insn "ldhio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDHIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldhio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "ldhuio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDHUIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldhuio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "sthio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STHIO)]
-+  ""
-+  "sthio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+(define_expand "movsi"
-+  [(set (match_operand:SI 0 "nonimmediate_operand" "")
-+        (match_operand:SI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, SImode))
-+    DONE;
-+})
-+
-+(define_insn "movsi_internal"
-+  [(set (match_operand:SI 0 "nonimmediate_operand" "=m, r,r, r,r,r,r")
-+        (match_operand:SI 1 "general_operand"       "rM,m,rM,I,J,S,i"))]
-+  "(register_operand (operands[0], SImode)
-+    || register_operand (operands[1], SImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    stw%o0\\t%z1, %0
-+    ldw%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1
-+    movui\\t%0, %1
-+    addi\\t%0, gp, %%gprel(%1)
-+    movhi\\t%0, %H1\;addi\\t%0, %0, %L1"
-+  [(set_attr "type" "st,ld,alu,alu,alu,alu,alu")])
-+
-+(define_insn "ldwio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDWIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldwio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "stwio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STWIO)]
-+  ""
-+  "stwio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* zero extension
-+;*
-+;*****************************************************************************
-+
-+
-+(define_insn "zero_extendhisi2"
-+  [(set (match_operand:SI 0 "register_operand" "=r,r")
-+	(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xffff
-+    ldhu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+(define_insn "zero_extendqihi2"
-+  [(set (match_operand:HI 0 "register_operand" "=r,r")
-+	(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xff
-+    ldbu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+(define_insn "zero_extendqisi2"
-+  [(set (match_operand:SI 0 "register_operand" "=r,r")
-+	(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xff
-+    ldbu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* sign extension
-+;*
-+;*****************************************************************************
-+
-+(define_expand "extendhisi2"
-+  [(set (match_operand:SI 0 "register_operand" "")
-+	(sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (16);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (operands[0], temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendhisi2_internal"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(sign_extend:SI (match_operand:HI 1 "memory_operand" "m")))]
-+  ""
-+  "ldh%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+(define_expand "extendqihi2"
-+  [(set (match_operand:HI 0 "register_operand" "")
-+	(sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op0   = gen_lowpart (SImode, operands[0]);
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (24);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (op0, temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendqihi2_internal"
-+  [(set (match_operand:HI 0 "register_operand" "=r")
-+	(sign_extend:HI (match_operand:QI 1 "memory_operand" "m")))]
-+  ""
-+  "ldb%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+
-+(define_expand "extendqisi2"
-+  [(set (match_operand:SI 0 "register_operand" "")
-+	(sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (24);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (operands[0], temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendqisi2_insn"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(sign_extend:SI (match_operand:QI 1 "memory_operand" "m")))]
-+  ""
-+  "ldb%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Arithmetic Operations
-+;*
-+;*****************************************************************************
-+
-+(define_insn "addsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r,r")
-+        (plus:SI (match_operand:SI 1 "register_operand" "%r,r")
-+                 (match_operand:SI 2 "arith_operand"     "r,I")))]
-+  ""
-+  "add%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "subsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r")
-+        (minus:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+                  (match_operand:SI 2 "register_operand"  "r")))]
-+  ""
-+  "sub\\t%0, %z1, %2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "mulsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r,r")
-+        (mult:SI (match_operand:SI 1 "register_operand"    "r,r")
-+                 (match_operand:SI 2 "arith_operand"       "r,I")))]
-+  "TARGET_HAS_MUL"
-+  "mul%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "mul")])
-+
-+(define_expand "divsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (div:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  ""
-+{
-+  if (!TARGET_HAS_DIV)
-+    {
-+      if (!TARGET_FAST_SW_DIV)
-+	FAIL;
-+      else
-+        {
-+	  if (nios2_emit_expensive_div (operands, SImode))
-+	    DONE;
-+	}
-+    }
-+})
-+
-+(define_insn "divsi3_insn"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (div:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  "TARGET_HAS_DIV"
-+  "div\\t%0, %1, %2"
-+  [(set_attr "type" "div")])
-+
-+(define_insn "udivsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (udiv:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  "TARGET_HAS_DIV"
-+  "divu\\t%0, %1, %2"
-+  [(set_attr "type" "div")])
-+
-+(define_insn "smulsi3_highpart"
-+  [(set (match_operand:SI 0 "register_operand"                            "=r")
-+	(truncate:SI
-+	 (lshiftrt:DI
-+	  (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand"  "r"))
-+		   (sign_extend:DI (match_operand:SI 2 "register_operand"  "r")))
-+	  (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "mulxss\\t%0, %1, %2"
-+  [(set_attr "type" "mul")])
-+
-+(define_insn "umulsi3_highpart"
-+  [(set (match_operand:SI 0 "register_operand"                            "=r")
-+	(truncate:SI
-+	 (lshiftrt:DI
-+	  (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand"  "r"))
-+		   (zero_extend:DI (match_operand:SI 2 "register_operand"  "r")))
-+	  (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "mulxuu\\t%0, %1, %2"
-+  [(set_attr "type" "mul")])
-+
-+
-+(define_expand "mulsidi3"
-+    [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0)
-+	  (mult:SI (match_operand:SI 1 "register_operand" "")
-+		   (match_operand:SI 2 "register_operand" "")))
-+     (set (subreg:SI (match_dup 0) 4)
-+	  (truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
-+					     (sign_extend:DI (match_dup 2)))
-+				    (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "")
-+
-+(define_expand "umulsidi3"
-+    [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0)
-+	  (mult:SI (match_operand:SI 1 "register_operand" "")
-+		   (match_operand:SI 2 "register_operand" "")))
-+     (set (subreg:SI (match_dup 0) 4)
-+	  (truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (match_dup 1))
-+					     (zero_extend:DI (match_dup 2)))
-+				    (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "")
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Negate and ones complement
-+;*
-+;*****************************************************************************
-+
-+(define_insn "negsi2"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(neg:SI (match_operand:SI 1 "register_operand" "r")))]
-+  ""
-+{
-+  operands[2] = const0_rtx;
-+  return "sub\\t%0, %z2, %1";
-+}
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "one_cmplsi2"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(not:SI (match_operand:SI 1 "register_operand" "r")))]
-+  ""
-+{
-+  operands[2] = const0_rtx;
-+  return "nor\\t%0, %z2, %1";
-+}
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+; Logical Operantions
-+
-+(define_insn "andsi3"
-+  [(set (match_operand:SI 0 "register_operand"         "=r, r,r")
-+        (and:SI (match_operand:SI 1 "register_operand" "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"   "rM,J,K")))]
-+  ""
-+  "@
-+    and\\t%0, %1, %z2
-+    and%i2\\t%0, %1, %2
-+    andh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "iorsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r, r,r")
-+        (ior:SI (match_operand:SI 1 "register_operand"  "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"    "rM,J,K")))]
-+  ""
-+  "@
-+    or\\t%0, %1, %z2
-+    or%i2\\t%0, %1, %2
-+    orh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "*norsi3"
-+  [(set (match_operand:SI 0 "register_operand"                  "=r")
-+        (and:SI (not:SI (match_operand:SI 1 "register_operand"  "%r"))
-+                (not:SI (match_operand:SI 2 "reg_or_0_operand"   "rM"))))]
-+  ""
-+  "nor\\t%0, %1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "xorsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r, r,r")
-+        (xor:SI (match_operand:SI 1 "register_operand"  "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"    "rM,J,K")))]
-+  ""
-+  "@
-+    xor\\t%0, %1, %z2
-+    xor%i2\\t%0, %1, %2
-+    xorh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Shifts
-+;*
-+;*****************************************************************************
-+
-+(define_insn "ashlsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r,r")
-+	(ashift:SI (match_operand:SI 1 "register_operand" "r,r")
-+		   (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "sll%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "ashrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(ashiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "sra%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "lshrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(lshiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "srl%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "rotlsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r,r")
-+	(rotate:SI (match_operand:SI 1 "register_operand" "r,r")
-+		   (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "rol%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "rotrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(rotatert:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "register_operand" "r,r")))]
-+  ""
-+  "ror\\t%0, %1, %2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "*shift_mul_constants"
-+  [(set (match_operand:SI 0 "register_operand"                     "=r")
-+	(ashift:SI (mult:SI (match_operand:SI 1 "register_operand"  "r")
-+		            (match_operand:SI 2 "const_int_operand" "I"))
-+		   (match_operand:SI 3          "const_int_operand" "I")))]
-+  "TARGET_HAS_MUL && SMALL_INT (INTVAL (operands[2]) << INTVAL (operands[3]))"
-+{
-+  HOST_WIDE_INT mul = INTVAL (operands[2]) << INTVAL (operands[3]);
-+  rtx ops[3];
-+  
-+  ops[0] = operands[0];
-+  ops[1] = operands[1];
-+  ops[2] = GEN_INT (mul);
-+  
-+  output_asm_insn ("muli\t%0, %1, %2", ops);
-+  return "";
-+}
-+  [(set_attr "type" "mul")])
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Prologue, Epilogue and Return
-+;*
-+;*****************************************************************************
-+
-+(define_expand "prologue"
-+  [(const_int 1)]
-+  ""
-+{
-+  expand_prologue ();
-+  DONE;
-+})
-+
-+(define_expand "epilogue"
-+  [(return)]
-+  ""
-+{
-+  expand_epilogue (false);
-+  DONE;
-+})
-+
-+(define_expand "sibcall_epilogue"
-+  [(return)]
-+  ""
-+{
-+  expand_epilogue (true);
-+  DONE;
-+})
-+
-+(define_insn "return"
-+  [(return)]
-+  "reload_completed && nios2_can_use_return_insn ()"
-+  "ret\\t"
-+)
-+
-+(define_insn "return_from_epilogue"
-+  [(use (match_operand 0 "pmode_register_operand" ""))
-+   (return)]
-+  "reload_completed"
-+  "ret\\t"
-+)
-+
-+;; Block any insns from being moved before this point, since the
-+;; profiling call to mcount can use various registers that aren't
-+;; saved or used to pass arguments.
-+
-+(define_insn "blockage"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)]
-+  ""
-+  ""
-+  [(set_attr "type" "unknown")
-+   (set_attr "length" "0")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Jumps and Calls
-+;*
-+;*****************************************************************************
-+
-+(define_insn "indirect_jump"
-+  [(set (pc) (match_operand:SI 0 "register_operand" "r"))]
-+  ""
-+  "jmp\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "jump"
-+  [(set (pc)
-+        (label_ref (match_operand 0 "" "")))]
-+  ""
-+  "br\\t%0"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_insn "indirect_call"
-+  [(call (mem:QI (match_operand:SI 0 "register_operand" "r"))
-+         (match_operand 1 "" ""))
-+   (clobber (reg:SI RA_REGNO))]
-+  ""
-+  "callr\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "indirect_call_value"
-+  [(set (match_operand 0 "" "")
-+        (call (mem:QI (match_operand:SI 1 "register_operand" "r"))
-+              (match_operand 2 "" "")))
-+   (clobber (reg:SI RA_REGNO))]
-+  ""
-+  "callr\\t%1"
-+)
-+
-+(define_expand "call"
-+  [(parallel [(call (match_operand 0 "" "")
-+                    (match_operand 1 "" ""))
-+              (clobber (reg:SI RA_REGNO))])]
-+  ""
-+  "")
-+
-+(define_expand "call_value"
-+  [(parallel [(set (match_operand 0 "" "")
-+                   (call (match_operand 1 "" "")
-+                         (match_operand 2 "" "")))
-+              (clobber (reg:SI RA_REGNO))])]
-+  ""
-+  "")
-+
-+(define_insn "*call"
-+  [(call (mem:QI (match_operand:SI 0 "immediate_operand" "i"))
-+         (match_operand 1 "" ""))
-+   (clobber (match_operand:SI 2 "register_operand" "=r"))]
-+  ""
-+  "call\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "*call_value"
-+  [(set (match_operand 0 "" "")
-+        (call (mem:QI (match_operand:SI 1 "immediate_operand" "i"))
-+              (match_operand 2 "" "")))
-+   (clobber (match_operand:SI 3 "register_operand" "=r"))]
-+  ""
-+  "call\\t%1"
-+  [(set_attr "type" "control")])
-+
-+(define_expand "sibcall"
-+  [(parallel [(call (match_operand 0 "" "")
-+		    (match_operand 1 "" ""))
-+	      (return)
-+	      (use (match_operand 2 "" ""))])]
-+  ""
-+  {
-+    XEXP (operands[0], 0) = copy_to_mode_reg (SImode, XEXP (operands[0], 0));
-+
-+    if (operands[2] == NULL_RTX)
-+      operands[2] = const0_rtx;
-+  }
-+)
-+
-+(define_expand "sibcall_value"
-+  [(parallel [(set (match_operand 0 "" "")
-+		   (call (match_operand 1 "" "")
-+			 (match_operand 2 "" "")))
-+	      (return)
-+	      (use (match_operand 3 "" ""))])]
-+  ""
-+  {
-+    XEXP (operands[1], 0) = copy_to_mode_reg (SImode, XEXP (operands[1], 0));
-+
-+    if (operands[3] == NULL_RTX)
-+      operands[3] = const0_rtx;
-+  }
-+)
-+
-+(define_insn "sibcall_insn"
-+ [(call (mem:QI (match_operand:SI 0 "register_operand" "r"))
-+	(match_operand 1 "" ""))
-+  (return)
-+  (use (match_operand 2 "" ""))]
-+  ""
-+  "jmp\\t%0"
-+)
-+
-+(define_insn "sibcall_value_insn"
-+ [(set (match_operand 0 "register_operand" "")
-+       (call (mem:QI (match_operand:SI 1 "register_operand" "r"))
-+	     (match_operand 2 "" "")))
-+  (return)
-+  (use (match_operand 3 "" ""))]
-+  ""
-+  "jmp\\t%1"
-+)
-+
-+
-+
-+
-+(define_expand "tablejump"
-+  [(parallel [(set (pc) (match_operand 0 "register_operand" "r"))
-+              (use (label_ref (match_operand 1 "" "")))])]
-+  ""
-+  ""
-+)
-+
-+(define_insn "*tablejump"
-+  [(set (pc)
-+	(match_operand:SI 0 "register_operand" "r"))
-+   (use (label_ref (match_operand 1 "" "")))]
-+  ""
-+  "jmp\\t%0"
-+  [(set_attr "type" "control")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Comparisons
-+;*
-+;*****************************************************************************
-+;; Flow here is rather complex (based on MIPS):
-+;;
-+;;  1)	The cmp{si,di,sf,df} routine is called.  It deposits the
-+;;	arguments into the branch_cmp array, and the type into
-+;;	branch_type.  No RTL is generated.
-+;;
-+;;  2)	The appropriate branch define_expand is called, which then
-+;;	creates the appropriate RTL for the comparison and branch.
-+;;	Different CC modes are used, based on what type of branch is
-+;;	done, so that we can constrain things appropriately.  There
-+;;	are assumptions in the rest of GCC that break if we fold the
-+;;	operands into the branchs for integer operations, and use cc0
-+;;	for floating point, so we use the fp status register instead.
-+;;	If needed, an appropriate temporary is created to hold the
-+;;	of the integer compare.
-+
-+(define_expand "cmpsi"
-+  [(set (cc0)
-+	(compare:CC (match_operand:SI 0 "register_operand" "")
-+		    (match_operand:SI 1 "arith_operand" "")))]
-+  ""
-+{
-+  branch_cmp[0] = operands[0];
-+  branch_cmp[1] = operands[1];
-+  branch_type = CMP_SI;
-+  DONE;
-+})
-+
-+(define_expand "tstsi"
-+  [(set (cc0)
-+	(match_operand:SI 0 "register_operand" ""))]
-+  ""
-+{
-+  branch_cmp[0] = operands[0];
-+  branch_cmp[1] = const0_rtx;
-+  branch_type = CMP_SI;
-+  DONE;
-+})
-+
-+
-+;*****************************************************************************
-+;*
-+;* setting a register from a comparison
-+;*
-+;*****************************************************************************
-+
-+(define_expand "seq"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(eq:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (EQ, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*seq"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(eq:SI (match_operand:SI 1 "reg_or_0_operand" "%rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpeq%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sne"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ne:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (NE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sne"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ne:SI (match_operand:SI 1 "reg_or_0_operand" "%rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpne%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgt"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(gt:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GT, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgt"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(gt:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmplt\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sge"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ge:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sge"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ge:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpge%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_expand "sle"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(le:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sle"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(le:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpge\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "slt"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(lt:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LT, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*slt"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(lt:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmplt%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgtu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(gtu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GTU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgtu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(gtu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpltu\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgeu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(geu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GEU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgeu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(geu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "uns_arith_operand"     "rJ")))]
-+  ""
-+  "cmpgeu%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_expand "sleu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(leu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LEU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sleu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(leu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpgeu\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sltu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ltu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LTU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sltu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ltu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "uns_arith_operand"     "rJ")))]
-+  ""
-+  "cmpltu%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* branches
-+;*
-+;*****************************************************************************
-+
-+(define_insn "*cbranch"
-+  [(set (pc)
-+	(if_then_else
-+         (match_operator:SI 0 "comparison_operator"
-+			    [(match_operand:SI 2 "reg_or_0_operand" "rM")
-+			     (match_operand:SI 3 "reg_or_0_operand" "rM")])
-+        (label_ref (match_operand 1 "" ""))
-+        (pc)))]
-+  ""
-+  "b%0\\t%z2, %z3, %l1"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_expand "beq"
-+  [(set (pc)
-+	(if_then_else (eq:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (EQ, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bne"
-+  [(set (pc)
-+	(if_then_else (ne:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (NE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bgt"
-+  [(set (pc)
-+	(if_then_else (gt:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bge"
-+  [(set (pc)
-+	(if_then_else (ge:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "ble"
-+  [(set (pc)
-+	(if_then_else (le:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "blt"
-+  [(set (pc)
-+	(if_then_else (lt:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bgtu"
-+  [(set (pc)
-+	(if_then_else (gtu:CC (cc0)
-+		 	      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bgeu"
-+  [(set (pc)
-+	(if_then_else (geu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bleu"
-+  [(set (pc)
-+	(if_then_else (leu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bltu"
-+  [(set (pc)
-+	(if_then_else (ltu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+;*****************************************************************************
-+;*
-+;* String and Block Operations
-+;*
-+;*****************************************************************************
-+
-+; ??? This is all really a hack to get Dhrystone to work as fast as possible
-+;     things to be fixed:
-+;        * let the compiler core handle all of this, for that to work the extra
-+;          aliasing needs to be addressed.
-+;        * we use three temporary registers for loading and storing to ensure no
-+;          ld use stalls, this is excessive, because after the first ld/st only
-+;          two are needed. Only two would be needed all the way through if 
-+;          we could schedule with other code. Consider:
-+;           1  ld $1, 0($src)
-+;           2  ld $2, 4($src)
-+;           3  ld $3, 8($src)
-+;           4  st $1, 0($dest)
-+;           5  ld $1, 12($src)
-+;           6  st $2, 4($src)
-+;           7  etc.
-+;          The first store has to wait until 4. If it does not there will be one
-+;          cycle of stalling. However, if any other instruction could be placed
-+;          between 1 and 4, $3 would not be needed.
-+;        * In small we probably don't want to ever do this ourself because there
-+;          is no ld use stall.
-+
-+(define_expand "movstrsi"
-+  [(parallel [(set (match_operand:BLK 0 "general_operand"  "")
-+		   (match_operand:BLK 1 "general_operand"  ""))
-+	      (use (match_operand:SI 2 "const_int_operand" ""))
-+	      (use (match_operand:SI 3 "const_int_operand" ""))
-+	      (clobber (match_scratch:SI 4                "=&r"))
-+	      (clobber (match_scratch:SI 5                "=&r"))
-+	      (clobber (match_scratch:SI 6                "=&r"))])]
-+  "TARGET_INLINE_MEMCPY"
-+{
-+  rtx ld_addr_reg, st_addr_reg;
-+
-+  /* If the predicate for op2 fails in expr.c:emit_block_move_via_movstr 
-+     it trys to copy to a register, but does not re-try the predicate.
-+     ??? Intead of fixing expr.c, I fix it here. */
-+  if (!const_int_operand (operands[2], SImode))
-+    FAIL;
-+
-+  /* ??? there are some magic numbers which need to be sorted out here.
-+         the basis for them is not increasing code size hugely or going
-+         out of range of offset addressing */
-+  if (INTVAL (operands[3]) < 4)
-+    FAIL;
-+  if (!optimize
-+      || (optimize_size && INTVAL (operands[2]) > 12)
-+      || (optimize < 3 && INTVAL (operands[2]) > 100)
-+      || INTVAL (operands[2]) > 200)
-+    FAIL;
-+
-+  st_addr_reg
-+    = replace_equiv_address (operands[0],
-+			     copy_to_mode_reg (Pmode, XEXP (operands[0], 0)));
-+  ld_addr_reg
-+    = replace_equiv_address (operands[1],
-+			     copy_to_mode_reg (Pmode, XEXP (operands[1], 0)));
-+  emit_insn (gen_movstrsi_internal (st_addr_reg, ld_addr_reg,
-+				    operands[2], operands[3]));
-+
-+  DONE;
-+})
-+
-+
-+(define_insn "movstrsi_internal"
-+  [(set (match_operand:BLK 0 "memory_operand"   "=o")
-+	(match_operand:BLK 1 "memory_operand"    "o"))
-+   (use (match_operand:SI 2 "const_int_operand"  "i"))
-+   (use (match_operand:SI 3 "const_int_operand"  "i"))
-+   (clobber (match_scratch:SI 4                "=&r"))
-+   (clobber (match_scratch:SI 5                "=&r"))
-+   (clobber (match_scratch:SI 6                "=&r"))]
-+  "TARGET_INLINE_MEMCPY"
-+{
-+  int ld_offset = INTVAL (operands[2]);
-+  int ld_len = INTVAL (operands[2]);
-+  int ld_reg = 0;
-+  rtx ld_addr_reg = XEXP (operands[1], 0);
-+  int st_offset = INTVAL (operands[2]);
-+  int st_len = INTVAL (operands[2]);
-+  int st_reg = 0;
-+  rtx st_addr_reg = XEXP (operands[0], 0);
-+  int delay_count = 0;
-+  
-+  /* ops[0] is the address used by the insn
-+     ops[1] is the register being loaded or stored */
-+  rtx ops[2];
-+  
-+  if (INTVAL (operands[3]) < 4)
-+    abort ();
-+  
-+  while (ld_offset >= 4)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, SImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldw\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 4;
-+      delay_count++;
-+    }
-+  
-+  if (ld_offset >= 2)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, HImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldh\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 2;
-+      delay_count++;
-+    }
-+  
-+  if (ld_offset >= 1)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, QImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldb\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 1;
-+      delay_count++;
-+    }
-+
-+    while (st_offset >= 4)
-+      {
-+	ops[0] = gen_rtx (MEM, SImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("stw\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 4;
-+      }
-+  
-+    while (st_offset >= 2)
-+      {
-+	ops[0] = gen_rtx (MEM, HImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("sth\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 2;
-+      }
-+  
-+    while (st_offset >= 1)
-+      {
-+	ops[0] = gen_rtx (MEM, QImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("stb\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 1;
-+      }
-+  
-+  return "";
-+}
-+; ??? lengths are not being used yet, but I will probably forget
-+; to update this once I am using lengths, so set it to something
-+; definetely big enough to cover it. 400 allows for 200 bytes
-+; of motion.
-+  [(set_attr "length" "400")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Custom instructions
-+;*
-+;*****************************************************************************
-+
-+(define_constants [
-+  (CUSTOM_N 100)
-+  (CUSTOM_NI 101)
-+  (CUSTOM_NF 102)
-+  (CUSTOM_NP 103)
-+  (CUSTOM_NII 104)
-+  (CUSTOM_NIF 105)
-+  (CUSTOM_NIP 106)
-+  (CUSTOM_NFI 107)
-+  (CUSTOM_NFF 108)
-+  (CUSTOM_NFP 109)
-+  (CUSTOM_NPI 110)
-+  (CUSTOM_NPF 111)
-+  (CUSTOM_NPP 112)
-+  (CUSTOM_IN 113)
-+  (CUSTOM_INI 114)
-+  (CUSTOM_INF 115)
-+  (CUSTOM_INP 116)
-+  (CUSTOM_INII 117)
-+  (CUSTOM_INIF 118)
-+  (CUSTOM_INIP 119)
-+  (CUSTOM_INFI 120)
-+  (CUSTOM_INFF 121)
-+  (CUSTOM_INFP 122)
-+  (CUSTOM_INPI 123)
-+  (CUSTOM_INPF 124)
-+  (CUSTOM_INPP 125)
-+  (CUSTOM_FN 126)
-+  (CUSTOM_FNI 127)
-+  (CUSTOM_FNF 128)
-+  (CUSTOM_FNP 129)
-+  (CUSTOM_FNII 130)
-+  (CUSTOM_FNIF 131)
-+  (CUSTOM_FNIP 132)
-+  (CUSTOM_FNFI 133)
-+  (CUSTOM_FNFF 134)
-+  (CUSTOM_FNFP 135)
-+  (CUSTOM_FNPI 136)
-+  (CUSTOM_FNPF 137)
-+  (CUSTOM_FNPP 138)
-+  (CUSTOM_PN 139)
-+  (CUSTOM_PNI 140)
-+  (CUSTOM_PNF 141)
-+  (CUSTOM_PNP 142)
-+  (CUSTOM_PNII 143)
-+  (CUSTOM_PNIF 144)
-+  (CUSTOM_PNIP 145)
-+  (CUSTOM_PNFI 146)
-+  (CUSTOM_PNFF 147)
-+  (CUSTOM_PNFP 148)
-+  (CUSTOM_PNPI 149)
-+  (CUSTOM_PNPF 150)
-+  (CUSTOM_PNPP 151)
-+])
-+
-+
-+(define_insn "custom_n"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")] CUSTOM_N)]
-+  ""
-+  "custom\\t%0, zero, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_ni"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")] CUSTOM_NI)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nf"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")] CUSTOM_NF)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_np"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")] CUSTOM_NP)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nii"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NII)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nif"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NIF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nip"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NIP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nfi"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NFI)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nff"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NFF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nfp"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NFP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npi"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NPI)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npf"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NPF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npp"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NPP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+(define_insn "custom_in"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_IN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_ini"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_INI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_INF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_INP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inii"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inif"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inip"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_infi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inff"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_infp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+
-+
-+(define_insn "custom_fn"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_FN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fni"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_FNI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnf"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_FNF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_FNP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnii"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnif"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnip"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnfi"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnff"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnfp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpi"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpf"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+(define_insn "custom_pn"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_PN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pni"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_PNI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_PNF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_PNP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnii"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnif"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnip"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnfi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnff"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnfp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Misc
-+;*
-+;*****************************************************************************
-+
-+(define_insn "nop"
-+  [(const_int 0)]
-+  ""
-+  "nop\\t"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "sync"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_SYNC)]
-+  ""
-+  "sync\\t"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_insn "rdctl"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(match_operand:SI 1 "rdwrctl_operand" "O")] UNSPEC_RDCTL))]
-+  ""
-+  "rdctl\\t%0, ctl%1"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "wrctl"
-+  [(unspec_volatile:SI [(match_operand:SI 0 "rdwrctl_operand"  "O")
-+                        (match_operand:SI 1 "register_operand" "r")] UNSPEC_WRCTL)]
-+  ""
-+  "wrctl\\tctl%0, %1"
-+  [(set_attr "type" "control")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Peepholes
-+;*
-+;*****************************************************************************
-+
-+
---- gcc-3.4.3/gcc/config/nios2/t-nios2
-+++ gcc-3.4.3-nios2/gcc/config/nios2/t-nios2
-@@ -0,0 +1,123 @@
-+##
-+## Compiler flags to use when compiling libgcc2.c.
-+##
-+## LIB2FUNCS_EXTRA
-+## A list of source file names to be compiled or assembled and inserted into libgcc.a.
-+
-+LIB2FUNCS_EXTRA=$(srcdir)/config/nios2/lib2-divmod.c \
-+  $(srcdir)/config/nios2/lib2-divmod-hi.c \
-+  $(srcdir)/config/nios2/lib2-divtable.c \
-+  $(srcdir)/config/nios2/lib2-mul.c
-+
-+##
-+## Floating Point Emulation
-+## To have GCC include software floating point libraries in libgcc.a define FPBIT
-+## and DPBIT along with a few rules as follows:
-+##
-+## # We want fine grained libraries, so use the new code
-+## # to build the floating point emulation libraries.
-+FPBIT=$(srcdir)/config/nios2/nios2-fp-bit.c
-+DPBIT=$(srcdir)/config/nios2/nios2-dp-bit.c
-+
-+TARGET_LIBGCC2_CFLAGS = -O2
-+
-+# FLOAT_ONLY - no doubles
-+# SMALL_MACHINE - QI/HI is faster than SI
-+#     Actually SMALL_MACHINE uses chars and shorts instead of ints
-+#     since ints (16-bit ones as they are today) are at least as fast
-+#     as chars and shorts, don't define SMALL_MACHINE
-+# CMPtype - type returned by FP compare, i.e. INT (hard coded in fp-bit - see code )
-+
-+$(FPBIT): $(srcdir)/config/fp-bit.c Makefile
-+	echo '#define FLOAT'          >  ${FPBIT}
-+	cat $(srcdir)/config/fp-bit.c >> ${FPBIT}
-+
-+$(DPBIT): $(srcdir)/config/fp-bit.c Makefile
-+	echo ''          >  ${DPBIT}
-+	cat $(srcdir)/config/fp-bit.c >> ${DPBIT}
-+
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o 
-+
-+# Assemble startup files. 
-+$(T)crti.o: $(srcdir)/config/nios2/crti.asm $(GCC_PASSES) 
-+	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+	-c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/nios2/crti.asm 
-+
-+$(T)crtn.o: $(srcdir)/config/nios2/crtn.asm $(GCC_PASSES) 
-+	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+	-c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/nios2/crtn.asm 
-+
-+
-+## You may need to provide additional #defines at the beginning of
-+## fp-bit.c and dp-bit.c to control target endianness and other options
-+##
-+## CRTSTUFF_T_CFLAGS
-+## Special flags used when compiling crtstuff.c.  See Initialization.
-+##
-+## CRTSTUFF_T_CFLAGS_S
-+## Special flags used when compiling crtstuff.c for shared linking.  Used
-+## if you use crtbeginS.o and crtendS.o in EXTRA-PARTS. See Initialization.
-+##
-+## MULTILIB_OPTIONS
-+## For some targets, invoking GCC in different ways produces objects that
-+## can not be linked together.  For example, for some targets GCC produces
-+## both big and little endian code.  For these targets, you must arrange
-+## for multiple versions of libgcc.a to be compiled, one for each set of
-+## incompatible options.  When GCC invokes the linker, it arranges to link
-+## in the right version of libgcc.a, based on the command line options
-+## used.
-+## The MULTILIB_OPTIONS macro lists the set of options for which special
-+## versions of libgcc.a must be built.  Write options that are mutually
-+## incompatible side by side, separated by a slash.  Write options that may
-+## be used together separated by a space.  The build procedure will build
-+## all combinations of compatible options.
-+##
-+## For example, if you set MULTILIB_OPTIONS to m68000/m68020 msoft-float,
-+## Makefile will build special versions of libgcc.a using the following
-+## sets of options: -m68000, -m68020, -msoft-float, -m68000 -msoft-float,
-+## and -m68020 -msoft-float.
-+
-+MULTILIB_OPTIONS = mno-hw-mul mhw-mulx
-+
-+## MULTILIB_DIRNAMES
-+## If MULTILIB_OPTIONS is used, this variable specifies the directory names
-+## that should be used to hold the various libraries.  Write one element in
-+## MULTILIB_DIRNAMES for each element in MULTILIB_OPTIONS. If
-+## MULTILIB_DIRNAMES is not used, the default value will be
-+## MULTILIB_OPTIONS, with all slashes treated as spaces.
-+## For example, if MULTILIB_OPTIONS is set to m68000/m68020 msoft-float,
-+## then the default value of MULTILIB_DIRNAMES is m68000 m68020
-+## msoft-float.  You may specify a different value if you desire a
-+## different set of directory names.
-+
-+# MULTILIB_DIRNAMES =
-+
-+## MULTILIB_MATCHES
-+## Sometimes the same option may be written in two different ways.  If an
-+## option is listed in MULTILIB_OPTIONS, GCC needs to know about any
-+## synonyms.  In that case, set MULTILIB_MATCHES to a list of items of the
-+## form option=option to describe all relevant synonyms.  For example,
-+## m68000=mc68000 m68020=mc68020.
-+##
-+## MULTILIB_EXCEPTIONS
-+## Sometimes when there are multiple sets of MULTILIB_OPTIONS being
-+## specified, there are combinations that should not be built.  In that
-+## case, set MULTILIB_EXCEPTIONS to be all of the switch exceptions in
-+## shell case syntax that should not be built.
-+## For example, in the PowerPC embedded ABI support, it is not desirable to
-+## build libraries compiled with the -mcall-aix option and either of the
-+## -fleading-underscore or -mlittle options at the same time.  Therefore
-+## MULTILIB_EXCEPTIONS is set to
-+##
-+## *mcall-aix/*fleading-underscore* *mlittle/*mcall-aix*
-+##
-+
-+MULTILIB_EXCEPTIONS = *mno-hw-mul/*mhw-mulx*
-+
-+##
-+## MULTILIB_EXTRA_OPTS Sometimes it is desirable that when building
-+## multiple versions of libgcc.a certain options should always be passed on
-+## to the compiler.  In that case, set MULTILIB_EXTRA_OPTS to be the list
-+## of options to be used for all builds.
-+##
-+
---- gcc-3.4.3/gcc/config.gcc
-+++ gcc-3.4.3-nios2/gcc/config.gcc
-@@ -1321,6 +1321,10 @@ m32rle-*-linux*)
- 		thread_file='posix'
- 	fi
- 	;;
-+# JBG
-+nios2-*-* | nios2-*-*)
-+	tm_file="elfos.h ${tm_file}"
-+	;;
- # m68hc11 and m68hc12 share the same machine description.
- m68hc11-*-*|m6811-*-*)
- 	tm_file="dbxelf.h elfos.h m68hc11/m68hc11.h"
---- gcc-3.4.3/gcc/cse.c
-+++ gcc-3.4.3-nios2/gcc/cse.c
-@@ -3134,6 +3134,10 @@ find_comparison_args (enum rtx_code code
- #ifdef FLOAT_STORE_FLAG_VALUE
- 	  REAL_VALUE_TYPE fsfv;
- #endif
-+#ifdef __nios2__
-+	  if (p->is_const)
-+	    break;
-+#endif
- 
- 	  /* If the entry isn't valid, skip it.  */
- 	  if (! exp_equiv_p (p->exp, p->exp, 1, 0))
---- gcc-3.4.3/gcc/doc/extend.texi
-+++ gcc-3.4.3-nios2/gcc/doc/extend.texi
-@@ -5636,12 +5636,118 @@ to those machines.  Generally these gene
- instructions, but allow the compiler to schedule those calls.
- 
- @menu
-+* Altera Nios II Built-in Functions::
- * Alpha Built-in Functions::
- * ARM Built-in Functions::
- * X86 Built-in Functions::
- * PowerPC AltiVec Built-in Functions::
- @end menu
- 
-+@node Altera Nios II Built-in Functions
-+@subsection Altera Nios II Built-in Functions
-+
-+These built-in functions are available for the Altera Nios II
-+family of processors.
-+
-+The following built-in functions are always available.  They
-+all generate the machine instruction that is part of the name.
-+
-+@example
-+int __builtin_ldbio (volatile const void *)
-+int __builtin_ldbuio (volatile const void *)
-+int __builtin_ldhio (volatile const void *)
-+int __builtin_ldhuio (volatile const void *)
-+int __builtin_ldwio (volatile const void *)
-+void __builtin_stbio (volatile void *, int)
-+void __builtin_sthio (volatile void *, int)
-+void __builtin_stwio (volatile void *, int)
-+void __builtin_sync (void)
-+int __builtin_rdctl (int) 
-+void __builtin_wrctl (int, int)
-+@end example
-+
-+The following built-in functions are always available.  They
-+all generate a Nios II Custom Instruction. The name of the 
-+function represents the types that the function takes and 
-+returns. The letter before the @code{n} is the return type
-+or void if absent. The @code{n} represnts the first parameter
-+to all the custom instructions, the custom instruction number.
-+The two letters after the @code{n} represent the up to two 
-+parameters to the function.
-+
-+The letters reprsent the following data types:
-+@table @code
-+@item <no letter>
-+@code{void} for return type and no parameter for parameter types.
-+
-+@item i
-+@code{int} for return type and parameter type
-+
-+@item f
-+@code{float} for return type and parameter type
-+
-+@item p
-+@code{void *} for return type and parameter type
-+
-+@end table
-+
-+And the function names are:
-+@example
-+void __builtin_custom_n (void)
-+void __builtin_custom_ni (int)
-+void __builtin_custom_nf (float)
-+void __builtin_custom_np (void *)
-+void __builtin_custom_nii (int, int)
-+void __builtin_custom_nif (int, float)
-+void __builtin_custom_nip (int, void *)
-+void __builtin_custom_nfi (float, int)
-+void __builtin_custom_nff (float, float)
-+void __builtin_custom_nfp (float, void *)
-+void __builtin_custom_npi (void *, int)
-+void __builtin_custom_npf (void *, float)
-+void __builtin_custom_npp (void *, void *)
-+int __builtin_custom_in (void)
-+int __builtin_custom_ini (int)
-+int __builtin_custom_inf (float)
-+int __builtin_custom_inp (void *)
-+int __builtin_custom_inii (int, int)
-+int __builtin_custom_inif (int, float)
-+int __builtin_custom_inip (int, void *)
-+int __builtin_custom_infi (float, int)
-+int __builtin_custom_inff (float, float)
-+int __builtin_custom_infp (float, void *)
-+int __builtin_custom_inpi (void *, int)
-+int __builtin_custom_inpf (void *, float)
-+int __builtin_custom_inpp (void *, void *)
-+float __builtin_custom_fn (void)
-+float __builtin_custom_fni (int)
-+float __builtin_custom_fnf (float)
-+float __builtin_custom_fnp (void *)
-+float __builtin_custom_fnii (int, int)
-+float __builtin_custom_fnif (int, float)
-+float __builtin_custom_fnip (int, void *)
-+float __builtin_custom_fnfi (float, int)
-+float __builtin_custom_fnff (float, float)
-+float __builtin_custom_fnfp (float, void *)
-+float __builtin_custom_fnpi (void *, int)
-+float __builtin_custom_fnpf (void *, float)
-+float __builtin_custom_fnpp (void *, void *)
-+void * __builtin_custom_pn (void)
-+void * __builtin_custom_pni (int)
-+void * __builtin_custom_pnf (float)
-+void * __builtin_custom_pnp (void *)
-+void * __builtin_custom_pnii (int, int)
-+void * __builtin_custom_pnif (int, float)
-+void * __builtin_custom_pnip (int, void *)
-+void * __builtin_custom_pnfi (float, int)
-+void * __builtin_custom_pnff (float, float)
-+void * __builtin_custom_pnfp (float, void *)
-+void * __builtin_custom_pnpi (void *, int)
-+void * __builtin_custom_pnpf (void *, float)
-+void * __builtin_custom_pnpp (void *, void *)
-+@end example
-+
-+
- @node Alpha Built-in Functions
- @subsection Alpha Built-in Functions
- 
---- gcc-3.4.3/gcc/doc/invoke.texi
-+++ gcc-3.4.3-nios2/gcc/doc/invoke.texi
-@@ -337,6 +337,14 @@ in the following sections.
- @item Machine Dependent Options
- @xref{Submodel Options,,Hardware Models and Configurations}.
- 
-+@emph{Altera Nios II Options}
-+@gccoptlist{-msmallc -mno-bypass-cache -mbypass-cache @gol
-+-mno-cache-volatile -mcache-volatile -mno-inline-memcpy @gol 
-+-minline-memcpy -mno-fast-sw-div -mfast-sw-div @gol
-+-mhw-mul -mno-hw-mul -mhw-mulx -mno-hw-mulx @gol
-+-mno-hw-div -mhw-div @gol
-+-msys-crt0= -msys-lib= -msys=nosys }
-+
- @emph{M680x0 Options}
- @gccoptlist{-m68000  -m68020  -m68020-40  -m68020-60  -m68030  -m68040 @gol
- -m68060  -mcpu32  -m5200  -m68881  -mbitfield  -mc68000  -mc68020   @gol
-@@ -5836,6 +5844,7 @@ machine description.  The default for th
- that macro, which enables you to change the defaults.
- 
- @menu
-+* Altera Nios II Options::
- * M680x0 Options::
- * M68hc1x Options::
- * VAX Options::
-@@ -5871,6 +5880,103 @@ that macro, which enables you to change 
- * FRV Options::
- @end menu
- 
-+
-+@node Altera Nios II Options
-+@subsection Altera Nios II Options
-+@cindex Altera Nios II options
-+
-+These are the @samp{-m} options defined for the Altera Nios II 
-+processor.
-+
-+@table @gcctabopt
-+
-+@item -msmallc
-+@opindex msmallc
-+
-+Link with a limited version of the C library, -lsmallc. For more 
-+information see the C Library Documentation.
-+
-+
-+@item -mbypass-cache
-+@itemx -mno-bypass-cache
-+@opindex mno-bypass-cache
-+@opindex mbypass-cache
-+
-+Force all load and store instructions to always bypass cache by 
-+using io variants of the instructions. The default is to not
-+bypass the cache.
-+
-+@item -mno-cache-volatile 
-+@itemx -mcache-volatile       
-+@opindex mcache-volatile 
-+@opindex mno-cache-volatile
-+
-+Volatile memory access bypass the cache using the io variants of 
-+the ld and st instructions. The default is to cache volatile 
-+accesses. 
-+
-+-mno-cache-volatile is deprecated and will be deleted in a 
-+future GCC release.
-+
-+
-+@item -mno-inline-memcpy
-+@itemx -minline-memcpy
-+@opindex mno-inline-memcpy 
-+@opindex minline-memcpy
-+
-+Do not inline memcpy. The default is to inline when -O is on.
-+
-+
-+@item -mno-fast-sw-div
-+@itemx -mfast-sw-div
-+@opindex mno-fast-sw-div
-+@opindex mfast-sw-div
-+
-+Do no use table based fast divide for small numbers. The default 
-+is to use the fast divide at -O3 and above.
-+
-+
-+@item -mno-hw-mul
-+@itemx -mhw-mul
-+@itemx -mno-hw-mulx
-+@itemx -mhw-mulx
-+@itemx -mno-hw-div
-+@itemx -mhw-div
-+@opindex mno-hw-mul
-+@opindex mhw-mul
-+@opindex mno-hw-mulx
-+@opindex mhw-mulx
-+@opindex mno-hw-div
-+@opindex mhw-div
-+
-+Enable or disable emitting @code{mul}, @code{mulx} and @code{div} family of 
-+instructions by the compiler. The default is to emit @code{mul}
-+and not emit @code{div} and @code{mulx}.
-+
-+The different combinations of @code{mul} and @code{mulx} instructions 
-+generate a different multilib options. 
-+
-+
-+@item -msys-crt0=@var{startfile}
-+@opindex msys-crt0
-+
-+@var{startfile} is the file name  of the startfile (crt0) to use 
-+when linking. The default is crt0.o that comes with libgloss
-+and is only suitable for use with the instruction set
-+simulator.
-+
-+@item -msys-lib=@var{systemlib}
-+@itemx -msys-lib=nosys
-+@opindex msys-lib
-+
-+@var{systemlib} is the library name of the library which provides
-+the system calls required by the C library, e.g. @code{read}, @code{write}
-+etc. The default is to use nosys, this library provides
-+stub implementations of the calls and is part of libgloss.
-+
-+@end table
-+
-+
- @node M680x0 Options
- @subsection M680x0 Options
- @cindex M680x0 options
---- gcc-3.4.3/gcc/doc/md.texi
-+++ gcc-3.4.3-nios2/gcc/doc/md.texi
-@@ -1335,6 +1335,49 @@ However, here is a summary of the machin
- available on some particular machines.
- 
- @table @emph
-+
-+@item Altera Nios II family---@file{nios2.h}
-+@table @code
-+
-+@item I
-+Integer that is valid as an immediate operand in an
-+instruction taking a signed 16-bit number. Range
-+@minus{}32768 to 32767.
-+
-+@item J
-+Integer that is valid as an immediate operand in an
-+instruction taking an unsigned 16-bit number. Range
-+0 to 65535.
-+
-+@item K
-+Integer that is valid as an immediate operand in an
-+instruction taking only the upper 16-bits of a
-+32-bit number. Range 32-bit numbers with the lower
-+16-bits being 0.
-+
-+@item L
-+Integer that is valid as an immediate operand for a 
-+shift instruction. Range 0 to 31.
-+
-+
-+@item M
-+Integer that is valid as an immediate operand for
-+only the value 0. Can be used in conjunction with
-+the format modifier @code{z} to use @code{r0}
-+instead of @code{0} in the assembly output.
-+
-+@item N
-+Integer that is valid as an immediate operand for
-+a custom instruction opcode. Range 0 to 255.
-+
-+@item S
-+Matches immediates which are addresses in the small
-+data section and therefore can be added to @code{gp}
-+as a 16-bit immediate to re-create their 32-bit value.
-+
-+@end table
-+
-+
- @item ARM family---@file{arm.h}
- @table @code
- @item f
Index: toolchain/gcc/3.4.4/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/3.4.4/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/800-arm-bigendian.patch	(working copy)
@@ -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.4.1-dist/gcc/config/arm/linux-elf.h
-+++ gcc-3.4.1/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__"
- 
-@@ -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
- 
---- gcc-3.4.1-dist/gcc/config.gcc
-+++ gcc-3.4.1/gcc/config.gcc
-@@ -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
Index: toolchain/gcc/3.4.4/602-sdk-libstdc++-includes.patch
===================================================================
--- toolchain/gcc/3.4.4/602-sdk-libstdc++-includes.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/602-sdk-libstdc++-includes.patch	(working copy)
@@ -1,22 +0,0 @@
---- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~	2003-08-27 22:29:42.000000000 +0100
-+++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am	2004-07-22 16:41:45.152130128 +0100
-@@ -32,7 +32,7 @@
- 
- libmath_la_SOURCES = stubs.c
- 
--AM_CPPFLAGS = $(CANADIAN_INCLUDES)
-+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
- 
- # Only compiling "C" sources in this directory.
- LIBTOOL = @LIBTOOL@ --tag CC
---- gcc-3.4.1/libstdc++-v3/fragment.am.old	2004-07-22 18:24:58.024083656 +0100
-+++ gcc-3.4.1/libstdc++-v3/fragment.am	2004-07-22 18:24:59.019932264 +0100
-@@ -18,7 +18,7 @@
- 	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
- 
- # -I/-D flags to pass when compiling.
--AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
-+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
- 
- 
- 
Index: toolchain/gcc/3.4.4/800-powerpc-libc_stack_end-uclibc.patch
===================================================================
--- toolchain/gcc/3.4.4/800-powerpc-libc_stack_end-uclibc.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/800-powerpc-libc_stack_end-uclibc.patch	(working copy)
@@ -1,15 +0,0 @@
---- gcc-3.4.4/gcc/config/rs6000/linux-unwind.h.org	2005-06-23 17:50:34.000000000 -0600
-+++ gcc-3.4.4/gcc/config/rs6000/linux-unwind.h	2005-06-23 17:52:02.000000000 -0600
-@@ -32,6 +32,7 @@
-    these structs elsewhere;  Many fields are missing, particularly
-    from the end of the structures.  */
- 
-+#ifndef inhibit_libc
- struct gcc_vregs
- {
-   __attribute__ ((vector_size (16))) int vr[32];
-@@ -320,3 +321,4 @@
- 									\
-     goto SUCCESS;							\
-   } while (0)
-+#endif
Index: toolchain/gcc/3.4.4/700-pr15068-fix.patch
===================================================================
--- toolchain/gcc/3.4.4/700-pr15068-fix.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/700-pr15068-fix.patch	(working copy)
@@ -1,44 +0,0 @@
-See http://gcc.gnu.org/PR15068
-
-Fixes error
-
-../sysdeps/generic/s_fmax.c: In function `__fmax':
-../sysdeps/generic/s_fmax.c:28: internal compiler error: in elim_reg_cond, at flow.c:3257
-Please submit a full bug report,
-with preprocessed source if appropriate.
-See <URL:http://gcc.gnu.org/bugs.html> for instructions.
-make[2]: *** [/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/math/s_fmax.o] Error 1
-make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822/math'
-make[1]: *** [math/others] Error 2
-make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822'
-make: *** [all] Error 2
-
-[ rediffed against gcc-3.4.1, with elbow grease, ending up with same thing as
-http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3 ]
-
---- gcc-3.4.1/gcc/flow.c.old	2004-02-27 19:39:19.000000000 -0800
-+++ gcc-3.4.1/gcc/flow.c	2004-08-26 07:29:46.000000000 -0700
-@@ -1878,6 +1878,7 @@
- 	  rtx set_src = SET_SRC (pc_set (BB_END (bb)));
- 	  rtx cond_true = XEXP (set_src, 0);
- 	  rtx reg = XEXP (cond_true, 0);
-+ 	  enum rtx_code inv_cond;
- 
- 	  if (GET_CODE (reg) == SUBREG)
- 	    reg = SUBREG_REG (reg);
-@@ -1886,11 +1887,13 @@
- 	     in the form of a comparison of a register against zero.  
- 	     If the condition is more complex than that, then it is safe
- 	     not to record any information.  */
--	  if (GET_CODE (reg) == REG
-+ 	  inv_cond = reversed_comparison_code (cond_true, BB_END (bb));
-+ 	  if (inv_cond != UNKNOWN
-+	      && GET_CODE (reg) == REG
- 	      && XEXP (cond_true, 1) == const0_rtx)
- 	    {
- 	      rtx cond_false
--		= gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)),
-+		= gen_rtx_fmt_ee (inv_cond,
- 				  GET_MODE (cond_true), XEXP (cond_true, 0),
- 				  XEXP (cond_true, 1));
- 	      if (GET_CODE (XEXP (set_src, 1)) == PC)
Index: toolchain/gcc/3.4.4/601-gcc34-arm-ldm-peephole2.patch
===================================================================
--- toolchain/gcc/3.4.4/601-gcc34-arm-ldm-peephole2.patch	(revision 20005)
+++ toolchain/gcc/3.4.4/601-gcc34-arm-ldm-peephole2.patch	(working copy)
@@ -1,42 +0,0 @@
-The 30_all_gcc34-arm-ldm-peephole.patch from Debian was conflicting 
-with the newer 36_all_pr16201-fix.patch, so i cut out the hunk from 
-it that was causing problems and grabbed an updated version from 
-upstream cvs.
-
-Index: gcc/config/arm/arm.c
-===================================================================
-RCS file: /cvsroot/gcc/gcc/gcc/config/arm/arm.c,v
-retrieving revision 1.432
-retrieving revision 1.433
-diff -u -r1.432 -r1.433
---- gcc-3.4.4/gcc/config/arm/arm.c	29 Mar 2005 03:00:23 -0000	1.432
-+++ gcc-3.4.4/gcc/config/arm/arm.c	1 Apr 2005 11:02:22 -0000	1.433
-@@ -5139,6 +5139,10 @@
- int
- adjacent_mem_locations (rtx a, rtx b)
- {
-+  /* We don't guarantee to preserve the order of these memory refs.  */
-+  if (volatile_refs_p (a) || volatile_refs_p (b))
-+    return 0;
-+
-   if ((GET_CODE (XEXP (a, 0)) == REG
-        || (GET_CODE (XEXP (a, 0)) == PLUS
- 	   && GET_CODE (XEXP (XEXP (a, 0), 1)) == CONST_INT))
-@@ -5178,6 +5182,17 @@
- 	return 0;
- 
-       val_diff = val1 - val0;
-+
-+      if (arm_ld_sched)
-+	{
-+	  /* If the target has load delay slots, then there's no benefit
-+	     to using an ldm instruction unless the offset is zero and
-+	     we are optimizing for size.  */
-+	  return (optimize_size && (REGNO (reg0) == REGNO (reg1))
-+		  && (val0 == 0 || val1 == 0 || val0 == 4 || val1 == 4)
-+		  && (val_diff == 4 || val_diff == -4));
-+	}
-+
-       return ((REGNO (reg0) == REGNO (reg1))
- 	      && (val_diff == 4 || val_diff == -4));
-     }
Index: toolchain/gcc/3.4.4/arm-softfloat.patch.conditional
===================================================================
--- toolchain/gcc/3.4.4/arm-softfloat.patch.conditional	(revision 20005)
+++ toolchain/gcc/3.4.4/arm-softfloat.patch.conditional	(working copy)
@@ -1,270 +0,0 @@
-Note... modified my mjn3 to not conflict with the big endian arm patch.
-Warning!!!  Only the linux target is aware of TARGET_ENDIAN_DEFAULT.
-Also changed
-  #define SUBTARGET_EXTRA_ASM_SPEC "\
-  %{!mcpu=*:-mcpu=xscale} \
-  %{mhard-float:-mfpu=fpa} \
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
-to
-  #define SUBTARGET_EXTRA_ASM_SPEC "\
-  %{mhard-float:-mfpu=fpa} \
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
-in gcc/config/arm/linux-elf.h.
-#
-# Submitted:
-#
-# Dimitry Andric <dimitry@andric.com>, 2004-05-01
-#
-# Description:
-#
-# Nicholas Pitre released this patch for gcc soft-float support here: 
-# http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-October/006436.html
-#
-# This version has been adapted to work with gcc 3.4.0.
-#
-# The original patch doesn't distinguish between softfpa and softvfp modes
-# in the way Nicholas Pitre probably meant.  His description is:
-#
-# "Default is to use APCS-32 mode with soft-vfp.  The old Linux default for
-# floats can be achieved with -mhard-float or with the configure
-# --with-float=hard option.  If -msoft-float or --with-float=soft is used then
-# software float support will be used just like the default but with the legacy
-# big endian word ordering for double float representation instead."
-#
-# Which means the following:
-#
-# * If you compile without -mhard-float or -msoft-float, you should get
-#   software floating point, using the VFP format.  The produced object file
-#   should have these flags in its header:
-#
-#     private flags = 600: [APCS-32] [VFP float format] [software FP]
-#
-# * If you compile with -mhard-float, you should get hardware floating point,
-#   which always uses the FPA format.  Object file header flags should be:
-#
-#     private flags = 0: [APCS-32] [FPA float format]
-#
-# * If you compile with -msoft-float, you should get software floating point,
-#   using the FPA format.  This is done for compatibility reasons with many
-#   existing distributions.  Object file header flags should be:
-#
-#     private flags = 200: [APCS-32] [FPA float format] [software FP]
-#
-# The original patch from Nicholas Pitre contained the following constructs:
-#
-#   #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
-#     %{mhard-float:-mfpu=fpa} \
-#     %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-#
-# However, gcc doesn't accept this ";:" notation, used in the 3rd line.  This
-# is probably the reason Robert Schwebel modified it to:
-#
-#   #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
-#     %{mhard-float:-mfpu=fpa} \
-#     %{!mhard-float: %{msoft-float:-mfpu=softfpa -mfpu=softvfp}}"
-#
-# But this causes the following behaviour:
-#
-# * If you compile without -mhard-float or -msoft-float, the compiler generates
-#   software floating point instructions, but *nothing* is passed to the
-#   assembler, which results in an object file which has flags:
-#
-#     private flags = 0: [APCS-32] [FPA float format]
-#
-#   This is not correct!
-#
-# * If you compile with -mhard-float, the compiler generates hardware floating
-#   point instructions, and passes "-mfpu=fpa" to the assembler, which results
-#   in an object file which has the same flags as in the previous item, but now
-#   those *are* correct.
-#    
-# * If you compile with -msoft-float, the compiler generates software floating
-#   point instructions, and passes "-mfpu=softfpa -mfpu=softvfp" (in that
-#   order) to the assembler, which results in an object file with flags:
-#
-#   private flags = 600: [APCS-32] [VFP float format] [software FP]
-#
-#   This is not correct, because the last "-mfpu=" option on the assembler
-#   command line determines the actual FPU convention used (which should be FPA
-#   in this case).
-#
-# Therefore, I modified this patch to get the desired behaviour.  Every
-# instance of the notation:
-#
-#   %{msoft-float:-mfpu=softfpa -mfpu=softvfp}
-#
-# was changed to:
-#
-#   %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}
-#
-# I also did the following:
-# 
-# * Modified all TARGET_DEFAULT macros I could find to include ARM_FLAG_VFP, to
-#   be consistent with Nicholas' original patch.
-# * Removed any "msoft-float" or "mhard-float" from all MULTILIB_DEFAULTS
-#   macros I could find.  I think that if you compile without any options, you
-#   would like to get the defaults. :)
-# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed
-#   anymore.  (The required functions are now in libgcc.)
-
-diff -urN gcc-3.4.1-old/gcc/config/arm/coff.h gcc-3.4.1/gcc/config/arm/coff.h
---- gcc-3.4.1-old/gcc/config/arm/coff.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/coff.h	2004-09-02 21:51:15.000000000 -0500
-@@ -31,11 +31,16 @@
- #define TARGET_VERSION fputs (" (ARM/coff)", stderr)
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" }
-+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" }
- #endif
- 
- /* This is COFF, but prefer stabs.  */
-diff -urN gcc-3.4.1-old/gcc/config/arm/elf.h gcc-3.4.1/gcc/config/arm/elf.h
---- gcc-3.4.1-old/gcc/config/arm/elf.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -46,7 +46,9 @@
- 
- #ifndef SUBTARGET_ASM_FLOAT_SPEC
- #define SUBTARGET_ASM_FLOAT_SPEC "\
--%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}"
-+%{mapcs-float:-mfloat} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- #endif
- 
- #ifndef ASM_SPEC
-@@ -106,12 +108,17 @@
- #endif
- 
- #ifndef TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- #endif
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
-+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
- #endif
- 
- #define TARGET_ASM_FILE_START_APP_OFF true
-diff -urN gcc-3.4.1-old/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h
---- gcc-3.4.1-old/gcc/config/arm/linux-elf.h	2004-09-02 21:50:52.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/linux-elf.h	2004-09-02 22:00:49.000000000 -0500
-@@ -44,12 +44,26 @@
- #define TARGET_LINKER_EMULATION "armelf_linux"
- #endif
- 
--/* Default is to use APCS-32 mode.  */
-+/*
-+ * Default is to use APCS-32 mode with soft-vfp.
-+ * The old Linux default for floats can be achieved with -mhard-float
-+ * or with the configure --with-float=hard option.
-+ * If -msoft-float or --with-float=soft is used then software float 
-+ * support will be used just like the default but with the legacy
-+ * big endian word ordering for double float representation instead.
-+ */
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT \
--		( ARM_FLAG_APCS_32 | \
--		  ARM_FLAG_MMU_TRAPS | \
--		  TARGET_ENDIAN_DEFAULT )
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_SOFT_FLOAT	\
-+	| TARGET_ENDIAN_DEFAULT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_MMU_TRAPS )
-+
-+#undef  SUBTARGET_EXTRA_ASM_SPEC
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- 
- #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
- 
-@@ -57,7 +71,7 @@
- 
- #undef  MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" }
- 
- #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
- 
-@@ -72,7 +86,7 @@
-    %{shared:-lc} \
-    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
- 
--#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
-+#define LIBGCC_SPEC "-lgcc"
- 
- /* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
-    the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
-diff -urN gcc-3.4.1-old/gcc/config/arm/t-linux gcc-3.4.1/gcc/config/arm/t-linux
---- gcc-3.4.1-old/gcc/config/arm/t-linux	2003-09-20 16:09:07.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/t-linux	2004-09-02 21:51:15.000000000 -0500
-@@ -4,7 +4,10 @@
- LIBGCC2_DEBUG_CFLAGS = -g0
- 
- LIB1ASMSRC = arm/lib1funcs.asm
--LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
-+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
-+	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-+	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-+	_fixsfsi _fixunssfsi
- 
- # MULTILIB_OPTIONS = mhard-float/msoft-float
- # MULTILIB_DIRNAMES = hard-float soft-float
-diff -urN gcc-3.4.1-old/gcc/config/arm/unknown-elf.h gcc-3.4.1/gcc/config/arm/unknown-elf.h
---- gcc-3.4.1-old/gcc/config/arm/unknown-elf.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/unknown-elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -30,7 +30,12 @@
- 
- /* Default to using APCS-32 and software floating point.  */
- #ifndef TARGET_DEFAULT
--#define TARGET_DEFAULT	(ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- #endif
- 
- /* Now we define the strings used to build the spec file.  */
-diff -urN gcc-3.4.1-old/gcc/config/arm/xscale-elf.h gcc-3.4.1/gcc/config/arm/xscale-elf.h
---- gcc-3.4.1-old/gcc/config/arm/xscale-elf.h	2003-07-01 18:26:43.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/xscale-elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -49,11 +49,12 @@
- 		     endian, regardless of the endian-ness of the memory
- 		     system.  */
- 		     
--#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
--  %{mhard-float:-mfpu=fpa} \
--  %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{!mcpu=*:-mcpu=xscale} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" }
-+  { "mlittle-endian", "mno-thumb-interwork", "marm" }
- #endif
Index: toolchain/gcc/3.3.6/120-softfloat.patch
===================================================================
--- toolchain/gcc/3.3.6/120-softfloat.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/120-softfloat.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.3.6/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/3.3.6/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/100-uclibc-conf.patch	(working copy)
@@ -1,1613 +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/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
Index: toolchain/gcc/3.3.6/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/3.3.6/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/800-arm-bigendian.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.3.6/810-arm-bigendian-uclibc.patch
===================================================================
--- toolchain/gcc/3.3.6/810-arm-bigendian-uclibc.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/810-arm-bigendian-uclibc.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.3.6/110-uclibc-conf.patch
===================================================================
--- toolchain/gcc/3.3.6/110-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/110-uclibc-conf.patch	(working copy)
@@ -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 },		\
Index: toolchain/gcc/3.3.6/820-no-mips-empic-relocs.patch
===================================================================
--- toolchain/gcc/3.3.6/820-no-mips-empic-relocs.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/820-no-mips-empic-relocs.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.3.6/500-loop.patch
===================================================================
--- toolchain/gcc/3.3.6/500-loop.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/500-loop.patch	(working copy)
@@ -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.  */
Index: toolchain/gcc/3.3.6/830-gcc-bug-num-22167.patch
===================================================================
--- toolchain/gcc/3.3.6/830-gcc-bug-num-22167.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/830-gcc-bug-num-22167.patch	(working copy)
@@ -1,16 +0,0 @@
-Index: gcc/gcse.c
-===================================================================
-RCS file: /cvs/gcc/gcc/gcc/gcse.c,v
-retrieving revision 1.288.2.9
-diff -u -p -F^\([(a-zA-Z0-9_]\|#define\) -r1.288.2.9 gcse.c
---- gcc/gcc/gcse.c	30 Oct 2004 18:02:53 -0000	1.288.2.9
-+++ gcc/gcc/gcse.c	14 Jul 2005 13:19:57 -0000
-@@ -6445,7 +6445,7 @@ hoist_code (void)
- 	  insn_inserted_p = 0;
- 
- 	  /* These tests should be the same as the tests above.  */
--	  if (TEST_BIT (hoist_vbeout[bb->index], i))
-+	  if (TEST_BIT (hoist_exprs[bb->index], i))
- 	    {
- 	      /* We've found a potentially hoistable expression, now
- 		 we look at every block BB dominates to see if it
Index: toolchain/gcc/3.3.6/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/3.3.6/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/200-uclibc-locale.patch	(working copy)
@@ -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
Index: toolchain/gcc/3.3.6/810-mips-xgot.patch
===================================================================
--- toolchain/gcc/3.3.6/810-mips-xgot.patch	(revision 20005)
+++ toolchain/gcc/3.3.6/810-mips-xgot.patch	(working copy)
@@ -1,6 +0,0 @@
---- gcc.orig/gcc/config/mips/t-linux	1970-01-01 01:00:00.000000000 +0100
-+++ gcc/gcc/config/mips/t-linux	2004-08-26 18:28:12.000000000 +0200
-@@ -0,0 +1,3 @@
-+# Compile crtbegin/end with xgot so it works for both
-+# normal and large GOTs.
-+CRTSTUFF_T_CFLAGS = -Wa,-xgot
Index: toolchain/gcc/3.4.5/100-uclibc-conf.patch
===================================================================
--- toolchain/gcc/3.4.5/100-uclibc-conf.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/100-uclibc-conf.patch	(working copy)
@@ -1,470 +0,0 @@
---- gcc-3.4.1/gcc/config/t-linux-uclibc
-+++ gcc-3.4.1/gcc/config/t-linux-uclibc
-@@ -0,0 +1,5 @@
-+# Remove glibc specific files added in t-linux
-+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES))
-+
-+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc
-+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH))
---- gcc-3.4.1/gcc/config.gcc
-+++ gcc-3.4.1/gcc/config.gcc
-@@ -2310,10 +2310,16 @@
- *)
- 	echo "*** Configuration ${target} not supported" 1>&2
- 	exit 1
- 	;;
- esac
-+
-+# Rather than hook into each target, just do it after all the linux
-+# targets have been processed
-+case ${target} in
-+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc"
-+esac
- 
- # Support for --with-cpu and related options (and a few unrelated options,
- # too).
- case ${with_cpu} in
-   yes | no)
---- gcc-3.4.4/gcc/config/alpha/linux-elf.h
-+++ gcc-3.4.4/gcc/config/alpha/linux-elf.h
-@@ -27,7 +27,11 @@
- #define SUBTARGET_EXTRA_SPECS \
- { "elf_dynamic_linker", ELF_DYNAMIC_LINKER },
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
- #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
-+#endif
- 
- #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
-   %{O*:-O3} %{!O*:-O1}						\
---- 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
-@@ -80,14 +80,19 @@
- #define ENDFILE_SPEC \
-   "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s"
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC "%{h*} %{version:-v} \
-    %{b} %{Wl,*:%*} \
-    %{static:-Bstatic} \
-    %{shared:-shared} \
-    %{symbolic:-Bsymbolic} \
-    %{rdynamic:-export-dynamic} \
--   %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \
-+   %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \
-    -X \
-    %{mbig-endian:-EB}" \
-    SUBTARGET_EXTRA_LINK_SPEC
---- 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 */
- 
---- 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
-@@ -110,22 +110,21 @@
- 
- #undef	LINK_SPEC
- #ifdef USE_GNULIBC_1
--#define LINK_SPEC "-m elf_i386 %{shared:-shared} \
--  %{!shared: \
--    %{!ibcs: \
--      %{!static: \
--	%{rdynamic:-export-dynamic} \
--	%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \
--	%{static:-static}}}"
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.1"
-+#else
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
- #else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
-+#endif
- #define LINK_SPEC "-m elf_i386 %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
- 	%{rdynamic:-export-dynamic} \
--	%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+	%{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
- 	%{static:-static}}}"
--#endif
- 
- /* A C statement (sans semicolon) to output to the stdio stream
-    FILE the assembler definition of uninitialized global DECL named
---- gcc-3.4.4/gcc/config/i386/linux64.h
-+++ gcc-3.4.4/gcc/config/i386/linux64.h
-@@ -54,14 +54,21 @@
-    When the -shared link option is used a final link is not being
-    done.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
--      %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \
-+      %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \
-+      %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \
-     %{static:-static}}"
- 
- #define MULTILIB_DEFAULTS { "m64" }
---- gcc-3.4.4/gcc/config/ia64/linux.h
-+++ gcc-3.4.4/gcc/config/ia64/linux.h
-@@ -37,13 +37,18 @@
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- 
---- gcc-3.4.4/gcc/config/m68k/linux.h
-+++ gcc-3.4.4/gcc/config/m68k/linux.h
-@@ -131,12 +131,17 @@
- 
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef	LINK_SPEC
- #define LINK_SPEC "-m m68kelf %{shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-     %{static}}"
- 
- /* For compatibility with linux/a.out */
---- 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,14 +109,19 @@
- 
- /* Borrowed from sparc/linux.h */
- #undef LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #define LINK_SPEC \
-  "%(endian_spec) \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- 
- #undef SUBTARGET_ASM_SPEC
---- gcc-3.4.4/gcc/config/pa/pa-linux.h
-+++ gcc-3.4.4/gcc/config/pa/pa-linux.h
-@@ -77,13 +77,18 @@
- /* Define this for shared library support because it isn't in the main
-    linux.h file.  */
- 
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1"
-+#endif
- #undef LINK_SPEC
- #define LINK_SPEC "\
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
--      %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \
-+      %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-       %{static:-static}}"
- 
- /* glibc's profiling functions don't need gcc to allocate counters.  */
---- 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
-@@ -69,7 +69,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}"
---- 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)     }"
- 
-@@ -1125,6 +1126,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
-@@ -1291,6 +1296,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 },			\
---- gcc-3.4.4/gcc/config/s390/linux.h
-+++ gcc-3.4.4/gcc/config/s390/linux.h
-@@ -77,6 +77,13 @@
- #define MULTILIB_DEFAULTS { "m31" }
- #endif
- 
-+#ifdef USE_UCLIBC
-+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0"
-+#else
-+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1"
-+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1"
-+#endif
- #undef  LINK_SPEC
- #define LINK_SPEC \
-   "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
-@@ -86,8 +93,8 @@
-       %{!static: \
- 	%{rdynamic:-export-dynamic} \
- 	%{!dynamic-linker: \
--          %{m31:-dynamic-linker /lib/ld.so.1} \
--          %{m64:-dynamic-linker /lib/ld64.so.1}}}}"
-+          %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \
-+          %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}"
- 
- 
- #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
---- 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,11 +73,16 @@
- #undef SUBTARGET_LINK_EMUL_SUFFIX
- #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
- #undef SUBTARGET_LINK_SPEC
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #define SUBTARGET_LINK_SPEC \
-   "%{shared:-shared} \
-    %{!static: \
-      %{rdynamic:-export-dynamic} \
--     %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+     %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-    %{static:-static}"
- 
- #undef LIB_SPEC
---- gcc-3.4.4/gcc/config/sparc/linux.h
-+++ gcc-3.4.4/gcc/config/sparc/linux.h
-@@ -162,13 +162,18 @@
-         %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.1}} \
-         %{static:-static}}}"
- #else
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2"
-+#endif
- #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!mno-relax:%{!r:-relax}} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}}"
- #endif
- 
---- gcc-3.4.4/gcc/config/sparc/linux64.h
-+++ gcc-3.4.4/gcc/config/sparc/linux64.h
-@@ -167,12 +166,17 @@
-   { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
-   { "link_arch",	 LINK_ARCH_SPEC },
-     
-+#ifdef USE_UCLIBC
-+#define ELF_DYNAMIC_LINKER	"/lib/ld-uClibc.so.0"
-+#else
-+#define ELF_DYNAMIC_LINKER  "/lib/ld-linux.so.2"
-+#endif
- #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-         %{rdynamic:-export-dynamic} \
--        %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \
-+        %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \
-         %{static:-static}}} \
- "
- 
---- 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]+$']
---- 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
---- 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]+$'
---- 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
Index: toolchain/gcc/3.4.5/300-libstdc++-pic.patch
===================================================================
--- toolchain/gcc/3.4.5/300-libstdc++-pic.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/300-libstdc++-pic.patch	(working copy)
@@ -1,47 +0,0 @@
-# DP: Build and install libstdc++_pic.a library.
-
---- gcc/libstdc++-v3/src/Makefile.am
-+++ gcc/libstdc++-v3/src/Makefile.am
-@@ -224,6 +224,10 @@
- 	  @OPT_LDFLAGS@ @SECTION_LDFLAGS@ $(AM_CXXFLAGS) $(LDFLAGS) -o $@
- 
- 
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Added bits to build debug library.
- if GLIBCPP_BUILD_DEBUG
- all-local: build_debug
-
---- gcc/libstdc++-v3/src/Makefile.in
-+++ gcc/libstdc++-v3/src/Makefile.in
-@@ -585,7 +585,7 @@
- 
- install-data-am: install-data-local
- 
--install-exec-am: install-toolexeclibLTLIBRARIES
-+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local
- 
- install-info: install-info-am
- 
-@@ -618,6 +618,7 @@
- 	distclean-tags distdir dvi dvi-am info info-am install \
- 	install-am install-data install-data-am install-data-local \
- 	install-exec install-exec-am install-info install-info-am \
-+	install-exec-local \
- 	install-man install-strip install-toolexeclibLTLIBRARIES \
- 	installcheck installcheck-am installdirs maintainer-clean \
- 	maintainer-clean-generic mostlyclean mostlyclean-compile \
-@@ -707,6 +708,11 @@
- install_debug:
- 	(cd ${debugdir} && $(MAKE) \
- 	toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
-+
-+install-exec-local:
-+	$(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o
-+	$(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir)
-+
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
- .NOEXPORT:
Index: toolchain/gcc/3.4.5/71_all_sh-pr16665-fix.patch
===================================================================
--- toolchain/gcc/3.4.5/71_all_sh-pr16665-fix.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/71_all_sh-pr16665-fix.patch	(working copy)
@@ -1,43 +0,0 @@
---- gcc/gcc/config/sh/sh.c
-+++ gcc/gcc/config/sh/sh.c
-@@ -9106,6 +9106,15 @@ sh_output_mi_thunk (FILE *file, tree thu
-     }
-   this = FUNCTION_ARG (cum, Pmode, ptr_type_node, 1);
- 
-+  /* In PIC case, we set PIC register to compute the target address.  We
-+     can use a scratch register to save and restore the original value  
-+     except for SHcompact.  For SHcompact, use stack.  */
-+  if (flag_pic && TARGET_SHCOMPACT)
-+    {
-+      push (PIC_OFFSET_TABLE_REGNUM);
-+      emit_insn (gen_GOTaddr2picreg ());
-+    }
-+
-   /* For SHcompact, we only have r0 for a scratch register: r1 is the
-      static chain pointer (even if you can't have nested virtual functions
-      right now, someone might implement them sometime), and the rest of the
-@@ -9188,8 +9197,24 @@ sh_output_mi_thunk (FILE *file, tree thu
-       assemble_external (function);
-       TREE_USED (function) = 1;
-     }
-+  /* We can use scratch1 to save and restore the original value of
-+     PIC register except for SHcompact.  */
-+  if (flag_pic && ! TARGET_SHCOMPACT)
-+    {
-+      emit_move_insn (scratch1,
-+		      gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM));
-+      emit_insn (gen_GOTaddr2picreg ());
-+    }
-   funexp = XEXP (DECL_RTL (function), 0);
-   emit_move_insn (scratch2, funexp);
-+  if (flag_pic)
-+    {
-+      if (! TARGET_SHCOMPACT)
-+	emit_move_insn (gen_rtx_REG (Pmode, PIC_OFFSET_TABLE_REGNUM),
-+			scratch1);
-+      else
-+	pop (PIC_OFFSET_TABLE_REGNUM);
-+    }
-   funexp = gen_rtx_MEM (FUNCTION_MODE, scratch2);
-   sibcall = emit_call_insn (gen_sibcall (funexp, const0_rtx, NULL_RTX));
-   SIBLING_CALL_P (sibcall) = 1;
Index: toolchain/gcc/3.4.5/73_all_sh-pr20617.patch
===================================================================
--- toolchain/gcc/3.4.5/73_all_sh-pr20617.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/73_all_sh-pr20617.patch	(working copy)
@@ -1,28 +0,0 @@
-2005-03-24  J"orn Rennecke <joern.rennecke@st.com>
-
-	Band aid for PR target/20617:
-	* config/sh/lib1funcs.asm (FUNC, ALIAS): Add .hidden directive.
-
---- g/gcc/config/sh/lib1funcs.asm
-+++ g/gcc/config/sh/lib1funcs.asm
-@@ -37,9 +37,19 @@ Boston, MA 02111-1307, USA.  */
-    ELF local label prefixes by J"orn Rennecke
-    amylaar@cygnus.com  */
- 
-+#define ALIAS(X,Y)	.global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y)
-+
- #ifdef __ELF__
- #define LOCAL(X)	.L_##X
--#define FUNC(X)		.type X,@function
-+
-+#if 1 /* ??? The export list mechanism is broken, everything that is not
-+	 hidden is exported.  */
-+#undef FUNC
-+#define FUNC(X)		.type X,@function; .hidden X
-+#undef ALIAS
-+#define ALIAS(X,Y)	.global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y); .hidden GLOBAL(X)
-+#endif
-+
- #define ENDFUNC0(X)	.Lfe_##X: .size X,.Lfe_##X-X
- #define ENDFUNC(X)	ENDFUNC0(X)
- #else
Index: toolchain/gcc/3.4.5/600-gcc34-arm-ldm-peephole.patch
===================================================================
--- toolchain/gcc/3.4.5/600-gcc34-arm-ldm-peephole.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/600-gcc34-arm-ldm-peephole.patch	(working copy)
@@ -1,65 +0,0 @@
---- gcc-3.4.0/gcc/config/arm/arm.md.arm-ldm-peephole	2004-01-13 08:24:37.000000000 -0500
-+++ gcc-3.4.0/gcc/config/arm/arm.md	2004-04-24 18:18:04.000000000 -0400
-@@ -8810,13 +8810,16 @@
-    (set_attr "length" "4,8,8")]
- )
- 
-+; Try to convert LDR+LDR+arith into [add+]LDM+arith
-+; On XScale, LDM is always slower than two LDRs, so only do this if
-+; optimising for size.
- (define_insn "*arith_adjacentmem"
-   [(set (match_operand:SI 0 "s_register_operand" "=r")
- 	(match_operator:SI 1 "shiftable_operator"
- 	 [(match_operand:SI 2 "memory_operand" "m")
- 	  (match_operand:SI 3 "memory_operand" "m")]))
-    (clobber (match_scratch:SI 4 "=r"))]
--  "TARGET_ARM && adjacent_mem_locations (operands[2], operands[3])"
-+  "TARGET_ARM && (!arm_tune_xscale || optimize_size) && adjacent_mem_locations (operands[2], operands[3])"
-   "*
-   {
-     rtx ldm[3];
-@@ -8851,6 +8854,8 @@
-       }
-    if (val1 && val2)
-       {
-+	/* This would be a loss on a Harvard core, but adjacent_mem_locations()
-+	   will prevent it from happening.  */
- 	rtx ops[3];
- 	ldm[0] = ops[0] = operands[4];
- 	ops[1] = XEXP (XEXP (operands[2], 0), 0);
---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm-peephole	2004-04-24 18:16:25.000000000 -0400
-+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:18:04.000000000 -0400
-@@ -4838,6 +4841,11 @@
-       *load_offset = unsorted_offsets[order[0]];
-     }
- 
-+  /* For XScale a two-word LDM is a performance loss, so only do this if
-+     size is more important.  See comments in arm_gen_load_multiple.  */
-+  if (nops == 2 && arm_tune_xscale && !optimize_size)
-+    return 0;
-+
-   if (unsorted_offsets[order[0]] == 0)
-     return 1; /* ldmia */
- 
-@@ -5064,6 +5072,11 @@
-       *load_offset = unsorted_offsets[order[0]];
-     }
- 
-+  /* For XScale a two-word LDM is a performance loss, so only do this if
-+     size is more important.  See comments in arm_gen_load_multiple.  */
-+  if (nops == 2 && arm_tune_xscale && !optimize_size)
-+    return 0;
-+
-   if (unsorted_offsets[order[0]] == 0)
-     return 1; /* stmia */
- 
---- gcc-3.4.0/gcc/genpeep.c.arm-ldm-peephole	2003-07-05 01:27:22.000000000 -0400
-+++ gcc-3.4.0/gcc/genpeep.c	2004-04-24 18:18:04.000000000 -0400
-@@ -381,6 +381,7 @@
-   printf ("#include \"recog.h\"\n");
-   printf ("#include \"except.h\"\n\n");
-   printf ("#include \"function.h\"\n\n");
-+  printf ("#include \"flags.h\"\n\n");
- 
-   printf ("#ifdef HAVE_peephole\n");
-   printf ("extern rtx peep_operand[];\n\n");
Index: toolchain/gcc/3.4.5/200-uclibc-locale.patch
===================================================================
--- toolchain/gcc/3.4.5/200-uclibc-locale.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/200-uclibc-locale.patch	(working copy)
@@ -1,3255 +0,0 @@
-diff -urN gcc-3.4.2-dist/libstdc++-v3/acinclude.m4 gcc-3.4.2/libstdc++-v3/acinclude.m4
---- gcc-3.4.2-dist/libstdc++-v3/acinclude.m4	2004-07-15 12:42:45.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/acinclude.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -996,7 +996,7 @@
-   AC_MSG_CHECKING([for C locale to use])
-   GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@],
-     [use MODEL for target locale package],
--    [permit generic|gnu|ieee_1003.1-2001|yes|no|auto])
-+    [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto])
-   
-   # If they didn't use this option switch, or if they specified --enable
-   # with no specific model, we'll have to look for one.  If they
-@@ -1012,6 +1012,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      x*-uclibc*)
-+        enable_clocale_flag=uclibc
-+        ;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1138,6 +1141,41 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      AC_MSG_RESULT(uclibc)
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+      AC_SUBST(glibcxx_MOFILES)
-+      AC_SUBST(glibcxx_POFILES)
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/aclocal.m4 gcc-3.4.2/libstdc++-v3/aclocal.m4
---- gcc-3.4.2-dist/libstdc++-v3/aclocal.m4	2004-08-13 15:44:03.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/aclocal.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -1025,6 +1025,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      x*-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         AC_EGREP_CPP([_GLIBCXX_ok], [
-         #include <features.h>
-@@ -1151,6 +1154,41 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      AC_MSG_RESULT(uclibc)
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no)
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+      AC_SUBST(glibcxx_MOFILES)
-+      AC_SUBST(glibcxx_POFILES)
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c++locale_internal.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,59 @@
-+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
-+
-+// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+// Written by Jakub Jelinek <jakub@redhat.com>
-+
-+#include <clocale>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning clean this up
-+#endif
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+                                                  
-+extern "C" __typeof(iswctype_l) __iswctype_l;
-+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l;
-+extern "C" __typeof(strcoll_l) __strcoll_l;
-+extern "C" __typeof(strftime_l) __strftime_l;
-+extern "C" __typeof(strtod_l) __strtod_l;
-+extern "C" __typeof(strtof_l) __strtof_l;
-+extern "C" __typeof(strtold_l) __strtold_l;
-+extern "C" __typeof(strxfrm_l) __strxfrm_l;
-+extern "C" __typeof(towlower_l) __towlower_l;
-+extern "C" __typeof(towupper_l) __towupper_l;
-+extern "C" __typeof(wcscoll_l) __wcscoll_l;
-+extern "C" __typeof(wcsftime_l) __wcsftime_l;
-+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l;
-+extern "C" __typeof(wctype_l) __wctype_l;
-+extern "C" __typeof(newlocale) __newlocale;
-+extern "C" __typeof(freelocale) __freelocale;
-+extern "C" __typeof(duplocale) __duplocale;
-+extern "C" __typeof(uselocale) __uselocale;
-+
-+#endif // GLIBC 2.3 and later
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,160 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <cerrno>  // For errno
-+#include <locale>
-+#include <stdexcept>
-+#include <langinfo.h>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strtol_l(S, E, B, L)      strtol((S), (E), (B))
-+#define __strtoul_l(S, E, B, L)     strtoul((S), (E), (B))
-+#define __strtoll_l(S, E, B, L)     strtoll((S), (E), (B))
-+#define __strtoull_l(S, E, B, L)    strtoull((S), (E), (B))
-+#define __strtof_l(S, E, L)         strtof((S), (E))
-+#define __strtod_l(S, E, L)         strtod((S), (E))
-+#define __strtold_l(S, E, L)        strtold((S), (E))
-+#warning should dummy __newlocale check for C|POSIX ?
-+#define __newlocale(a, b, c)        NULL
-+#define __freelocale(a)             ((void)0)
-+#define __duplocale(a)              __c_locale()
-+#endif
-+
-+namespace std 
-+{
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, 
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  float __f = __strtof_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __f;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, 
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  double __d = __strtod_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __d;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  template<>
-+    void
-+    __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
-+		   const __c_locale& __cloc)
-+    {
-+      if (!(__err & ios_base::failbit))
-+	{
-+	  char* __sanity;
-+	  errno = 0;
-+	  long double __ld = __strtold_l(__s, &__sanity, __cloc);
-+          if (__sanity != __s && errno != ERANGE)
-+	    __v = __ld;
-+	  else
-+	    __err |= ios_base::failbit;
-+	}
-+    }
-+
-+  void
-+  locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, 
-+				    __c_locale __old)
-+  {
-+    __cloc = __newlocale(1 << LC_ALL, __s, __old);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    if (!__cloc)
-+      {
-+	// This named locale is not supported by the underlying OS.
-+	__throw_runtime_error(__N("locale::facet::_S_create_c_locale "
-+			      "name not valid"));
-+      }
-+#endif
-+  }
-+  
-+  void
-+  locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
-+  {
-+    if (_S_get_c_locale() != __cloc)
-+      __freelocale(__cloc); 
-+  }
-+
-+  __c_locale
-+  locale::facet::_S_clone_c_locale(__c_locale& __cloc)
-+  { return __duplocale(__cloc); }
-+} // namespace std
-+
-+namespace __gnu_cxx
-+{
-+  const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] =
-+    {
-+      "LC_CTYPE", 
-+      "LC_NUMERIC",
-+      "LC_TIME", 
-+      "LC_COLLATE", 
-+      "LC_MONETARY",
-+      "LC_MESSAGES", 
-+#if _GLIBCXX_NUM_CATEGORIES != 0
-+      "LC_PAPER", 
-+      "LC_NAME", 
-+      "LC_ADDRESS",
-+      "LC_TELEPHONE", 
-+      "LC_MEASUREMENT", 
-+      "LC_IDENTIFICATION" 
-+#endif
-+    };
-+}
-+
-+namespace std
-+{
-+  const char* const* const locale::_S_categories = __gnu_cxx::category_names;
-+}  // namespace std
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/c_locale.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/c_locale.h	2004-09-10 10:48:08.000000000 -0500
-@@ -0,0 +1,115 @@
-+// Wrapper for underlying C-language localization -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.8  Standard locale categories.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifndef _C_LOCALE_H
-+#define _C_LOCALE_H 1
-+
-+#pragma GCC system_header
-+
-+#include <cstring>              // get std::strlen
-+#include <cstdio>               // get std::snprintf or std::sprintf
-+#include <clocale>
-+#include <langinfo.h>		// For codecvt
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC_HAS_LOCALE__
-+#include <iconv.h>		// For codecvt using iconv, iconv_t
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+#include <libintl.h> 		// For messages
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning what is _GLIBCXX_C_LOCALE_GNU for
-+#endif
-+#define _GLIBCXX_C_LOCALE_GNU 1
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix categories
-+#endif
-+// #define _GLIBCXX_NUM_CATEGORIES 6
-+#define _GLIBCXX_NUM_CATEGORIES 0
-+ 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+namespace __gnu_cxx
-+{
-+  extern "C" __typeof(uselocale) __uselocale;
-+}
-+#endif
-+
-+namespace std
-+{
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+  typedef __locale_t		__c_locale;
-+#else
-+  typedef int*			__c_locale;
-+#endif
-+
-+  // Convert numeric value of type _Tv to string and return length of
-+  // string.  If snprintf is available use it, otherwise fall back to
-+  // the unsafe sprintf which, in general, can be dangerous and should
-+  // be avoided.
-+  template<typename _Tv>
-+    int
-+    __convert_from_v(char* __out, const int __size, const char* __fmt,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+		     _Tv __v, const __c_locale& __cloc, int __prec)
-+    {
-+      __c_locale __old = __gnu_cxx::__uselocale(__cloc);
-+#else
-+		     _Tv __v, const __c_locale&, int __prec)
-+    {
-+# ifdef __UCLIBC_HAS_LOCALE__
-+      char* __old = std::setlocale(LC_ALL, NULL);
-+      char* __sav = new char[std::strlen(__old) + 1];
-+      std::strcpy(__sav, __old);
-+      std::setlocale(LC_ALL, "C");
-+# endif
-+#endif
-+
-+      const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __gnu_cxx::__uselocale(__old);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      std::setlocale(LC_ALL, __sav);
-+      delete [] __sav;
-+#endif
-+      return __ret;
-+    }
-+}
-+
-+#endif
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/codecvt_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,306 @@
-+// std::codecvt implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.5 - Template class codecvt
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+namespace std
-+{
-+  // Specializations.
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_out(state_type& __state, const intern_type* __from, 
-+	 const intern_type* __from_end, const intern_type*& __from_next,
-+	 extern_type* __to, extern_type* __to_end,
-+	 extern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // wcsnrtombs is *very* fast but stops if encounters NUL characters:
-+    // in case we fall back to wcrtomb and then continue, in a loop.
-+    // NB: wcsnrtombs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0',
-+						      __from_end - __from_next);
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	const size_t __conv = wcsnrtombs(__to_next, &__from_next,
-+					 __from_chunk_end - __from_next,
-+					 __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // wcrtomb.
-+	    for (; __from < __from_next; ++__from)
-+	      __to_next += wcrtomb(__to_next, *__from, &__tmp_state);
-+	    __state = __tmp_state;
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    extern_type __buf[MB_LEN_MAX];
-+	    __tmp_state = __state;
-+	    const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state);
-+	    if (__conv > static_cast<size_t>(__to_end - __to_next))
-+	      __ret = partial;
-+	    else
-+	      {
-+		memcpy(__to_next, __buf, __conv);
-+		__state = __tmp_state;
-+		__to_next += __conv;
-+		++__from_next;
-+	      }
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+  
-+  codecvt_base::result
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_in(state_type& __state, const extern_type* __from, 
-+	const extern_type* __from_end, const extern_type*& __from_next,
-+	intern_type* __to, intern_type* __to_end,
-+	intern_type*& __to_next) const
-+  {
-+    result __ret = ok;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we store a L'\0' and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+    for (__from_next = __from, __to_next = __to;
-+	 __from_next < __from_end && __to_next < __to_end
-+	 && __ret == ok;)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from_next, '\0',
-+								  __from_end
-+								  - __from_next));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __from_end;
-+
-+	__from = __from_next;
-+	size_t __conv = mbsnrtowcs(__to_next, &__from_next,
-+				   __from_chunk_end - __from_next,
-+				   __to_end - __to_next, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (;; ++__to_next, __from += __conv)
-+	      {
-+		__conv = mbrtowc(__to_next, __from, __from_end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __from_next = __from;
-+	    __state = __tmp_state;	    
-+	    __ret = error;
-+	  }
-+	else if (__from_next && __from_next < __from_chunk_end)
-+	  {
-+	    // It is unclear what to return in this case (see DR 382). 
-+	    __to_next += __conv;
-+	    __ret = partial;
-+	  }
-+	else
-+	  {
-+	    __from_next = __from_chunk_end;
-+	    __to_next += __conv;
-+	  }
-+
-+	if (__from_next < __from_end && __ret == ok)
-+	  {
-+	    if (__to_next < __to_end)
-+	      {
-+		// XXX Probably wrong for stateful encodings
-+		__tmp_state = __state;		
-+		++__from_next;
-+		*__to_next++ = L'\0';
-+	      }
-+	    else
-+	      __ret = partial;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_encoding() const throw()
-+  {
-+    // XXX This implementation assumes that the encoding is
-+    // stateless and is either single-byte or variable-width.
-+    int __ret = 0;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    if (MB_CUR_MAX == 1)
-+      __ret = 1;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }  
-+
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_max_length() const throw()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+    // XXX Probably wrong for stateful encodings.
-+    int __ret = MB_CUR_MAX;
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __ret;
-+  }
-+  
-+  int 
-+  codecvt<wchar_t, char, mbstate_t>::
-+  do_length(state_type& __state, const extern_type* __from,
-+	    const extern_type* __end, size_t __max) const
-+  {
-+    int __ret = 0;
-+    state_type __tmp_state(__state);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_codecvt);
-+#endif
-+
-+    // mbsnrtowcs is *very* fast but stops if encounters NUL characters:
-+    // in case we advance past it and then continue, in a loop.
-+    // NB: mbsnrtowcs is a GNU extension
-+  
-+    // A dummy internal buffer is needed in order for mbsnrtocws to consider
-+    // its fourth parameter (it wouldn't with NULL as first parameter).
-+    wchar_t* __to = static_cast<wchar_t*>(__builtin_alloca(sizeof(wchar_t) 
-+							   * __max));
-+    while (__from < __end && __max)
-+      {
-+	const extern_type* __from_chunk_end;
-+	__from_chunk_end = static_cast<const extern_type*>(memchr(__from, '\0',
-+								  __end
-+								  - __from));
-+	if (!__from_chunk_end)
-+	  __from_chunk_end = __end;
-+
-+	const extern_type* __tmp_from = __from;
-+	size_t __conv = mbsnrtowcs(__to, &__from,
-+				   __from_chunk_end - __from,
-+				   __max, &__state);
-+	if (__conv == static_cast<size_t>(-1))
-+	  {
-+	    // In case of error, in order to stop at the exact place we
-+	    // have to start again from the beginning with a series of
-+	    // mbrtowc.
-+	    for (__from = __tmp_from;; __from += __conv)
-+	      {
-+		__conv = mbrtowc(NULL, __from, __end - __from,
-+				 &__tmp_state);
-+		if (__conv == static_cast<size_t>(-1)
-+		    || __conv == static_cast<size_t>(-2))
-+		  break;
-+	      }
-+	    __state = __tmp_state;
-+	    __ret += __from - __tmp_from;
-+	    break;
-+	  }
-+	if (!__from)
-+	  __from = __from_chunk_end;
-+	
-+	__ret += __from - __tmp_from;
-+	__max -= __conv;
-+
-+	if (__from < __end && __max)
-+	  {
-+	    // XXX Probably wrong for stateful encodings
-+	    __tmp_state = __state;
-+	    ++__from;
-+	    ++__ret;
-+	    --__max;
-+	  }
-+      }
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+
-+    return __ret; 
-+  }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/collate_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,80 @@
-+// std::collate implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.4.1.2  collate virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __strcoll_l(S1, S2, L)      strcoll((S1), (S2))
-+#define __strxfrm_l(S1, S2, N, L)   strxfrm((S1), (S2), (N))
-+#define __wcscoll_l(S1, S2, L)      wcscoll((S1), (S2))
-+#define __wcsxfrm_l(S1, S2, N, L)   wcsxfrm((S1), (S2), (N))
-+#endif
-+
-+namespace std
-+{
-+  // These are basically extensions to char_traits, and perhaps should
-+  // be put there instead of here.
-+  template<>
-+    int 
-+    collate<char>::_M_compare(const char* __one, const char* __two) const
-+    { 
-+      int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+  
-+  template<>
-+    size_t
-+    collate<char>::_M_transform(char* __to, const char* __from, 
-+				size_t __n) const 
-+    { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    int 
-+    collate<wchar_t>::_M_compare(const wchar_t* __one, 
-+				 const wchar_t* __two) const
-+    {
-+      int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate);
-+      return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0);
-+    }
-+  
-+  template<>
-+    size_t
-+    collate<wchar_t>::_M_transform(wchar_t* __to, const wchar_t* __from,
-+				   size_t __n) const
-+    { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/ctype_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,300 @@
-+// std::ctype implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.1.1.2  ctype virtual functions.
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __wctype_l(S, L)           wctype((S))
-+#define __towupper_l(C, L)         towupper((C))
-+#define __towlower_l(C, L)         towlower((C))
-+#define __iswctype_l(C, M, L)      iswctype((C), (M))
-+#endif
-+
-+namespace std
-+{
-+  // NB: The other ctype<char> specializations are in src/locale.cc and
-+  // various /config/os/* files.
-+  template<>
-+    ctype_byname<char>::ctype_byname(const char* __s, size_t __refs)
-+    : ctype<char>(0, false, __refs) 
-+    { 		
-+      if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	{
-+	  this->_S_destroy_c_locale(this->_M_c_locale_ctype);
-+	  this->_S_create_c_locale(this->_M_c_locale_ctype, __s); 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper;
-+	  this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower;
-+	  this->_M_table = this->_M_c_locale_ctype->__ctype_b;
-+#endif
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T  
-+  ctype<wchar_t>::__wmask_type
-+  ctype<wchar_t>::_M_convert_to_wmask(const mask __m) const
-+  {
-+    __wmask_type __ret;
-+    switch (__m)
-+      {
-+      case space:
-+	__ret = __wctype_l("space", _M_c_locale_ctype);
-+	break;
-+      case print:
-+	__ret = __wctype_l("print", _M_c_locale_ctype);
-+	break;
-+      case cntrl:
-+	__ret = __wctype_l("cntrl", _M_c_locale_ctype);
-+	break;
-+      case upper:
-+	__ret = __wctype_l("upper", _M_c_locale_ctype);
-+	break;
-+      case lower:
-+	__ret = __wctype_l("lower", _M_c_locale_ctype);
-+	break;
-+      case alpha:
-+	__ret = __wctype_l("alpha", _M_c_locale_ctype);
-+	break;
-+      case digit:
-+	__ret = __wctype_l("digit", _M_c_locale_ctype);
-+	break;
-+      case punct:
-+	__ret = __wctype_l("punct", _M_c_locale_ctype);
-+	break;
-+      case xdigit:
-+	__ret = __wctype_l("xdigit", _M_c_locale_ctype);
-+	break;
-+      case alnum:
-+	__ret = __wctype_l("alnum", _M_c_locale_ctype);
-+	break;
-+      case graph:
-+	__ret = __wctype_l("graph", _M_c_locale_ctype);
-+	break;
-+      default:
-+	__ret = 0;
-+      }
-+    return __ret;
-+  }
-+  
-+  wchar_t
-+  ctype<wchar_t>::do_toupper(wchar_t __c) const
-+  { return __towupper_l(__c, _M_c_locale_ctype); }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::do_toupper(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towupper_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+  
-+  wchar_t
-+  ctype<wchar_t>::do_tolower(wchar_t __c) const
-+  { return __towlower_l(__c, _M_c_locale_ctype); }
-+  
-+  const wchar_t*
-+  ctype<wchar_t>::do_tolower(wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi)
-+      {
-+        *__lo = __towlower_l(*__lo, _M_c_locale_ctype);
-+        ++__lo;
-+      }
-+    return __hi;
-+  }
-+
-+  bool
-+  ctype<wchar_t>::
-+  do_is(mask __m, wchar_t __c) const
-+  { 
-+    // Highest bitmask in ctype_base == 10, but extra in "C"
-+    // library for blank.
-+    bool __ret = false;
-+    const size_t __bitmasksize = 11; 
-+    for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+      if (__m & _M_bit[__bitcur]
-+	  && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	{
-+	  __ret = true;
-+	  break;
-+	}
-+    return __ret;    
-+  }
-+  
-+  const wchar_t* 
-+  ctype<wchar_t>::
-+  do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
-+  {
-+    for (; __lo < __hi; ++__vec, ++__lo)
-+      {
-+	// Highest bitmask in ctype_base == 10, but extra in "C"
-+	// library for blank.
-+	const size_t __bitmasksize = 11; 
-+	mask __m = 0;
-+	for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
-+	  if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype))
-+	    __m |= _M_bit[__bitcur];
-+	*__vec = __m;
-+      }
-+    return __hi;
-+  }
-+  
-+  const wchar_t* 
-+  ctype<wchar_t>::
-+  do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const
-+  {
-+    while (__lo < __hi && !this->do_is(__m, *__lo))
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
-+  {
-+    while (__lo < __hi && this->do_is(__m, *__lo) != 0)
-+      ++__lo;
-+    return __lo;
-+  }
-+
-+  wchar_t
-+  ctype<wchar_t>::
-+  do_widen(char __c) const
-+  { return _M_widen[static_cast<unsigned char>(__c)]; }
-+
-+  const char* 
-+  ctype<wchar_t>::
-+  do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const
-+  {
-+    while (__lo < __hi)
-+      {
-+	*__dest = _M_widen[static_cast<unsigned char>(*__lo)];
-+	++__lo;
-+	++__dest;
-+      }
-+    return __hi;
-+  }
-+
-+  char
-+  ctype<wchar_t>::
-+  do_narrow(wchar_t __wc, char __dfault) const
-+  {
-+    if (__wc >= 0 && __wc < 128 && _M_narrow_ok)
-+      return _M_narrow[__wc];
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    const int __c = wctob(__wc);
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return (__c == EOF ? __dfault : static_cast<char>(__c)); 
-+  }
-+
-+  const wchar_t*
-+  ctype<wchar_t>::
-+  do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, 
-+	    char* __dest) const
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    if (_M_narrow_ok)
-+      while (__lo < __hi)
-+	{
-+	  if (*__lo >= 0 && *__lo < 128)
-+	    *__dest = _M_narrow[*__lo];
-+	  else
-+	    {
-+	      const int __c = wctob(*__lo);
-+	      *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	    }
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+    else
-+      while (__lo < __hi)
-+	{
-+	  const int __c = wctob(*__lo);
-+	  *__dest = (__c == EOF ? __dfault : static_cast<char>(__c));
-+	  ++__lo;
-+	  ++__dest;
-+	}
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+    return __hi;
-+  }
-+
-+  void
-+  ctype<wchar_t>::_M_initialize_ctype()
-+  {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __c_locale __old = __uselocale(_M_c_locale_ctype);
-+#endif
-+    wint_t __i;
-+    for (__i = 0; __i < 128; ++__i)
-+      {
-+	const int __c = wctob(__i);
-+	if (__c == EOF)
-+	  break;
-+	else
-+	  _M_narrow[__i] = static_cast<char>(__c);
-+      }
-+    if (__i == 128)
-+      _M_narrow_ok = true;
-+    else
-+      _M_narrow_ok = false;
-+    for (size_t __j = 0;
-+	 __j < sizeof(_M_widen) / sizeof(wint_t); ++__j)
-+      _M_widen[__j] = btowc(__j);
-+
-+    for (size_t __k = 0; __k <= 11; ++__k)
-+      { 
-+	_M_bit[__k] = static_cast<mask>(_ISbit(__k));
-+	_M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]);
-+      }
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+    __uselocale(__old);
-+#endif
-+  }
-+#endif //  _GLIBCXX_USE_WCHAR_T
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,100 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix gettext stuff
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__dcgettext(const char *domainname,
-+			     const char *msgid, int category);
-+#undef gettext
-+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES)
-+#else
-+#undef gettext
-+#define gettext(msgid) (msgid)
-+#endif
-+
-+namespace std
-+{
-+  // Specializations.
-+  template<>
-+    string
-+    messages<char>::do_get(catalog, int, int, const string& __dfault) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      const char* __msg = const_cast<const char*>(gettext(__dfault.c_str()));
-+      __uselocale(__old);
-+      return string(__msg);
-+#elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      const char* __msg = gettext(__dfault.c_str());
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return string(__msg);
-+#else
-+      const char* __msg = gettext(__dfault.c_str());
-+      return string(__msg);
-+#endif
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    wstring
-+    messages<wchar_t>::do_get(catalog, int, int, const wstring& __dfault) const
-+    {
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+      __c_locale __old = __uselocale(_M_c_locale_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      __uselocale(__old);
-+      return _M_convert_from_char(__msg);
-+# elif defined __UCLIBC_HAS_LOCALE__
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_messages);
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+      return _M_convert_from_char(__msg);
-+# else
-+      char* __msg = gettext(_M_convert_to_char(__dfault));
-+      return _M_convert_from_char(__msg);
-+# endif
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/messages_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/messages_members.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,118 @@
-+// std::messages implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.7.1.2  messages functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix prototypes for *textdomain funcs
-+#endif
-+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
-+extern "C" char *__textdomain(const char *domainname);
-+extern "C" char *__bindtextdomain(const char *domainname,
-+				  const char *dirname);
-+#else
-+#undef __textdomain
-+#undef __bindtextdomain
-+#define __textdomain(D)           ((void)0)
-+#define __bindtextdomain(D,P)     ((void)0)
-+#endif
-+
-+  // Non-virtual member functions.
-+  template<typename _CharT>
-+     messages<_CharT>::messages(size_t __refs)
-+     : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), 
-+     _M_name_messages(_S_get_c_name())
-+     { }
-+
-+  template<typename _CharT>
-+     messages<_CharT>::messages(__c_locale __cloc, const char* __s, 
-+				size_t __refs) 
-+     : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
-+     _M_name_messages(__s)
-+     {
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       _M_name_messages = __tmp;
-+     }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog 
-+    messages<_CharT>::open(const basic_string<char>& __s, const locale& __loc, 
-+			   const char* __dir) const
-+    { 
-+      __bindtextdomain(__s.c_str(), __dir);
-+      return this->do_open(__s, __loc); 
-+    }
-+
-+  // Virtual member functions.
-+  template<typename _CharT>
-+    messages<_CharT>::~messages()
-+    { 
-+      if (_M_name_messages != _S_get_c_name())
-+	delete [] _M_name_messages;
-+      _S_destroy_c_locale(_M_c_locale_messages); 
-+    }
-+
-+  template<typename _CharT>
-+    typename messages<_CharT>::catalog 
-+    messages<_CharT>::do_open(const basic_string<char>& __s, 
-+			      const locale&) const
-+    { 
-+      // No error checking is done, assume the catalog exists and can
-+      // be used.
-+      __textdomain(__s.c_str());
-+      return 0;
-+    }
-+
-+  template<typename _CharT>
-+    void    
-+    messages<_CharT>::do_close(catalog) const 
-+    { }
-+
-+   // messages_byname
-+   template<typename _CharT>
-+     messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs)
-+     : messages<_CharT>(__refs) 
-+     { 
-+       if (this->_M_name_messages != locale::facet::_S_get_c_name())
-+	 delete [] this->_M_name_messages;
-+       char* __tmp = new char[std::strlen(__s) + 1];
-+       std::strcpy(__tmp, __s);
-+       this->_M_name_messages = __tmp;
-+
-+       if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)
-+	 {
-+	   this->_S_destroy_c_locale(this->_M_c_locale_messages);
-+	   this->_S_create_c_locale(this->_M_c_locale_messages, __s); 
-+	 }
-+     }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,698 @@
-+// std::moneypunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.6.3.2  moneypunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning optimize this for uclibc
-+#warning tailor for stub locale support
-+#endif
-+
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  // Construct and return valid pattern consisting of some combination of:
-+  // space none symbol sign value
-+  money_base::pattern
-+  money_base::_S_construct_pattern(char __precedes, char __space, char __posn)
-+  { 
-+    pattern __ret;
-+
-+    // This insanely complicated routine attempts to construct a valid
-+    // pattern for use with monyepunct. A couple of invariants:
-+
-+    // if (__precedes) symbol -> value
-+    // else value -> symbol
-+    
-+    // if (__space) space
-+    // else none
-+
-+    // none == never first
-+    // space never first or last
-+
-+    // Any elegant implementations of this are welcome.
-+    switch (__posn)
-+      {
-+      case 0:
-+      case 1:
-+	// 1 The sign precedes the value and symbol.
-+	__ret.field[0] = sign;
-+	if (__space)
-+	  {
-+	    // Pattern starts with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[3] = symbol;
-+	      }
-+	    __ret.field[2] = space;
-+	  }
-+	else
-+	  {
-+	    // Pattern starts with sign and ends with none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 2:
-+	// 2 The sign follows the value and symbol.
-+	if (__space)
-+	  {
-+	    // Pattern either ends with sign.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[2] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[2] = symbol;
-+	      }
-+	    __ret.field[1] = space;
-+	    __ret.field[3] = sign;
-+	  }
-+	else
-+	  {
-+	    // Pattern ends with sign then none.
-+	    if (__precedes)
-+	      {
-+		__ret.field[0] = symbol;
-+		__ret.field[1] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[0] = value;
-+		__ret.field[1] = symbol;
-+	      }
-+	    __ret.field[2] = sign;
-+	    __ret.field[3] = none;
-+	  }
-+	break;
-+      case 3:
-+	// 3 The sign immediately precedes the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = sign;
-+	    __ret.field[1] = symbol;	    
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;		
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = symbol;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = sign;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      case 4:
-+	// 4 The sign immediately follows the symbol.
-+	if (__precedes)
-+	  {
-+	    __ret.field[0] = symbol;
-+	    __ret.field[1] = sign;
-+	    if (__space)
-+	      {
-+		__ret.field[2] = space;
-+		__ret.field[3] = value;
-+	      }
-+	    else
-+	      {
-+		__ret.field[2] = value;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	else
-+	  {
-+	    __ret.field[0] = value;
-+	    if (__space)
-+	      {
-+		__ret.field[1] = space;
-+		__ret.field[2] = symbol;
-+		__ret.field[3] = sign;
-+	      }
-+	    else
-+	      {
-+		__ret.field[1] = symbol;
-+		__ret.field[2] = sign;
-+		__ret.field[3] = none;
-+	      }
-+	  }
-+	break;
-+      default:
-+	;
-+      }
-+    return __ret;
-+  }
-+
-+  template<> 
-+    void
-+    moneypunct<char, true>::_M_initialize_moneypunct(__c_locale __cloc, 
-+						     const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, 
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == true
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+	}
-+    }
-+
-+  template<> 
-+    void
-+    moneypunct<char, false>::_M_initialize_moneypunct(__c_locale __cloc, 
-+						      const char*)
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<char, false>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = "";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = "";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = "";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    _M_data->_M_atoms[__i] = money_base::_S_atoms[__i];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, 
-+							__cloc));
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	  _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign);
-+
-+	  char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  if (!__nposn)
-+	    _M_data->_M_negative_sign = "()";
-+	  else
-+	    _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN,
-+							__cloc);
-+	  _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign);
-+
-+	  // _Intl == false
-+	  _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+	  _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol);
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+	}
-+    }
-+
-+  template<> 
-+    moneypunct<char, true>::~moneypunct()
-+    { delete _M_data; }
-+
-+  template<> 
-+    moneypunct<char, false>::~moneypunct()
-+    { delete _M_data; }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<> 
-+    void
-+    moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale __cloc, 
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+							const char*)
-+#else
-+							const char* __name)
-+#endif
-+    {
-+      if (!_M_data)
-+	_M_data = new __moneypunct_cache<wchar_t, true>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
-+	      _M_data->_M_atoms[__i] = btowc(uc);
-+	    }
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc));
-+	  try
-+	    {
-+	      mbstate_t __state;
-+	      size_t __len = strlen(__cpossign);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+	      _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+	      
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{ 
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+	      _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+	      
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+	      _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+	  catch (...)
-+	    {
-+	      delete _M_data;
-+	      _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;	      
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+	      __throw_exception_again;
-+	    } 
-+	  
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, 
-+						      __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+							__pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+							__nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<> 
-+  void
-+  moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale __cloc,
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+						       const char*)
-+#else
-+                                                       const char* __name)
-+#endif
-+  {
-+    if (!_M_data)
-+      _M_data = new __moneypunct_cache<wchar_t, false>;
-+
-+    if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+	  _M_data->_M_grouping = "";
-+          _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_curr_symbol = L"";
-+	  _M_data->_M_curr_symbol_size = 0;
-+	  _M_data->_M_positive_sign = L"";
-+	  _M_data->_M_positive_sign_size = 0;
-+	  _M_data->_M_negative_sign = L"";
-+	  _M_data->_M_negative_sign_size = 0;
-+	  _M_data->_M_frac_digits = 0;
-+	  _M_data->_M_pos_format = money_base::_S_default_pattern;
-+	  _M_data->_M_neg_format = money_base::_S_default_pattern;
-+
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < money_base::_S_end; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(money_base::_S_atoms[__i]);
-+	      _M_data->_M_atoms[__i] = btowc(uc);
-+	    }
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(__cloc);
-+#else
-+	  // Switch to named locale so that mbsrtowcs will work.
-+	  char* __old = strdup(setlocale(LC_ALL, NULL));
-+	  setlocale(LC_ALL, __name);
-+#endif
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this... should be monetary
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+	  _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc);
-+          _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+
-+	  const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc);
-+	  const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc);
-+	  const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc);
-+
-+	  wchar_t* __wcs_ps = 0;
-+	  wchar_t* __wcs_ns = 0;
-+	  const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc));
-+	  try
-+            {
-+              mbstate_t __state;
-+              size_t __len;
-+              __len = strlen(__cpossign);
-+              if (__len)
-+                {
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ps = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state);
-+		  _M_data->_M_positive_sign = __wcs_ps;
-+		}
-+	      else
-+		_M_data->_M_positive_sign = L"";
-+              _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign);
-+	      
-+	      __len = strlen(__cnegsign);
-+	      if (!__nposn)
-+		_M_data->_M_negative_sign = L"()";
-+	      else if (__len)
-+		{ 
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  __wcs_ns = new wchar_t[__len];
-+		  mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state);
-+		  _M_data->_M_negative_sign = __wcs_ns;
-+		}
-+	      else
-+		_M_data->_M_negative_sign = L"";
-+              _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign);
-+
-+	      // _Intl == true.
-+	      __len = strlen(__ccurr);
-+	      if (__len)
-+		{
-+		  ++__len;
-+		  memset(&__state, 0, sizeof(mbstate_t));
-+		  wchar_t* __wcs = new wchar_t[__len];
-+		  mbsrtowcs(__wcs, &__ccurr, __len, &__state);
-+		  _M_data->_M_curr_symbol = __wcs;
-+		}
-+	      else
-+		_M_data->_M_curr_symbol = L"";
-+              _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol);
-+	    }
-+          catch (...)
-+	    {
-+	      delete _M_data;
-+              _M_data = 0;
-+	      delete __wcs_ps;
-+	      delete __wcs_ns;	      
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	      __uselocale(__old);
-+#else
-+	      setlocale(LC_ALL, __old);
-+	      free(__old);
-+#endif
-+              __throw_exception_again;
-+	    }
-+
-+	  _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc));
-+	  char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc));
-+	  char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc));
-+	  char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc));
-+	  _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, 
-+	                                                __pposn);
-+	  char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc));
-+	  char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
-+	  _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, 
-+	                                                __nposn);
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#else
-+	  setlocale(LC_ALL, __old);
-+	  free(__old);
-+#endif
-+	}
-+    }
-+
-+  template<> 
-+    moneypunct<wchar_t, true>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+
-+  template<> 
-+    moneypunct<wchar_t, false>::~moneypunct()
-+    {
-+      if (_M_data->_M_positive_sign_size)
-+	delete [] _M_data->_M_positive_sign;
-+      if (_M_data->_M_negative_sign_size
-+          && wcscmp(_M_data->_M_negative_sign, L"()") != 0)
-+	delete [] _M_data->_M_negative_sign;
-+      if (_M_data->_M_curr_symbol_size)
-+	delete [] _M_data->_M_curr_symbol;
-+      delete _M_data;
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,183 @@
-+// std::numpunct implementation details, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.3.1.2  numpunct virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#define _LIBC
-+#include <locale>
-+#undef _LIBC
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<> 
-+    void
-+    numpunct<char>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = '.';
-+	  _M_data->_M_thousands_sep = ',';
-+
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i];
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j];
-+	}
-+      else
-+	{
-+	  // Named locale.
-+	  _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, 
-+							__cloc));
-+	  _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, 
-+							__cloc));
-+
-+	  // Check for NULL, which implies no grouping.
-+	  if (_M_data->_M_thousands_sep == '\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = "true";
-+      _M_data->_M_truename_size = strlen(_M_data->_M_truename);
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = "false";
-+      _M_data->_M_falsename_size = strlen(_M_data->_M_falsename);
-+    }
-+ 
-+  template<> 
-+    numpunct<char>::~numpunct()
-+    { delete _M_data; }
-+   
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<> 
-+    void
-+    numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __numpunct_cache<wchar_t>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_data->_M_grouping = "";
-+	  _M_data->_M_grouping_size = 0;
-+	  _M_data->_M_use_grouping = false;
-+
-+	  _M_data->_M_decimal_point = L'.';
-+	  _M_data->_M_thousands_sep = L',';
-+
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __c_locale __old = __uselocale(_S_get_c_locale());
-+#endif
-+	  // Use ctype::widen code without the facet...
-+	  unsigned char uc;
-+	  for (size_t __i = 0; __i < __num_base::_S_oend; ++__i)
-+	    {
-+	      uc = static_cast<unsigned char>(__num_base::_S_atoms_out[__i]);
-+	      _M_data->_M_atoms_out[__i] = btowc(uc);
-+	    }
-+
-+	  for (size_t __j = 0; __j < __num_base::_S_iend; ++__j)
-+	    {
-+	      uc = static_cast<unsigned char>(__num_base::_S_atoms_in[__j]);
-+	      _M_data->_M_atoms_in[__j] = btowc(uc);
-+	    }
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+	  __uselocale(__old);
-+#endif
-+	}
-+      else
-+	{
-+	  // Named locale.
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning fix this
-+#endif
-+#ifdef __UCLIBC__
-+# ifdef __UCLIBC_HAS_XLOCALE__
-+	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
-+# else
-+	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
-+	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
-+# endif
-+#else
-+	  union __s_and_w { const char *__s; unsigned int __w; } __u;
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
-+	  _M_data->_M_decimal_point = static_cast<wchar_t>(__u.__w);
-+
-+	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
-+	  _M_data->_M_thousands_sep = static_cast<wchar_t>(__u.__w);
-+#endif
-+
-+	  if (_M_data->_M_thousands_sep == L'\0')
-+	    _M_data->_M_grouping = "";
-+	  else
-+	    _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc);
-+	  _M_data->_M_grouping_size = strlen(_M_data->_M_grouping);
-+	}
-+
-+      // NB: There is no way to extact this info from posix locales.
-+      // _M_truename = __nl_langinfo_l(YESSTR, __cloc);
-+      _M_data->_M_truename = L"true";
-+      _M_data->_M_truename_size = wcslen(_M_data->_M_truename);
-+      // _M_falsename = __nl_langinfo_l(NOSTR, __cloc);
-+      _M_data->_M_falsename = L"false";
-+      _M_data->_M_falsename_size = wcslen(_M_data->_M_falsename);
-+    }
-+
-+  template<> 
-+    numpunct<wchar_t>::~numpunct()
-+    { delete _M_data; }
-+ #endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.cc	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.cc	2004-09-10 10:48:00.000000000 -0500
-@@ -0,0 +1,356 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+#include <locale>
-+#include <bits/c++locale_internal.h>
-+
-+#ifdef __UCLIBC_MJN3_ONLY__
-+#warning tailor for stub locale support
-+#endif
-+#ifndef __UCLIBC_HAS_XLOCALE__
-+#define __nl_langinfo_l(N, L)         nl_langinfo((N))
-+#endif
-+
-+namespace std
-+{
-+  template<>
-+    void
-+    __timepunct<char>::
-+    _M_put(char* __s, size_t __maxlen, const char* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      const size_t __len = __strftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = strftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = '\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<char>;
-+
-+      if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = "%m/%d/%y";
-+	  _M_data->_M_date_era_format = "%m/%d/%y";
-+	  _M_data->_M_time_format = "%H:%M:%S";
-+	  _M_data->_M_time_era_format = "%H:%M:%S";
-+	  _M_data->_M_date_time_format = "";
-+	  _M_data->_M_date_time_era_format = "";
-+	  _M_data->_M_am = "AM";
-+	  _M_data->_M_pm = "PM";
-+	  _M_data->_M_am_pm_format = "";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = "Sunday";
-+	  _M_data->_M_day2 = "Monday";
-+	  _M_data->_M_day3 = "Tuesday";
-+	  _M_data->_M_day4 = "Wednesday";
-+	  _M_data->_M_day5 = "Thursday";
-+	  _M_data->_M_day6 = "Friday";
-+	  _M_data->_M_day7 = "Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = "Sun";
-+	  _M_data->_M_aday2 = "Mon";
-+	  _M_data->_M_aday3 = "Tue";
-+	  _M_data->_M_aday4 = "Wed";
-+	  _M_data->_M_aday5 = "Thu";
-+	  _M_data->_M_aday6 = "Fri";
-+	  _M_data->_M_aday7 = "Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = "January";
-+	  _M_data->_M_month02 = "February";
-+	  _M_data->_M_month03 = "March";
-+	  _M_data->_M_month04 = "April";
-+	  _M_data->_M_month05 = "May";
-+	  _M_data->_M_month06 = "June";
-+	  _M_data->_M_month07 = "July";
-+	  _M_data->_M_month08 = "August";
-+	  _M_data->_M_month09 = "September";
-+	  _M_data->_M_month10 = "October";
-+	  _M_data->_M_month11 = "November";
-+	  _M_data->_M_month12 = "December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = "Jan";
-+	  _M_data->_M_amonth02 = "Feb";
-+	  _M_data->_M_amonth03 = "Mar";
-+	  _M_data->_M_amonth04 = "Apr";
-+	  _M_data->_M_amonth05 = "May";
-+	  _M_data->_M_amonth06 = "Jun";
-+	  _M_data->_M_amonth07 = "Jul";
-+	  _M_data->_M_amonth08 = "Aug";
-+	  _M_data->_M_amonth09 = "Sep";
-+	  _M_data->_M_amonth10 = "Oct";
-+	  _M_data->_M_amonth11 = "Nov";
-+	  _M_data->_M_amonth12 = "Dec";
-+	}
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc);
-+	  _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc);
-+	  _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc);
-+	  _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc);
-+	  _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc);
-+	  _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, __cloc);
-+	  _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc);
-+	  _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc);
-+	  _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc);
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc);
-+	  _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc);
-+	  _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc);
-+	  _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc);
-+	  _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc);
-+	  _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc);
-+	  _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc);
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc);
-+	  _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc);
-+	  _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc);
-+	  _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc);
-+	  _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc);
-+	  _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc);
-+	  _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc);
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc);
-+	  _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc);
-+	  _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc);
-+	  _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc);
-+	  _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc);
-+	  _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc);
-+	  _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc);
-+	  _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc);
-+	  _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc);
-+	  _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc);
-+	  _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc);
-+	  _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc);
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc);
-+	  _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc);
-+	  _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc);
-+	  _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc);
-+	  _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc);
-+	  _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc);
-+	  _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc);
-+	  _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc);
-+	  _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc);
-+	  _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc);
-+	  _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc);
-+	  _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc);
-+	}
-+    }
-+
-+#ifdef _GLIBCXX_USE_WCHAR_T
-+  template<>
-+    void
-+    __timepunct<wchar_t>::
-+    _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, 
-+	   const tm* __tm) const
-+    {
-+#ifdef __UCLIBC_HAS_XLOCALE__
-+      __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct);
-+      const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm,
-+					_M_c_locale_timepunct);
-+#else
-+      char* __old = strdup(setlocale(LC_ALL, NULL));
-+      setlocale(LC_ALL, _M_name_timepunct);
-+      const size_t __len = wcsftime(__s, __maxlen, __format, __tm);
-+      setlocale(LC_ALL, __old);
-+      free(__old);
-+#endif
-+      // Make sure __s is null terminated.
-+      if (__len == 0)
-+	__s[0] = L'\0';
-+    }
-+
-+  template<> 
-+    void
-+    __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc)
-+    {
-+      if (!_M_data)
-+	_M_data = new __timepunct_cache<wchar_t>;
-+
-+#warning wide time stuff
-+//       if (!__cloc)
-+	{
-+	  // "C" locale
-+	  _M_c_locale_timepunct = _S_get_c_locale();
-+
-+	  _M_data->_M_date_format = L"%m/%d/%y";
-+	  _M_data->_M_date_era_format = L"%m/%d/%y";
-+	  _M_data->_M_time_format = L"%H:%M:%S";
-+	  _M_data->_M_time_era_format = L"%H:%M:%S";
-+	  _M_data->_M_date_time_format = L"";
-+	  _M_data->_M_date_time_era_format = L"";
-+	  _M_data->_M_am = L"AM";
-+	  _M_data->_M_pm = L"PM";
-+	  _M_data->_M_am_pm_format = L"";
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = L"Sunday";
-+	  _M_data->_M_day2 = L"Monday";
-+	  _M_data->_M_day3 = L"Tuesday";
-+	  _M_data->_M_day4 = L"Wednesday";
-+	  _M_data->_M_day5 = L"Thursday";
-+	  _M_data->_M_day6 = L"Friday";
-+	  _M_data->_M_day7 = L"Saturday";
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = L"Sun";
-+	  _M_data->_M_aday2 = L"Mon";
-+	  _M_data->_M_aday3 = L"Tue";
-+	  _M_data->_M_aday4 = L"Wed";
-+	  _M_data->_M_aday5 = L"Thu";
-+	  _M_data->_M_aday6 = L"Fri";
-+	  _M_data->_M_aday7 = L"Sat";
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = L"January";
-+	  _M_data->_M_month02 = L"February";
-+	  _M_data->_M_month03 = L"March";
-+	  _M_data->_M_month04 = L"April";
-+	  _M_data->_M_month05 = L"May";
-+	  _M_data->_M_month06 = L"June";
-+	  _M_data->_M_month07 = L"July";
-+	  _M_data->_M_month08 = L"August";
-+	  _M_data->_M_month09 = L"September";
-+	  _M_data->_M_month10 = L"October";
-+	  _M_data->_M_month11 = L"November";
-+	  _M_data->_M_month12 = L"December";
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = L"Jan";
-+	  _M_data->_M_amonth02 = L"Feb";
-+	  _M_data->_M_amonth03 = L"Mar";
-+	  _M_data->_M_amonth04 = L"Apr";
-+	  _M_data->_M_amonth05 = L"May";
-+	  _M_data->_M_amonth06 = L"Jun";
-+	  _M_data->_M_amonth07 = L"Jul";
-+	  _M_data->_M_amonth08 = L"Aug";
-+	  _M_data->_M_amonth09 = L"Sep";
-+	  _M_data->_M_amonth10 = L"Oct";
-+	  _M_data->_M_amonth11 = L"Nov";
-+	  _M_data->_M_amonth12 = L"Dec";
-+	}
-+#if 0
-+      else
-+	{
-+	  _M_c_locale_timepunct = _S_clone_c_locale(__cloc); 
-+
-+	  _M_data->_M_date_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_FMT, __cloc));
-+	  _M_data->_M_date_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_FMT, __cloc));
-+	  _M_data->_M_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT, __cloc));
-+	  _M_data->_M_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_T_FMT, __cloc));
-+	  _M_data->_M_date_time_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WD_T_FMT, __cloc));
-+	  _M_data->_M_date_time_era_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc));
-+	  _M_data->_M_am = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WAM_STR, __cloc));
-+	  _M_data->_M_pm = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WPM_STR, __cloc));
-+	  _M_data->_M_am_pm_format = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc));
-+
-+	  // Day names, starting with "C"'s Sunday.
-+	  _M_data->_M_day1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_1, __cloc));
-+	  _M_data->_M_day2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_2, __cloc));
-+	  _M_data->_M_day3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_3, __cloc));
-+	  _M_data->_M_day4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_4, __cloc));
-+	  _M_data->_M_day5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_5, __cloc));
-+	  _M_data->_M_day6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_6, __cloc));
-+	  _M_data->_M_day7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WDAY_7, __cloc));
-+
-+	  // Abbreviated day names, starting with "C"'s Sun.
-+	  _M_data->_M_aday1 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_1, __cloc));
-+	  _M_data->_M_aday2 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_2, __cloc));
-+	  _M_data->_M_aday3 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_3, __cloc));
-+	  _M_data->_M_aday4 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_4, __cloc));
-+	  _M_data->_M_aday5 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_5, __cloc));
-+	  _M_data->_M_aday6 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_6, __cloc));
-+	  _M_data->_M_aday7 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABDAY_7, __cloc));
-+
-+	  // Month names, starting with "C"'s January.
-+	  _M_data->_M_month01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_1, __cloc));
-+	  _M_data->_M_month02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_2, __cloc));
-+	  _M_data->_M_month03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_3, __cloc));
-+	  _M_data->_M_month04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_4, __cloc));
-+	  _M_data->_M_month05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_5, __cloc));
-+	  _M_data->_M_month06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_6, __cloc));
-+	  _M_data->_M_month07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_7, __cloc));
-+	  _M_data->_M_month08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_8, __cloc));
-+	  _M_data->_M_month09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_9, __cloc));
-+	  _M_data->_M_month10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_10, __cloc));
-+	  _M_data->_M_month11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_11, __cloc));
-+	  _M_data->_M_month12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WMON_12, __cloc));
-+
-+	  // Abbreviated month names, starting with "C"'s Jan.
-+	  _M_data->_M_amonth01 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_1, __cloc));
-+	  _M_data->_M_amonth02 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_2, __cloc));
-+	  _M_data->_M_amonth03 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_3, __cloc));
-+	  _M_data->_M_amonth04 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_4, __cloc));
-+	  _M_data->_M_amonth05 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_5, __cloc));
-+	  _M_data->_M_amonth06 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_6, __cloc));
-+	  _M_data->_M_amonth07 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_7, __cloc));
-+	  _M_data->_M_amonth08 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_8, __cloc));
-+	  _M_data->_M_amonth09 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_9, __cloc));
-+	  _M_data->_M_amonth10 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_10, __cloc));
-+	  _M_data->_M_amonth11 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_11, __cloc));
-+	  _M_data->_M_amonth12 = reinterpret_cast<wchar_t*>(__nl_langinfo_l(_NL_WABMON_12, __cloc));
-+	}
-+#endif // 0
-+    }
-+#endif
-+}
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h
---- gcc-3.4.2-dist/libstdc++-v3/config/locale/uclibc/time_members.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/locale/uclibc/time_members.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,68 @@
-+// std::time_get, std::time_put implementation, GNU version -*- C++ -*-
-+
-+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.2.5.1.2 - time_get functions
-+// ISO C++ 14882: 22.2.5.3.2 - time_put functions
-+//
-+
-+// Written by Benjamin Kosnik <bkoz@redhat.com>
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(size_t __refs) 
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) 
-+    : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(_S_get_c_name())
-+    { _M_initialize_timepunct(); }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
-+				     size_t __refs) 
-+    : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), 
-+    _M_name_timepunct(__s)
-+    { 
-+      char* __tmp = new char[std::strlen(__s) + 1];
-+      std::strcpy(__tmp, __s);
-+      _M_name_timepunct = __tmp;
-+      _M_initialize_timepunct(__cloc); 
-+    }
-+
-+  template<typename _CharT>
-+    __timepunct<_CharT>::~__timepunct()
-+    { 
-+      if (_M_name_timepunct != _S_get_c_name())
-+	delete [] _M_name_timepunct;
-+      delete _M_data; 
-+      _S_destroy_c_locale(_M_c_locale_timepunct); 
-+    }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_base.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_base.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,58 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003
-+// Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// Information as gleaned from /usr/include/ctype.h
-+  
-+  struct ctype_base
-+  {
-+    // Note: In uClibc, the following two types depend on configuration.
-+ 
-+    // Non-standard typedefs.
-+    typedef const __ctype_touplow_t* __to_type;
-+
-+    // NB: Offsets into ctype<char>::_M_table force a particular size
-+    // on the mask type. Because of this, we don't use an enum.
-+    typedef __ctype_mask_t	mask;   
-+    static const mask upper    	= _ISupper;
-+    static const mask lower 	= _ISlower;
-+    static const mask alpha 	= _ISalpha;
-+    static const mask digit 	= _ISdigit;
-+    static const mask xdigit 	= _ISxdigit;
-+    static const mask space 	= _ISspace;
-+    static const mask print 	= _ISprint;
-+    static const mask graph 	= _ISalpha | _ISdigit | _ISpunct;
-+    static const mask cntrl 	= _IScntrl;
-+    static const mask punct 	= _ISpunct;
-+    static const mask alnum 	= _ISalpha | _ISdigit;
-+  };
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_inline.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,69 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 2000, 2002 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*)
-+// functions go in ctype.cc
-+  
-+  bool
-+  ctype<char>::
-+  is(mask __m, char __c) const
-+  { return _M_table[static_cast<unsigned char>(__c)] & __m; }
-+
-+  const char*
-+  ctype<char>::
-+  is(const char* __low, const char* __high, mask* __vec) const
-+  {
-+    while (__low < __high)
-+      *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
-+    return __high;
-+  }
-+
-+  const char*
-+  ctype<char>::
-+  scan_is(mask __m, const char* __low, const char* __high) const
-+  {
-+    while (__low < __high 
-+	   && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
-+      ++__low;
-+    return __low;
-+  }
-+
-+  const char*
-+  ctype<char>::
-+  scan_not(mask __m, const char* __low, const char* __high) const
-+  {
-+    while (__low < __high 
-+	   && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
-+      ++__low;
-+    return __low;
-+  }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/ctype_noninline.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,92 @@
-+// Locale support -*- C++ -*-
-+
-+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
-+// Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+//
-+// ISO C++ 14882: 22.1  Locales
-+//
-+  
-+// Information as gleaned from /usr/include/ctype.h
-+
-+  const ctype_base::mask*
-+  ctype<char>::classic_table() throw()
-+  { return __C_ctype_b; }
-+
-+  ctype<char>::ctype(__c_locale, const mask* __table, bool __del, 
-+		     size_t __refs) 
-+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
-+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
-+  {
-+    _M_toupper = __C_ctype_toupper;
-+    _M_tolower = __C_ctype_tolower;
-+    _M_table = __table ? __table : __C_ctype_b;
-+    memset(_M_widen, 0, sizeof(_M_widen));
-+    memset(_M_narrow, 0, sizeof(_M_narrow));
-+  }
-+
-+  ctype<char>::ctype(const mask* __table, bool __del, size_t __refs)
-+  : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), 
-+  _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0)
-+  {
-+    _M_toupper = __C_ctype_toupper;
-+    _M_tolower = __C_ctype_tolower;
-+    _M_table = __table ? __table : __C_ctype_b;
-+    memset(_M_widen, 0, sizeof(_M_widen));
-+    memset(_M_narrow, 0, sizeof(_M_narrow));
-+  }
-+
-+  char
-+  ctype<char>::do_toupper(char __c) const
-+  { return _M_toupper[static_cast<unsigned char>(__c)]; }
-+
-+  const char*
-+  ctype<char>::do_toupper(char* __low, const char* __high) const
-+  {
-+    while (__low < __high)
-+      {
-+	*__low = _M_toupper[static_cast<unsigned char>(*__low)];
-+	++__low;
-+      }
-+    return __high;
-+  }
-+
-+  char
-+  ctype<char>::do_tolower(char __c) const
-+  { return _M_tolower[static_cast<unsigned char>(__c)]; }
-+
-+  const char* 
-+  ctype<char>::do_tolower(char* __low, const char* __high) const
-+  {
-+    while (__low < __high)
-+      {
-+	*__low = _M_tolower[static_cast<unsigned char>(*__low)];
-+	++__low;
-+      }
-+    return __high;
-+  }
-diff -urN gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h
---- gcc-3.4.2-dist/libstdc++-v3/config/os/uclibc/os_defines.h	1969-12-31 18:00:00.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/config/os/uclibc/os_defines.h	2004-09-10 10:47:40.000000000 -0500
-@@ -0,0 +1,44 @@
-+// Specific definitions for GNU/Linux  -*- C++ -*-
-+
-+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
-+//
-+// This file is part of the GNU ISO C++ Library.  This library is free
-+// software; you can redistribute it and/or modify it under the
-+// terms of the GNU General Public License as published by the
-+// Free Software Foundation; either version 2, or (at your option)
-+// any later version.
-+
-+// This library is distributed in the hope that it will be useful,
-+// but WITHOUT ANY WARRANTY; without even the implied warranty of
-+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+// GNU General Public License for more details.
-+
-+// You should have received a copy of the GNU General Public License along
-+// with this library; see the file COPYING.  If not, write to the Free
-+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-+// USA.
-+
-+// As a special exception, you may use this file as part of a free software
-+// library without restriction.  Specifically, if other files instantiate
-+// templates or use macros or inline functions from this file, or you compile
-+// this file and link it with other files to produce an executable, this
-+// file does not by itself cause the resulting executable to be covered by
-+// the GNU General Public License.  This exception does not however
-+// invalidate any other reasons why the executable file might be covered by
-+// the GNU General Public License.
-+
-+#ifndef _GLIBCXX_OS_DEFINES
-+#define _GLIBCXX_OS_DEFINES 1
-+
-+// System-specific #define, typedefs, corrections, etc, go here.  This
-+// file will come before all others.
-+
-+// This keeps isanum, et al from being propagated as macros.
-+#define __NO_CTYPE 1
-+
-+#include <features.h>
-+
-+// We must not see the optimized string functions GNU libc defines.
-+#define __NO_STRING_INLINES
-+
-+#endif
-diff -urN gcc-3.4.2-dist/libstdc++-v3/configure gcc-3.4.2/libstdc++-v3/configure
---- gcc-3.4.2-dist/libstdc++-v3/configure	2004-08-13 15:44:04.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/configure	2004-09-10 10:47:40.000000000 -0500
-@@ -3878,6 +3878,11 @@
-   lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so`
-   ;;
- 
-+linux-uclibc*)
-+  lt_cv_deplibs_check_method=pass_all
-+  lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so`
-+  ;;
-+
- netbsd*)
-   if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
-     lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'
-@@ -5479,7 +5479,7 @@
-   enableval="$enable_clocale"
- 
-       case "$enableval" in
--       generic|gnu|ieee_1003.1-2001|yes|no|auto) ;;
-+       generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;;
-        *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5
- echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;}
-    { (exit 1); exit 1; }; } ;;
-@@ -5545,6 +5550,9 @@
-   # Default to "generic".
-   if test $enable_clocale_flag = auto; then
-     case x${target_os} in
-+      xlinux-uclibc*)
-+	enable_clocale_flag=uclibc
-+	;;
-       xlinux* | xgnu* | xkfreebsd*-gnu | xknetbsd*-gnu)
-         cat >conftest.$ac_ext <<_ACEOF
- #line $LINENO "configure"
-@@ -5759,6 +5767,77 @@
-       CTIME_CC=config/locale/generic/time_members.cc
-       CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h
-       ;;
-+    uclibc)
-+      echo "$as_me:$LINENO: result: uclibc" >&5
-+echo "${ECHO_T}uclibc" >&6
-+
-+      # Declare intention to use gettext, and add support for specific
-+      # languages.
-+      # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT
-+      ALL_LINGUAS="de fr"
-+
-+      # Don't call AM-GNU-GETTEXT here. Instead, assume glibc.
-+      # Extract the first word of "msgfmt", so it can be a program name with args.
-+set dummy msgfmt; ac_word=$2
-+echo "$as_me:$LINENO: checking for $ac_word" >&5
-+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-+if test "${ac_cv_prog_check_msgfmt+set}" = set; then
-+  echo $ECHO_N "(cached) $ECHO_C" >&6
-+else
-+  if test -n "$check_msgfmt"; then
-+  ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test.
-+else
-+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-+for as_dir in $PATH
-+do
-+  IFS=$as_save_IFS
-+  test -z "$as_dir" && as_dir=.
-+  for ac_exec_ext in '' $ac_executable_extensions; do
-+  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-+    ac_cv_prog_check_msgfmt="yes"
-+    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-+    break 2
-+  fi
-+done
-+done
-+
-+  test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no"
-+fi
-+fi
-+check_msgfmt=$ac_cv_prog_check_msgfmt
-+if test -n "$check_msgfmt"; then
-+  echo "$as_me:$LINENO: result: $check_msgfmt" >&5
-+echo "${ECHO_T}$check_msgfmt" >&6
-+else
-+  echo "$as_me:$LINENO: result: no" >&5
-+echo "${ECHO_T}no" >&6
-+fi
-+
-+      if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then
-+        USE_NLS=yes
-+      fi
-+      # Export the build objects.
-+      for ling in $ALL_LINGUAS; do \
-+        glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \
-+        glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \
-+      done
-+
-+
-+
-+      CLOCALE_H=config/locale/uclibc/c_locale.h
-+      CLOCALE_CC=config/locale/uclibc/c_locale.cc
-+      CCODECVT_H=config/locale/ieee_1003.1-2001/codecvt_specializations.h
-+      CCODECVT_CC=config/locale/uclibc/codecvt_members.cc
-+      CCOLLATE_CC=config/locale/uclibc/collate_members.cc
-+      CCTYPE_CC=config/locale/uclibc/ctype_members.cc
-+      CMESSAGES_H=config/locale/uclibc/messages_members.h
-+      CMESSAGES_CC=config/locale/uclibc/messages_members.cc
-+      CMONEY_CC=config/locale/uclibc/monetary_members.cc
-+      CNUMERIC_CC=config/locale/uclibc/numeric_members.cc
-+      CTIME_H=config/locale/uclibc/time_members.h
-+      CTIME_CC=config/locale/uclibc/time_members.cc
-+      CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h
-+      ;;
-   esac
- 
-   # This is where the testsuite looks for locale catalogs, using the
-diff -urN gcc-3.4.2-dist/libstdc++-v3/configure.host gcc-3.4.2/libstdc++-v3/configure.host
---- gcc-3.4.2-dist/libstdc++-v3/configure.host	2004-08-27 14:52:30.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/configure.host	2004-09-10 10:47:40.000000000 -0500
-@@ -217,6 +217,12 @@
-     ;;
- esac
- 
-+# Override for uClibc since linux-uclibc gets mishandled above.
-+case "${host_os}" in
-+  *-uclibc*)
-+    os_include_dir="os/uclibc"
-+    ;;
-+esac
- 
- # Set any OS-dependent and CPU-dependent bits.
- # THIS TABLE IS SORTED.  KEEP IT THAT WAY.
-diff -urN gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4 gcc-3.4.2/libstdc++-v3/crossconfig.m4
---- gcc-3.4.2-dist/libstdc++-v3/crossconfig.m4	2004-07-06 20:23:49.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/crossconfig.m4	2004-09-10 10:47:40.000000000 -0500
-@@ -138,6 +138,99 @@
- 	;;
-     esac
-     ;;
-+  *-uclibc*)
-+# Temporary hack until we implement the float versions of the libm funcs
-+    AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-+      machine/endian.h machine/param.h sys/machine.h sys/types.h \
-+      fp.h float.h endian.h inttypes.h locale.h float.h stdint.h])
-+    SECTION_FLAGS='-ffunction-sections -fdata-sections'
-+    AC_SUBST(SECTION_FLAGS)
-+    GLIBCXX_CHECK_LINKER_FEATURES
-+    GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT
-+    GLIBCXX_CHECK_WCHAR_T_SUPPORT
-+
-+    # For LFS.
-+    AC_DEFINE(HAVE_INT64_T)
-+    case "$target" in
-+      *-uclinux*)
-+        # Don't enable LFS with uClinux
-+        ;;
-+      *)
-+        AC_DEFINE(_GLIBCXX_USE_LFS)
-+    esac
-+
-+    # For showmanyc_helper().
-+    AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h)
-+    GLIBCXX_CHECK_POLL
-+    GLIBCXX_CHECK_S_ISREG_OR_S_IFREG
-+
-+    # For xsputn_2().
-+    AC_CHECK_HEADERS(sys/uio.h)
-+    GLIBCXX_CHECK_WRITEV
-+
-+#     AC_DEFINE(HAVE_ACOSF)
-+#     AC_DEFINE(HAVE_ASINF)
-+#     AC_DEFINE(HAVE_ATANF)
-+#     AC_DEFINE(HAVE_ATAN2F)
-+    AC_DEFINE(HAVE_CEILF)
-+    AC_DEFINE(HAVE_COPYSIGN)
-+#     AC_DEFINE(HAVE_COPYSIGNF)
-+#     AC_DEFINE(HAVE_COSF)
-+#     AC_DEFINE(HAVE_COSHF)
-+#     AC_DEFINE(HAVE_EXPF)
-+#     AC_DEFINE(HAVE_FABSF)
-+    AC_DEFINE(HAVE_FINITE)
-+    AC_DEFINE(HAVE_FINITEF)
-+    AC_DEFINE(HAVE_FLOORF)
-+#     AC_DEFINE(HAVE_FMODF)
-+#     AC_DEFINE(HAVE_FREXPF)
-+    AC_DEFINE(HAVE_HYPOT)
-+#     AC_DEFINE(HAVE_HYPOTF)
-+    AC_DEFINE(HAVE_ISINF)
-+    AC_DEFINE(HAVE_ISINFF)
-+    AC_DEFINE(HAVE_ISNAN)
-+    AC_DEFINE(HAVE_ISNANF)
-+#     AC_DEFINE(HAVE_LOGF)
-+#     AC_DEFINE(HAVE_LOG10F)
-+#     AC_DEFINE(HAVE_MODFF)
-+#     AC_DEFINE(HAVE_SINF)
-+#     AC_DEFINE(HAVE_SINHF)
-+#     AC_DEFINE(HAVE_SINCOS)
-+#     AC_DEFINE(HAVE_SINCOSF)
-+    AC_DEFINE(HAVE_SQRTF)
-+#     AC_DEFINE(HAVE_TANF)
-+#     AC_DEFINE(HAVE_TANHF)
-+    if test x"long_double_math_on_this_cpu" = x"yes"; then
-+      AC_MSG_ERROR([long_double_math_on_this_cpu is yes!])
-+#       AC_DEFINE(HAVE_ACOSL)
-+#       AC_DEFINE(HAVE_ASINL)
-+#       AC_DEFINE(HAVE_ATANL)
-+#       AC_DEFINE(HAVE_ATAN2L)
-+#       AC_DEFINE(HAVE_CEILL)
-+#       AC_DEFINE(HAVE_COPYSIGNL)
-+#       AC_DEFINE(HAVE_COSL)
-+#       AC_DEFINE(HAVE_COSHL)
-+#       AC_DEFINE(HAVE_EXPL)
-+#       AC_DEFINE(HAVE_FABSL)
-+#       AC_DEFINE(HAVE_FINITEL)
-+#       AC_DEFINE(HAVE_FLOORL)
-+#       AC_DEFINE(HAVE_FMODL)
-+#       AC_DEFINE(HAVE_FREXPL)
-+#       AC_DEFINE(HAVE_HYPOTL)
-+#       AC_DEFINE(HAVE_ISINFL)
-+#       AC_DEFINE(HAVE_ISNANL)
-+#       AC_DEFINE(HAVE_LOGL)
-+#       AC_DEFINE(HAVE_LOG10L)
-+#       AC_DEFINE(HAVE_MODFL)
-+#       AC_DEFINE(HAVE_POWL)
-+#       AC_DEFINE(HAVE_SINL)
-+#       AC_DEFINE(HAVE_SINHL)
-+#       AC_DEFINE(HAVE_SINCOSL)
-+#       AC_DEFINE(HAVE_SQRTL)
-+#       AC_DEFINE(HAVE_TANL)
-+#       AC_DEFINE(HAVE_TANHL)
-+    fi
-+    ;;
-   *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu)
-     AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \
-       machine/endian.h machine/param.h sys/machine.h sys/types.h \
-@@ -152,7 +245,7 @@
-     AC_DEFINE(HAVE_INT64_T)
-     case "$target" in
-       *-uclinux*)
--        # Don't enable LFS with uClibc
-+        # Don't enable LFS with uClinux
-         ;;
-       *)
-         AC_DEFINE(_GLIBCXX_USE_LFS)
-diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h
---- gcc-3.4.2-dist/libstdc++-v3/include/c_compatibility/wchar.h	2003-12-08 21:51:45.000000000 -0600
-+++ gcc-3.4.2/libstdc++-v3/include/c_compatibility/wchar.h	2004-09-10 10:47:40.000000000 -0500
-@@ -101,7 +101,9 @@
- using std::wmemcpy;
- using std::wmemmove;
- using std::wmemset;
-+#if _GLIBCXX_HAVE_WCSFTIME
- using std::wcsftime;
-+#endif
- 
- #if _GLIBCXX_USE_C99
- using std::wcstold;
-diff -urN gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h
---- gcc-3.4.2-dist/libstdc++-v3/include/c_std/std_cwchar.h	2004-07-20 03:52:12.000000000 -0500
-+++ gcc-3.4.2/libstdc++-v3/include/c_std/std_cwchar.h	2004-09-10 10:47:40.000000000 -0500
-@@ -179,7 +179,9 @@
-   using ::wcscoll;
-   using ::wcscpy;
-   using ::wcscspn;
-+#if _GLIBCXX_HAVE_WCSFTIME
-   using ::wcsftime;
-+#endif
-   using ::wcslen;
-   using ::wcsncat;
-   using ::wcsncmp;
Index: toolchain/gcc/3.4.5/601-gcc34-arm-ldm.patch
===================================================================
--- toolchain/gcc/3.4.5/601-gcc34-arm-ldm.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/601-gcc34-arm-ldm.patch	(working copy)
@@ -1,119 +0,0 @@
---- gcc-3.4.0/gcc/config/arm/arm.c.arm-ldm	2004-02-27 09:51:05.000000000 -0500
-+++ gcc-3.4.0/gcc/config/arm/arm.c	2004-04-24 18:16:25.000000000 -0400
-@@ -8520,6 +8520,26 @@
-   return_used_this_function = 0;  
- }
- 
-+/* Return the number (counting from 0) of
-+   the least significant set bit in MASK.  */
-+
-+#ifdef __GNUC__
-+inline
-+#endif
-+static int
-+number_of_first_bit_set (mask)
-+     int mask;
-+{
-+  int bit;
-+
-+  for (bit = 0;
-+       (mask & (1 << bit)) == 0;
-+       ++bit)
-+    continue;
-+
-+  return bit;
-+}
-+
- const char *
- arm_output_epilogue (rtx sibling)
- {
-@@ -8753,27 +8773,47 @@
- 	  saved_regs_mask |=   (1 << PC_REGNUM);
- 	}
- 
--      /* Load the registers off the stack.  If we only have one register
--	 to load use the LDR instruction - it is faster.  */
--      if (saved_regs_mask == (1 << LR_REGNUM))
--	{
--	  /* The exception handler ignores the LR, so we do
--	     not really need to load it off the stack.  */
--	  if (eh_ofs)
--	    asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM);
--	  else
--	    asm_fprintf (f, "\tldr\t%r, [%r], #4\n", LR_REGNUM, SP_REGNUM);
--	}
--      else if (saved_regs_mask)
-+      if (saved_regs_mask)
- 	{
--	  if (saved_regs_mask & (1 << SP_REGNUM))
--	    /* Note - write back to the stack register is not enabled
--	       (ie "ldmfd sp!...").  We know that the stack pointer is
--	       in the list of registers and if we add writeback the
--	       instruction becomes UNPREDICTABLE.  */
--	    print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask);
-+	  /* Load the registers off the stack.  If we only have one register
-+	     to load use the LDR instruction - it is faster.  */
-+	  if (bit_count (saved_regs_mask) == 1)
-+	    {
-+	      int reg = number_of_first_bit_set (saved_regs_mask);
-+
-+	      switch (reg)
-+		{
-+		case SP_REGNUM:
-+		  /* Mustn't use base writeback when loading SP.  */
-+		  asm_fprintf (f, "\tldr\t%r, [%r]\n", SP_REGNUM, SP_REGNUM);
-+		  break;
-+		  
-+		case LR_REGNUM:
-+		  if (eh_ofs)
-+		    {
-+		      /* The exception handler ignores the LR, so we do
-+			 not really need to load it off the stack.  */
-+		      asm_fprintf (f, "\tadd\t%r, %r, #4\n", SP_REGNUM, SP_REGNUM);
-+		      break;
-+		    }
-+		  /* else fall through */
-+		  
-+		default:
-+		  asm_fprintf (f, "\tldr\t%r, [%r], #4\n", reg, SP_REGNUM);
-+		  break;
-+		}
-+	    }
- 	  else
--	    print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask);
-+	    {
-+	      if (saved_regs_mask & (1 << SP_REGNUM))
-+		/* Note - write back to the stack register is not enabled
-+		   (ie "ldmfd sp!...").  We know that the stack pointer is
-+		   in the list of registers and if we add writeback the
-+		   instruction becomes UNPREDICTABLE.  */
-+		print_multi_reg (f, "ldmfd\t%r", SP_REGNUM, saved_regs_mask);
-+	      else
-+		print_multi_reg (f, "ldmfd\t%r!", SP_REGNUM, saved_regs_mask);
-+	    }
- 	}
- 
-       if (current_function_pretend_args_size)
-@@ -11401,22 +11441,6 @@
-     }
- }
- 
--/* Return the number (counting from 0) of
--   the least significant set bit in MASK.  */
--
--inline static int
--number_of_first_bit_set (int mask)
--{
--  int bit;
--
--  for (bit = 0;
--       (mask & (1 << bit)) == 0;
--       ++bit)
--    continue;
--
--  return bit;
--}
--
- /* Generate code to return from a thumb function.
-    If 'reg_containing_return_addr' is -1, then the return address is
-    actually on the stack, at the stack pointer.  */
Index: toolchain/gcc/3.4.5/72_all_sh-no-reorder-blocks.patch
===================================================================
--- toolchain/gcc/3.4.5/72_all_sh-no-reorder-blocks.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/72_all_sh-no-reorder-blocks.patch	(working copy)
@@ -1,13 +0,0 @@
---- g/gcc/config/sh/sh.h
-+++ g/gcc/config/sh/sh.h
-@@ -422,6 +422,10 @@
- do {									\
-   if (LEVEL)								\
-     flag_omit_frame_pointer = -1;					\
-+  if (LEVEL <= 2)							\
-+    {									\
-+      flag_reorder_blocks = 0;						\
-+    }									\
-   if (SIZE)								\
-     target_flags |= SPACE_BIT;						\
-   if (TARGET_SHMEDIA && LEVEL > 1)					\
Index: toolchain/gcc/3.4.5/900-nios2.patch
===================================================================
--- toolchain/gcc/3.4.5/900-nios2.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/900-nios2.patch	(working copy)
@@ -1,10211 +0,0 @@
---- gcc-3.4.3/gcc/Makefile.in
-+++ gcc-3.4.3-nios2/gcc/Makefile.in
-@@ -3085,7 +3085,7 @@ install-mkheaders: stmp-int-hdrs $(STMP_
- 	  $(INSTALL_DATA) $(srcdir)/README-fixinc \
- 	    $(DESTDIR)$(itoolsdatadir)/include/README ; \
- 	  $(INSTALL_SCRIPT) fixinc.sh $(DESTDIR)$(itoolsdir)/fixinc.sh ; \
--	  $(INSTALL_PROGRAM) fixinc/fixincl $(DESTDIR)$(itoolsdir)/fixincl ; \
-+	  $(INSTALL_PROGRAM) fixinc/fixincl$(build_exeext) $(DESTDIR)$(itoolsdir)/fixincl$(build_exeext) ; \
- 	  $(INSTALL_DATA) $(srcdir)/gsyslimits.h \
- 	    $(DESTDIR)$(itoolsdatadir)/gsyslimits.h ; \
- 	else :; fi
---- gcc-3.4.3/gcc/combine.c
-+++ gcc-3.4.3-nios2/gcc/combine.c
-@@ -4380,6 +4380,14 @@ combine_simplify_rtx (rtx x, enum machin
- 					 mode);
- 	    }
- 
-+#ifndef __nios2__
-+/* This screws up Nios II in this test case:
-+
-+if (x & 1)
-+  return 2;
-+else
-+  return 3;
-+*/
- 	  else if (STORE_FLAG_VALUE == 1
- 		   && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
- 		   && op1 == const0_rtx
-@@ -4391,6 +4399,7 @@ combine_simplify_rtx (rtx x, enum machin
- 				 gen_lowpart_for_combine (mode, op0),
- 				 const1_rtx);
- 	    }
-+#endif
- 
- 	  else if (STORE_FLAG_VALUE == 1
- 		   && new_code == EQ && GET_MODE_CLASS (mode) == MODE_INT
---- gcc-3.4.3/gcc/config/nios2/crti.asm
-+++ gcc-3.4.3-nios2/gcc/config/nios2/crti.asm
-@@ -0,0 +1,88 @@
-+/*
-+  Copyright (C) 2003 
-+ by Jonah Graham (jgraham@altera.com)
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with files
-+   compiled with GCC to produce an executable, this does not 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.
-+
-+
-+This file just make a stack frame for the contents of the .fini and
-+.init sections.  Users may put any desired instructions in those
-+sections.
-+
-+
-+While technically any code can be put in the init and fini sections
-+most stuff will not work other than stuff which obeys the call frame
-+and ABI. All the call-preserved registers are saved, the call clobbered
-+registers should have been saved by the code calling init and fini.
-+
-+See crtstuff.c for an example of code that inserts itself in the 
-+init and fini sections. 
-+
-+See crt0.s for the code that calls init and fini.
-+*/
-+
-+	.file	"crti.asm"
-+
-+	.section	".init"
-+	.align 2
-+	.global	_init
-+_init:
-+	addi	sp, sp, -48
-+	stw	ra, 44(sp)
-+	stw	r23, 40(sp)
-+	stw	r22, 36(sp)
-+	stw	r21, 32(sp)
-+	stw	r20, 28(sp)
-+	stw	r19, 24(sp)
-+	stw	r18, 20(sp)
-+	stw	r17, 16(sp)
-+	stw	r16, 12(sp)
-+	stw	fp, 8(sp)
-+	mov	fp, sp
-+	
-+	
-+	.section	".fini"
-+	.align	2
-+	.global	_fini
-+_fini:
-+	addi	sp, sp, -48
-+	stw	ra, 44(sp)
-+	stw	r23, 40(sp)
-+	stw	r22, 36(sp)
-+	stw	r21, 32(sp)
-+	stw	r20, 28(sp)
-+	stw	r19, 24(sp)
-+	stw	r18, 20(sp)
-+	stw	r17, 16(sp)
-+	stw	r16, 12(sp)
-+	stw	fp, 8(sp)
-+	mov	fp, sp
-+	
-+
---- gcc-3.4.3/gcc/config/nios2/crtn.asm
-+++ gcc-3.4.3-nios2/gcc/config/nios2/crtn.asm
-@@ -0,0 +1,70 @@
-+/*
-+  Copyright (C) 2003 
-+ by Jonah Graham (jgraham@altera.com)
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with files
-+   compiled with GCC to produce an executable, this does not 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.
-+
-+
-+This file just makes sure that the .fini and .init sections do in
-+fact return.  Users may put any desired instructions in those sections.
-+This file is the last thing linked into any executable.
-+*/	
-+	.file	"crtn.asm"
-+
-+
-+
-+	.section	".init"
-+	ldw	ra, 44(sp)
-+	ldw	r23, 40(sp)
-+	ldw	r22, 36(sp)
-+	ldw	r21, 32(sp)
-+	ldw	r20, 28(sp)
-+	ldw	r19, 24(sp)
-+	ldw	r18, 20(sp)
-+	ldw	r17, 16(sp)
-+	ldw	r16, 12(sp)
-+	ldw	fp, 8(sp)
-+	addi	sp, sp, -48
-+	ret
-+	
-+	.section	".fini"
-+	ldw	ra, 44(sp)
-+	ldw	r23, 40(sp)
-+	ldw	r22, 36(sp)
-+	ldw	r21, 32(sp)
-+	ldw	r20, 28(sp)
-+	ldw	r19, 24(sp)
-+	ldw	r18, 20(sp)
-+	ldw	r17, 16(sp)
-+	ldw	r16, 12(sp)
-+	ldw	fp, 8(sp)
-+	addi	sp, sp, -48
-+	ret
-+	
---- gcc-3.4.3/gcc/config/nios2/lib2-divmod-hi.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod-hi.c
-@@ -0,0 +1,123 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+extern HItype __modhi3 (HItype, HItype);
-+extern HItype __divhi3 (HItype, HItype);
-+extern HItype __umodhi3 (HItype, HItype);
-+extern HItype __udivhi3 (HItype, HItype);
-+
-+static UHItype udivmodhi4(UHItype, UHItype, word_type);
-+
-+static UHItype
-+udivmodhi4(UHItype num, UHItype den, word_type modwanted)
-+{
-+  UHItype bit = 1;
-+  UHItype res = 0;
-+
-+  while (den < num && bit && !(den & (1L<<15)))
-+    {
-+      den <<=1;
-+      bit <<=1;
-+    }
-+  while (bit)
-+    {
-+      if (num >= den)
-+	{
-+	  num -= den;
-+	  res |= bit;
-+	}
-+      bit >>=1;
-+      den >>=1;
-+    }
-+  if (modwanted) return num;
-+  return res;
-+}
-+
-+
-+HItype
-+__divhi3 (HItype a, HItype b)
-+{
-+  word_type neg = 0;
-+  HItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = !neg;
-+    }
-+
-+  if (b < 0)
-+    {
-+      b = -b;
-+      neg = !neg;
-+    }
-+
-+  res = udivmodhi4 (a, b, 0);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+HItype
-+__modhi3 (HItype a, HItype b)
-+{
-+  word_type neg = 0;
-+  HItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = 1;
-+    }
-+
-+  if (b < 0)
-+    b = -b;
-+
-+  res = udivmodhi4 (a, b, 1);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+HItype
-+__udivhi3 (HItype a, HItype b)
-+{
-+  return udivmodhi4 (a, b, 0);
-+}
-+
-+
-+HItype
-+__umodhi3 (HItype a, HItype b)
-+{
-+  return udivmodhi4 (a, b, 1);
-+}
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-divmod.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divmod.c
-@@ -0,0 +1,126 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+extern SItype __modsi3 (SItype, SItype);
-+extern SItype __divsi3 (SItype, SItype);
-+extern SItype __umodsi3 (SItype, SItype);
-+extern SItype __udivsi3 (SItype, SItype);
-+
-+static USItype udivmodsi4(USItype, USItype, word_type);
-+
-+/* 16-bit SI divide and modulo as used in NIOS */
-+
-+
-+static USItype
-+udivmodsi4(USItype num, USItype den, word_type modwanted)
-+{
-+  USItype bit = 1;
-+  USItype res = 0;
-+
-+  while (den < num && bit && !(den & (1L<<31)))
-+    {
-+      den <<=1;
-+      bit <<=1;
-+    }
-+  while (bit)
-+    {
-+      if (num >= den)
-+	{
-+	  num -= den;
-+	  res |= bit;
-+	}
-+      bit >>=1;
-+      den >>=1;
-+    }
-+  if (modwanted) return num;
-+  return res;
-+}
-+
-+
-+SItype
-+__divsi3 (SItype a, SItype b)
-+{
-+  word_type neg = 0;
-+  SItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = !neg;
-+    }
-+
-+  if (b < 0)
-+    {
-+      b = -b;
-+      neg = !neg;
-+    }
-+
-+  res = udivmodsi4 (a, b, 0);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+SItype
-+__modsi3 (SItype a, SItype b)
-+{
-+  word_type neg = 0;
-+  SItype res;
-+
-+  if (a < 0)
-+    {
-+      a = -a;
-+      neg = 1;
-+    }
-+
-+  if (b < 0)
-+    b = -b;
-+
-+  res = udivmodsi4 (a, b, 1);
-+
-+  if (neg)
-+    res = -res;
-+
-+  return res;
-+}
-+
-+
-+SItype
-+__udivsi3 (SItype a, SItype b)
-+{
-+  return udivmodsi4 (a, b, 0);
-+}
-+
-+
-+SItype
-+__umodsi3 (SItype a, SItype b)
-+{
-+  return udivmodsi4 (a, b, 1);
-+}
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-divtable.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-divtable.c
-@@ -0,0 +1,46 @@
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+UQItype __divsi3_table[] =
-+{
-+  0, 0/1, 0/2, 0/3, 0/4, 0/5, 0/6, 0/7, 0/8, 0/9, 0/10, 0/11, 0/12, 0/13, 0/14, 0/15,
-+  0, 1/1, 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15,
-+  0, 2/1, 2/2, 2/3, 2/4, 2/5, 2/6, 2/7, 2/8, 2/9, 2/10, 2/11, 2/12, 2/13, 2/14, 2/15,
-+  0, 3/1, 3/2, 3/3, 3/4, 3/5, 3/6, 3/7, 3/8, 3/9, 3/10, 3/11, 3/12, 3/13, 3/14, 3/15,
-+  0, 4/1, 4/2, 4/3, 4/4, 4/5, 4/6, 4/7, 4/8, 4/9, 4/10, 4/11, 4/12, 4/13, 4/14, 4/15,
-+  0, 5/1, 5/2, 5/3, 5/4, 5/5, 5/6, 5/7, 5/8, 5/9, 5/10, 5/11, 5/12, 5/13, 5/14, 5/15,
-+  0, 6/1, 6/2, 6/3, 6/4, 6/5, 6/6, 6/7, 6/8, 6/9, 6/10, 6/11, 6/12, 6/13, 6/14, 6/15,
-+  0, 7/1, 7/2, 7/3, 7/4, 7/5, 7/6, 7/7, 7/8, 7/9, 7/10, 7/11, 7/12, 7/13, 7/14, 7/15,
-+  0, 8/1, 8/2, 8/3, 8/4, 8/5, 8/6, 8/7, 8/8, 8/9, 8/10, 8/11, 8/12, 8/13, 8/14, 8/15,
-+  0, 9/1, 9/2, 9/3, 9/4, 9/5, 9/6, 9/7, 9/8, 9/9, 9/10, 9/11, 9/12, 9/13, 9/14, 9/15,
-+  0, 10/1, 10/2, 10/3, 10/4, 10/5, 10/6, 10/7, 10/8, 10/9, 10/10, 10/11, 10/12, 10/13, 10/14, 10/15,
-+  0, 11/1, 11/2, 11/3, 11/4, 11/5, 11/6, 11/7, 11/8, 11/9, 11/10, 11/11, 11/12, 11/13, 11/14, 11/15,
-+  0, 12/1, 12/2, 12/3, 12/4, 12/5, 12/6, 12/7, 12/8, 12/9, 12/10, 12/11, 12/12, 12/13, 12/14, 12/15,
-+  0, 13/1, 13/2, 13/3, 13/4, 13/5, 13/6, 13/7, 13/8, 13/9, 13/10, 13/11, 13/12, 13/13, 13/14, 13/15,
-+  0, 14/1, 14/2, 14/3, 14/4, 14/5, 14/6, 14/7, 14/8, 14/9, 14/10, 14/11, 14/12, 14/13, 14/14, 14/15,
-+  0, 15/1, 15/2, 15/3, 15/4, 15/5, 15/6, 15/7, 15/8, 15/9, 15/10, 15/11, 15/12, 15/13, 15/14, 15/15,
-+};
-+
---- gcc-3.4.3/gcc/config/nios2/lib2-mul.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/lib2-mul.c
-@@ -0,0 +1,103 @@
-+/* while we are debugging (ie compile outside of gcc build) 
-+   disable gcc specific headers */
-+#ifndef DEBUG_MULSI3
-+
-+
-+/* We include auto-host.h here to get HAVE_GAS_HIDDEN.  This is
-+   supposedly valid even though this is a "target" file.  */
-+#include "auto-host.h"
-+
-+
-+#include "tconfig.h"
-+#include "tsystem.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+
-+
-+/* Don't use `fancy_abort' here even if config.h says to use it.  */
-+#ifdef abort
-+#undef abort
-+#endif
-+
-+
-+#ifdef HAVE_GAS_HIDDEN
-+#define ATTRIBUTE_HIDDEN  __attribute__ ((__visibility__ ("hidden")))
-+#else
-+#define ATTRIBUTE_HIDDEN
-+#endif
-+
-+#include "libgcc2.h"
-+
-+#else
-+#define SItype int
-+#define USItype unsigned int
-+#endif
-+
-+
-+extern SItype __mulsi3 (SItype, SItype);
-+
-+SItype
-+__mulsi3 (SItype a, SItype b)
-+{
-+  SItype res = 0;
-+  USItype cnt = a;
-+  
-+  while (cnt)
-+    {
-+      if (cnt & 1)
-+        {
-+	  res += b;	  
-+	}
-+      b <<= 1;
-+      cnt >>= 1;
-+    }
-+    
-+  return res;
-+}
-+/*
-+TODO: Choose best alternative implementation.
-+
-+SItype
-+__divsi3 (SItype a, SItype b)
-+{
-+  SItype res = 0;
-+  USItype cnt = 0;
-+  
-+  while (cnt < 32)
-+    {
-+      if (a & (1L << cnt))
-+        {
-+	  res += b;	  
-+	}
-+      b <<= 1;
-+      cnt++;
-+    }
-+    
-+  return res;
-+}
-+*/
-+
-+
-+#ifdef DEBUG_MULSI3
-+
-+int
-+main ()
-+{
-+  int i, j;
-+  int error = 0;
-+  
-+  for (i = -1000; i < 1000; i++)
-+    for (j = -1000; j < 1000; j++)
-+      {
-+	int expect = i * j;
-+	int actual = A__divsi3 (i, j);
-+	if (expect != actual)
-+	  {
-+	    printf ("error: %d * %d = %d not %d\n", i, j, expect, actual);
-+	    error = 1;
-+	  }
-+      }
-+
-+  return error;
-+}
-+#endif
---- gcc-3.4.3/gcc/config/nios2/nios2-dp-bit.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-dp-bit.c
-@@ -0,0 +1,1652 @@
-+
-+/* This is a software floating point library which can be used
-+   for targets without hardware floating point. 
-+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
-+   Free Software Foundation, Inc.
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with other files,
-+   some of which are compiled with GCC, to produce an executable,
-+   this library 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.  */
-+
-+/* This implements IEEE 754 format arithmetic, but does not provide a
-+   mechanism for setting the rounding mode, or for generating or handling
-+   exceptions.
-+
-+   The original code by Steve Chamberlain, hacked by Mark Eichin and Jim
-+   Wilson, all of Cygnus Support.  */
-+
-+/* The intended way to use this file is to make two copies, add `#define FLOAT'
-+   to one copy, then compile both copies and add them to libgcc.a.  */
-+
-+#include "tconfig.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "config/fp-bit.h"
-+
-+/* The following macros can be defined to change the behavior of this file:
-+   FLOAT: Implement a `float', aka SFmode, fp library.  If this is not
-+     defined, then this file implements a `double', aka DFmode, fp library.
-+   FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e.
-+     don't include float->double conversion which requires the double library.
-+     This is useful only for machines which can't support doubles, e.g. some
-+     8-bit processors.
-+   CMPtype: Specify the type that floating point compares should return.
-+     This defaults to SItype, aka int.
-+   US_SOFTWARE_GOFAST: This makes all entry points use the same names as the
-+     US Software goFast library.
-+   _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding
-+     two integers to the FLO_union_type.
-+   NO_DENORMALS: Disable handling of denormals.
-+   NO_NANS: Disable nan and infinity handling
-+   SMALL_MACHINE: Useful when operations on QIs and HIs are faster
-+     than on an SI */
-+
-+/* We don't currently support extended floats (long doubles) on machines
-+   without hardware to deal with them.
-+
-+   These stubs are just to keep the linker from complaining about unresolved
-+   references which can be pulled in from libio & libstdc++, even if the
-+   user isn't using long doubles.  However, they may generate an unresolved
-+   external to abort if abort is not used by the function, and the stubs
-+   are referenced from within libc, since libgcc goes before and after the
-+   system library.  */
-+
-+#ifdef DECLARE_LIBRARY_RENAMES
-+  DECLARE_LIBRARY_RENAMES
-+#endif
-+
-+#ifdef EXTENDED_FLOAT_STUBS
-+extern void abort (void);
-+void __extendsfxf2 (void) { abort(); }
-+void __extenddfxf2 (void) { abort(); }
-+void __truncxfdf2 (void) { abort(); }
-+void __truncxfsf2 (void) { abort(); }
-+void __fixxfsi (void) { abort(); }
-+void __floatsixf (void) { abort(); }
-+void __addxf3 (void) { abort(); }
-+void __subxf3 (void) { abort(); }
-+void __mulxf3 (void) { abort(); }
-+void __divxf3 (void) { abort(); }
-+void __negxf2 (void) { abort(); }
-+void __eqxf2 (void) { abort(); }
-+void __nexf2 (void) { abort(); }
-+void __gtxf2 (void) { abort(); }
-+void __gexf2 (void) { abort(); }
-+void __lexf2 (void) { abort(); }
-+void __ltxf2 (void) { abort(); }
-+
-+void __extendsftf2 (void) { abort(); }
-+void __extenddftf2 (void) { abort(); }
-+void __trunctfdf2 (void) { abort(); }
-+void __trunctfsf2 (void) { abort(); }
-+void __fixtfsi (void) { abort(); }
-+void __floatsitf (void) { abort(); }
-+void __addtf3 (void) { abort(); }
-+void __subtf3 (void) { abort(); }
-+void __multf3 (void) { abort(); }
-+void __divtf3 (void) { abort(); }
-+void __negtf2 (void) { abort(); }
-+void __eqtf2 (void) { abort(); }
-+void __netf2 (void) { abort(); }
-+void __gttf2 (void) { abort(); }
-+void __getf2 (void) { abort(); }
-+void __letf2 (void) { abort(); }
-+void __lttf2 (void) { abort(); }
-+#else	/* !EXTENDED_FLOAT_STUBS, rest of file */
-+
-+/* IEEE "special" number predicates */
-+
-+#ifdef NO_NANS
-+
-+#define nan() 0
-+#define isnan(x) 0
-+#define isinf(x) 0
-+#else
-+
-+#if   defined L_thenan_sf
-+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_df
-+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_tf
-+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined TFLOAT
-+extern const fp_number_type __thenan_tf;
-+#elif defined FLOAT
-+extern const fp_number_type __thenan_sf;
-+#else
-+extern const fp_number_type __thenan_df;
-+#endif
-+
-+INLINE
-+static fp_number_type *
-+nan (void)
-+{
-+  /* Discard the const qualifier...  */
-+#ifdef TFLOAT
-+  return (fp_number_type *) (& __thenan_tf);
-+#elif defined FLOAT  
-+  return (fp_number_type *) (& __thenan_sf);
-+#else
-+  return (fp_number_type *) (& __thenan_df);
-+#endif
-+}
-+
-+INLINE
-+static int
-+isnan ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_SNAN || x->class == CLASS_QNAN;
-+}
-+
-+INLINE
-+static int
-+isinf ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_INFINITY;
-+}
-+
-+#endif /* NO_NANS */
-+
-+INLINE
-+static int
-+iszero ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_ZERO;
-+}
-+
-+INLINE 
-+static void
-+flip_sign ( fp_number_type *  x)
-+{
-+  x->sign = !x->sign;
-+}
-+
-+extern FLO_type pack_d ( fp_number_type * );
-+
-+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf)
-+FLO_type
-+pack_d ( fp_number_type *  src)
-+{
-+  FLO_union_type dst;
-+  fractype fraction = src->fraction.ll;	/* wasn't unsigned before? */
-+  int sign = src->sign;
-+  int exp = 0;
-+
-+  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src)))
-+    {
-+      /* We can't represent these values accurately.  By using the
-+	 largest possible magnitude, we guarantee that the conversion
-+	 of infinity is at least as big as any finite number.  */
-+      exp = EXPMAX;
-+      fraction = ((fractype) 1 << FRACBITS) - 1;
-+    }
-+  else if (isnan (src))
-+    {
-+      exp = EXPMAX;
-+      if (src->class == CLASS_QNAN || 1)
-+	{
-+#ifdef QUIET_NAN_NEGATED
-+	  fraction |= QUIET_NAN - 1;
-+#else
-+	  fraction |= QUIET_NAN;
-+#endif
-+	}
-+    }
-+  else if (isinf (src))
-+    {
-+      exp = EXPMAX;
-+      fraction = 0;
-+    }
-+  else if (iszero (src))
-+    {
-+      exp = 0;
-+      fraction = 0;
-+    }
-+  else if (fraction == 0)
-+    {
-+      exp = 0;
-+    }
-+  else
-+    {
-+      if (src->normal_exp < NORMAL_EXPMIN)
-+	{
-+#ifdef NO_DENORMALS
-+	  /* Go straight to a zero representation if denormals are not
-+ 	     supported.  The denormal handling would be harmless but
-+ 	     isn't unnecessary.  */
-+	  exp = 0;
-+	  fraction = 0;
-+#else /* NO_DENORMALS */
-+	  /* This number's exponent is too low to fit into the bits
-+	     available in the number, so we'll store 0 in the exponent and
-+	     shift the fraction to the right to make up for it.  */
-+
-+	  int shift = NORMAL_EXPMIN - src->normal_exp;
-+
-+	  exp = 0;
-+
-+	  if (shift > FRAC_NBITS - NGARDS)
-+	    {
-+	      /* No point shifting, since it's more that 64 out.  */
-+	      fraction = 0;
-+	    }
-+	  else
-+	    {
-+	      int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0;
-+	      fraction = (fraction >> shift) | lowbit;
-+	    }
-+	  if ((fraction & GARDMASK) == GARDMSB)
-+	    {
-+	      if ((fraction & (1 << NGARDS)))
-+		fraction += GARDROUND + 1;
-+	    }
-+	  else
-+	    {
-+	      /* Add to the guards to round up.  */
-+	      fraction += GARDROUND;
-+	    }
-+	  /* Perhaps the rounding means we now need to change the
-+             exponent, because the fraction is no longer denormal.  */
-+	  if (fraction >= IMPLICIT_1)
-+	    {
-+	      exp += 1;
-+	    }
-+	  fraction >>= NGARDS;
-+#endif /* NO_DENORMALS */
-+	}
-+      else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS)
-+	       && src->normal_exp > EXPBIAS)
-+	{
-+	  exp = EXPMAX;
-+	  fraction = 0;
-+	}
-+      else
-+	{
-+	  exp = src->normal_exp + EXPBIAS;
-+	  if (!ROUND_TOWARDS_ZERO)
-+	    {
-+	      /* IF the gard bits are the all zero, but the first, then we're
-+		 half way between two numbers, choose the one which makes the
-+		 lsb of the answer 0.  */
-+	      if ((fraction & GARDMASK) == GARDMSB)
-+		{
-+		  if (fraction & (1 << NGARDS))
-+		    fraction += GARDROUND + 1;
-+		}
-+	      else
-+		{
-+		  /* Add a one to the guards to round up */
-+		  fraction += GARDROUND;
-+		}
-+	      if (fraction >= IMPLICIT_2)
-+		{
-+		  fraction >>= 1;
-+		  exp += 1;
-+		}
-+	    }
-+	  fraction >>= NGARDS;
-+
-+	  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX)
-+	    {
-+	      /* Saturate on overflow.  */
-+	      exp = EXPMAX;
-+	      fraction = ((fractype) 1 << FRACBITS) - 1;
-+	    }
-+	}
-+    }
-+
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  dst.bits.fraction = fraction;
-+  dst.bits.exp = exp;
-+  dst.bits.sign = sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low, unity;
-+   int lowsign, lowexp;
-+
-+   unity = (halffractype) 1 << HALFFRACBITS;
-+
-+   /* Set HIGH to the high double's significand, masking out the implicit 1.
-+      Set LOW to the low double's full significand.  */
-+   high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1);
-+   low = fraction & (unity * 2 - 1);
-+
-+   /* Get the initial sign and exponent of the low double.  */
-+   lowexp = exp - HALFFRACBITS - 1;
-+   lowsign = sign;
-+
-+   /* HIGH should be rounded like a normal double, making |LOW| <=
-+      0.5 ULP of HIGH.  Assume round-to-nearest.  */
-+   if (exp < EXPMAX)
-+     if (low > unity || (low == unity && (high & 1) == 1))
-+       {
-+	 /* Round HIGH up and adjust LOW to match.  */
-+	 high++;
-+	 if (high == unity)
-+	   {
-+	     /* May make it infinite, but that's OK.  */
-+	     high = 0;
-+	     exp++;
-+	   }
-+	 low = unity * 2 - low;
-+	 lowsign ^= 1;
-+       }
-+
-+   high |= (halffractype) exp << HALFFRACBITS;
-+   high |= (halffractype) sign << (HALFFRACBITS + EXPBITS);
-+
-+   if (exp == EXPMAX || exp == 0 || low == 0)
-+     low = 0;
-+   else
-+     {
-+       while (lowexp > 0 && low < unity)
-+	 {
-+	   low <<= 1;
-+	   lowexp--;
-+	 }
-+
-+       if (lowexp <= 0)
-+	 {
-+	   halffractype roundmsb, round;
-+	   int shift;
-+
-+	   shift = 1 - lowexp;
-+	   roundmsb = (1 << (shift - 1));
-+	   round = low & ((roundmsb << 1) - 1);
-+
-+	   low >>= shift;
-+	   lowexp = 0;
-+
-+	   if (round > roundmsb || (round == roundmsb && (low & 1) == 1))
-+	     {
-+	       low++;
-+	       if (low == unity)
-+		 /* LOW rounds up to the smallest normal number.  */
-+		 lowexp++;
-+	     }
-+	 }
-+
-+       low &= unity - 1;
-+       low |= (halffractype) lowexp << HALFFRACBITS;
-+       low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS);
-+     }
-+   dst.value_raw = ((fractype) high << HALFSHIFT) | low;
-+ }
-+# else
-+  dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
-+  dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS;
-+  dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS);
-+# endif
-+#endif
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+#ifdef TFLOAT
-+  {
-+    qrtrfractype tmp1 = dst.words[0];
-+    qrtrfractype tmp2 = dst.words[1];
-+    dst.words[0] = dst.words[3];
-+    dst.words[1] = dst.words[2];
-+    dst.words[2] = tmp2;
-+    dst.words[3] = tmp1;
-+  }
-+#else
-+  {
-+    halffractype tmp = dst.words[0];
-+    dst.words[0] = dst.words[1];
-+    dst.words[1] = tmp;
-+  }
-+#endif
-+#endif
-+
-+  return dst.value;
-+}
-+#endif
-+
-+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf)
-+void
-+unpack_d (FLO_union_type * src, fp_number_type * dst)
-+{
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+  fractype fraction;
-+  int exp;
-+  int sign;
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+  FLO_union_type swapped;
-+
-+#ifdef TFLOAT
-+  swapped.words[0] = src->words[3];
-+  swapped.words[1] = src->words[2];
-+  swapped.words[2] = src->words[1];
-+  swapped.words[3] = src->words[0];
-+#else
-+  swapped.words[0] = src->words[1];
-+  swapped.words[1] = src->words[0];
-+#endif
-+  src = &swapped;
-+#endif
-+  
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  fraction = src->bits.fraction;
-+  exp = src->bits.exp;
-+  sign = src->bits.sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low;
-+   
-+   high = src->value_raw >> HALFSHIFT;
-+   low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1);
-+
-+   fraction = high & ((((fractype)1) << HALFFRACBITS) - 1);
-+   fraction <<= FRACBITS - HALFFRACBITS;
-+   exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+   sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+
-+   if (exp != EXPMAX && exp != 0 && low != 0)
-+     {
-+       int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+       int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+       int shift;
-+       fractype xlow;
-+
-+       xlow = low & ((((fractype)1) << HALFFRACBITS) - 1);
-+       if (lowexp)
-+	 xlow |= (((halffractype)1) << HALFFRACBITS);
-+       else
-+	 lowexp = 1;
-+       shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp);
-+       if (shift > 0)
-+	 xlow <<= shift;
-+       else if (shift < 0)
-+	 xlow >>= -shift;
-+       if (sign == lowsign)
-+	 fraction += xlow;
-+       else if (fraction >= xlow)
-+	 fraction -= xlow;
-+       else
-+	 {
-+	   /* The high part is a power of two but the full number is lower.
-+	      This code will leave the implicit 1 in FRACTION, but we'd
-+	      have added that below anyway.  */
-+	   fraction = (((fractype) 1 << FRACBITS) - xlow) << 1;
-+	   exp--;
-+	 }
-+     }
-+ }
-+# else
-+  fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1);
-+  exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1);
-+  sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1;
-+# endif
-+#endif
-+
-+  dst->sign = sign;
-+  if (exp == 0)
-+    {
-+      /* Hmm.  Looks like 0 */
-+      if (fraction == 0
-+#ifdef NO_DENORMALS
-+	  || 1
-+#endif
-+	  )
-+	{
-+	  /* tastes like zero */
-+	  dst->class = CLASS_ZERO;
-+	}
-+      else
-+	{
-+	  /* Zero exponent with nonzero fraction - it's denormalized,
-+	     so there isn't a leading implicit one - we'll shift it so
-+	     it gets one.  */
-+	  dst->normal_exp = exp - EXPBIAS + 1;
-+	  fraction <<= NGARDS;
-+
-+	  dst->class = CLASS_NUMBER;
-+#if 1
-+	  while (fraction < IMPLICIT_1)
-+	    {
-+	      fraction <<= 1;
-+	      dst->normal_exp--;
-+	    }
-+#endif
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX)
-+    {
-+      /* Huge exponent*/
-+      if (fraction == 0)
-+	{
-+	  /* Attached to a zero fraction - means infinity */
-+	  dst->class = CLASS_INFINITY;
-+	}
-+      else
-+	{
-+	  /* Nonzero fraction, means nan */
-+#ifdef QUIET_NAN_NEGATED
-+	  if ((fraction & QUIET_NAN) == 0)
-+#else
-+	  if (fraction & QUIET_NAN)
-+#endif
-+	    {
-+	      dst->class = CLASS_QNAN;
-+	    }
-+	  else
-+	    {
-+	      dst->class = CLASS_SNAN;
-+	    }
-+	  /* Keep the fraction part as the nan number */
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else
-+    {
-+      /* Nothing strange about this number */
-+      dst->normal_exp = exp - EXPBIAS;
-+      dst->class = CLASS_NUMBER;
-+      dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1;
-+    }
-+}
-+#endif /* L_unpack_df || L_unpack_sf */
-+
-+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf)
-+static fp_number_type *
-+_fpadd_parts (fp_number_type * a,
-+	      fp_number_type * b,
-+	      fp_number_type * tmp)
-+{
-+  intfrac tfraction;
-+
-+  /* Put commonly used fields in local variables.  */
-+  int a_normal_exp;
-+  int b_normal_exp;
-+  fractype a_fraction;
-+  fractype b_fraction;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      /* Adding infinities with opposite signs yields a NaN.  */
-+      if (isinf (b) && a->sign != b->sign)
-+	return nan ();
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      return b;
-+    }
-+  if (iszero (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  *tmp = *a;
-+	  tmp->sign = a->sign & b->sign;
-+	  return tmp;
-+	}
-+      return a;
-+    }
-+  if (iszero (a))
-+    {
-+      return b;
-+    }
-+
-+  /* Got two numbers. shift the smaller and increment the exponent till
-+     they're the same */
-+  {
-+    int diff;
-+
-+    a_normal_exp = a->normal_exp;
-+    b_normal_exp = b->normal_exp;
-+    a_fraction = a->fraction.ll;
-+    b_fraction = b->fraction.ll;
-+
-+    diff = a_normal_exp - b_normal_exp;
-+
-+    if (diff < 0)
-+      diff = -diff;
-+    if (diff < FRAC_NBITS)
-+      {
-+	/* ??? This does shifts one bit at a time.  Optimize.  */
-+	while (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp++;
-+	    LSHIFT (b_fraction);
-+	  }
-+	while (b_normal_exp > a_normal_exp)
-+	  {
-+	    a_normal_exp++;
-+	    LSHIFT (a_fraction);
-+	  }
-+      }
-+    else
-+      {
-+	/* Somethings's up.. choose the biggest */
-+	if (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp = a_normal_exp;
-+	    b_fraction = 0;
-+	  }
-+	else
-+	  {
-+	    a_normal_exp = b_normal_exp;
-+	    a_fraction = 0;
-+	  }
-+      }
-+  }
-+
-+  if (a->sign != b->sign)
-+    {
-+      if (a->sign)
-+	{
-+	  tfraction = -a_fraction + b_fraction;
-+	}
-+      else
-+	{
-+	  tfraction = a_fraction - b_fraction;
-+	}
-+      if (tfraction >= 0)
-+	{
-+	  tmp->sign = 0;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = tfraction;
-+	}
-+      else
-+	{
-+	  tmp->sign = 1;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = -tfraction;
-+	}
-+      /* and renormalize it */
-+
-+      while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll)
-+	{
-+	  tmp->fraction.ll <<= 1;
-+	  tmp->normal_exp--;
-+	}
-+    }
-+  else
-+    {
-+      tmp->sign = a->sign;
-+      tmp->normal_exp = a_normal_exp;
-+      tmp->fraction.ll = a_fraction + b_fraction;
-+    }
-+  tmp->class = CLASS_NUMBER;
-+  /* Now the fraction is added, we have to shift down to renormalize the
-+     number */
-+
-+  if (tmp->fraction.ll >= IMPLICIT_2)
-+    {
-+      LSHIFT (tmp->fraction.ll);
-+      tmp->normal_exp++;
-+    }
-+  return tmp;
-+
-+}
-+
-+FLO_type
-+add (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+
-+FLO_type
-+sub (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  b.sign ^= 1;
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_addsub_sf || L_addsub_df */
-+
-+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpmul_parts ( fp_number_type *  a,
-+	       fp_number_type *  b,
-+	       fp_number_type * tmp)
-+{
-+  fractype low = 0;
-+  fractype high = 0;
-+
-+  if (isnan (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      if (iszero (b))
-+	return nan ();
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  return nan ();
-+	}
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (iszero (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both numbers to get a
-+     twice-as-wide number.  */
-+  {
-+#if defined(NO_DI_MODE) || defined(TFLOAT)
-+    {
-+      fractype x = a->fraction.ll;
-+      fractype ylow = b->fraction.ll;
-+      fractype yhigh = 0;
-+      int bit;
-+
-+      /* ??? This does multiplies one bit at a time.  Optimize.  */
-+      for (bit = 0; bit < FRAC_NBITS; bit++)
-+	{
-+	  int carry;
-+
-+	  if (x & 1)
-+	    {
-+	      carry = (low += ylow) < ylow;
-+	      high += yhigh + carry;
-+	    }
-+	  yhigh <<= 1;
-+	  if (ylow & FRACHIGH)
-+	    {
-+	      yhigh |= 1;
-+	    }
-+	  ylow <<= 1;
-+	  x >>= 1;
-+	}
-+    }
-+#elif defined(FLOAT) 
-+    /* Multiplying two USIs to get a UDI, we're safe.  */
-+    {
-+      UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll;
-+      
-+      high = answer >> BITS_PER_SI;
-+      low = answer;
-+    }
-+#else
-+    /* fractype is DImode, but we need the result to be twice as wide.
-+       Assuming a widening multiply from DImode to TImode is not
-+       available, build one by hand.  */
-+    {
-+      USItype nl = a->fraction.ll;
-+      USItype nh = a->fraction.ll >> BITS_PER_SI;
-+      USItype ml = b->fraction.ll;
-+      USItype mh = b->fraction.ll >> BITS_PER_SI;
-+      UDItype pp_ll = (UDItype) ml * nl;
-+      UDItype pp_hl = (UDItype) mh * nl;
-+      UDItype pp_lh = (UDItype) ml * nh;
-+      UDItype pp_hh = (UDItype) mh * nh;
-+      UDItype res2 = 0;
-+      UDItype res0 = 0;
-+      UDItype ps_hh__ = pp_hl + pp_lh;
-+      if (ps_hh__ < pp_hl)
-+	res2 += (UDItype)1 << BITS_PER_SI;
-+      pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI;
-+      res0 = pp_ll + pp_hl;
-+      if (res0 < pp_ll)
-+	res2++;
-+      res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh;
-+      high = res2;
-+      low = res0;
-+    }
-+#endif
-+  }
-+
-+  tmp->normal_exp = a->normal_exp + b->normal_exp
-+    + FRAC_NBITS - (FRACBITS + NGARDS);
-+  tmp->sign = a->sign != b->sign;
-+  while (high >= IMPLICIT_2)
-+    {
-+      tmp->normal_exp++;
-+      if (high & 1)
-+	{
-+	  low >>= 1;
-+	  low |= FRACHIGH;
-+	}
-+      high >>= 1;
-+    }
-+  while (high < IMPLICIT_1)
-+    {
-+      tmp->normal_exp--;
-+
-+      high <<= 1;
-+      if (low & FRACHIGH)
-+	high |= 1;
-+      low <<= 1;
-+    }
-+  /* rounding is tricky. if we only round if it won't make us round later.  */
-+#if 0
-+  if (low & FRACHIGH2)
-+    {
-+      if (((high & GARDMASK) != GARDMSB)
-+	  && (((high + 1) & GARDMASK) == GARDMSB))
-+	{
-+	  /* don't round, it gets done again later.  */
-+	}
-+      else
-+	{
-+	  high++;
-+	}
-+    }
-+#endif
-+  if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB)
-+    {
-+      if (high & (1 << NGARDS))
-+	{
-+	  /* half way, so round to even */
-+	  high += GARDROUND + 1;
-+	}
-+      else if (low)
-+	{
-+	  /* but we really weren't half way */
-+	  high += GARDROUND + 1;
-+	}
-+    }
-+  tmp->fraction.ll = high;
-+  tmp->class = CLASS_NUMBER;
-+  return tmp;
-+}
-+
-+FLO_type
-+multiply (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpmul_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_mul_sf || L_mul_df */
-+
-+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpdiv_parts (fp_number_type * a,
-+	      fp_number_type * b)
-+{
-+  fractype bit;
-+  fractype numerator;
-+  fractype denominator;
-+  fractype quotient;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+
-+  a->sign = a->sign ^ b->sign;
-+
-+  if (isinf (a) || iszero (a))
-+    {
-+      if (a->class == b->class)
-+	return nan ();
-+      return a;
-+    }
-+
-+  if (isinf (b))
-+    {
-+      a->fraction.ll = 0;
-+      a->normal_exp = 0;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      a->class = CLASS_INFINITY;
-+      return a;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both 64bit numbers to get a
-+     128 bit number */
-+  {
-+    /* quotient =
-+       ( numerator / denominator) * 2^(numerator exponent -  denominator exponent)
-+     */
-+
-+    a->normal_exp = a->normal_exp - b->normal_exp;
-+    numerator = a->fraction.ll;
-+    denominator = b->fraction.ll;
-+
-+    if (numerator < denominator)
-+      {
-+	/* Fraction will be less than 1.0 */
-+	numerator *= 2;
-+	a->normal_exp--;
-+      }
-+    bit = IMPLICIT_1;
-+    quotient = 0;
-+    /* ??? Does divide one bit at a time.  Optimize.  */
-+    while (bit)
-+      {
-+	if (numerator >= denominator)
-+	  {
-+	    quotient |= bit;
-+	    numerator -= denominator;
-+	  }
-+	bit >>= 1;
-+	numerator *= 2;
-+      }
-+
-+    if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB)
-+      {
-+	if (quotient & (1 << NGARDS))
-+	  {
-+	    /* half way, so round to even */
-+	    quotient += GARDROUND + 1;
-+	  }
-+	else if (numerator)
-+	  {
-+	    /* but we really weren't half way, more bits exist */
-+	    quotient += GARDROUND + 1;
-+	  }
-+      }
-+
-+    a->fraction.ll = quotient;
-+    return (a);
-+  }
-+}
-+
-+FLO_type
-+divide (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpdiv_parts (&a, &b);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_div_sf || L_div_df */
-+
-+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \
-+    || defined(L_fpcmp_parts_tf)
-+/* according to the demo, fpcmp returns a comparison with 0... thus
-+   a<b -> -1
-+   a==b -> 0
-+   a>b -> +1
-+ */
-+
-+int
-+__fpcmp_parts (fp_number_type * a, fp_number_type * b)
-+{
-+#if 0
-+  /* either nan -> unordered. Must be checked outside of this routine.  */
-+  if (isnan (a) && isnan (b))
-+    {
-+      return 1;			/* still unordered! */
-+    }
-+#endif
-+
-+  if (isnan (a) || isnan (b))
-+    {
-+      return 1;			/* how to indicate unordered compare? */
-+    }
-+  if (isinf (a) && isinf (b))
-+    {
-+      /* +inf > -inf, but +inf != +inf */
-+      /* b    \a| +inf(0)| -inf(1)
-+       ______\+--------+--------
-+       +inf(0)| a==b(0)| a<b(-1)
-+       -------+--------+--------
-+       -inf(1)| a>b(1) | a==b(0)
-+       -------+--------+--------
-+       So since unordered must be nonzero, just line up the columns...
-+       */
-+      return b->sign - a->sign;
-+    }
-+  /* but not both...  */
-+  if (isinf (a))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (isinf (b))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (a) && iszero (b))
-+    {
-+      return 0;
-+    }
-+  if (iszero (a))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (b))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  /* now both are "normal".  */
-+  if (a->sign != b->sign)
-+    {
-+      /* opposite signs */
-+      return a->sign ? -1 : 1;
-+    }
-+  /* same sign; exponents? */
-+  if (a->normal_exp > b->normal_exp)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->normal_exp < b->normal_exp)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* same exponents; check size.  */
-+  if (a->fraction.ll > b->fraction.ll)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->fraction.ll < b->fraction.ll)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* after all that, they're equal.  */
-+  return 0;
-+}
-+#endif
-+
-+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf)
-+CMPtype
-+compare (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_compare_sf || L_compare_df */
-+
-+#ifndef US_SOFTWARE_GOFAST
-+
-+/* These should be optimized for their specific tasks someday.  */
-+
-+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf)
-+CMPtype
-+_eq_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth == 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_eq_sf || L_eq_df */
-+
-+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf)
-+CMPtype
-+_ne_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* true, truth != 0 */
-+
-+  return  __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ne_sf || L_ne_df */
-+
-+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf)
-+CMPtype
-+_gt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth > 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_gt_sf || L_gt_df */
-+
-+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf)
-+CMPtype
-+_ge_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth >= 0 */
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ge_sf || L_ge_df */
-+
-+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf)
-+CMPtype
-+_lt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth < 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_lt_sf || L_lt_df */
-+
-+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf)
-+CMPtype
-+_le_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth <= 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_le_sf || L_le_df */
-+
-+#endif /* ! US_SOFTWARE_GOFAST */
-+
-+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf)
-+CMPtype
-+_unord_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return (isnan (&a) || isnan (&b));
-+}
-+#endif /* L_unord_sf || L_unord_df */
-+
-+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf)
-+FLO_type
-+si_to_float (SItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.class = CLASS_NUMBER;
-+  in.sign = arg_a < 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.normal_exp = FRACBITS + NGARDS;
-+      if (in.sign) 
-+	{
-+	  /* Special case for minint, since there is no +ve integer
-+	     representation for it */
-+	  if (arg_a == (- MAX_SI_INT - 1))
-+	    {
-+	      return (FLO_type)(- MAX_SI_INT - 1);
-+	    }
-+	  in.fraction.ll = (-arg_a);
-+	}
-+      else
-+	in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif /* L_si_to_sf || L_si_to_df */
-+
-+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf)
-+FLO_type
-+usi_to_float (USItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.sign = 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.class = CLASS_NUMBER;
-+      in.normal_exp = FRACBITS + NGARDS;
-+      in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS)))
-+        {
-+          in.fraction.ll >>= 1;
-+          in.normal_exp += 1;
-+        }
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif
-+
-+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si)
-+SItype
-+float_to_si (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  SItype tmp;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* get reasonable MAX_SI_INT...  */
-+  if (isinf (&a))
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 2)
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+  return a.sign ? (-tmp) : (tmp);
-+}
-+#endif /* L_sf_to_si || L_df_to_si */
-+
-+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi)
-+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi)
-+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines,
-+   we also define them for GOFAST because the ones in libgcc2.c have the
-+   wrong names and I'd rather define these here and keep GOFAST CYG-LOC's
-+   out of libgcc2.c.  We can't define these here if not GOFAST because then
-+   there'd be duplicate copies.  */
-+
-+USItype
-+float_to_usi (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* it is a negative number */
-+  if (a.sign)
-+    return 0;
-+  /* get reasonable MAX_USI_INT...  */
-+  if (isinf (&a))
-+    return MAX_USI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 1)
-+    return MAX_USI_INT;
-+  else if (a.normal_exp > (FRACBITS + NGARDS))
-+    return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS));
-+  else
-+    return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+}
-+#endif /* US_SOFTWARE_GOFAST */
-+#endif /* L_sf_to_usi || L_df_to_usi */
-+
-+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf)
-+FLO_type
-+negate (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  flip_sign (&a);
-+  return pack_d (&a);
-+}
-+#endif /* L_negate_sf || L_negate_df */
-+
-+#ifdef FLOAT
-+
-+#if defined(L_make_sf)
-+SFtype
-+__make_fp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     USItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_sf */
-+
-+#ifndef FLOAT_ONLY
-+
-+/* This enables one to build an fp library that supports float but not double.
-+   Otherwise, we would get an undefined reference to __make_dp.
-+   This is needed for some 8-bit ports that can't handle well values that
-+   are 8-bytes in size, so we just don't support double for them at all.  */
-+
-+#if defined(L_sf_to_df)
-+DFtype
-+sf_to_df (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp,
-+		    ((UDItype) in.fraction.ll) << F_D_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#if defined(L_sf_to_tf) && defined(TMODES)
-+TFtype
-+sf_to_tf (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << F_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#endif /* ! FLOAT_ONLY */
-+#endif /* FLOAT */
-+
-+#ifndef FLOAT
-+
-+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);
-+
-+#if defined(L_make_df)
-+DFtype
-+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_df */
-+
-+#if defined(L_df_to_sf)
-+SFtype
-+df_to_sf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_D_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_df_to_sf */
-+
-+#if defined(L_df_to_tf) && defined(TMODES) \
-+    && !defined(FLOAT) && !defined(TFLOAT)
-+TFtype
-+df_to_tf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << D_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#ifdef TFLOAT
-+#if defined(L_make_tf)
-+TFtype
-+__make_tp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     UTItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_tf */
-+
-+#if defined(L_tf_to_df)
-+DFtype
-+tf_to_df (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  UDItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> D_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_df */
-+
-+#if defined(L_tf_to_sf)
-+SFtype
-+tf_to_sf (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_sf */
-+#endif /* TFLOAT */
-+
-+#endif /* ! FLOAT */
-+#endif /* !EXTENDED_FLOAT_STUBS */
---- gcc-3.4.3/gcc/config/nios2/nios2-fp-bit.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-fp-bit.c
-@@ -0,0 +1,1652 @@
-+#define FLOAT
-+/* This is a software floating point library which can be used
-+   for targets without hardware floating point. 
-+   Copyright (C) 1994, 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004
-+   Free Software Foundation, Inc.
-+
-+This file 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.
-+
-+In addition to the permissions in the GNU General Public License, the
-+Free Software Foundation gives you unlimited permission to link the
-+compiled version of this file with other programs, and to distribute
-+those programs without any restriction coming from the use of this
-+file.  (The General Public License restrictions do apply in other
-+respects; for example, they cover modification of the file, and
-+distribution when not linked into another program.)
-+
-+This file 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; 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, if you link this library with other files,
-+   some of which are compiled with GCC, to produce an executable,
-+   this library 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.  */
-+
-+/* This implements IEEE 754 format arithmetic, but does not provide a
-+   mechanism for setting the rounding mode, or for generating or handling
-+   exceptions.
-+
-+   The original code by Steve Chamberlain, hacked by Mark Eichin and Jim
-+   Wilson, all of Cygnus Support.  */
-+
-+/* The intended way to use this file is to make two copies, add `#define FLOAT'
-+   to one copy, then compile both copies and add them to libgcc.a.  */
-+
-+#include "tconfig.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "config/fp-bit.h"
-+
-+/* The following macros can be defined to change the behavior of this file:
-+   FLOAT: Implement a `float', aka SFmode, fp library.  If this is not
-+     defined, then this file implements a `double', aka DFmode, fp library.
-+   FLOAT_ONLY: Used with FLOAT, to implement a `float' only library, i.e.
-+     don't include float->double conversion which requires the double library.
-+     This is useful only for machines which can't support doubles, e.g. some
-+     8-bit processors.
-+   CMPtype: Specify the type that floating point compares should return.
-+     This defaults to SItype, aka int.
-+   US_SOFTWARE_GOFAST: This makes all entry points use the same names as the
-+     US Software goFast library.
-+   _DEBUG_BITFLOAT: This makes debugging the code a little easier, by adding
-+     two integers to the FLO_union_type.
-+   NO_DENORMALS: Disable handling of denormals.
-+   NO_NANS: Disable nan and infinity handling
-+   SMALL_MACHINE: Useful when operations on QIs and HIs are faster
-+     than on an SI */
-+
-+/* We don't currently support extended floats (long doubles) on machines
-+   without hardware to deal with them.
-+
-+   These stubs are just to keep the linker from complaining about unresolved
-+   references which can be pulled in from libio & libstdc++, even if the
-+   user isn't using long doubles.  However, they may generate an unresolved
-+   external to abort if abort is not used by the function, and the stubs
-+   are referenced from within libc, since libgcc goes before and after the
-+   system library.  */
-+
-+#ifdef DECLARE_LIBRARY_RENAMES
-+  DECLARE_LIBRARY_RENAMES
-+#endif
-+
-+#ifdef EXTENDED_FLOAT_STUBS
-+extern void abort (void);
-+void __extendsfxf2 (void) { abort(); }
-+void __extenddfxf2 (void) { abort(); }
-+void __truncxfdf2 (void) { abort(); }
-+void __truncxfsf2 (void) { abort(); }
-+void __fixxfsi (void) { abort(); }
-+void __floatsixf (void) { abort(); }
-+void __addxf3 (void) { abort(); }
-+void __subxf3 (void) { abort(); }
-+void __mulxf3 (void) { abort(); }
-+void __divxf3 (void) { abort(); }
-+void __negxf2 (void) { abort(); }
-+void __eqxf2 (void) { abort(); }
-+void __nexf2 (void) { abort(); }
-+void __gtxf2 (void) { abort(); }
-+void __gexf2 (void) { abort(); }
-+void __lexf2 (void) { abort(); }
-+void __ltxf2 (void) { abort(); }
-+
-+void __extendsftf2 (void) { abort(); }
-+void __extenddftf2 (void) { abort(); }
-+void __trunctfdf2 (void) { abort(); }
-+void __trunctfsf2 (void) { abort(); }
-+void __fixtfsi (void) { abort(); }
-+void __floatsitf (void) { abort(); }
-+void __addtf3 (void) { abort(); }
-+void __subtf3 (void) { abort(); }
-+void __multf3 (void) { abort(); }
-+void __divtf3 (void) { abort(); }
-+void __negtf2 (void) { abort(); }
-+void __eqtf2 (void) { abort(); }
-+void __netf2 (void) { abort(); }
-+void __gttf2 (void) { abort(); }
-+void __getf2 (void) { abort(); }
-+void __letf2 (void) { abort(); }
-+void __lttf2 (void) { abort(); }
-+#else	/* !EXTENDED_FLOAT_STUBS, rest of file */
-+
-+/* IEEE "special" number predicates */
-+
-+#ifdef NO_NANS
-+
-+#define nan() 0
-+#define isnan(x) 0
-+#define isinf(x) 0
-+#else
-+
-+#if   defined L_thenan_sf
-+const fp_number_type __thenan_sf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_df
-+const fp_number_type __thenan_df = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined L_thenan_tf
-+const fp_number_type __thenan_tf = { CLASS_SNAN, 0, 0, {(fractype) 0} };
-+#elif defined TFLOAT
-+extern const fp_number_type __thenan_tf;
-+#elif defined FLOAT
-+extern const fp_number_type __thenan_sf;
-+#else
-+extern const fp_number_type __thenan_df;
-+#endif
-+
-+INLINE
-+static fp_number_type *
-+nan (void)
-+{
-+  /* Discard the const qualifier...  */
-+#ifdef TFLOAT
-+  return (fp_number_type *) (& __thenan_tf);
-+#elif defined FLOAT  
-+  return (fp_number_type *) (& __thenan_sf);
-+#else
-+  return (fp_number_type *) (& __thenan_df);
-+#endif
-+}
-+
-+INLINE
-+static int
-+isnan ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_SNAN || x->class == CLASS_QNAN;
-+}
-+
-+INLINE
-+static int
-+isinf ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_INFINITY;
-+}
-+
-+#endif /* NO_NANS */
-+
-+INLINE
-+static int
-+iszero ( fp_number_type *  x)
-+{
-+  return x->class == CLASS_ZERO;
-+}
-+
-+INLINE 
-+static void
-+flip_sign ( fp_number_type *  x)
-+{
-+  x->sign = !x->sign;
-+}
-+
-+extern FLO_type pack_d ( fp_number_type * );
-+
-+#if defined(L_pack_df) || defined(L_pack_sf) || defined(L_pack_tf)
-+FLO_type
-+pack_d ( fp_number_type *  src)
-+{
-+  FLO_union_type dst;
-+  fractype fraction = src->fraction.ll;	/* wasn't unsigned before? */
-+  int sign = src->sign;
-+  int exp = 0;
-+
-+  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && (isnan (src) || isinf (src)))
-+    {
-+      /* We can't represent these values accurately.  By using the
-+	 largest possible magnitude, we guarantee that the conversion
-+	 of infinity is at least as big as any finite number.  */
-+      exp = EXPMAX;
-+      fraction = ((fractype) 1 << FRACBITS) - 1;
-+    }
-+  else if (isnan (src))
-+    {
-+      exp = EXPMAX;
-+      if (src->class == CLASS_QNAN || 1)
-+	{
-+#ifdef QUIET_NAN_NEGATED
-+	  fraction |= QUIET_NAN - 1;
-+#else
-+	  fraction |= QUIET_NAN;
-+#endif
-+	}
-+    }
-+  else if (isinf (src))
-+    {
-+      exp = EXPMAX;
-+      fraction = 0;
-+    }
-+  else if (iszero (src))
-+    {
-+      exp = 0;
-+      fraction = 0;
-+    }
-+  else if (fraction == 0)
-+    {
-+      exp = 0;
-+    }
-+  else
-+    {
-+      if (src->normal_exp < NORMAL_EXPMIN)
-+	{
-+#ifdef NO_DENORMALS
-+	  /* Go straight to a zero representation if denormals are not
-+ 	     supported.  The denormal handling would be harmless but
-+ 	     isn't unnecessary.  */
-+	  exp = 0;
-+	  fraction = 0;
-+#else /* NO_DENORMALS */
-+	  /* This number's exponent is too low to fit into the bits
-+	     available in the number, so we'll store 0 in the exponent and
-+	     shift the fraction to the right to make up for it.  */
-+
-+	  int shift = NORMAL_EXPMIN - src->normal_exp;
-+
-+	  exp = 0;
-+
-+	  if (shift > FRAC_NBITS - NGARDS)
-+	    {
-+	      /* No point shifting, since it's more that 64 out.  */
-+	      fraction = 0;
-+	    }
-+	  else
-+	    {
-+	      int lowbit = (fraction & (((fractype)1 << shift) - 1)) ? 1 : 0;
-+	      fraction = (fraction >> shift) | lowbit;
-+	    }
-+	  if ((fraction & GARDMASK) == GARDMSB)
-+	    {
-+	      if ((fraction & (1 << NGARDS)))
-+		fraction += GARDROUND + 1;
-+	    }
-+	  else
-+	    {
-+	      /* Add to the guards to round up.  */
-+	      fraction += GARDROUND;
-+	    }
-+	  /* Perhaps the rounding means we now need to change the
-+             exponent, because the fraction is no longer denormal.  */
-+	  if (fraction >= IMPLICIT_1)
-+	    {
-+	      exp += 1;
-+	    }
-+	  fraction >>= NGARDS;
-+#endif /* NO_DENORMALS */
-+	}
-+      else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS)
-+	       && src->normal_exp > EXPBIAS)
-+	{
-+	  exp = EXPMAX;
-+	  fraction = 0;
-+	}
-+      else
-+	{
-+	  exp = src->normal_exp + EXPBIAS;
-+	  if (!ROUND_TOWARDS_ZERO)
-+	    {
-+	      /* IF the gard bits are the all zero, but the first, then we're
-+		 half way between two numbers, choose the one which makes the
-+		 lsb of the answer 0.  */
-+	      if ((fraction & GARDMASK) == GARDMSB)
-+		{
-+		  if (fraction & (1 << NGARDS))
-+		    fraction += GARDROUND + 1;
-+		}
-+	      else
-+		{
-+		  /* Add a one to the guards to round up */
-+		  fraction += GARDROUND;
-+		}
-+	      if (fraction >= IMPLICIT_2)
-+		{
-+		  fraction >>= 1;
-+		  exp += 1;
-+		}
-+	    }
-+	  fraction >>= NGARDS;
-+
-+	  if (LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp > EXPMAX)
-+	    {
-+	      /* Saturate on overflow.  */
-+	      exp = EXPMAX;
-+	      fraction = ((fractype) 1 << FRACBITS) - 1;
-+	    }
-+	}
-+    }
-+
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  dst.bits.fraction = fraction;
-+  dst.bits.exp = exp;
-+  dst.bits.sign = sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low, unity;
-+   int lowsign, lowexp;
-+
-+   unity = (halffractype) 1 << HALFFRACBITS;
-+
-+   /* Set HIGH to the high double's significand, masking out the implicit 1.
-+      Set LOW to the low double's full significand.  */
-+   high = (fraction >> (FRACBITS - HALFFRACBITS)) & (unity - 1);
-+   low = fraction & (unity * 2 - 1);
-+
-+   /* Get the initial sign and exponent of the low double.  */
-+   lowexp = exp - HALFFRACBITS - 1;
-+   lowsign = sign;
-+
-+   /* HIGH should be rounded like a normal double, making |LOW| <=
-+      0.5 ULP of HIGH.  Assume round-to-nearest.  */
-+   if (exp < EXPMAX)
-+     if (low > unity || (low == unity && (high & 1) == 1))
-+       {
-+	 /* Round HIGH up and adjust LOW to match.  */
-+	 high++;
-+	 if (high == unity)
-+	   {
-+	     /* May make it infinite, but that's OK.  */
-+	     high = 0;
-+	     exp++;
-+	   }
-+	 low = unity * 2 - low;
-+	 lowsign ^= 1;
-+       }
-+
-+   high |= (halffractype) exp << HALFFRACBITS;
-+   high |= (halffractype) sign << (HALFFRACBITS + EXPBITS);
-+
-+   if (exp == EXPMAX || exp == 0 || low == 0)
-+     low = 0;
-+   else
-+     {
-+       while (lowexp > 0 && low < unity)
-+	 {
-+	   low <<= 1;
-+	   lowexp--;
-+	 }
-+
-+       if (lowexp <= 0)
-+	 {
-+	   halffractype roundmsb, round;
-+	   int shift;
-+
-+	   shift = 1 - lowexp;
-+	   roundmsb = (1 << (shift - 1));
-+	   round = low & ((roundmsb << 1) - 1);
-+
-+	   low >>= shift;
-+	   lowexp = 0;
-+
-+	   if (round > roundmsb || (round == roundmsb && (low & 1) == 1))
-+	     {
-+	       low++;
-+	       if (low == unity)
-+		 /* LOW rounds up to the smallest normal number.  */
-+		 lowexp++;
-+	     }
-+	 }
-+
-+       low &= unity - 1;
-+       low |= (halffractype) lowexp << HALFFRACBITS;
-+       low |= (halffractype) lowsign << (HALFFRACBITS + EXPBITS);
-+     }
-+   dst.value_raw = ((fractype) high << HALFSHIFT) | low;
-+ }
-+# else
-+  dst.value_raw = fraction & ((((fractype)1) << FRACBITS) - (fractype)1);
-+  dst.value_raw |= ((fractype) (exp & ((1 << EXPBITS) - 1))) << FRACBITS;
-+  dst.value_raw |= ((fractype) (sign & 1)) << (FRACBITS | EXPBITS);
-+# endif
-+#endif
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+#ifdef TFLOAT
-+  {
-+    qrtrfractype tmp1 = dst.words[0];
-+    qrtrfractype tmp2 = dst.words[1];
-+    dst.words[0] = dst.words[3];
-+    dst.words[1] = dst.words[2];
-+    dst.words[2] = tmp2;
-+    dst.words[3] = tmp1;
-+  }
-+#else
-+  {
-+    halffractype tmp = dst.words[0];
-+    dst.words[0] = dst.words[1];
-+    dst.words[1] = tmp;
-+  }
-+#endif
-+#endif
-+
-+  return dst.value;
-+}
-+#endif
-+
-+#if defined(L_unpack_df) || defined(L_unpack_sf) || defined(L_unpack_tf)
-+void
-+unpack_d (FLO_union_type * src, fp_number_type * dst)
-+{
-+  /* We previously used bitfields to store the number, but this doesn't
-+     handle little/big endian systems conveniently, so use shifts and
-+     masks */
-+  fractype fraction;
-+  int exp;
-+  int sign;
-+
-+#if defined(FLOAT_WORD_ORDER_MISMATCH) && !defined(FLOAT)
-+  FLO_union_type swapped;
-+
-+#ifdef TFLOAT
-+  swapped.words[0] = src->words[3];
-+  swapped.words[1] = src->words[2];
-+  swapped.words[2] = src->words[1];
-+  swapped.words[3] = src->words[0];
-+#else
-+  swapped.words[0] = src->words[1];
-+  swapped.words[1] = src->words[0];
-+#endif
-+  src = &swapped;
-+#endif
-+  
-+#ifdef FLOAT_BIT_ORDER_MISMATCH
-+  fraction = src->bits.fraction;
-+  exp = src->bits.exp;
-+  sign = src->bits.sign;
-+#else
-+# if defined TFLOAT && defined HALFFRACBITS
-+ {
-+   halffractype high, low;
-+   
-+   high = src->value_raw >> HALFSHIFT;
-+   low = src->value_raw & (((fractype)1 << HALFSHIFT) - 1);
-+
-+   fraction = high & ((((fractype)1) << HALFFRACBITS) - 1);
-+   fraction <<= FRACBITS - HALFFRACBITS;
-+   exp = ((int)(high >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+   sign = ((int)(high >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+
-+   if (exp != EXPMAX && exp != 0 && low != 0)
-+     {
-+       int lowexp = ((int)(low >> HALFFRACBITS)) & ((1 << EXPBITS) - 1);
-+       int lowsign = ((int)(low >> (((HALFFRACBITS + EXPBITS))))) & 1;
-+       int shift;
-+       fractype xlow;
-+
-+       xlow = low & ((((fractype)1) << HALFFRACBITS) - 1);
-+       if (lowexp)
-+	 xlow |= (((halffractype)1) << HALFFRACBITS);
-+       else
-+	 lowexp = 1;
-+       shift = (FRACBITS - HALFFRACBITS) - (exp - lowexp);
-+       if (shift > 0)
-+	 xlow <<= shift;
-+       else if (shift < 0)
-+	 xlow >>= -shift;
-+       if (sign == lowsign)
-+	 fraction += xlow;
-+       else if (fraction >= xlow)
-+	 fraction -= xlow;
-+       else
-+	 {
-+	   /* The high part is a power of two but the full number is lower.
-+	      This code will leave the implicit 1 in FRACTION, but we'd
-+	      have added that below anyway.  */
-+	   fraction = (((fractype) 1 << FRACBITS) - xlow) << 1;
-+	   exp--;
-+	 }
-+     }
-+ }
-+# else
-+  fraction = src->value_raw & ((((fractype)1) << FRACBITS) - 1);
-+  exp = ((int)(src->value_raw >> FRACBITS)) & ((1 << EXPBITS) - 1);
-+  sign = ((int)(src->value_raw >> (FRACBITS + EXPBITS))) & 1;
-+# endif
-+#endif
-+
-+  dst->sign = sign;
-+  if (exp == 0)
-+    {
-+      /* Hmm.  Looks like 0 */
-+      if (fraction == 0
-+#ifdef NO_DENORMALS
-+	  || 1
-+#endif
-+	  )
-+	{
-+	  /* tastes like zero */
-+	  dst->class = CLASS_ZERO;
-+	}
-+      else
-+	{
-+	  /* Zero exponent with nonzero fraction - it's denormalized,
-+	     so there isn't a leading implicit one - we'll shift it so
-+	     it gets one.  */
-+	  dst->normal_exp = exp - EXPBIAS + 1;
-+	  fraction <<= NGARDS;
-+
-+	  dst->class = CLASS_NUMBER;
-+#if 1
-+	  while (fraction < IMPLICIT_1)
-+	    {
-+	      fraction <<= 1;
-+	      dst->normal_exp--;
-+	    }
-+#endif
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else if (!LARGEST_EXPONENT_IS_NORMAL (FRAC_NBITS) && exp == EXPMAX)
-+    {
-+      /* Huge exponent*/
-+      if (fraction == 0)
-+	{
-+	  /* Attached to a zero fraction - means infinity */
-+	  dst->class = CLASS_INFINITY;
-+	}
-+      else
-+	{
-+	  /* Nonzero fraction, means nan */
-+#ifdef QUIET_NAN_NEGATED
-+	  if ((fraction & QUIET_NAN) == 0)
-+#else
-+	  if (fraction & QUIET_NAN)
-+#endif
-+	    {
-+	      dst->class = CLASS_QNAN;
-+	    }
-+	  else
-+	    {
-+	      dst->class = CLASS_SNAN;
-+	    }
-+	  /* Keep the fraction part as the nan number */
-+	  dst->fraction.ll = fraction;
-+	}
-+    }
-+  else
-+    {
-+      /* Nothing strange about this number */
-+      dst->normal_exp = exp - EXPBIAS;
-+      dst->class = CLASS_NUMBER;
-+      dst->fraction.ll = (fraction << NGARDS) | IMPLICIT_1;
-+    }
-+}
-+#endif /* L_unpack_df || L_unpack_sf */
-+
-+#if defined(L_addsub_sf) || defined(L_addsub_df) || defined(L_addsub_tf)
-+static fp_number_type *
-+_fpadd_parts (fp_number_type * a,
-+	      fp_number_type * b,
-+	      fp_number_type * tmp)
-+{
-+  intfrac tfraction;
-+
-+  /* Put commonly used fields in local variables.  */
-+  int a_normal_exp;
-+  int b_normal_exp;
-+  fractype a_fraction;
-+  fractype b_fraction;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      /* Adding infinities with opposite signs yields a NaN.  */
-+      if (isinf (b) && a->sign != b->sign)
-+	return nan ();
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      return b;
-+    }
-+  if (iszero (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  *tmp = *a;
-+	  tmp->sign = a->sign & b->sign;
-+	  return tmp;
-+	}
-+      return a;
-+    }
-+  if (iszero (a))
-+    {
-+      return b;
-+    }
-+
-+  /* Got two numbers. shift the smaller and increment the exponent till
-+     they're the same */
-+  {
-+    int diff;
-+
-+    a_normal_exp = a->normal_exp;
-+    b_normal_exp = b->normal_exp;
-+    a_fraction = a->fraction.ll;
-+    b_fraction = b->fraction.ll;
-+
-+    diff = a_normal_exp - b_normal_exp;
-+
-+    if (diff < 0)
-+      diff = -diff;
-+    if (diff < FRAC_NBITS)
-+      {
-+	/* ??? This does shifts one bit at a time.  Optimize.  */
-+	while (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp++;
-+	    LSHIFT (b_fraction);
-+	  }
-+	while (b_normal_exp > a_normal_exp)
-+	  {
-+	    a_normal_exp++;
-+	    LSHIFT (a_fraction);
-+	  }
-+      }
-+    else
-+      {
-+	/* Somethings's up.. choose the biggest */
-+	if (a_normal_exp > b_normal_exp)
-+	  {
-+	    b_normal_exp = a_normal_exp;
-+	    b_fraction = 0;
-+	  }
-+	else
-+	  {
-+	    a_normal_exp = b_normal_exp;
-+	    a_fraction = 0;
-+	  }
-+      }
-+  }
-+
-+  if (a->sign != b->sign)
-+    {
-+      if (a->sign)
-+	{
-+	  tfraction = -a_fraction + b_fraction;
-+	}
-+      else
-+	{
-+	  tfraction = a_fraction - b_fraction;
-+	}
-+      if (tfraction >= 0)
-+	{
-+	  tmp->sign = 0;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = tfraction;
-+	}
-+      else
-+	{
-+	  tmp->sign = 1;
-+	  tmp->normal_exp = a_normal_exp;
-+	  tmp->fraction.ll = -tfraction;
-+	}
-+      /* and renormalize it */
-+
-+      while (tmp->fraction.ll < IMPLICIT_1 && tmp->fraction.ll)
-+	{
-+	  tmp->fraction.ll <<= 1;
-+	  tmp->normal_exp--;
-+	}
-+    }
-+  else
-+    {
-+      tmp->sign = a->sign;
-+      tmp->normal_exp = a_normal_exp;
-+      tmp->fraction.ll = a_fraction + b_fraction;
-+    }
-+  tmp->class = CLASS_NUMBER;
-+  /* Now the fraction is added, we have to shift down to renormalize the
-+     number */
-+
-+  if (tmp->fraction.ll >= IMPLICIT_2)
-+    {
-+      LSHIFT (tmp->fraction.ll);
-+      tmp->normal_exp++;
-+    }
-+  return tmp;
-+
-+}
-+
-+FLO_type
-+add (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+
-+FLO_type
-+sub (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  b.sign ^= 1;
-+
-+  res = _fpadd_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_addsub_sf || L_addsub_df */
-+
-+#if defined(L_mul_sf) || defined(L_mul_df) || defined(L_mul_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpmul_parts ( fp_number_type *  a,
-+	       fp_number_type *  b,
-+	       fp_number_type * tmp)
-+{
-+  fractype low = 0;
-+  fractype high = 0;
-+
-+  if (isnan (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (isinf (a))
-+    {
-+      if (iszero (b))
-+	return nan ();
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (isinf (b))
-+    {
-+      if (iszero (a))
-+	{
-+	  return nan ();
-+	}
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+  if (iszero (a))
-+    {
-+      a->sign = a->sign != b->sign;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      b->sign = a->sign != b->sign;
-+      return b;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both numbers to get a
-+     twice-as-wide number.  */
-+  {
-+#if defined(NO_DI_MODE) || defined(TFLOAT)
-+    {
-+      fractype x = a->fraction.ll;
-+      fractype ylow = b->fraction.ll;
-+      fractype yhigh = 0;
-+      int bit;
-+
-+      /* ??? This does multiplies one bit at a time.  Optimize.  */
-+      for (bit = 0; bit < FRAC_NBITS; bit++)
-+	{
-+	  int carry;
-+
-+	  if (x & 1)
-+	    {
-+	      carry = (low += ylow) < ylow;
-+	      high += yhigh + carry;
-+	    }
-+	  yhigh <<= 1;
-+	  if (ylow & FRACHIGH)
-+	    {
-+	      yhigh |= 1;
-+	    }
-+	  ylow <<= 1;
-+	  x >>= 1;
-+	}
-+    }
-+#elif defined(FLOAT) 
-+    /* Multiplying two USIs to get a UDI, we're safe.  */
-+    {
-+      UDItype answer = (UDItype)a->fraction.ll * (UDItype)b->fraction.ll;
-+      
-+      high = answer >> BITS_PER_SI;
-+      low = answer;
-+    }
-+#else
-+    /* fractype is DImode, but we need the result to be twice as wide.
-+       Assuming a widening multiply from DImode to TImode is not
-+       available, build one by hand.  */
-+    {
-+      USItype nl = a->fraction.ll;
-+      USItype nh = a->fraction.ll >> BITS_PER_SI;
-+      USItype ml = b->fraction.ll;
-+      USItype mh = b->fraction.ll >> BITS_PER_SI;
-+      UDItype pp_ll = (UDItype) ml * nl;
-+      UDItype pp_hl = (UDItype) mh * nl;
-+      UDItype pp_lh = (UDItype) ml * nh;
-+      UDItype pp_hh = (UDItype) mh * nh;
-+      UDItype res2 = 0;
-+      UDItype res0 = 0;
-+      UDItype ps_hh__ = pp_hl + pp_lh;
-+      if (ps_hh__ < pp_hl)
-+	res2 += (UDItype)1 << BITS_PER_SI;
-+      pp_hl = (UDItype)(USItype)ps_hh__ << BITS_PER_SI;
-+      res0 = pp_ll + pp_hl;
-+      if (res0 < pp_ll)
-+	res2++;
-+      res2 += (ps_hh__ >> BITS_PER_SI) + pp_hh;
-+      high = res2;
-+      low = res0;
-+    }
-+#endif
-+  }
-+
-+  tmp->normal_exp = a->normal_exp + b->normal_exp
-+    + FRAC_NBITS - (FRACBITS + NGARDS);
-+  tmp->sign = a->sign != b->sign;
-+  while (high >= IMPLICIT_2)
-+    {
-+      tmp->normal_exp++;
-+      if (high & 1)
-+	{
-+	  low >>= 1;
-+	  low |= FRACHIGH;
-+	}
-+      high >>= 1;
-+    }
-+  while (high < IMPLICIT_1)
-+    {
-+      tmp->normal_exp--;
-+
-+      high <<= 1;
-+      if (low & FRACHIGH)
-+	high |= 1;
-+      low <<= 1;
-+    }
-+  /* rounding is tricky. if we only round if it won't make us round later.  */
-+#if 0
-+  if (low & FRACHIGH2)
-+    {
-+      if (((high & GARDMASK) != GARDMSB)
-+	  && (((high + 1) & GARDMASK) == GARDMSB))
-+	{
-+	  /* don't round, it gets done again later.  */
-+	}
-+      else
-+	{
-+	  high++;
-+	}
-+    }
-+#endif
-+  if (!ROUND_TOWARDS_ZERO && (high & GARDMASK) == GARDMSB)
-+    {
-+      if (high & (1 << NGARDS))
-+	{
-+	  /* half way, so round to even */
-+	  high += GARDROUND + 1;
-+	}
-+      else if (low)
-+	{
-+	  /* but we really weren't half way */
-+	  high += GARDROUND + 1;
-+	}
-+    }
-+  tmp->fraction.ll = high;
-+  tmp->class = CLASS_NUMBER;
-+  return tmp;
-+}
-+
-+FLO_type
-+multiply (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type tmp;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpmul_parts (&a, &b, &tmp);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_mul_sf || L_mul_df */
-+
-+#if defined(L_div_sf) || defined(L_div_df) || defined(L_div_tf)
-+static inline __attribute__ ((__always_inline__)) fp_number_type *
-+_fpdiv_parts (fp_number_type * a,
-+	      fp_number_type * b)
-+{
-+  fractype bit;
-+  fractype numerator;
-+  fractype denominator;
-+  fractype quotient;
-+
-+  if (isnan (a))
-+    {
-+      return a;
-+    }
-+  if (isnan (b))
-+    {
-+      return b;
-+    }
-+
-+  a->sign = a->sign ^ b->sign;
-+
-+  if (isinf (a) || iszero (a))
-+    {
-+      if (a->class == b->class)
-+	return nan ();
-+      return a;
-+    }
-+
-+  if (isinf (b))
-+    {
-+      a->fraction.ll = 0;
-+      a->normal_exp = 0;
-+      return a;
-+    }
-+  if (iszero (b))
-+    {
-+      a->class = CLASS_INFINITY;
-+      return a;
-+    }
-+
-+  /* Calculate the mantissa by multiplying both 64bit numbers to get a
-+     128 bit number */
-+  {
-+    /* quotient =
-+       ( numerator / denominator) * 2^(numerator exponent -  denominator exponent)
-+     */
-+
-+    a->normal_exp = a->normal_exp - b->normal_exp;
-+    numerator = a->fraction.ll;
-+    denominator = b->fraction.ll;
-+
-+    if (numerator < denominator)
-+      {
-+	/* Fraction will be less than 1.0 */
-+	numerator *= 2;
-+	a->normal_exp--;
-+      }
-+    bit = IMPLICIT_1;
-+    quotient = 0;
-+    /* ??? Does divide one bit at a time.  Optimize.  */
-+    while (bit)
-+      {
-+	if (numerator >= denominator)
-+	  {
-+	    quotient |= bit;
-+	    numerator -= denominator;
-+	  }
-+	bit >>= 1;
-+	numerator *= 2;
-+      }
-+
-+    if (!ROUND_TOWARDS_ZERO && (quotient & GARDMASK) == GARDMSB)
-+      {
-+	if (quotient & (1 << NGARDS))
-+	  {
-+	    /* half way, so round to even */
-+	    quotient += GARDROUND + 1;
-+	  }
-+	else if (numerator)
-+	  {
-+	    /* but we really weren't half way, more bits exist */
-+	    quotient += GARDROUND + 1;
-+	  }
-+      }
-+
-+    a->fraction.ll = quotient;
-+    return (a);
-+  }
-+}
-+
-+FLO_type
-+divide (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  fp_number_type *res;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  res = _fpdiv_parts (&a, &b);
-+
-+  return pack_d (res);
-+}
-+#endif /* L_div_sf || L_div_df */
-+
-+#if defined(L_fpcmp_parts_sf) || defined(L_fpcmp_parts_df) \
-+    || defined(L_fpcmp_parts_tf)
-+/* according to the demo, fpcmp returns a comparison with 0... thus
-+   a<b -> -1
-+   a==b -> 0
-+   a>b -> +1
-+ */
-+
-+int
-+__fpcmp_parts (fp_number_type * a, fp_number_type * b)
-+{
-+#if 0
-+  /* either nan -> unordered. Must be checked outside of this routine.  */
-+  if (isnan (a) && isnan (b))
-+    {
-+      return 1;			/* still unordered! */
-+    }
-+#endif
-+
-+  if (isnan (a) || isnan (b))
-+    {
-+      return 1;			/* how to indicate unordered compare? */
-+    }
-+  if (isinf (a) && isinf (b))
-+    {
-+      /* +inf > -inf, but +inf != +inf */
-+      /* b    \a| +inf(0)| -inf(1)
-+       ______\+--------+--------
-+       +inf(0)| a==b(0)| a<b(-1)
-+       -------+--------+--------
-+       -inf(1)| a>b(1) | a==b(0)
-+       -------+--------+--------
-+       So since unordered must be nonzero, just line up the columns...
-+       */
-+      return b->sign - a->sign;
-+    }
-+  /* but not both...  */
-+  if (isinf (a))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (isinf (b))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (a) && iszero (b))
-+    {
-+      return 0;
-+    }
-+  if (iszero (a))
-+    {
-+      return b->sign ? 1 : -1;
-+    }
-+  if (iszero (b))
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  /* now both are "normal".  */
-+  if (a->sign != b->sign)
-+    {
-+      /* opposite signs */
-+      return a->sign ? -1 : 1;
-+    }
-+  /* same sign; exponents? */
-+  if (a->normal_exp > b->normal_exp)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->normal_exp < b->normal_exp)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* same exponents; check size.  */
-+  if (a->fraction.ll > b->fraction.ll)
-+    {
-+      return a->sign ? -1 : 1;
-+    }
-+  if (a->fraction.ll < b->fraction.ll)
-+    {
-+      return a->sign ? 1 : -1;
-+    }
-+  /* after all that, they're equal.  */
-+  return 0;
-+}
-+#endif
-+
-+#if defined(L_compare_sf) || defined(L_compare_df) || defined(L_compoare_tf)
-+CMPtype
-+compare (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_compare_sf || L_compare_df */
-+
-+#ifndef US_SOFTWARE_GOFAST
-+
-+/* These should be optimized for their specific tasks someday.  */
-+
-+#if defined(L_eq_sf) || defined(L_eq_df) || defined(L_eq_tf)
-+CMPtype
-+_eq_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth == 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_eq_sf || L_eq_df */
-+
-+#if defined(L_ne_sf) || defined(L_ne_df) || defined(L_ne_tf)
-+CMPtype
-+_ne_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* true, truth != 0 */
-+
-+  return  __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ne_sf || L_ne_df */
-+
-+#if defined(L_gt_sf) || defined(L_gt_df) || defined(L_gt_tf)
-+CMPtype
-+_gt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth > 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_gt_sf || L_gt_df */
-+
-+#if defined(L_ge_sf) || defined(L_ge_df) || defined(L_ge_tf)
-+CMPtype
-+_ge_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return -1;			/* false, truth >= 0 */
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_ge_sf || L_ge_df */
-+
-+#if defined(L_lt_sf) || defined(L_lt_df) || defined(L_lt_tf)
-+CMPtype
-+_lt_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth < 0 */
-+
-+  return __fpcmp_parts (&a, &b);
-+}
-+#endif /* L_lt_sf || L_lt_df */
-+
-+#if defined(L_le_sf) || defined(L_le_df) || defined(L_le_tf)
-+CMPtype
-+_le_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  if (isnan (&a) || isnan (&b))
-+    return 1;			/* false, truth <= 0 */
-+
-+  return __fpcmp_parts (&a, &b) ;
-+}
-+#endif /* L_le_sf || L_le_df */
-+
-+#endif /* ! US_SOFTWARE_GOFAST */
-+
-+#if defined(L_unord_sf) || defined(L_unord_df) || defined(L_unord_tf)
-+CMPtype
-+_unord_f2 (FLO_type arg_a, FLO_type arg_b)
-+{
-+  fp_number_type a;
-+  fp_number_type b;
-+  FLO_union_type au, bu;
-+
-+  au.value = arg_a;
-+  bu.value = arg_b;
-+
-+  unpack_d (&au, &a);
-+  unpack_d (&bu, &b);
-+
-+  return (isnan (&a) || isnan (&b));
-+}
-+#endif /* L_unord_sf || L_unord_df */
-+
-+#if defined(L_si_to_sf) || defined(L_si_to_df) || defined(L_si_to_tf)
-+FLO_type
-+si_to_float (SItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.class = CLASS_NUMBER;
-+  in.sign = arg_a < 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.normal_exp = FRACBITS + NGARDS;
-+      if (in.sign) 
-+	{
-+	  /* Special case for minint, since there is no +ve integer
-+	     representation for it */
-+	  if (arg_a == (- MAX_SI_INT - 1))
-+	    {
-+	      return (FLO_type)(- MAX_SI_INT - 1);
-+	    }
-+	  in.fraction.ll = (-arg_a);
-+	}
-+      else
-+	in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif /* L_si_to_sf || L_si_to_df */
-+
-+#if defined(L_usi_to_sf) || defined(L_usi_to_df) || defined(L_usi_to_tf)
-+FLO_type
-+usi_to_float (USItype arg_a)
-+{
-+  fp_number_type in;
-+
-+  in.sign = 0;
-+  if (!arg_a)
-+    {
-+      in.class = CLASS_ZERO;
-+    }
-+  else
-+    {
-+      in.class = CLASS_NUMBER;
-+      in.normal_exp = FRACBITS + NGARDS;
-+      in.fraction.ll = arg_a;
-+
-+      while (in.fraction.ll > ((fractype)1 << (FRACBITS + NGARDS)))
-+        {
-+          in.fraction.ll >>= 1;
-+          in.normal_exp += 1;
-+        }
-+      while (in.fraction.ll < ((fractype)1 << (FRACBITS + NGARDS)))
-+	{
-+	  in.fraction.ll <<= 1;
-+	  in.normal_exp -= 1;
-+	}
-+    }
-+  return pack_d (&in);
-+}
-+#endif
-+
-+#if defined(L_sf_to_si) || defined(L_df_to_si) || defined(L_tf_to_si)
-+SItype
-+float_to_si (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  SItype tmp;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* get reasonable MAX_SI_INT...  */
-+  if (isinf (&a))
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 2)
-+    return a.sign ? (-MAX_SI_INT)-1 : MAX_SI_INT;
-+  tmp = a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+  return a.sign ? (-tmp) : (tmp);
-+}
-+#endif /* L_sf_to_si || L_df_to_si */
-+
-+#if defined(L_sf_to_usi) || defined(L_df_to_usi) || defined(L_tf_to_usi)
-+#if defined US_SOFTWARE_GOFAST || defined(L_tf_to_usi)
-+/* While libgcc2.c defines its own __fixunssfsi and __fixunsdfsi routines,
-+   we also define them for GOFAST because the ones in libgcc2.c have the
-+   wrong names and I'd rather define these here and keep GOFAST CYG-LOC's
-+   out of libgcc2.c.  We can't define these here if not GOFAST because then
-+   there'd be duplicate copies.  */
-+
-+USItype
-+float_to_usi (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  if (iszero (&a))
-+    return 0;
-+  if (isnan (&a))
-+    return 0;
-+  /* it is a negative number */
-+  if (a.sign)
-+    return 0;
-+  /* get reasonable MAX_USI_INT...  */
-+  if (isinf (&a))
-+    return MAX_USI_INT;
-+  /* it is a number, but a small one */
-+  if (a.normal_exp < 0)
-+    return 0;
-+  if (a.normal_exp > BITS_PER_SI - 1)
-+    return MAX_USI_INT;
-+  else if (a.normal_exp > (FRACBITS + NGARDS))
-+    return a.fraction.ll << (a.normal_exp - (FRACBITS + NGARDS));
-+  else
-+    return a.fraction.ll >> ((FRACBITS + NGARDS) - a.normal_exp);
-+}
-+#endif /* US_SOFTWARE_GOFAST */
-+#endif /* L_sf_to_usi || L_df_to_usi */
-+
-+#if defined(L_negate_sf) || defined(L_negate_df) || defined(L_negate_tf)
-+FLO_type
-+negate (FLO_type arg_a)
-+{
-+  fp_number_type a;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &a);
-+
-+  flip_sign (&a);
-+  return pack_d (&a);
-+}
-+#endif /* L_negate_sf || L_negate_df */
-+
-+#ifdef FLOAT
-+
-+#if defined(L_make_sf)
-+SFtype
-+__make_fp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     USItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_sf */
-+
-+#ifndef FLOAT_ONLY
-+
-+/* This enables one to build an fp library that supports float but not double.
-+   Otherwise, we would get an undefined reference to __make_dp.
-+   This is needed for some 8-bit ports that can't handle well values that
-+   are 8-bytes in size, so we just don't support double for them at all.  */
-+
-+#if defined(L_sf_to_df)
-+DFtype
-+sf_to_df (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp,
-+		    ((UDItype) in.fraction.ll) << F_D_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#if defined(L_sf_to_tf) && defined(TMODES)
-+TFtype
-+sf_to_tf (SFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << F_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#endif /* ! FLOAT_ONLY */
-+#endif /* FLOAT */
-+
-+#ifndef FLOAT
-+
-+extern SFtype __make_fp (fp_class_type, unsigned int, int, USItype);
-+
-+#if defined(L_make_df)
-+DFtype
-+__make_dp (fp_class_type class, unsigned int sign, int exp, UDItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_df */
-+
-+#if defined(L_df_to_sf)
-+SFtype
-+df_to_sf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_D_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((USItype) 1 << F_D_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_df_to_sf */
-+
-+#if defined(L_df_to_tf) && defined(TMODES) \
-+    && !defined(FLOAT) && !defined(TFLOAT)
-+TFtype
-+df_to_tf (DFtype arg_a)
-+{
-+  fp_number_type in;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  return __make_tp (in.class, in.sign, in.normal_exp,
-+		    ((UTItype) in.fraction.ll) << D_T_BITOFF);
-+}
-+#endif /* L_sf_to_df */
-+
-+#ifdef TFLOAT
-+#if defined(L_make_tf)
-+TFtype
-+__make_tp(fp_class_type class,
-+	     unsigned int sign,
-+	     int exp, 
-+	     UTItype frac)
-+{
-+  fp_number_type in;
-+
-+  in.class = class;
-+  in.sign = sign;
-+  in.normal_exp = exp;
-+  in.fraction.ll = frac;
-+  return pack_d (&in);
-+}
-+#endif /* L_make_tf */
-+
-+#if defined(L_tf_to_df)
-+DFtype
-+tf_to_df (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  UDItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> D_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << D_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_dp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_df */
-+
-+#if defined(L_tf_to_sf)
-+SFtype
-+tf_to_sf (TFtype arg_a)
-+{
-+  fp_number_type in;
-+  USItype sffrac;
-+  FLO_union_type au;
-+
-+  au.value = arg_a;
-+  unpack_d (&au, &in);
-+
-+  sffrac = in.fraction.ll >> F_T_BITOFF;
-+
-+  /* We set the lowest guard bit in SFFRAC if we discarded any non
-+     zero bits.  */
-+  if ((in.fraction.ll & (((UTItype) 1 << F_T_BITOFF) - 1)) != 0)
-+    sffrac |= 1;
-+
-+  return __make_fp (in.class, in.sign, in.normal_exp, sffrac);
-+}
-+#endif /* L_tf_to_sf */
-+#endif /* TFLOAT */
-+
-+#endif /* ! FLOAT */
-+#endif /* !EXTENDED_FLOAT_STUBS */
---- gcc-3.4.3/gcc/config/nios2/nios2-protos.h
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2-protos.h
-@@ -0,0 +1,70 @@
-+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera 
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+extern void dump_frame_size (FILE *);
-+extern HOST_WIDE_INT compute_frame_size (void);
-+extern int nios2_initial_elimination_offset (int, int);
-+extern void override_options (void);
-+extern void optimization_options (int, int);
-+extern int nios2_can_use_return_insn (void);
-+extern void expand_prologue (void);
-+extern void expand_epilogue (bool);
-+extern void function_profiler (FILE *, int);
-+
-+
-+#ifdef RTX_CODE
-+extern int nios2_legitimate_address (rtx, enum machine_mode, int);
-+extern void nios2_print_operand (FILE *, rtx, int);
-+extern void nios2_print_operand_address (FILE *, rtx);
-+
-+extern int nios2_emit_move_sequence (rtx *, enum machine_mode);
-+extern int nios2_emit_expensive_div (rtx *, enum machine_mode);
-+
-+extern void gen_int_relational (enum rtx_code, rtx, rtx, rtx, rtx);
-+extern void gen_conditional_move (rtx *, enum machine_mode);
-+extern const char *asm_output_opcode (FILE *, const char *);
-+
-+/* predicates */
-+extern int arith_operand (rtx, enum machine_mode);
-+extern int uns_arith_operand (rtx, enum machine_mode);
-+extern int logical_operand (rtx, enum machine_mode);
-+extern int shift_operand (rtx, enum machine_mode);
-+extern int reg_or_0_operand (rtx, enum machine_mode);
-+extern int equality_op (rtx, enum machine_mode);
-+extern int custom_insn_opcode (rtx, enum machine_mode);
-+extern int rdwrctl_operand (rtx, enum machine_mode);
-+
-+# ifdef HAVE_MACHINE_MODES
-+#  if defined TREE_CODE
-+extern void function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern rtx function_arg (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern int function_arg_partial_nregs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
-+extern int nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *, enum machine_mode, tree, int);
-+
-+#  endif /* TREE_CODE */
-+# endif	/* HAVE_MACHINE_MODES */
-+#endif
-+
-+#ifdef TREE_CODE
-+extern int nios2_return_in_memory (tree);
-+
-+#endif /* TREE_CODE */
---- gcc-3.4.3/gcc/config/nios2/nios2.c
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.c
-@@ -0,0 +1,2853 @@
-+/* Subroutines for assembler code output for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+
-+#include <stdio.h>
-+#include "config.h"
-+#include "system.h"
-+#include "coretypes.h"
-+#include "tm.h"
-+#include "rtl.h"
-+#include "tree.h"
-+#include "tm_p.h"
-+#include "regs.h"
-+#include "hard-reg-set.h"
-+#include "real.h"
-+#include "insn-config.h"
-+#include "conditions.h"
-+#include "output.h"
-+#include "insn-attr.h"
-+#include "flags.h"
-+#include "recog.h"
-+#include "expr.h"
-+#include "toplev.h"
-+#include "basic-block.h"
-+#include "function.h"
-+#include "ggc.h"
-+#include "reload.h"
-+#include "debug.h"
-+#include "optabs.h"
-+#include "target.h"
-+#include "target-def.h"
-+
-+/* local prototypes */
-+static bool nios2_rtx_costs (rtx, int, int, int *);
-+
-+static void nios2_asm_function_prologue (FILE *, HOST_WIDE_INT);
-+static int nios2_use_dfa_pipeline_interface (void);
-+static int nios2_issue_rate (void);
-+static struct machine_function *nios2_init_machine_status (void);
-+static bool nios2_in_small_data_p (tree);
-+static rtx save_reg (int, HOST_WIDE_INT, rtx);
-+static rtx restore_reg (int, HOST_WIDE_INT);
-+static unsigned int nios2_section_type_flags (tree, const char *, int);
-+static void nios2_init_builtins (void);
-+static rtx nios2_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
-+static bool nios2_function_ok_for_sibcall (tree, tree);
-+static void nios2_encode_section_info (tree, rtx, int);
-+
-+/* Initialize the GCC target structure.  */
-+#undef TARGET_ASM_FUNCTION_PROLOGUE
-+#define TARGET_ASM_FUNCTION_PROLOGUE nios2_asm_function_prologue
-+
-+#undef TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE
-+#define TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE \
-+ nios2_use_dfa_pipeline_interface
-+#undef TARGET_SCHED_ISSUE_RATE
-+#define TARGET_SCHED_ISSUE_RATE nios2_issue_rate
-+#undef TARGET_IN_SMALL_DATA_P
-+#define TARGET_IN_SMALL_DATA_P nios2_in_small_data_p
-+#undef  TARGET_ENCODE_SECTION_INFO
-+#define TARGET_ENCODE_SECTION_INFO nios2_encode_section_info
-+#undef  TARGET_SECTION_TYPE_FLAGS
-+#define TARGET_SECTION_TYPE_FLAGS  nios2_section_type_flags
-+
-+#undef TARGET_INIT_BUILTINS
-+#define TARGET_INIT_BUILTINS nios2_init_builtins
-+#undef TARGET_EXPAND_BUILTIN
-+#define TARGET_EXPAND_BUILTIN nios2_expand_builtin
-+
-+#undef TARGET_FUNCTION_OK_FOR_SIBCALL
-+#define TARGET_FUNCTION_OK_FOR_SIBCALL nios2_function_ok_for_sibcall
-+
-+#undef TARGET_RTX_COSTS
-+#define TARGET_RTX_COSTS nios2_rtx_costs
-+
-+
-+struct gcc_target targetm = TARGET_INITIALIZER;
-+
-+
-+
-+/* Threshold for data being put into the small data/bss area, instead
-+   of the normal data area (references to the small data/bss area take
-+   1 instruction, and use the global pointer, references to the normal
-+   data area takes 2 instructions).  */
-+unsigned HOST_WIDE_INT nios2_section_threshold = NIOS2_DEFAULT_GVALUE;
-+
-+
-+/* Structure to be filled in by compute_frame_size with register
-+   save masks, and offsets for the current function.  */
-+
-+struct nios2_frame_info
-+GTY (())
-+{
-+  long total_size;		/* # bytes that the entire frame takes up */
-+  long var_size;		/* # bytes that variables take up */
-+  long args_size;		/* # bytes that outgoing arguments take up */
-+  int save_reg_size;		/* # bytes needed to store gp regs */
-+  int save_reg_rounded;		/* # bytes needed to store gp regs */
-+  long save_regs_offset;	/* offset from new sp to store gp registers */
-+  int initialized;		/* != 0 if frame size already calculated */
-+  int num_regs;			/* number of gp registers saved */
-+};
-+
-+struct machine_function
-+GTY (())
-+{
-+
-+  /* Current frame information, calculated by compute_frame_size.  */
-+  struct nios2_frame_info frame;
-+};
-+
-+
-+/***************************************
-+ * Section encodings
-+ ***************************************/
-+
-+
-+
-+
-+
-+/***************************************
-+ * Stack Layout and Calling Conventions
-+ ***************************************/
-+
-+
-+#define TOO_BIG_OFFSET(X) ((X) > ((1 << 15) - 1))
-+#define TEMP_REG_NUM 8
-+
-+static void
-+nios2_asm_function_prologue (FILE *file, HOST_WIDE_INT size ATTRIBUTE_UNUSED)
-+{
-+  if (flag_verbose_asm || flag_debug_asm)
-+    {
-+      compute_frame_size ();
-+      dump_frame_size (file);
-+    }
-+}
-+
-+static rtx
-+save_reg (int regno, HOST_WIDE_INT offset, rtx cfa_store_reg)
-+{
-+  rtx insn, stack_slot;
-+
-+  stack_slot = gen_rtx_PLUS (SImode,
-+			     cfa_store_reg,
-+			     GEN_INT (offset));
-+
-+  insn = emit_insn (gen_rtx_SET (SImode,
-+				 gen_rtx_MEM (SImode, stack_slot),
-+				 gen_rtx_REG (SImode, regno)));
-+
-+  RTX_FRAME_RELATED_P (insn) = 1;
-+
-+  return insn;
-+}
-+
-+static rtx
-+restore_reg (int regno, HOST_WIDE_INT offset)
-+{
-+  rtx insn, stack_slot;
-+
-+  if (TOO_BIG_OFFSET (offset))
-+    {
-+      stack_slot = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     stack_slot,
-+				     GEN_INT (offset)));
-+
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     stack_slot,
-+                                     gen_rtx_PLUS (SImode,
-+				                   stack_slot,
-+				                   stack_pointer_rtx)));
-+    }
-+  else
-+    {
-+      stack_slot = gen_rtx_PLUS (SImode,
-+			         stack_pointer_rtx,
-+				 GEN_INT (offset));
-+    }
-+
-+  stack_slot = gen_rtx_MEM (SImode, stack_slot);
-+
-+  insn = emit_move_insn (gen_rtx_REG (SImode, regno), stack_slot);
-+
-+  return insn;
-+}
-+
-+
-+/* There are two possible paths for prologue expansion,
-+- the first is if the total frame size is < 2^15-1. In that
-+case all the immediates will fit into the 16-bit immediate
-+fields.
-+- the second is when the frame size is too big, in that
-+case an additional temporary register is used, first 
-+as a cfa_temp to offset the sp, second as the cfa_store
-+register.
-+
-+See the comment above dwarf2out_frame_debug_expr in 
-+dwarf2out.c for more explanation of the "rules."
-+
-+
-+Case 1:
-+Rule #  Example Insn                       Effect
-+2  	addi	sp, sp, -total_frame_size  cfa.reg=sp, cfa.offset=total_frame_size
-+                                           cfa_store.reg=sp, cfa_store.offset=total_frame_size
-+12  	stw	ra, offset(sp)		   
-+12  	stw	r16, offset(sp)
-+1  	mov	fp, sp
-+  
-+Case 2: 
-+Rule #  Example Insn                       Effect
-+6 	movi	r8, total_frame_size       cfa_temp.reg=r8, cfa_temp.offset=total_frame_size
-+2  	sub	sp, sp, r8                 cfa.reg=sp, cfa.offset=total_frame_size
-+                                           cfa_store.reg=sp, cfa_store.offset=total_frame_size
-+5   	add	r8, r8, sp                 cfa_store.reg=r8, cfa_store.offset=0
-+12  	stw	ra, offset(r8)
-+12  	stw	r16, offset(r8)
-+1  	mov	fp, sp
-+
-+*/
-+
-+void
-+expand_prologue ()
-+{
-+  int i;
-+  HOST_WIDE_INT total_frame_size;
-+  int cfa_store_offset;
-+  rtx insn;
-+  rtx cfa_store_reg = 0;
-+
-+  total_frame_size = compute_frame_size ();
-+
-+  if (total_frame_size)
-+    {
-+
-+      if (TOO_BIG_OFFSET (total_frame_size)) 
-+	{
-+	    /* cfa_temp and cfa_store_reg are the same register,
-+	       cfa_store_reg overwrites cfa_temp */
-+	    cfa_store_reg = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+	    insn = emit_insn (gen_rtx_SET (SImode,
-+					   cfa_store_reg,
-+					   GEN_INT (total_frame_size)));
-+
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+
-+	    insn = gen_rtx_SET (SImode,
-+				stack_pointer_rtx,
-+				gen_rtx_MINUS (SImode,
-+					       stack_pointer_rtx,
-+					       cfa_store_reg));
-+
-+	    insn = emit_insn (insn);
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+
-+	    /* if there are no registers to save, I don't need to
-+	       create a cfa_store */
-+	    if (cfun->machine->frame.save_reg_size) 
-+	      {
-+		insn = gen_rtx_SET (SImode,
-+				    cfa_store_reg,
-+				    gen_rtx_PLUS (SImode,
-+						  cfa_store_reg,
-+						  stack_pointer_rtx));
-+
-+		insn = emit_insn (insn);
-+		RTX_FRAME_RELATED_P (insn) = 1;
-+	      }
-+
-+	    cfa_store_offset 
-+	      = total_frame_size 
-+		- (cfun->machine->frame.save_regs_offset
-+		   + cfun->machine->frame.save_reg_rounded);
-+	}
-+      else
-+	{
-+	    insn = gen_rtx_SET (SImode,
-+				stack_pointer_rtx,
-+				gen_rtx_PLUS (SImode,
-+					      stack_pointer_rtx,
-+					      GEN_INT (-total_frame_size)));
-+	    insn = emit_insn (insn);
-+	    RTX_FRAME_RELATED_P (insn) = 1;
-+
-+	    cfa_store_reg = stack_pointer_rtx;
-+	    cfa_store_offset 
-+	      = cfun->machine->frame.save_regs_offset
-+		+ cfun->machine->frame.save_reg_rounded;
-+	}
-+    }
-+
-+  if (MUST_SAVE_REGISTER (RA_REGNO))
-+    {
-+      cfa_store_offset -= 4;
-+      save_reg (RA_REGNO, cfa_store_offset, cfa_store_reg);
-+    }
-+  if (MUST_SAVE_REGISTER (FP_REGNO))
-+    {
-+      cfa_store_offset -= 4;
-+      save_reg (FP_REGNO, cfa_store_offset, cfa_store_reg);
-+    }
-+
-+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+    {
-+      if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO)
-+	{
-+	  cfa_store_offset -= 4;
-+	  save_reg (i, cfa_store_offset, cfa_store_reg);
-+	}
-+    }
-+
-+  if (frame_pointer_needed)
-+    {
-+      insn = emit_insn (gen_rtx_SET (SImode,
-+				     gen_rtx_REG (SImode, FP_REGNO),
-+				     gen_rtx_REG (SImode, SP_REGNO)));
-+
-+      RTX_FRAME_RELATED_P (insn) = 1;
-+    }
-+
-+  /* If we are profiling, make sure no instructions are scheduled before
-+     the call to mcount.  */
-+  if (current_function_profile)
-+    emit_insn (gen_blockage ());
-+}
-+
-+void
-+expand_epilogue (bool sibcall_p)
-+{
-+  rtx insn;
-+  int i;
-+  HOST_WIDE_INT total_frame_size;
-+  int register_store_offset;
-+
-+  total_frame_size = compute_frame_size ();
-+
-+  if (!sibcall_p && nios2_can_use_return_insn ())
-+    {
-+      insn = emit_jump_insn (gen_return ());
-+      return;
-+    }
-+
-+  emit_insn (gen_blockage ());
-+
-+  register_store_offset =
-+    cfun->machine->frame.save_regs_offset +
-+    cfun->machine->frame.save_reg_rounded;
-+
-+  if (MUST_SAVE_REGISTER (RA_REGNO))
-+    {
-+      register_store_offset -= 4;
-+      restore_reg (RA_REGNO, register_store_offset);
-+    }
-+
-+  if (MUST_SAVE_REGISTER (FP_REGNO))
-+    {
-+      register_store_offset -= 4;
-+      restore_reg (FP_REGNO, register_store_offset);
-+    }
-+
-+  for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
-+    {
-+      if (MUST_SAVE_REGISTER (i) && i != FP_REGNO && i != RA_REGNO)
-+	{
-+	  register_store_offset -= 4;
-+	  restore_reg (i, register_store_offset);
-+	}
-+    }
-+
-+  if (total_frame_size)
-+    {
-+      rtx sp_adjust;
-+
-+      if (TOO_BIG_OFFSET (total_frame_size))
-+        {
-+	  sp_adjust = gen_rtx_REG (SImode, TEMP_REG_NUM);
-+	  insn = emit_insn (gen_rtx_SET (SImode,
-+					 sp_adjust,
-+					 GEN_INT (total_frame_size)));
-+
-+      	}
-+      else
-+        {
-+	  sp_adjust = GEN_INT (total_frame_size);
-+	}
-+
-+      insn = gen_rtx_SET (SImode,
-+			  stack_pointer_rtx,
-+			  gen_rtx_PLUS (SImode,
-+					stack_pointer_rtx,
-+					sp_adjust));
-+      insn = emit_insn (insn);
-+    }
-+
-+
-+  if (!sibcall_p)
-+    {
-+      insn = emit_jump_insn (gen_return_from_epilogue (gen_rtx (REG, Pmode,
-+								RA_REGNO)));
-+    }
-+}
-+
-+
-+bool
-+nios2_function_ok_for_sibcall (tree a ATTRIBUTE_UNUSED, tree b ATTRIBUTE_UNUSED)
-+{
-+  return true;
-+}
-+
-+
-+
-+
-+
-+/* ----------------------- *
-+ * Profiling
-+ * ----------------------- */
-+
-+void
-+function_profiler (FILE *file, int labelno)
-+{
-+  fprintf (file, "\t%s mcount begin, label: .LP%d\n", 
-+           ASM_COMMENT_START, labelno);
-+  fprintf (file, "\tnextpc\tr8\n");
-+  fprintf (file, "\tmov\tr9, ra\n");
-+  fprintf (file, "\tmovhi\tr10, %%hiadj(.LP%d)\n", labelno);
-+  fprintf (file, "\taddi\tr10, r10, %%lo(.LP%d)\n", labelno);
-+  fprintf (file, "\tcall\tmcount\n");
-+  fprintf (file, "\tmov\tra, r9\n");
-+  fprintf (file, "\t%s mcount end\n", ASM_COMMENT_START);
-+}
-+
-+
-+/***************************************
-+ * Stack Layout
-+ ***************************************/
-+
-+
-+void
-+dump_frame_size (FILE *file)
-+{
-+  fprintf (file, "\t%s Current Frame Info\n", ASM_COMMENT_START);
-+
-+  fprintf (file, "\t%s total_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.total_size);
-+  fprintf (file, "\t%s var_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.var_size);
-+  fprintf (file, "\t%s args_size = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.args_size);
-+  fprintf (file, "\t%s save_reg_size = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_reg_size);
-+  fprintf (file, "\t%s save_reg_rounded = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_reg_rounded);
-+  fprintf (file, "\t%s initialized = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.initialized);
-+  fprintf (file, "\t%s num_regs = %d\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.num_regs);
-+  fprintf (file, "\t%s save_regs_offset = %ld\n", ASM_COMMENT_START,
-+	   cfun->machine->frame.save_regs_offset);
-+  fprintf (file, "\t%s current_function_is_leaf = %d\n", ASM_COMMENT_START,
-+	   current_function_is_leaf);
-+  fprintf (file, "\t%s frame_pointer_needed = %d\n", ASM_COMMENT_START,
-+	   frame_pointer_needed);
-+  fprintf (file, "\t%s pretend_args_size = %d\n", ASM_COMMENT_START,
-+	   current_function_pretend_args_size);
-+
-+}
-+
-+
-+/* Return the bytes needed to compute the frame pointer from the current
-+   stack pointer.
-+*/
-+
-+HOST_WIDE_INT
-+compute_frame_size ()
-+{
-+  unsigned int regno;
-+  HOST_WIDE_INT var_size;	/* # of var. bytes allocated */
-+  HOST_WIDE_INT total_size;	/* # bytes that the entire frame takes up */
-+  HOST_WIDE_INT save_reg_size;	/* # bytes needed to store callee save regs */
-+  HOST_WIDE_INT save_reg_rounded;	
-+    /* # bytes needed to store callee save regs (rounded) */
-+  HOST_WIDE_INT out_args_size;	/* # bytes needed for outgoing args */
-+
-+  save_reg_size = 0;
-+  var_size = STACK_ALIGN (get_frame_size ());
-+  out_args_size = STACK_ALIGN (current_function_outgoing_args_size);
-+
-+  total_size = var_size + out_args_size;
-+
-+  /* Calculate space needed for gp registers.  */
-+  for (regno = 0; regno <= FIRST_PSEUDO_REGISTER; regno++)
-+    {
-+      if (MUST_SAVE_REGISTER (regno))
-+	{
-+	  save_reg_size += 4;
-+	}
-+    }
-+
-+  save_reg_rounded = STACK_ALIGN (save_reg_size);
-+  total_size += save_reg_rounded;
-+
-+  total_size += STACK_ALIGN (current_function_pretend_args_size);
-+
-+  /* Save other computed information.  */
-+  cfun->machine->frame.total_size = total_size;
-+  cfun->machine->frame.var_size = var_size;
-+  cfun->machine->frame.args_size = current_function_outgoing_args_size;
-+  cfun->machine->frame.save_reg_size = save_reg_size;
-+  cfun->machine->frame.save_reg_rounded = save_reg_rounded;
-+  cfun->machine->frame.initialized = reload_completed;
-+  cfun->machine->frame.num_regs = save_reg_size / UNITS_PER_WORD;
-+
-+  cfun->machine->frame.save_regs_offset
-+    = save_reg_rounded ? current_function_outgoing_args_size + var_size : 0;
-+
-+  return total_size;
-+}
-+
-+
-+int
-+nios2_initial_elimination_offset (int from, int to ATTRIBUTE_UNUSED)
-+{
-+  int offset;
-+
-+  /* Set OFFSET to the offset from the stack pointer.  */
-+  switch (from)
-+    {
-+    case FRAME_POINTER_REGNUM:
-+      offset = 0;
-+      break;
-+
-+    case ARG_POINTER_REGNUM:
-+      compute_frame_size ();
-+      offset = cfun->machine->frame.total_size;
-+      offset -= current_function_pretend_args_size;
-+      break;
-+
-+    case RETURN_ADDRESS_POINTER_REGNUM:
-+      compute_frame_size ();
-+      /* since the return address is always the first of the
-+         saved registers, return the offset to the beginning
-+         of the saved registers block */
-+      offset = cfun->machine->frame.save_regs_offset;
-+      break;
-+
-+    default:
-+      abort ();
-+    }
-+
-+  return offset;
-+}
-+
-+/* Return nonzero if this function is known to have a null epilogue.
-+   This allows the optimizer to omit jumps to jumps if no stack
-+   was created.  */
-+int
-+nios2_can_use_return_insn ()
-+{
-+  if (!reload_completed)
-+    return 0;
-+
-+  if (regs_ever_live[RA_REGNO] || current_function_profile)
-+    return 0;
-+
-+  if (cfun->machine->frame.initialized)
-+    return cfun->machine->frame.total_size == 0;
-+
-+  return compute_frame_size () == 0;
-+}
-+
-+
-+
-+
-+
-+/***************************************
-+ *
-+ ***************************************/
-+
-+const char *nios2_sys_nosys_string;    /* for -msys=nosys */
-+const char *nios2_sys_lib_string;    /* for -msys-lib= */
-+const char *nios2_sys_crt0_string;    /* for -msys-crt0= */
-+
-+void
-+override_options ()
-+{
-+  /* Function to allocate machine-dependent function status.  */
-+  init_machine_status = &nios2_init_machine_status;
-+
-+  nios2_section_threshold 
-+    = g_switch_set ? g_switch_value : NIOS2_DEFAULT_GVALUE;
-+
-+  if (nios2_sys_nosys_string && *nios2_sys_nosys_string)
-+    {
-+      error ("invalid option '-msys=nosys%s'", nios2_sys_nosys_string);
-+    }
-+
-+  /* If we don't have mul, we don't have mulx either! */
-+  if (!TARGET_HAS_MUL && TARGET_HAS_MULX) 
-+    {
-+      target_flags &= ~HAS_MULX_FLAG;
-+    }
-+
-+}
-+
-+void
-+optimization_options (int level, int size)
-+{
-+  if (level || size)
-+    {
-+      target_flags |= INLINE_MEMCPY_FLAG;
-+    }
-+
-+  if (level >= 3 && !size)
-+    {
-+      target_flags |= FAST_SW_DIV_FLAG;
-+    }
-+}
-+
-+/* Allocate a chunk of memory for per-function machine-dependent data.  */
-+static struct machine_function *
-+nios2_init_machine_status ()
-+{
-+  return ((struct machine_function *)
-+	  ggc_alloc_cleared (sizeof (struct machine_function)));
-+}
-+
-+
-+
-+/*****************
-+ * Describing Relative Costs of Operations
-+ *****************/
-+
-+/* Compute a (partial) cost for rtx X.  Return true if the complete
-+   cost has been computed, and false if subexpressions should be
-+   scanned.  In either case, *TOTAL contains the cost result.  */
-+
-+
-+
-+static bool
-+nios2_rtx_costs (rtx x, int code, int outer_code ATTRIBUTE_UNUSED, int *total)
-+{
-+  switch (code)
-+    {
-+      case CONST_INT:
-+	if (INTVAL (x) == 0)
-+	  {
-+	    *total = COSTS_N_INSNS (0);
-+	    return true;
-+	  }
-+	else if (SMALL_INT (INTVAL (x))
-+		|| SMALL_INT_UNSIGNED (INTVAL (x))
-+		|| UPPER16_INT (INTVAL (x)))
-+	  {
-+	    *total = COSTS_N_INSNS (2);
-+	    return true;
-+	  }
-+	else
-+	  {
-+	    *total = COSTS_N_INSNS (4);
-+	    return true;
-+	  }
-+
-+      case LABEL_REF:
-+      case SYMBOL_REF:
-+	/* ??? gp relative stuff will fit in here */
-+	/* fall through */
-+      case CONST:
-+      case CONST_DOUBLE:
-+	{
-+	  *total = COSTS_N_INSNS (4);
-+	  return true;
-+	}
-+
-+      case MULT:
-+	{
-+	  *total = COSTS_N_INSNS (1);
-+	  return false;
-+	}
-+      case SIGN_EXTEND:
-+	{
-+	  *total = COSTS_N_INSNS (3);
-+	  return false;
-+	}
-+      case ZERO_EXTEND:
-+	{
-+	  *total = COSTS_N_INSNS (1);
-+	  return false;
-+	}
-+
-+    default:
-+      return false;
-+    }
-+}
-+
-+
-+/***************************************
-+ * INSTRUCTION SUPPORT
-+ *
-+ * These functions are used within the Machine Description to
-+ * handle common or complicated output and expansions from
-+ * instructions.
-+ ***************************************/
-+
-+int
-+nios2_emit_move_sequence (rtx *operands, enum machine_mode mode)
-+{
-+  rtx to = operands[0];
-+  rtx from = operands[1];
-+
-+  if (!register_operand (to, mode) && !reg_or_0_operand (from, mode))
-+    {
-+      if (no_new_pseudos)
-+	internal_error ("Trying to force_reg no_new_pseudos == 1");
-+      from = copy_to_mode_reg (mode, from);
-+    }
-+
-+  operands[0] = to;
-+  operands[1] = from;
-+  return 0;
-+}
-+
-+/* Divide Support */
-+
-+/*
-+  If -O3 is used, we want to output a table lookup for
-+  divides between small numbers (both num and den >= 0
-+  and < 0x10). The overhead of this method in the worse
-+  case is 40 bytes in the text section (10 insns) and
-+  256 bytes in the data section. Additional divides do
-+  not incur additional penalties in the data section.
-+
-+  Code speed is improved for small divides by about 5x
-+  when using this method in the worse case (~9 cycles
-+  vs ~45). And in the worse case divides not within the
-+  table are penalized by about 10% (~5 cycles vs ~45).
-+  However in the typical case the penalty is not as bad
-+  because doing the long divide in only 45 cycles is
-+  quite optimistic.
-+
-+  ??? It would be nice to have some benchmarks other
-+  than Dhrystone to back this up.
-+
-+  This bit of expansion is to create this instruction
-+  sequence as rtl.
-+	or	$8, $4, $5
-+	slli	$9, $4, 4
-+	cmpgeui	$3, $8, 16
-+	beq	$3, $0, .L3
-+	or	$10, $9, $5
-+	add	$12, $11, divide_table
-+	ldbu	$2, 0($12)
-+	br	.L1
-+.L3:
-+	call	slow_div
-+.L1:
-+#	continue here with result in $2
-+
-+  ??? Ideally I would like the emit libcall block to contain
-+  all of this code, but I don't know how to do that. What it
-+  means is that if the divide can be eliminated, it may not
-+  completely disappear.
-+
-+  ??? The __divsi3_table label should ideally be moved out
-+  of this block and into a global. If it is placed into the
-+  sdata section we can save even more cycles by doing things
-+  gp relative.
-+*/
-+int
-+nios2_emit_expensive_div (rtx *operands, enum machine_mode mode)
-+{
-+  rtx or_result, shift_left_result;
-+  rtx lookup_value;
-+  rtx lab1, lab3;
-+  rtx insns;
-+  rtx libfunc;
-+  rtx final_result;
-+  rtx tmp;
-+
-+  /* it may look a little generic, but only SImode
-+     is supported for now */
-+  if (mode != SImode)
-+    abort ();
-+
-+  libfunc = sdiv_optab->handlers[(int) SImode].libfunc;
-+
-+
-+
-+  lab1 = gen_label_rtx ();
-+  lab3 = gen_label_rtx ();
-+
-+  or_result = expand_simple_binop (SImode, IOR,
-+				   operands[1], operands[2],
-+				   0, 0, OPTAB_LIB_WIDEN);
-+
-+  emit_cmp_and_jump_insns (or_result, GEN_INT (15), GTU, 0,
-+			   GET_MODE (or_result), 0, lab3);
-+  JUMP_LABEL (get_last_insn ()) = lab3;
-+
-+  shift_left_result = expand_simple_binop (SImode, ASHIFT,
-+					   operands[1], GEN_INT (4),
-+					   0, 0, OPTAB_LIB_WIDEN);
-+
-+  lookup_value = expand_simple_binop (SImode, IOR,
-+				      shift_left_result, operands[2],
-+				      0, 0, OPTAB_LIB_WIDEN);
-+
-+  convert_move (operands[0],
-+		gen_rtx (MEM, QImode,
-+			 gen_rtx (PLUS, SImode,
-+				  lookup_value,
-+				  gen_rtx_SYMBOL_REF (SImode, "__divsi3_table"))),
-+		1);
-+
-+
-+  tmp = emit_jump_insn (gen_jump (lab1));
-+  JUMP_LABEL (tmp) = lab1;
-+  emit_barrier ();
-+
-+  emit_label (lab3);
-+  LABEL_NUSES (lab3) = 1;
-+
-+  start_sequence ();
-+  final_result = emit_library_call_value (libfunc, NULL_RTX,
-+					  LCT_CONST, SImode, 2,
-+					  operands[1], SImode,
-+					  operands[2], SImode);
-+
-+
-+  insns = get_insns ();
-+  end_sequence ();
-+  emit_libcall_block (insns, operands[0], final_result,
-+		      gen_rtx (DIV, SImode, operands[1], operands[2]));
-+
-+  emit_label (lab1);
-+  LABEL_NUSES (lab1) = 1;
-+  return 1;
-+}
-+
-+/* Branches/Compares */
-+
-+/* the way of handling branches/compares
-+   in gcc is heavily borrowed from MIPS */
-+
-+enum internal_test
-+{
-+  ITEST_EQ,
-+  ITEST_NE,
-+  ITEST_GT,
-+  ITEST_GE,
-+  ITEST_LT,
-+  ITEST_LE,
-+  ITEST_GTU,
-+  ITEST_GEU,
-+  ITEST_LTU,
-+  ITEST_LEU,
-+  ITEST_MAX
-+};
-+
-+static enum internal_test map_test_to_internal_test (enum rtx_code);
-+
-+/* Cached operands, and operator to compare for use in set/branch/trap
-+   on condition codes.  */
-+rtx branch_cmp[2];
-+enum cmp_type branch_type;
-+
-+/* Make normal rtx_code into something we can index from an array */
-+
-+static enum internal_test
-+map_test_to_internal_test (enum rtx_code test_code)
-+{
-+  enum internal_test test = ITEST_MAX;
-+
-+  switch (test_code)
-+    {
-+    case EQ:
-+      test = ITEST_EQ;
-+      break;
-+    case NE:
-+      test = ITEST_NE;
-+      break;
-+    case GT:
-+      test = ITEST_GT;
-+      break;
-+    case GE:
-+      test = ITEST_GE;
-+      break;
-+    case LT:
-+      test = ITEST_LT;
-+      break;
-+    case LE:
-+      test = ITEST_LE;
-+      break;
-+    case GTU:
-+      test = ITEST_GTU;
-+      break;
-+    case GEU:
-+      test = ITEST_GEU;
-+      break;
-+    case LTU:
-+      test = ITEST_LTU;
-+      break;
-+    case LEU:
-+      test = ITEST_LEU;
-+      break;
-+    default:
-+      break;
-+    }
-+
-+  return test;
-+}
-+
-+/* Generate the code to compare (and possibly branch) two integer values
-+   TEST_CODE is the comparison code we are trying to emulate 
-+     (or implement directly)
-+   RESULT is where to store the result of the comparison, 
-+     or null to emit a branch
-+   CMP0 CMP1 are the two comparison operands
-+   DESTINATION is the destination of the branch, or null to only compare
-+   */
-+
-+void
-+gen_int_relational (enum rtx_code test_code, /* relational test (EQ, etc) */
-+		    rtx result,		/* result to store comp. or 0 if branch */
-+		    rtx cmp0,		/* first operand to compare */
-+		    rtx cmp1,		/* second operand to compare */
-+		    rtx destination)	/* destination of the branch, or 0 if compare */
-+{
-+  struct cmp_info
-+  {
-+    /* for register (or 0) compares */
-+    enum rtx_code test_code_reg;	/* code to use in instruction (LT vs. LTU) */
-+    int reverse_regs;		/* reverse registers in test */
-+
-+    /* for immediate compares */
-+    enum rtx_code test_code_const;	
-+         /* code to use in instruction (LT vs. LTU) */
-+    int const_low;		/* low bound of constant we can accept */
-+    int const_high;		/* high bound of constant we can accept */
-+    int const_add;		/* constant to add */
-+
-+    /* generic info */
-+    int unsignedp;		/* != 0 for unsigned comparisons.  */
-+  };
-+
-+  static const struct cmp_info info[(int) ITEST_MAX] = {
-+
-+    {EQ, 0, EQ, -32768, 32767, 0, 0}, /* EQ  */
-+    {NE, 0, NE, -32768, 32767, 0, 0}, /* NE  */
-+
-+    {LT, 1, GE, -32769, 32766, 1, 0}, /* GT  */
-+    {GE, 0, GE, -32768, 32767, 0, 0}, /* GE  */
-+    {LT, 0, LT, -32768, 32767, 0, 0}, /* LT  */
-+    {GE, 1, LT, -32769, 32766, 1, 0}, /* LE  */
-+
-+    {LTU, 1, GEU, 0, 65534, 1, 0}, /* GTU */
-+    {GEU, 0, GEU, 0, 65535, 0, 0}, /* GEU */
-+    {LTU, 0, LTU, 0, 65535, 0, 0}, /* LTU */
-+    {GEU, 1, LTU, 0, 65534, 1, 0}, /* LEU */
-+  };
-+
-+  enum internal_test test;
-+  enum machine_mode mode;
-+  const struct cmp_info *p_info;
-+  int branch_p;
-+
-+
-+
-+
-+  test = map_test_to_internal_test (test_code);
-+  if (test == ITEST_MAX)
-+    abort ();
-+
-+  p_info = &info[(int) test];
-+
-+  mode = GET_MODE (cmp0);
-+  if (mode == VOIDmode)
-+    mode = GET_MODE (cmp1);
-+
-+  branch_p = (destination != 0);
-+
-+  /* We can't, under any circumstances, have const_ints in cmp0
-+     ??? Actually we could have const0 */
-+  if (GET_CODE (cmp0) == CONST_INT)
-+    cmp0 = force_reg (mode, cmp0);
-+
-+  /* if the comparison is against an int not in legal range
-+     move it into a register */
-+  if (GET_CODE (cmp1) == CONST_INT)
-+    {
-+      HOST_WIDE_INT value = INTVAL (cmp1);
-+
-+      if (value < p_info->const_low || value > p_info->const_high)
-+	cmp1 = force_reg (mode, cmp1);
-+    }
-+
-+  /* Comparison to constants, may involve adding 1 to change a GT into GE.
-+     Comparison between two registers, may involve switching operands.  */
-+  if (GET_CODE (cmp1) == CONST_INT)
-+    {
-+      if (p_info->const_add != 0)
-+	{
-+	  HOST_WIDE_INT new = INTVAL (cmp1) + p_info->const_add;
-+
-+	  /* If modification of cmp1 caused overflow,
-+	     we would get the wrong answer if we follow the usual path;
-+	     thus, x > 0xffffffffU would turn into x > 0U.  */
-+	  if ((p_info->unsignedp
-+	       ? (unsigned HOST_WIDE_INT) new >
-+	       (unsigned HOST_WIDE_INT) INTVAL (cmp1)
-+	       : new > INTVAL (cmp1)) != (p_info->const_add > 0))
-+	    {
-+	      /* ??? This case can never happen with the current numbers,
-+	         but I am paranoid and would rather an abort than
-+	         a bug I will never find */
-+	      abort ();
-+	    }
-+	  else
-+	    cmp1 = GEN_INT (new);
-+	}
-+    }
-+
-+  else if (p_info->reverse_regs)
-+    {
-+      rtx temp = cmp0;
-+      cmp0 = cmp1;
-+      cmp1 = temp;
-+    }
-+
-+
-+
-+  if (branch_p)
-+    {
-+      if (register_operand (cmp0, mode) && register_operand (cmp1, mode))
-+	{
-+	  rtx insn;
-+	  rtx cond = gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1);
-+	  rtx label = gen_rtx_LABEL_REF (VOIDmode, destination);
-+
-+	  insn = gen_rtx_SET (VOIDmode, pc_rtx,
-+			      gen_rtx_IF_THEN_ELSE (VOIDmode,
-+						    cond, label, pc_rtx));
-+	  emit_jump_insn (insn);
-+	}
-+      else
-+	{
-+	  rtx cond, label;
-+
-+	  result = gen_reg_rtx (mode);
-+
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_const, mode, cmp0,
-+				   cmp1));
-+
-+	  cond = gen_rtx (NE, mode, result, const0_rtx);
-+	  label = gen_rtx_LABEL_REF (VOIDmode, destination);
-+
-+	  emit_jump_insn (gen_rtx_SET (VOIDmode, pc_rtx,
-+				       gen_rtx_IF_THEN_ELSE (VOIDmode,
-+							     cond,
-+							     label, pc_rtx)));
-+	}
-+    }
-+  else
-+    {
-+      if (register_operand (cmp0, mode) && register_operand (cmp1, mode))
-+	{
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_reg, mode, cmp0, cmp1));
-+	}
-+      else
-+	{
-+	  emit_move_insn (result,
-+			  gen_rtx (p_info->test_code_const, mode, cmp0,
-+				   cmp1));
-+	}
-+    }
-+
-+}
-+
-+
-+/* ??? For now conditional moves are only supported
-+   when the mode of the operands being compared are
-+   the same as the ones being moved */
-+
-+void
-+gen_conditional_move (rtx *operands, enum machine_mode mode)
-+{
-+  rtx insn, cond;
-+  rtx cmp_reg = gen_reg_rtx (mode);
-+  enum rtx_code cmp_code = GET_CODE (operands[1]);
-+  enum rtx_code move_code = EQ;
-+
-+  /* emit a comparison if it is not "simple".
-+     Simple comparisons are X eq 0 and X ne 0 */
-+  if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[1] == const0_rtx)
-+    {
-+      cmp_reg = branch_cmp[0];
-+      move_code = cmp_code;
-+    }
-+  else if ((cmp_code == EQ || cmp_code == NE) && branch_cmp[0] == const0_rtx)
-+    {
-+      cmp_reg = branch_cmp[1];
-+      move_code = cmp_code == EQ ? NE : EQ;
-+    }
-+  else
-+    gen_int_relational (cmp_code, cmp_reg, branch_cmp[0], branch_cmp[1],
-+			NULL_RTX);
-+
-+  cond = gen_rtx (move_code, VOIDmode, cmp_reg, CONST0_RTX (mode));
-+  insn = gen_rtx_SET (mode, operands[0],
-+		      gen_rtx_IF_THEN_ELSE (mode,
-+					    cond, operands[2], operands[3]));
-+  emit_insn (insn);
-+}
-+
-+/*******************
-+ * Addressing Modes
-+ *******************/
-+
-+int
-+nios2_legitimate_address (rtx operand, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                          int strict)
-+{
-+  int ret_val = 0;
-+
-+  switch (GET_CODE (operand))
-+    {
-+      /* direct.  */
-+    case SYMBOL_REF:
-+      if (SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (operand))
-+        {
-+          ret_val = 1;
-+          break;
-+	}
-+      /* else, fall through */
-+    case LABEL_REF:
-+    case CONST_INT:
-+    case CONST:
-+    case CONST_DOUBLE:
-+      /* ??? In here I need to add gp addressing */
-+      ret_val = 0;
-+
-+      break;
-+
-+      /* Register indirect.  */
-+    case REG:
-+      ret_val = REG_OK_FOR_BASE_P2 (operand, strict);
-+      break;
-+
-+      /* Register indirect with displacement */
-+    case PLUS:
-+      {
-+	rtx op0 = XEXP (operand, 0);
-+	rtx op1 = XEXP (operand, 1);
-+
-+	if (REG_P (op0) && REG_P (op1))
-+	  ret_val = 0;
-+	else if (REG_P (op0) && CONSTANT_P (op1))
-+	  ret_val = REG_OK_FOR_BASE_P2 (op0, strict)
-+	    && SMALL_INT (INTVAL (op1));
-+	else if (REG_P (op1) && CONSTANT_P (op0))
-+	  ret_val = REG_OK_FOR_BASE_P2 (op1, strict)
-+	    && SMALL_INT (INTVAL (op0));
-+	else
-+	  ret_val = 0;
-+      }
-+      break;
-+
-+    default:
-+      ret_val = 0;
-+      break;
-+    }
-+
-+  return ret_val;
-+}
-+
-+/* Return true if EXP should be placed in the small data section.  */
-+
-+static bool
-+nios2_in_small_data_p (tree exp)
-+{
-+  /* We want to merge strings, so we never consider them small data.  */
-+  if (TREE_CODE (exp) == STRING_CST)
-+    return false;
-+
-+  if (TREE_CODE (exp) == VAR_DECL && DECL_SECTION_NAME (exp))
-+    {
-+      const char *section = TREE_STRING_POINTER (DECL_SECTION_NAME (exp));
-+      /* ??? these string names need moving into 
-+         an array in some header file */
-+      if (nios2_section_threshold > 0
-+          && (strcmp (section, ".sbss") == 0
-+	      || strncmp (section, ".sbss.", 6) == 0
-+	      || strcmp (section, ".sdata") == 0
-+	      || strncmp (section, ".sdata.", 7) == 0))
-+	return true;
-+    }
-+  else if (TREE_CODE (exp) == VAR_DECL)
-+    {
-+      HOST_WIDE_INT size = int_size_in_bytes (TREE_TYPE (exp));
-+
-+      /* If this is an incomplete type with size 0, then we can't put it
-+         in sdata because it might be too big when completed.  */
-+      if (size > 0 && size <= nios2_section_threshold)
-+	return true;
-+    }
-+
-+  return false;
-+}
-+
-+static void
-+nios2_encode_section_info (tree decl, rtx rtl, int first)
-+{
-+
-+  rtx symbol;
-+  int flags;
-+
-+  default_encode_section_info (decl, rtl, first);
-+  
-+  /* Careful not to prod global register variables.  */
-+  if (GET_CODE (rtl) != MEM)
-+    return;
-+  symbol = XEXP (rtl, 0);
-+  if (GET_CODE (symbol) != SYMBOL_REF)
-+    return;
-+
-+  flags = SYMBOL_REF_FLAGS (symbol);
-+    
-+  /* We don't want weak variables to be addressed with gp in case they end up with
-+     value 0 which is not within 2^15 of $gp */
-+  if (DECL_P (decl) && DECL_WEAK (decl))
-+    flags |= SYMBOL_FLAG_WEAK_DECL;
-+
-+  SYMBOL_REF_FLAGS (symbol) = flags;
-+}
-+
-+
-+static unsigned int
-+nios2_section_type_flags (tree decl, const char *name, int reloc)
-+{
-+  unsigned int flags;
-+
-+  flags = default_section_type_flags (decl, name, reloc);
-+
-+  /* ??? these string names need moving into an array in some header file */
-+  if (strcmp (name, ".sbss") == 0
-+      || strncmp (name, ".sbss.", 6) == 0
-+      || strcmp (name, ".sdata") == 0
-+      || strncmp (name, ".sdata.", 7) == 0)
-+    flags |= SECTION_SMALL;
-+
-+  return flags;
-+}
-+
-+
-+
-+
-+/*****************************************
-+ * Defining the Output Assembler Language
-+ *****************************************/
-+
-+/* -------------- *
-+ * Output of Data
-+ * -------------- */
-+
-+
-+/* -------------------------------- *
-+ * Output of Assembler Instructions
-+ * -------------------------------- */
-+
-+
-+/* print the operand OP to file stream
-+   FILE modified by LETTER. LETTER
-+   can be one of:
-+     i: print "i" if OP is an immediate, except 0
-+     o: print "io" if OP is volatile
-+
-+     z: for const0_rtx print $0 instead of 0
-+     H: for %hiadj
-+     L: for %lo
-+     U: for upper half of 32 bit value
-+ */
-+
-+void
-+nios2_print_operand (FILE *file, rtx op, int letter)
-+{
-+
-+  switch (letter)
-+    {
-+    case 'i':
-+      if (CONSTANT_P (op) && (op != const0_rtx))
-+	fprintf (file, "i");
-+      return;
-+
-+    case 'o':
-+      if (GET_CODE (op) == MEM
-+          && ((MEM_VOLATILE_P (op) && !TARGET_CACHE_VOLATILE)
-+              || TARGET_BYPASS_CACHE))
-+	fprintf (file, "io");
-+      return;
-+
-+    default:
-+      break;
-+    }
-+
-+  if (comparison_operator (op, VOIDmode))
-+    {
-+      if (letter == 0)
-+	{
-+	  fprintf (file, "%s", GET_RTX_NAME (GET_CODE (op)));
-+	  return;
-+	}
-+    }
-+
-+
-+  switch (GET_CODE (op))
-+    {
-+    case REG:
-+      if (letter == 0 || letter == 'z')
-+	{
-+	  fprintf (file, "%s", reg_names[REGNO (op)]);
-+	  return;
-+	}
-+
-+    case CONST_INT:
-+      if (INTVAL (op) == 0 && letter == 'z')
-+	{
-+	  fprintf (file, "zero");
-+	  return;
-+	}
-+      else if (letter == 'U')
-+	{
-+	  HOST_WIDE_INT val = INTVAL (op);
-+	  rtx new_op;
-+	  val = (val / 65536) & 0xFFFF;
-+	  new_op = GEN_INT (val);
-+	  output_addr_const (file, new_op);
-+	  return;
-+	}
-+
-+      /* else, fall through */
-+    case CONST:
-+    case LABEL_REF:
-+    case SYMBOL_REF:
-+    case CONST_DOUBLE:
-+      if (letter == 0 || letter == 'z')
-+	{
-+	  output_addr_const (file, op);
-+	  return;
-+	}
-+      else if (letter == 'H')
-+	{
-+	  fprintf (file, "%%hiadj(");
-+	  output_addr_const (file, op);
-+	  fprintf (file, ")");
-+	  return;
-+	}
-+      else if (letter == 'L')
-+	{
-+	  fprintf (file, "%%lo(");
-+	  output_addr_const (file, op);
-+	  fprintf (file, ")");
-+	  return;
-+	}
-+
-+
-+    case SUBREG:
-+    case MEM:
-+      if (letter == 0)
-+	{
-+	  output_address (op);
-+	  return;
-+	}
-+
-+    case CODE_LABEL:
-+      if (letter == 0)
-+	{
-+	  output_addr_const (file, op);
-+	  return;
-+	}
-+
-+    default:
-+      break;
-+    }
-+
-+  fprintf (stderr, "Missing way to print (%c) ", letter);
-+  debug_rtx (op);
-+  abort ();
-+}
-+
-+static int gprel_constant (rtx);
-+
-+static int
-+gprel_constant (rtx op)
-+{
-+  if (GET_CODE (op) == SYMBOL_REF
-+      && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (op))
-+    {
-+      return 1;
-+    }
-+  else if (GET_CODE (op) == CONST
-+           && GET_CODE (XEXP (op, 0)) == PLUS)
-+    {
-+      return gprel_constant (XEXP (XEXP (op, 0), 0));
-+    }
-+  else
-+    {
-+      return 0;
-+    }
-+}
-+
-+void
-+nios2_print_operand_address (FILE *file, rtx op)
-+{
-+  switch (GET_CODE (op))
-+    {
-+    case CONST:
-+    case CONST_INT:
-+    case LABEL_REF:
-+    case CONST_DOUBLE:
-+    case SYMBOL_REF:
-+      if (gprel_constant (op))
-+        {
-+          fprintf (file, "%%gprel(");
-+          output_addr_const (file, op);
-+          fprintf (file, ")(%s)", reg_names[GP_REGNO]);
-+          return;
-+        }
-+
-+      break;
-+
-+    case PLUS:
-+      {
-+	rtx op0 = XEXP (op, 0);
-+	rtx op1 = XEXP (op, 1);
-+
-+	if (REG_P (op0) && CONSTANT_P (op1))
-+	  {
-+	    output_addr_const (file, op1);
-+	    fprintf (file, "(%s)", reg_names[REGNO (op0)]);
-+	    return;
-+	  }
-+	else if (REG_P (op1) && CONSTANT_P (op0))
-+	  {
-+	    output_addr_const (file, op0);
-+	    fprintf (file, "(%s)", reg_names[REGNO (op1)]);
-+	    return;
-+	  }
-+      }
-+      break;
-+
-+    case REG:
-+      fprintf (file, "0(%s)", reg_names[REGNO (op)]);
-+      return;
-+
-+    case MEM:
-+      {
-+	rtx base = XEXP (op, 0);
-+	PRINT_OPERAND_ADDRESS (file, base);
-+	return;
-+      }
-+    default:
-+      break;
-+    }
-+
-+  fprintf (stderr, "Missing way to print address\n");
-+  debug_rtx (op);
-+  abort ();
-+}
-+
-+
-+
-+
-+
-+/****************************
-+ * Predicates
-+ ****************************/
-+
-+int
-+arith_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SMALL_INT (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+uns_arith_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SMALL_INT_UNSIGNED (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+logical_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT
-+      && (SMALL_INT_UNSIGNED (INTVAL (op)) || UPPER16_INT (INTVAL (op))))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+shift_operand (rtx op, enum machine_mode mode)
-+{
-+  if (GET_CODE (op) == CONST_INT && SHIFT_INT (INTVAL (op)))
-+    return 1;
-+
-+  return register_operand (op, mode);
-+}
-+
-+int
-+rdwrctl_operand (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-+{
-+  return GET_CODE (op) == CONST_INT && RDWRCTL_INT (INTVAL (op));
-+}
-+
-+/* Return truth value of whether OP is a register or the constant 0. */
-+
-+int
-+reg_or_0_operand (rtx op, enum machine_mode mode)
-+{
-+  switch (GET_CODE (op))
-+    {
-+    case CONST_INT:
-+      return INTVAL (op) == 0;
-+
-+    case CONST_DOUBLE:
-+      return op == CONST0_RTX (mode);
-+
-+    default:
-+      break;
-+    }
-+
-+  return register_operand (op, mode);
-+}
-+
-+
-+int
-+equality_op (rtx op, enum machine_mode mode)
-+{
-+  if (mode != GET_MODE (op))
-+    return 0;
-+
-+  return GET_CODE (op) == EQ || GET_CODE (op) == NE;
-+}
-+
-+int
-+custom_insn_opcode (rtx op, enum machine_mode mode ATTRIBUTE_UNUSED)
-+{
-+  return GET_CODE (op) == CONST_INT && CUSTOM_INSN_OPCODE (INTVAL (op));
-+}
-+
-+
-+
-+
-+
-+
-+
-+/*****************************************************************************
-+**
-+** instruction scheduler
-+**
-+*****************************************************************************/
-+static int
-+nios2_use_dfa_pipeline_interface ()
-+{
-+  return 1;
-+}
-+
-+
-+static int
-+nios2_issue_rate ()
-+{
-+#ifdef MAX_DFA_ISSUE_RATE
-+  return MAX_DFA_ISSUE_RATE;
-+#else
-+  return 1;
-+#endif
-+}
-+
-+
-+const char *
-+asm_output_opcode (FILE *file ATTRIBUTE_UNUSED, 
-+                   const char *ptr ATTRIBUTE_UNUSED)
-+{
-+  const char *p;
-+
-+  p = ptr;
-+  return ptr;
-+}
-+
-+
-+
-+/*****************************************************************************
-+**
-+** function arguments
-+**
-+*****************************************************************************/
-+
-+void
-+init_cumulative_args (CUMULATIVE_ARGS *cum, 
-+                      tree fntype ATTRIBUTE_UNUSED, 
-+                      rtx libname ATTRIBUTE_UNUSED, 
-+                      tree fndecl ATTRIBUTE_UNUSED, 
-+                      int n_named_args ATTRIBUTE_UNUSED)
-+{
-+  cum->regs_used = 0;
-+}
-+
-+
-+/* Update the data in CUM to advance over an argument
-+   of mode MODE and data type TYPE.
-+   (TYPE is null for libcalls where that information may not be available.)  */
-+
-+void
-+function_arg_advance (CUMULATIVE_ARGS *cum, enum machine_mode mode, 
-+                      tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED)
-+{
-+  HOST_WIDE_INT param_size;
-+
-+  if (mode == BLKmode)
-+    {
-+      param_size = int_size_in_bytes (type);
-+      if (param_size < 0)
-+	internal_error
-+	  ("Do not know how to handle large structs or variable length types");
-+    }
-+  else
-+    {
-+      param_size = GET_MODE_SIZE (mode);
-+    }
-+
-+  /* convert to words (round up) */
-+  param_size = (3 + param_size) / 4;
-+
-+  if (cum->regs_used + param_size > NUM_ARG_REGS)
-+    {
-+      cum->regs_used = NUM_ARG_REGS;
-+    }
-+  else
-+    {
-+      cum->regs_used += param_size;
-+    }
-+
-+  return;
-+}
-+
-+/* Define where to put the arguments to a function.  Value is zero to
-+   push the argument on the stack, or a hard register in which to
-+   store the argument.
-+
-+   MODE is the argument's machine mode.
-+   TYPE is the data type of the argument (as a tree).
-+   This is null for libcalls where that information may
-+   not be available.
-+   CUM is a variable of type CUMULATIVE_ARGS which gives info about
-+   the preceding args and about the function being called.
-+   NAMED is nonzero if this argument is a named parameter
-+   (otherwise it is an extra parameter matching an ellipsis).  */
-+rtx
-+function_arg (const CUMULATIVE_ARGS *cum, enum machine_mode mode, 
-+              tree type ATTRIBUTE_UNUSED, int named ATTRIBUTE_UNUSED)
-+{
-+  rtx return_rtx = NULL_RTX;
-+
-+  if (cum->regs_used < NUM_ARG_REGS)
-+    {
-+      return_rtx = gen_rtx_REG (mode, FIRST_ARG_REGNO + cum->regs_used);
-+    }
-+
-+  return return_rtx;
-+}
-+
-+int
-+function_arg_partial_nregs (const CUMULATIVE_ARGS *cum,
-+                            enum machine_mode mode, tree type, 
-+                            int named ATTRIBUTE_UNUSED)
-+{
-+  HOST_WIDE_INT param_size;
-+
-+  if (mode == BLKmode)
-+    {
-+      param_size = int_size_in_bytes (type);
-+      if (param_size < 0)
-+	internal_error
-+	  ("Do not know how to handle large structs or variable length types");
-+    }
-+  else
-+    {
-+      param_size = GET_MODE_SIZE (mode);
-+    }
-+
-+  /* convert to words (round up) */
-+  param_size = (3 + param_size) / 4;
-+
-+  if (cum->regs_used < NUM_ARG_REGS
-+      && cum->regs_used + param_size > NUM_ARG_REGS)
-+    {
-+      return NUM_ARG_REGS - cum->regs_used;
-+    }
-+  else
-+    {
-+      return 0;
-+    }
-+}
-+
-+
-+int
-+nios2_return_in_memory (tree type)
-+{
-+  int res = ((int_size_in_bytes (type) > (2 * UNITS_PER_WORD))
-+  	     || (int_size_in_bytes (type) == -1));
-+
-+  return res;
-+}
-+
-+/* ??? It may be possible to eliminate the copyback and implement
-+       my own va_arg type, but that is more work for now. */
-+int
-+nios2_setup_incoming_varargs (const CUMULATIVE_ARGS *cum, 
-+                              enum machine_mode mode, tree type, 
-+                              int no_rtl)
-+{
-+  CUMULATIVE_ARGS local_cum;
-+  int regs_to_push;
-+
-+  local_cum = *cum;
-+  FUNCTION_ARG_ADVANCE (local_cum, mode, type, 1);
-+
-+  regs_to_push = NUM_ARG_REGS - local_cum.regs_used;
-+
-+  if (!no_rtl)
-+    {
-+      if (regs_to_push > 0)
-+	{
-+	  rtx ptr, mem;
-+
-+	  ptr = virtual_incoming_args_rtx;
-+	  mem = gen_rtx_MEM (BLKmode, ptr);
-+
-+	  /* va_arg is an array access in this case, which causes
-+	     it to get MEM_IN_STRUCT_P set.  We must set it here
-+	     so that the insn scheduler won't assume that these
-+	     stores can't possibly overlap with the va_arg loads.  */
-+	  MEM_SET_IN_STRUCT_P (mem, 1);
-+
-+	  emit_insn (gen_blockage ());
-+	  move_block_from_reg (local_cum.regs_used + FIRST_ARG_REGNO, mem,
-+			       regs_to_push);
-+	  emit_insn (gen_blockage ());
-+	}
-+    }
-+
-+  return regs_to_push * UNITS_PER_WORD;
-+
-+}
-+
-+
-+
-+/*****************************************************************************
-+**
-+** builtins
-+**
-+** This method for handling builtins is from CSP where _many_ more types of
-+** expanders have already been written. Check there first before writing
-+** new ones.
-+**
-+*****************************************************************************/
-+
-+enum nios2_builtins
-+{
-+  NIOS2_BUILTIN_LDBIO,
-+  NIOS2_BUILTIN_LDBUIO,
-+  NIOS2_BUILTIN_LDHIO,
-+  NIOS2_BUILTIN_LDHUIO,
-+  NIOS2_BUILTIN_LDWIO,
-+  NIOS2_BUILTIN_STBIO,
-+  NIOS2_BUILTIN_STHIO,
-+  NIOS2_BUILTIN_STWIO,
-+  NIOS2_BUILTIN_SYNC,
-+  NIOS2_BUILTIN_RDCTL,
-+  NIOS2_BUILTIN_WRCTL,
-+
-+  NIOS2_BUILTIN_CUSTOM_N,
-+  NIOS2_BUILTIN_CUSTOM_NI,
-+  NIOS2_BUILTIN_CUSTOM_NF,
-+  NIOS2_BUILTIN_CUSTOM_NP,
-+  NIOS2_BUILTIN_CUSTOM_NII,
-+  NIOS2_BUILTIN_CUSTOM_NIF,
-+  NIOS2_BUILTIN_CUSTOM_NIP,
-+  NIOS2_BUILTIN_CUSTOM_NFI,
-+  NIOS2_BUILTIN_CUSTOM_NFF,
-+  NIOS2_BUILTIN_CUSTOM_NFP,
-+  NIOS2_BUILTIN_CUSTOM_NPI,
-+  NIOS2_BUILTIN_CUSTOM_NPF,
-+  NIOS2_BUILTIN_CUSTOM_NPP,
-+  NIOS2_BUILTIN_CUSTOM_IN,
-+  NIOS2_BUILTIN_CUSTOM_INI,
-+  NIOS2_BUILTIN_CUSTOM_INF,
-+  NIOS2_BUILTIN_CUSTOM_INP,
-+  NIOS2_BUILTIN_CUSTOM_INII,
-+  NIOS2_BUILTIN_CUSTOM_INIF,
-+  NIOS2_BUILTIN_CUSTOM_INIP,
-+  NIOS2_BUILTIN_CUSTOM_INFI,
-+  NIOS2_BUILTIN_CUSTOM_INFF,
-+  NIOS2_BUILTIN_CUSTOM_INFP,
-+  NIOS2_BUILTIN_CUSTOM_INPI,
-+  NIOS2_BUILTIN_CUSTOM_INPF,
-+  NIOS2_BUILTIN_CUSTOM_INPP,
-+  NIOS2_BUILTIN_CUSTOM_FN,
-+  NIOS2_BUILTIN_CUSTOM_FNI,
-+  NIOS2_BUILTIN_CUSTOM_FNF,
-+  NIOS2_BUILTIN_CUSTOM_FNP,
-+  NIOS2_BUILTIN_CUSTOM_FNII,
-+  NIOS2_BUILTIN_CUSTOM_FNIF,
-+  NIOS2_BUILTIN_CUSTOM_FNIP,
-+  NIOS2_BUILTIN_CUSTOM_FNFI,
-+  NIOS2_BUILTIN_CUSTOM_FNFF,
-+  NIOS2_BUILTIN_CUSTOM_FNFP,
-+  NIOS2_BUILTIN_CUSTOM_FNPI,
-+  NIOS2_BUILTIN_CUSTOM_FNPF,
-+  NIOS2_BUILTIN_CUSTOM_FNPP,
-+  NIOS2_BUILTIN_CUSTOM_PN,
-+  NIOS2_BUILTIN_CUSTOM_PNI,
-+  NIOS2_BUILTIN_CUSTOM_PNF,
-+  NIOS2_BUILTIN_CUSTOM_PNP,
-+  NIOS2_BUILTIN_CUSTOM_PNII,
-+  NIOS2_BUILTIN_CUSTOM_PNIF,
-+  NIOS2_BUILTIN_CUSTOM_PNIP,
-+  NIOS2_BUILTIN_CUSTOM_PNFI,
-+  NIOS2_BUILTIN_CUSTOM_PNFF,
-+  NIOS2_BUILTIN_CUSTOM_PNFP,
-+  NIOS2_BUILTIN_CUSTOM_PNPI,
-+  NIOS2_BUILTIN_CUSTOM_PNPF,
-+  NIOS2_BUILTIN_CUSTOM_PNPP,
-+
-+
-+  LIM_NIOS2_BUILTINS
-+};
-+
-+struct builtin_description
-+{
-+    const enum insn_code icode;
-+    const char *const name;
-+    const enum nios2_builtins code;
-+    const tree *type;
-+    rtx (* expander) PARAMS ((const struct builtin_description *,
-+                              tree, rtx, rtx, enum machine_mode, int));
-+};
-+
-+static rtx nios2_expand_STXIO (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_LDXIO (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_sync (const struct builtin_description *, 
-+                              tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_rdctl (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_wrctl (const struct builtin_description *, 
-+                               tree, rtx, rtx, enum machine_mode, int);
-+
-+static rtx nios2_expand_custom_n (const struct builtin_description *, 
-+                                  tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_Xn (const struct builtin_description *, 
-+                                   tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_nX (const struct builtin_description *, 
-+                                   tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_XnX (const struct builtin_description *, 
-+                                    tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_nXX (const struct builtin_description *, 
-+                                    tree, rtx, rtx, enum machine_mode, int);
-+static rtx nios2_expand_custom_XnXX (const struct builtin_description *, 
-+                                     tree, rtx, rtx, enum machine_mode, int);
-+
-+static tree endlink;
-+
-+/* int fn (volatile const void *)
-+ */
-+static tree int_ftype_volatile_const_void_p;
-+
-+/* int fn (int)
-+ */
-+static tree int_ftype_int;
-+
-+/* void fn (int, int)
-+ */
-+static tree void_ftype_int_int;
-+
-+/* void fn (volatile void *, int)
-+ */
-+static tree void_ftype_volatile_void_p_int;
-+
-+/* void fn (void)
-+ */
-+static tree void_ftype_void;
-+
-+static tree custom_n;
-+static tree custom_ni;
-+static tree custom_nf;
-+static tree custom_np;
-+static tree custom_nii;
-+static tree custom_nif;
-+static tree custom_nip;
-+static tree custom_nfi;
-+static tree custom_nff;
-+static tree custom_nfp;
-+static tree custom_npi;
-+static tree custom_npf;
-+static tree custom_npp;
-+static tree custom_in;
-+static tree custom_ini;
-+static tree custom_inf;
-+static tree custom_inp;
-+static tree custom_inii;
-+static tree custom_inif;
-+static tree custom_inip;
-+static tree custom_infi;
-+static tree custom_inff;
-+static tree custom_infp;
-+static tree custom_inpi;
-+static tree custom_inpf;
-+static tree custom_inpp;
-+static tree custom_fn;
-+static tree custom_fni;
-+static tree custom_fnf;
-+static tree custom_fnp;
-+static tree custom_fnii;
-+static tree custom_fnif;
-+static tree custom_fnip;
-+static tree custom_fnfi;
-+static tree custom_fnff;
-+static tree custom_fnfp;
-+static tree custom_fnpi;
-+static tree custom_fnpf;
-+static tree custom_fnpp;
-+static tree custom_pn;
-+static tree custom_pni;
-+static tree custom_pnf;
-+static tree custom_pnp;
-+static tree custom_pnii;
-+static tree custom_pnif;
-+static tree custom_pnip;
-+static tree custom_pnfi;
-+static tree custom_pnff;
-+static tree custom_pnfp;
-+static tree custom_pnpi;
-+static tree custom_pnpf;
-+static tree custom_pnpp;
-+
-+
-+static const struct builtin_description bdesc[] = {
-+    {CODE_FOR_ldbio, "__builtin_ldbio", NIOS2_BUILTIN_LDBIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldbuio, "__builtin_ldbuio", NIOS2_BUILTIN_LDBUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldhio, "__builtin_ldhio", NIOS2_BUILTIN_LDHIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldhuio, "__builtin_ldhuio", NIOS2_BUILTIN_LDHUIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+    {CODE_FOR_ldwio, "__builtin_ldwio", NIOS2_BUILTIN_LDWIO, &int_ftype_volatile_const_void_p, nios2_expand_LDXIO},
-+
-+    {CODE_FOR_stbio, "__builtin_stbio", NIOS2_BUILTIN_STBIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+    {CODE_FOR_sthio, "__builtin_sthio", NIOS2_BUILTIN_STHIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+    {CODE_FOR_stwio, "__builtin_stwio", NIOS2_BUILTIN_STWIO, &void_ftype_volatile_void_p_int, nios2_expand_STXIO},
-+
-+    {CODE_FOR_sync, "__builtin_sync", NIOS2_BUILTIN_SYNC, &void_ftype_void, nios2_expand_sync},
-+    {CODE_FOR_rdctl, "__builtin_rdctl", NIOS2_BUILTIN_RDCTL, &int_ftype_int, nios2_expand_rdctl},
-+    {CODE_FOR_wrctl, "__builtin_wrctl", NIOS2_BUILTIN_WRCTL, &void_ftype_int_int, nios2_expand_wrctl},
-+
-+    {CODE_FOR_custom_n, "__builtin_custom_n", NIOS2_BUILTIN_CUSTOM_N, &custom_n, nios2_expand_custom_n},
-+    {CODE_FOR_custom_ni, "__builtin_custom_ni", NIOS2_BUILTIN_CUSTOM_NI, &custom_ni, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_nf, "__builtin_custom_nf", NIOS2_BUILTIN_CUSTOM_NF, &custom_nf, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_np, "__builtin_custom_np", NIOS2_BUILTIN_CUSTOM_NP, &custom_np, nios2_expand_custom_nX},
-+    {CODE_FOR_custom_nii, "__builtin_custom_nii", NIOS2_BUILTIN_CUSTOM_NII, &custom_nii, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nif, "__builtin_custom_nif", NIOS2_BUILTIN_CUSTOM_NIF, &custom_nif, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nip, "__builtin_custom_nip", NIOS2_BUILTIN_CUSTOM_NIP, &custom_nip, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nfi, "__builtin_custom_nfi", NIOS2_BUILTIN_CUSTOM_NFI, &custom_nfi, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nff, "__builtin_custom_nff", NIOS2_BUILTIN_CUSTOM_NFF, &custom_nff, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_nfp, "__builtin_custom_nfp", NIOS2_BUILTIN_CUSTOM_NFP, &custom_nfp, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npi, "__builtin_custom_npi", NIOS2_BUILTIN_CUSTOM_NPI, &custom_npi, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npf, "__builtin_custom_npf", NIOS2_BUILTIN_CUSTOM_NPF, &custom_npf, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_npp, "__builtin_custom_npp", NIOS2_BUILTIN_CUSTOM_NPP, &custom_npp, nios2_expand_custom_nXX},
-+    {CODE_FOR_custom_in, "__builtin_custom_in", NIOS2_BUILTIN_CUSTOM_IN, &custom_in, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_ini, "__builtin_custom_ini", NIOS2_BUILTIN_CUSTOM_INI, &custom_ini, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inf, "__builtin_custom_inf", NIOS2_BUILTIN_CUSTOM_INF, &custom_inf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inp, "__builtin_custom_inp", NIOS2_BUILTIN_CUSTOM_INP, &custom_inp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_inii, "__builtin_custom_inii", NIOS2_BUILTIN_CUSTOM_INII, &custom_inii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inif, "__builtin_custom_inif", NIOS2_BUILTIN_CUSTOM_INIF, &custom_inif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inip, "__builtin_custom_inip", NIOS2_BUILTIN_CUSTOM_INIP, &custom_inip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_infi, "__builtin_custom_infi", NIOS2_BUILTIN_CUSTOM_INFI, &custom_infi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inff, "__builtin_custom_inff", NIOS2_BUILTIN_CUSTOM_INFF, &custom_inff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_infp, "__builtin_custom_infp", NIOS2_BUILTIN_CUSTOM_INFP, &custom_infp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpi, "__builtin_custom_inpi", NIOS2_BUILTIN_CUSTOM_INPI, &custom_inpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpf, "__builtin_custom_inpf", NIOS2_BUILTIN_CUSTOM_INPF, &custom_inpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_inpp, "__builtin_custom_inpp", NIOS2_BUILTIN_CUSTOM_INPP, &custom_inpp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fn, "__builtin_custom_fn", NIOS2_BUILTIN_CUSTOM_FN, &custom_fn, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_fni, "__builtin_custom_fni", NIOS2_BUILTIN_CUSTOM_FNI, &custom_fni, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnf, "__builtin_custom_fnf", NIOS2_BUILTIN_CUSTOM_FNF, &custom_fnf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnp, "__builtin_custom_fnp", NIOS2_BUILTIN_CUSTOM_FNP, &custom_fnp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_fnii, "__builtin_custom_fnii", NIOS2_BUILTIN_CUSTOM_FNII, &custom_fnii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnif, "__builtin_custom_fnif", NIOS2_BUILTIN_CUSTOM_FNIF, &custom_fnif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnip, "__builtin_custom_fnip", NIOS2_BUILTIN_CUSTOM_FNIP, &custom_fnip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnfi, "__builtin_custom_fnfi", NIOS2_BUILTIN_CUSTOM_FNFI, &custom_fnfi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnff, "__builtin_custom_fnff", NIOS2_BUILTIN_CUSTOM_FNFF, &custom_fnff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnfp, "__builtin_custom_fnfp", NIOS2_BUILTIN_CUSTOM_FNFP, &custom_fnfp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpi, "__builtin_custom_fnpi", NIOS2_BUILTIN_CUSTOM_FNPI, &custom_fnpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpf, "__builtin_custom_fnpf", NIOS2_BUILTIN_CUSTOM_FNPF, &custom_fnpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_fnpp, "__builtin_custom_fnpp", NIOS2_BUILTIN_CUSTOM_FNPP, &custom_fnpp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pn, "__builtin_custom_pn", NIOS2_BUILTIN_CUSTOM_PN, &custom_pn, nios2_expand_custom_Xn},
-+    {CODE_FOR_custom_pni, "__builtin_custom_pni", NIOS2_BUILTIN_CUSTOM_PNI, &custom_pni, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnf, "__builtin_custom_pnf", NIOS2_BUILTIN_CUSTOM_PNF, &custom_pnf, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnp, "__builtin_custom_pnp", NIOS2_BUILTIN_CUSTOM_PNP, &custom_pnp, nios2_expand_custom_XnX},
-+    {CODE_FOR_custom_pnii, "__builtin_custom_pnii", NIOS2_BUILTIN_CUSTOM_PNII, &custom_pnii, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnif, "__builtin_custom_pnif", NIOS2_BUILTIN_CUSTOM_PNIF, &custom_pnif, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnip, "__builtin_custom_pnip", NIOS2_BUILTIN_CUSTOM_PNIP, &custom_pnip, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnfi, "__builtin_custom_pnfi", NIOS2_BUILTIN_CUSTOM_PNFI, &custom_pnfi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnff, "__builtin_custom_pnff", NIOS2_BUILTIN_CUSTOM_PNFF, &custom_pnff, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnfp, "__builtin_custom_pnfp", NIOS2_BUILTIN_CUSTOM_PNFP, &custom_pnfp, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpi, "__builtin_custom_pnpi", NIOS2_BUILTIN_CUSTOM_PNPI, &custom_pnpi, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpf, "__builtin_custom_pnpf", NIOS2_BUILTIN_CUSTOM_PNPF, &custom_pnpf, nios2_expand_custom_XnXX},
-+    {CODE_FOR_custom_pnpp, "__builtin_custom_pnpp", NIOS2_BUILTIN_CUSTOM_PNPP, &custom_pnpp, nios2_expand_custom_XnXX},
-+
-+
-+    {0, 0, 0, 0, 0},
-+};
-+
-+/* This does not have a closing bracket on purpose (see use) */
-+#define def_param(TYPE) \
-+  tree_cons (NULL_TREE, TYPE,
-+
-+static void
-+nios2_init_builtins ()
-+{
-+  const struct builtin_description *d;
-+
-+
-+  endlink = void_list_node;
-+
-+  /* Special indenting here because one of the brackets is in def_param */
-+  /* *INDENT-OFF* */
-+
-+  /* int fn (volatile const void *)
-+   */
-+  int_ftype_volatile_const_void_p
-+    = build_function_type (integer_type_node,
-+			   def_param (build_qualified_type (ptr_type_node,
-+			                                    TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE))
-+			   endlink));
-+
-+
-+  /* void fn (volatile void *, int)
-+   */
-+  void_ftype_volatile_void_p_int
-+    = build_function_type (void_type_node,
-+			   def_param (build_qualified_type (ptr_type_node,
-+			                                    TYPE_QUAL_VOLATILE))
-+			   def_param (integer_type_node)
-+			   endlink)));
-+
-+  /* void fn (void)
-+   */
-+  void_ftype_void
-+      = build_function_type (void_type_node,
-+                             endlink);
-+
-+  /* int fn (int)
-+   */
-+  int_ftype_int
-+      = build_function_type (integer_type_node,
-+                             def_param (integer_type_node)
-+                             endlink));
-+
-+  /* void fn (int, int)
-+   */
-+  void_ftype_int_int
-+      = build_function_type (void_type_node,
-+                             def_param (integer_type_node)
-+                             def_param (integer_type_node)
-+                             endlink)));
-+
-+
-+#define CUSTOM_NUM def_param (integer_type_node)
-+
-+  custom_n
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_ni
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_nf
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_np
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_nii
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_nif
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_nip
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_nfi
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_nff
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_nfp
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_npi
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_npf
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_npp
-+      = build_function_type (void_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+  custom_in
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_ini
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_inf
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_inp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_inii
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inif
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_inip
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_infi
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inff
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_infp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_inpi
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_inpf
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_inpp
-+      = build_function_type (integer_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+  custom_fn
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_fni
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_fnf
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_fnp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_fnii
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnif
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnip
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_fnfi
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnff
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnfp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_fnpi
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_fnpf
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_fnpp
-+      = build_function_type (float_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+
-+  custom_pn
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     endlink));
-+  custom_pni
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     endlink)));
-+  custom_pnf
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     endlink)));
-+  custom_pnp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     endlink)));
-+  custom_pnii
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnif
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnip
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (integer_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_pnfi
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnff
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnfp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (float_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+  custom_pnpi
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (integer_type_node)
-+  			     endlink))));
-+  custom_pnpf
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (float_type_node)
-+  			     endlink))));
-+  custom_pnpp
-+      = build_function_type (ptr_type_node,
-+  			     CUSTOM_NUM
-+  			     def_param (ptr_type_node)
-+  			     def_param (ptr_type_node)
-+  			     endlink))));
-+
-+
-+
-+  /* *INDENT-ON* */
-+
-+
-+  for (d = bdesc; d->name; d++)
-+    {
-+      builtin_function (d->name, *d->type, d->code,
-+			BUILT_IN_MD, NULL, NULL);
-+    }
-+}
-+
-+/* Expand an expression EXP that calls a built-in function,
-+   with result going to TARGET if that's convenient
-+   (and in mode MODE if that's convenient).
-+   SUBTARGET may be used as the target for computing one of EXP's operands.
-+   IGNORE is nonzero if the value is to be ignored.  */
-+
-+static rtx
-+nios2_expand_builtin (tree exp, rtx target, rtx subtarget, 
-+                      enum machine_mode mode, int ignore)
-+{
-+  const struct builtin_description *d;
-+  tree fndecl = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
-+  unsigned int fcode = DECL_FUNCTION_CODE (fndecl);
-+
-+  for (d = bdesc; d->name; d++)
-+    if (d->code == fcode)
-+      return (d->expander) (d, exp, target, subtarget, mode, ignore);
-+
-+  /* we should have seen one of the functins we registered */
-+  abort ();
-+}
-+
-+static rtx nios2_create_target (const struct builtin_description *, rtx);
-+
-+
-+static rtx
-+nios2_create_target (const struct builtin_description *d, rtx target)
-+{
-+  if (!target
-+      || !(*insn_data[d->icode].operand[0].predicate) (target,
-+                                                       insn_data[d->icode].operand[0].mode))
-+    {
-+      target = gen_reg_rtx (insn_data[d->icode].operand[0].mode);
-+    }
-+
-+  return target;
-+}
-+
-+
-+static rtx nios2_extract_opcode (const struct builtin_description *, int, tree);
-+static rtx nios2_extract_operand (const struct builtin_description *, int, int, tree);
-+
-+static rtx
-+nios2_extract_opcode (const struct builtin_description *d, int op, tree arglist)
-+{
-+  enum machine_mode mode = insn_data[d->icode].operand[op].mode;
-+  tree arg = TREE_VALUE (arglist);
-+  rtx opcode = expand_expr (arg, NULL_RTX, mode, 0);
-+  opcode = protect_from_queue (opcode, 0);
-+
-+  if (!(*insn_data[d->icode].operand[op].predicate) (opcode, mode))
-+    error ("Custom instruction opcode must be compile time constant in the range 0-255 for %s", d->name);
-+
-+  return opcode;
-+}
-+
-+static rtx
-+nios2_extract_operand (const struct builtin_description *d, int op, int argnum, tree arglist)
-+{
-+  enum machine_mode mode = insn_data[d->icode].operand[op].mode;
-+  tree arg = TREE_VALUE (arglist);
-+  rtx operand = expand_expr (arg, NULL_RTX, mode, 0);
-+  operand = protect_from_queue (operand, 0);
-+
-+  if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode))
-+    operand = copy_to_mode_reg (mode, operand);
-+
-+  /* ??? Better errors would be nice */
-+  if (!(*insn_data[d->icode].operand[op].predicate) (operand, mode))
-+    error ("Invalid argument %d to %s", argnum, d->name);
-+
-+  return operand;
-+}
-+
-+
-+static rtx
-+nios2_expand_custom_n (const struct builtin_description *d, tree exp, 
-+                       rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, 
-+                       enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+
-+  /* custom_n should have exactly one operand */
-+  if (insn_data[d->icode].n_operands != 1)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+
-+  pat = GEN_FCN (d->icode) (opcode);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_Xn (const struct builtin_description *d, tree exp, 
-+                        rtx target, rtx subtarget ATTRIBUTE_UNUSED, 
-+                        enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                        int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+
-+  /* custom_Xn should have exactly two operands */
-+  if (insn_data[d->icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+
-+  pat = GEN_FCN (d->icode) (target, opcode);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_custom_nX (const struct builtin_description *d, tree exp, 
-+                        rtx target ATTRIBUTE_UNUSED, rtx subtarget ATTRIBUTE_UNUSED, 
-+                        enum machine_mode mode ATTRIBUTE_UNUSED, int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[1];
-+  int i;
-+
-+
-+  /* custom_nX should have exactly two operands */
-+  if (insn_data[d->icode].n_operands != 2)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+  for (i = 0; i < 1; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (opcode, operands[0]);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_XnX (const struct builtin_description *d, tree exp, rtx target, 
-+                         rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                         int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[1];
-+  int i;
-+
-+  /* custom_Xn should have exactly three operands */
-+  if (insn_data[d->icode].n_operands != 3)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+
-+  for (i = 0; i < 1; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (target, opcode, operands[0]);
-+
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_custom_nXX (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, 
-+                         rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                         int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[2];
-+  int i;
-+
-+
-+  /* custom_nX should have exactly three operands */
-+  if (insn_data[d->icode].n_operands != 3)
-+    abort ();
-+
-+  opcode = nios2_extract_opcode (d, 0, arglist);
-+  for (i = 0; i < 2; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 1, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (opcode, operands[0], operands[1]);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_custom_XnXX (const struct builtin_description *d, tree exp, rtx target, 
-+                          rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                          int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx opcode;
-+  rtx operands[2];
-+  int i;
-+
-+
-+  /* custom_XnX should have exactly four operands */
-+  if (insn_data[d->icode].n_operands != 4)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+  opcode = nios2_extract_opcode (d, 1, arglist);
-+  for (i = 0; i < 2; i++)
-+    {
-+      arglist = TREE_CHAIN (arglist);
-+      operands[i] = nios2_extract_operand (d, i + 2, i + 1, arglist);
-+    }
-+
-+  pat = GEN_FCN (d->icode) (target, opcode, operands[0], operands[1]);
-+
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+
-+
-+static rtx
-+nios2_expand_STXIO (const struct builtin_description *d, tree exp, rtx target ATTRIBUTE_UNUSED, 
-+                    rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                    int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx store_dest, store_val;
-+  enum insn_code icode = d->icode;
-+
-+  /* stores should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  /* process the destination of the store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[0].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    store_dest = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    store_dest = protect_from_queue (store_dest, 0);
-+
-+    store_dest = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, store_dest));
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[0].predicate) (store_dest, mode))
-+      error ("Invalid argument 1 to %s", d->name);
-+  }
-+
-+
-+  /* process the value to store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (TREE_CHAIN (arglist));
-+    store_val = expand_expr (arg, NULL_RTX, mode, 0);
-+    store_val = protect_from_queue (store_val, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      store_val = copy_to_mode_reg (mode, store_val);
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      error ("Invalid argument 2 to %s", d->name);
-+  }
-+
-+  pat = GEN_FCN (d->icode) (store_dest, store_val);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+
-+static rtx
-+nios2_expand_LDXIO (const struct builtin_description * d, tree exp, rtx target, 
-+                    rtx subtarget ATTRIBUTE_UNUSED, enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                    int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx ld_src;
-+  enum insn_code icode = d->icode;
-+
-+  /* loads should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    ld_src = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    ld_src = protect_from_queue (ld_src, 0);
-+
-+    ld_src = gen_rtx_MEM (mode, copy_to_mode_reg (Pmode, ld_src));
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (ld_src, mode))
-+      {
-+        error ("Invalid argument 1 to %s", d->name);
-+      }
-+  }
-+
-+  pat = GEN_FCN (d->icode) (target, ld_src);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+
-+static rtx
-+nios2_expand_sync (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  emit_insn (gen_sync ());
-+  return 0;
-+}
-+
-+static rtx
-+nios2_expand_rdctl (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx rdctl_reg;
-+  enum insn_code icode = d->icode;
-+
-+  /* rdctl should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  target = nios2_create_target (d, target);
-+
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    rdctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    rdctl_reg = protect_from_queue (rdctl_reg, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (rdctl_reg, mode))
-+      {
-+        error ("Control register number must be in range 0-31 for %s", d->name);
-+      }
-+  }
-+
-+  pat = GEN_FCN (d->icode) (target, rdctl_reg);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return target;
-+}
-+
-+static rtx
-+nios2_expand_wrctl (const struct builtin_description * d ATTRIBUTE_UNUSED, 
-+                   tree exp ATTRIBUTE_UNUSED, rtx target ATTRIBUTE_UNUSED, 
-+                   rtx subtarget ATTRIBUTE_UNUSED, 
-+                   enum machine_mode mode ATTRIBUTE_UNUSED, 
-+                   int ignore ATTRIBUTE_UNUSED)
-+{
-+  tree arglist = TREE_OPERAND (exp, 1);
-+  rtx pat;
-+  rtx wrctl_reg, store_val;
-+  enum insn_code icode = d->icode;
-+
-+  /* stores should have exactly two operands */
-+  if (insn_data[icode].n_operands != 2)
-+    abort ();
-+
-+  /* process the destination of the store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[0].mode;
-+    tree arg = TREE_VALUE (arglist);
-+    wrctl_reg = expand_expr (arg, NULL_RTX, VOIDmode, 0);
-+    wrctl_reg = protect_from_queue (wrctl_reg, 0);
-+
-+    if (!(*insn_data[icode].operand[0].predicate) (wrctl_reg, mode))
-+      error ("Control register number must be in range 0-31 for %s", d->name);
-+  }
-+
-+
-+  /* process the value to store */
-+  {
-+    enum machine_mode mode = insn_data[icode].operand[1].mode;
-+    tree arg = TREE_VALUE (TREE_CHAIN (arglist));
-+    store_val = expand_expr (arg, NULL_RTX, mode, 0);
-+    store_val = protect_from_queue (store_val, 0);
-+
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      store_val = copy_to_mode_reg (mode, store_val);
-+
-+    /* ??? Better errors would be nice */
-+    if (!(*insn_data[icode].operand[1].predicate) (store_val, mode))
-+      error ("Invalid argument 2 to %s", d->name);
-+  }
-+
-+  pat = GEN_FCN (d->icode) (wrctl_reg, store_val);
-+  if (!pat)
-+    return 0;
-+  emit_insn (pat);
-+  return 0;
-+}
-+
-+
-+#include "gt-nios2.h"
-+
---- gcc-3.4.3/gcc/config/nios2/nios2.h
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.h
-@@ -0,0 +1,824 @@
-+/* Definitions of target machine for Altera NIOS 2G NIOS2 version.
-+   Copyright (C) 2003 Altera 
-+   Contributed by Jonah Graham (jgraham@altera.com).
-+
-+This file is part of GNU CC.
-+
-+GNU CC 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.
-+
-+GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+the Free Software Foundation, 59 Temple Place - Suite 330,
-+Boston, MA 02111-1307, USA.  */
-+
-+
-+
-+#define TARGET_CPU_CPP_BUILTINS()		\
-+  do						\
-+    {						\
-+      builtin_define_std ("NIOS2");		\
-+      builtin_define_std ("nios2");		\
-+      builtin_define ("_GNU_SOURCE");		\
-+    }						\
-+  while (0)
-+#define TARGET_VERSION fprintf (stderr, " (Altera Nios II)")
-+
-+
-+
-+
-+
-+/*********************************
-+ * Run-time Target Specification
-+ *********************************/
-+
-+#define HAS_DIV_FLAG 0x0001
-+#define HAS_MUL_FLAG 0x0002
-+#define HAS_MULX_FLAG 0x0004
-+#define FAST_SW_DIV_FLAG 0x0008
-+#define INLINE_MEMCPY_FLAG 0x00010
-+#define CACHE_VOLATILE_FLAG 0x0020
-+#define BYPASS_CACHE_FLAG 0x0040
-+
-+extern int target_flags;
-+#define TARGET_HAS_DIV (target_flags & HAS_DIV_FLAG)
-+#define TARGET_HAS_MUL (target_flags & HAS_MUL_FLAG)
-+#define TARGET_HAS_MULX (target_flags & HAS_MULX_FLAG)
-+#define TARGET_FAST_SW_DIV (target_flags & FAST_SW_DIV_FLAG)
-+#define TARGET_INLINE_MEMCPY (target_flags & INLINE_MEMCPY_FLAG)
-+#define TARGET_CACHE_VOLATILE (target_flags & CACHE_VOLATILE_FLAG)
-+#define TARGET_BYPASS_CACHE (target_flags & BYPASS_CACHE_FLAG)
-+
-+#define TARGET_SWITCHES					\
-+{							\
-+    { "hw-div", HAS_DIV_FLAG,				\
-+      N_("Enable DIV, DIVU") },				\
-+    { "no-hw-div", -HAS_DIV_FLAG,			\
-+      N_("Disable DIV, DIVU (default)") },		\
-+    { "hw-mul", HAS_MUL_FLAG,				\
-+      N_("Enable MUL instructions (default)") },				\
-+    { "hw-mulx", HAS_MULX_FLAG,				\
-+      N_("Enable MULX instructions, assume fast shifter") },				\
-+    { "no-hw-mul", -HAS_MUL_FLAG,			\
-+      N_("Disable MUL instructions") },		\
-+    { "no-hw-mulx", -HAS_MULX_FLAG,			\
-+      N_("Disable MULX instructions, assume slow shifter (default and implied by -mno-hw-mul)") },		\
-+    { "fast-sw-div", FAST_SW_DIV_FLAG,				\
-+      N_("Use table based fast divide (default at -O3)") },				\
-+    { "no-fast-sw-div", -FAST_SW_DIV_FLAG,			\
-+      N_("Don't use table based fast divide ever") },		\
-+    { "inline-memcpy", INLINE_MEMCPY_FLAG,				\
-+      N_("Inline small memcpy (default when optimizing)") },				\
-+    { "no-inline-memcpy", -INLINE_MEMCPY_FLAG,			\
-+      N_("Don't Inline small memcpy") },		\
-+    { "cache-volatile", CACHE_VOLATILE_FLAG,				\
-+      N_("Volatile accesses use non-io variants of instructions (default)") },				\
-+    { "no-cache-volatile", -CACHE_VOLATILE_FLAG,			\
-+      N_("Volatile accesses use io variants of instructions") },		\
-+    { "bypass-cache", BYPASS_CACHE_FLAG,				\
-+      N_("All ld/st instructins use io variants") },				\
-+    { "no-bypass-cache", -BYPASS_CACHE_FLAG,			\
-+      N_("All ld/st instructins do not use io variants (default)") },		\
-+    { "smallc", 0,			\
-+      N_("Link with a limited version of the C library") },		\
-+    { "ctors-in-init", 0,			\
-+      "" /* undocumented: N_("Link with static constructors and destructors in init") */ },		\
-+    { "", TARGET_DEFAULT, 0 }				\
-+}
-+
-+
-+extern const char *nios2_sys_nosys_string;    /* for -msys=nosys */
-+extern const char *nios2_sys_lib_string;    /* for -msys-lib= */
-+extern const char *nios2_sys_crt0_string;    /* for -msys-crt0= */
-+
-+#define TARGET_OPTIONS					\
-+{							\
-+  { "sys=nosys",    &nios2_sys_nosys_string,		\
-+      N_("Use stub versions of OS library calls (default)"), 0},	\
-+  { "sys-lib=",    &nios2_sys_lib_string,		\
-+      N_("Name of System Library to link against. (Converted to a -l option)"), 0},	\
-+  { "sys-crt0=",    &nios2_sys_crt0_string,		\
-+      N_("Name of the startfile. (default is a crt0 for the ISS only)"), 0},	\
-+}
-+
-+
-+/* Default target_flags if no switches specified.  */
-+#ifndef TARGET_DEFAULT
-+# define TARGET_DEFAULT (HAS_MUL_FLAG | CACHE_VOLATILE_FLAG)
-+#endif
-+
-+/* Switch  Recognition by gcc.c.  Add -G xx support */
-+#undef  SWITCH_TAKES_ARG
-+#define SWITCH_TAKES_ARG(CHAR)						\
-+  (DEFAULT_SWITCH_TAKES_ARG (CHAR) || (CHAR) == 'G')
-+
-+#define OVERRIDE_OPTIONS override_options ()
-+#define OPTIMIZATION_OPTIONS(LEVEL, SIZE) optimization_options (LEVEL, SIZE)
-+#define CAN_DEBUG_WITHOUT_FP
-+ 
-+#define CC1_SPEC "\
-+%{G*}"
-+
-+#undef LIB_SPEC
-+#define LIB_SPEC \
-+"--start-group %{msmallc: -lsmallc} %{!msmallc: -lc} -lgcc \
-+ %{msys-lib=*: -l%*} \
-+ %{!msys-lib=*: -lc } \
-+ --end-group \
-+ %{msys-lib=: %eYou need a library name for -msys-lib=} \
-+"
-+
-+
-+#undef STARTFILE_SPEC 
-+#define STARTFILE_SPEC  \
-+"%{msys-crt0=*: %*} %{!msys-crt0=*: crt1%O%s} \
-+ %{msys-crt0=: %eYou need a C startup file for -msys-crt0=} \
-+ %{mctors-in-init: crti%O%s crtbegin%O%s} \
-+"
-+
-+#undef ENDFILE_SPEC 
-+#define ENDFILE_SPEC \
-+ "%{mctors-in-init: crtend%O%s crtn%O%s}"
-+
-+
-+/***********************
-+ * Storage Layout
-+ ***********************/
-+
-+#define DEFAULT_SIGNED_CHAR 1
-+#define BITS_BIG_ENDIAN 0
-+#define BYTES_BIG_ENDIAN 0
-+#define WORDS_BIG_ENDIAN 0
-+#define BITS_PER_UNIT 8
-+#define BITS_PER_WORD 32
-+#define UNITS_PER_WORD 4
-+#define POINTER_SIZE 32
-+#define BIGGEST_ALIGNMENT 32
-+#define STRICT_ALIGNMENT 1
-+#define FUNCTION_BOUNDARY 32
-+#define PARM_BOUNDARY 32
-+#define STACK_BOUNDARY 32
-+#define PREFERRED_STACK_BOUNDARY 32
-+#define MAX_FIXED_MODE_SIZE 64
-+
-+#define CONSTANT_ALIGNMENT(EXP, ALIGN)				\
-+  ((TREE_CODE (EXP) == STRING_CST) 				\
-+   && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN))
-+
-+
-+/**********************
-+ * Layout of Source Language Data Types
-+ **********************/
-+
-+#define INT_TYPE_SIZE 32
-+#define SHORT_TYPE_SIZE 16
-+#define LONG_TYPE_SIZE 32
-+#define LONG_LONG_TYPE_SIZE 64
-+#define FLOAT_TYPE_SIZE 32
-+#define DOUBLE_TYPE_SIZE 64
-+#define LONG_DOUBLE_TYPE_SIZE DOUBLE_TYPE_SIZE
-+
-+
-+/*************************
-+ * Condition Code Status
-+ ************************/
-+
-+/* comparison type */
-+/* ??? currently only CMP_SI is used */
-+enum cmp_type {
-+  CMP_SI,				/* compare four byte integers */
-+  CMP_DI,				/* compare eight byte integers */
-+  CMP_SF,				/* compare single precision floats */
-+  CMP_DF,				/* compare double precision floats */
-+  CMP_MAX				/* max comparison type */
-+};
-+
-+extern GTY(()) rtx branch_cmp[2];	/* operands for compare */
-+extern enum cmp_type branch_type;	/* what type of branch to use */
-+
-+/**********************
-+ * Register Usage
-+ **********************/
-+
-+/* ---------------------------------- *
-+ * Basic Characteristics of Registers
-+ * ---------------------------------- */
-+
-+/*
-+Register Number
-+      Register Name
-+          Alternate Name
-+                Purpose
-+0     r0  zero  always zero
-+1     r1  at    Assembler Temporary
-+2-3   r2-r3     Return Location
-+4-7   r4-r7     Register Arguments
-+8-15  r8-r15    Caller Saved Registers
-+16-22 r16-r22   Callee Saved Registers
-+23    r23 sc    Static Chain (Callee Saved)
-+                ??? Does $sc want to be caller or callee 
-+                saved. If caller, 15, else 23. 
-+24    r24       Exception Temporary
-+25    r25       Breakpoint Temporary
-+26    r26 gp    Global Pointer
-+27    r27 sp    Stack Pointer
-+28    r28 fp    Frame Pointer
-+29    r29 ea    Exception Return Address
-+30    r30 ba    Breakpoint Return Address
-+31    r31 ra    Return Address
-+
-+32    ctl0 status
-+33    ctl1 estatus STATUS saved by exception ? 	
-+34    ctl2 bstatus STATUS saved by break ? 	
-+35    ctl3 ipri    Interrupt Priority Mask ?	
-+36    ctl4 ecause  Exception Cause ? 	
-+
-+37         pc   Not an actual register	
-+
-+38    rap      Return address pointer, this does not
-+                   actually exist and will be eliminated
-+
-+39    fake_fp  Fake Frame Pointer which will always be eliminated.
-+40    fake_ap  Fake Argument Pointer which will always be eliminated.
-+
-+41             First Pseudo Register
-+
-+
-+The definitions for all the hard register numbers
-+are located in nios2.md.
-+*/
-+
-+#define FIRST_PSEUDO_REGISTER 41
-+#define NUM_ARG_REGS (LAST_ARG_REGNO - FIRST_ARG_REGNO + 1)
-+
-+
-+
-+/* also see CONDITIONAL_REGISTER_USAGE */
-+#define FIXED_REGISTERS			     \
-+    {					     \
-+/*        +0  1  2  3  4  5  6  7  8  9 */   \
-+/*   0 */  1, 1, 0, 0, 0, 0, 0, 0, 0, 0,     \
-+/*  10 */  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,     \
-+/*  20 */  0, 0, 0, 0, 1, 1, 1, 1, 0, 1,     \
-+/*  30 */  1, 0, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  40 */  1,                                \
-+    }
-+
-+/* call used is the same as caller saved
-+   + fixed regs + args + ret vals */
-+#define CALL_USED_REGISTERS		     \
-+    { 					     \
-+/*        +0  1  2  3  4  5  6  7  8  9 */   \
-+/*   0 */  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  10 */  1, 1, 1, 1, 1, 1, 0, 0, 0, 0,     \
-+/*  20 */  0, 0, 0, 0, 1, 1, 1, 1, 0, 1,     \
-+/*  30 */  1, 0, 1, 1, 1, 1, 1, 1, 1, 1,     \
-+/*  40 */  1,                                \
-+    }
-+
-+#define HARD_REGNO_NREGS(REGNO, MODE)            \
-+   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
-+    / UNITS_PER_WORD)
-+
-+/* --------------------------- *
-+ * How Values Fit in Registers
-+ * --------------------------- */
-+
-+#define HARD_REGNO_MODE_OK(REGNO, MODE) 1
-+
-+#define MODES_TIEABLE_P(MODE1, MODE2) 1
-+
-+
-+/*************************
-+ * Register Classes
-+ *************************/
-+
-+enum reg_class
-+{
-+    NO_REGS,
-+    ALL_REGS,
-+    LIM_REG_CLASSES
-+};
-+
-+#define N_REG_CLASSES (int) LIM_REG_CLASSES
-+
-+#define REG_CLASS_NAMES   \
-+    {"NO_REGS",           \
-+     "ALL_REGS"}
-+
-+#define GENERAL_REGS ALL_REGS
-+
-+#define REG_CLASS_CONTENTS   \
-+/* NO_REGS  */       {{ 0, 0},     \
-+/* ALL_REGS */        {~0,~0}}    \
-+
-+#define REGNO_REG_CLASS(REGNO) ALL_REGS
-+
-+#define BASE_REG_CLASS ALL_REGS
-+#define INDEX_REG_CLASS ALL_REGS
-+
-+/* only one reg class, 'r', is handled automatically */
-+#define REG_CLASS_FROM_LETTER(CHAR) NO_REGS
-+
-+#define REGNO_OK_FOR_BASE_P2(REGNO, STRICT) \
-+    ((STRICT) \
-+     ? (REGNO) < FIRST_PSEUDO_REGISTER \
-+     : (REGNO) < FIRST_PSEUDO_REGISTER || (reg_renumber && reg_renumber[REGNO] < FIRST_PSEUDO_REGISTER))
-+
-+#define REGNO_OK_FOR_INDEX_P2(REGNO, STRICT) \
-+    (REGNO_OK_FOR_BASE_P2 (REGNO, STRICT))
-+
-+#define REGNO_OK_FOR_BASE_P(REGNO) \
-+    (REGNO_OK_FOR_BASE_P2 (REGNO, 1))
-+
-+#define REGNO_OK_FOR_INDEX_P(REGNO) \
-+    (REGNO_OK_FOR_INDEX_P2 (REGNO, 1))
-+
-+#define REG_OK_FOR_BASE_P2(X, STRICT)                                   \
-+    (STRICT                                                             \
-+     ? REGNO_OK_FOR_BASE_P2 (REGNO (X), 1)                              \
-+     : REGNO_OK_FOR_BASE_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER)
-+
-+#define REG_OK_FOR_INDEX_P2(X, STRICT)                                  \
-+    (STRICT                                                             \
-+     ? REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1)                             \
-+     : REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1) || REGNO(X) >= FIRST_PSEUDO_REGISTER)
-+
-+#define CLASS_MAX_NREGS(CLASS, MODE)             \
-+   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
-+    / UNITS_PER_WORD)
-+
-+
-+#define SMALL_INT(X) ((unsigned HOST_WIDE_INT) ((X) + 0x8000) < 0x10000)
-+#define SMALL_INT_UNSIGNED(X) ((unsigned HOST_WIDE_INT) (X) < 0x10000)
-+#define UPPER16_INT(X) (((X) & 0xffff) == 0)
-+#define SHIFT_INT(X) ((X) >= 0 && (X) <= 31)
-+#define RDWRCTL_INT(X) ((X) >= 0 && (X) <= 31)
-+#define CUSTOM_INSN_OPCODE(X) ((X) >= 0 && (X) <= 255)
-+
-+#define CONST_OK_FOR_LETTER_P(VALUE, C)			\
-+ (							\
-+  (C) == 'I' ? SMALL_INT (VALUE) :			\
-+  (C) == 'J' ? SMALL_INT_UNSIGNED (VALUE) :		\
-+  (C) == 'K' ? UPPER16_INT (VALUE) :         		\
-+  (C) == 'L' ? SHIFT_INT (VALUE) :			\
-+  (C) == 'M' ? (VALUE) == 0 :				\
-+  (C) == 'N' ? CUSTOM_INSN_OPCODE (VALUE) :		\
-+  (C) == 'O' ? RDWRCTL_INT (VALUE) :			\
-+  0)
-+
-+#define CONST_DOUBLE_OK_FOR_LETTER_P(VALUE, C) 0
-+
-+#define PREFERRED_RELOAD_CLASS(X, CLASS) \
-+    ((CLASS) == NO_REGS ? GENERAL_REGS : (CLASS))
-+
-+/* 'S' matches immediates which are in small data 
-+   and therefore can be added to gp to create a 
-+   32-bit value. */
-+#define EXTRA_CONSTRAINT(VALUE, C)		\
-+  ((C) == 'S' 					\
-+   && (GET_CODE (VALUE) == SYMBOL_REF)   	\
-+   && SYMBOL_REF_IN_NIOS2_SMALL_DATA_P (VALUE))
-+
-+
-+
-+
-+/* Say that the epilogue uses the return address register.  Note that
-+   in the case of sibcalls, the values "used by the epilogue" are
-+   considered live at the start of the called function.  */
-+#define EPILOGUE_USES(REGNO) ((REGNO) == RA_REGNO)
-+
-+
-+#define DEFAULT_MAIN_RETURN  c_expand_return (integer_zero_node)
-+
-+/**********************************
-+ * Trampolines for Nested Functions
-+ ***********************************/
-+
-+#define TRAMPOLINE_TEMPLATE(FILE) \
-+    error ("trampolines not yet implemented")
-+#define TRAMPOLINE_SIZE 20
-+#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
-+    error ("trampolines not yet implemented")
-+
-+/***************************
-+ * Stack Layout and Calling Conventions
-+ ***************************/
-+
-+/* ------------------ *
-+ * Basic Stack Layout
-+ * ------------------ */
-+
-+/* The downward variants are used by the compiler,
-+   the upward ones serve as documentation */
-+#define STACK_GROWS_DOWNWARD
-+#define FRAME_GROWS_UPWARD
-+#define ARGS_GROW_UPWARD
-+
-+#define STARTING_FRAME_OFFSET current_function_outgoing_args_size
-+#define FIRST_PARM_OFFSET(FUNDECL) 0
-+
-+/* Before the prologue, RA lives in r31.  */
-+#define INCOMING_RETURN_ADDR_RTX  gen_rtx_REG (VOIDmode, RA_REGNO)
-+
-+/* -------------------------------------- *
-+ * Registers That Address the Stack Frame
-+ * -------------------------------------- */
-+
-+#define STACK_POINTER_REGNUM SP_REGNO
-+#define STATIC_CHAIN_REGNUM SC_REGNO
-+#define PC_REGNUM PC_REGNO
-+#define DWARF_FRAME_RETURN_COLUMN RA_REGNO
-+
-+/* Base register for access to local variables of the function.  We
-+   pretend that the frame pointer is a non-existent hard register, and 
-+   then eliminate it to HARD_FRAME_POINTER_REGNUM. */
-+#define FRAME_POINTER_REGNUM FAKE_FP_REGNO
-+
-+#define HARD_FRAME_POINTER_REGNUM FP_REGNO
-+#define RETURN_ADDRESS_POINTER_REGNUM RAP_REGNO
-+/* the argumnet pointer needs to always be eliminated
-+   so it is set to a fake hard register. */
-+#define ARG_POINTER_REGNUM FAKE_AP_REGNO
-+
-+/* ----------------------------------------- *
-+ * Eliminating Frame Pointer and Arg Pointer
-+ * ----------------------------------------- */
-+
-+#define FRAME_POINTER_REQUIRED 0
-+
-+#define ELIMINABLE_REGS							\
-+{{ ARG_POINTER_REGNUM,   STACK_POINTER_REGNUM},				\
-+ { ARG_POINTER_REGNUM,   HARD_FRAME_POINTER_REGNUM},			\
-+ { RETURN_ADDRESS_POINTER_REGNUM, STACK_POINTER_REGNUM},		\
-+ { RETURN_ADDRESS_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM},		\
-+ { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM},				\
-+ { FRAME_POINTER_REGNUM, HARD_FRAME_POINTER_REGNUM}}
-+
-+#define CAN_ELIMINATE(FROM, TO)	1
-+
-+#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
-+	(OFFSET) = nios2_initial_elimination_offset ((FROM), (TO))
-+
-+#define MUST_SAVE_REGISTER(regno) \
-+ ((regs_ever_live[regno] && !call_used_regs[regno])			\
-+  || (regno == HARD_FRAME_POINTER_REGNUM && frame_pointer_needed)	\
-+  || (regno == RA_REGNO && regs_ever_live[RA_REGNO]))
-+
-+/* Treat LOC as a byte offset from the stack pointer and round it up
-+   to the next fully-aligned offset.  */
-+#define STACK_ALIGN(LOC)						\
-+  (((LOC) + ((PREFERRED_STACK_BOUNDARY / 8) - 1)) & ~((PREFERRED_STACK_BOUNDARY / 8) - 1))
-+
-+
-+/* ------------------------------ *
-+ * Passing Arguments in Registers
-+ * ------------------------------ */
-+
-+/* see nios2.c */
-+#define FUNCTION_ARG(CUM, MODE, TYPE, NAMED) \
-+  (function_arg (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_PARTIAL_NREGS(CUM, MODE, TYPE, NAMED) \
-+  (function_arg_partial_nregs (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_PASS_BY_REFERENCE(CUM, MODE, TYPE, NAMED) 0
-+
-+#define FUNCTION_ARG_CALLEE_COPIES(CUM, MODE, TYPE, NAMED) 0
-+
-+typedef struct nios2_args
-+{
-+    int regs_used;
-+} CUMULATIVE_ARGS;
-+
-+/* This is to initialize the above unused CUM data type */
-+#define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \
-+    (init_cumulative_args (&CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS))
-+
-+#define FUNCTION_ARG_ADVANCE(CUM, MODE, TYPE, NAMED) \
-+    (function_arg_advance (&CUM, MODE, TYPE, NAMED))
-+
-+#define FUNCTION_ARG_REGNO_P(REGNO) \
-+    ((REGNO) >= FIRST_ARG_REGNO && (REGNO) <= LAST_ARG_REGNO)
-+
-+#define SETUP_INCOMING_VARARGS(CUM,MODE,TYPE,PRETEND_SIZE,NO_RTL)   \
-+  {								    \
-+    int pret_size = nios2_setup_incoming_varargs (&(CUM), (MODE),	    \
-+						(TYPE), (NO_RTL));  \
-+    if (pret_size)						    \
-+      (PRETEND_SIZE) = pret_size;				    \
-+  }
-+
-+/* ----------------------------- *
-+ * Generating Code for Profiling
-+ * ----------------------------- */
-+
-+#define PROFILE_BEFORE_PROLOGUE
-+
-+#define FUNCTION_PROFILER(FILE, LABELNO) \
-+  function_profiler ((FILE), (LABELNO))
-+
-+/* --------------------------------------- *
-+ * Passing Function Arguments on the Stack
-+ * --------------------------------------- */
-+
-+#define PROMOTE_PROTOTYPES 1
-+
-+#define PUSH_ARGS 0
-+#define ACCUMULATE_OUTGOING_ARGS 1
-+
-+#define RETURN_POPS_ARGS(FUNDECL, FUNTYPE, STACKSIZE) 0
-+
-+/* --------------------------------------- *
-+ * How Scalar Function Values Are Returned
-+ * --------------------------------------- */
-+
-+#define FUNCTION_VALUE(VALTYPE, FUNC) \
-+    gen_rtx(REG, TYPE_MODE(VALTYPE), FIRST_RETVAL_REGNO)
-+
-+#define LIBCALL_VALUE(MODE) \
-+    gen_rtx(REG, MODE, FIRST_RETVAL_REGNO)
-+
-+#define FUNCTION_VALUE_REGNO_P(REGNO) ((REGNO) == FIRST_RETVAL_REGNO)
-+
-+/* ----------------------------- *
-+ * How Large Values Are Returned
-+ * ----------------------------- */
-+
-+
-+#define RETURN_IN_MEMORY(TYPE)	\
-+  nios2_return_in_memory (TYPE)
-+
-+
-+#define STRUCT_VALUE 0
-+
-+#define DEFAULT_PCC_STRUCT_RETURN 0
-+
-+/*******************
-+ * Addressing Modes
-+ *******************/
-+
-+
-+#define LEGITIMIZE_ADDRESS(X, OLDX, MODE, WIN)
-+
-+#define CONSTANT_ADDRESS_P(X) (CONSTANT_P (X))
-+
-+#define MAX_REGS_PER_ADDRESS 1
-+
-+/* Go to ADDR if X is a valid address.  */
-+#ifndef REG_OK_STRICT
-+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)        \
-+    {                                                  \
-+        if (nios2_legitimate_address ((X), (MODE), 0))  \
-+            goto ADDR;                                 \
-+    }
-+#else
-+#define GO_IF_LEGITIMATE_ADDRESS(MODE, X, ADDR)        \
-+    {                                                  \
-+        if (nios2_legitimate_address ((X), (MODE), 1))  \
-+            goto ADDR;                                 \
-+    }
-+#endif
-+
-+#ifndef REG_OK_STRICT
-+#define REG_OK_FOR_BASE_P(X)   REGNO_OK_FOR_BASE_P2 (REGNO (X), 0)
-+#define REG_OK_FOR_INDEX_P(X)  REGNO_OK_FOR_INDEX_P2 (REGNO (X), 0)
-+#else
-+#define REG_OK_FOR_BASE_P(X)   REGNO_OK_FOR_BASE_P2 (REGNO (X), 1)
-+#define REG_OK_FOR_INDEX_P(X)  REGNO_OK_FOR_INDEX_P2 (REGNO (X), 1)
-+#endif
-+
-+#define LEGITIMATE_CONSTANT_P(X) 1
-+
-+/* Nios II has no mode dependent addresses.  */
-+#define GO_IF_MODE_DEPENDENT_ADDRESS(ADDR, LABEL)
-+
-+/* Set if this has a weak declaration  */
-+#define SYMBOL_FLAG_WEAK_DECL	(1 << SYMBOL_FLAG_MACH_DEP_SHIFT)
-+#define SYMBOL_REF_WEAK_DECL_P(RTX) \
-+  ((SYMBOL_REF_FLAGS (RTX) & SYMBOL_FLAG_WEAK_DECL) != 0)
-+
-+
-+/* true if a symbol is both small and not weak. In this case, gp
-+   relative access can be used */
-+#define SYMBOL_REF_IN_NIOS2_SMALL_DATA_P(RTX) \
-+   (SYMBOL_REF_SMALL_P(RTX) && !SYMBOL_REF_WEAK_DECL_P(RTX))
-+
-+/*****************
-+ * Describing Relative Costs of Operations
-+ *****************/
-+
-+#define SLOW_BYTE_ACCESS 1
-+
-+/* It is as good to call a constant function address as to call an address
-+   kept in a register.
-+   ??? Not true anymore really. Now that call cannot address full range
-+   of memory callr may need to be used */
-+
-+#define NO_FUNCTION_CSE
-+#define NO_RECURSIVE_FUNCTION_CSE
-+
-+
-+
-+/*****************************************
-+ * Defining the Output Assembler Language
-+ *****************************************/
-+
-+/* ------------------------------------------ *
-+ * The Overall Framework of an Assembler File
-+ * ------------------------------------------ */
-+
-+#define ASM_APP_ON "#APP\n"
-+#define ASM_APP_OFF "#NO_APP\n"
-+
-+#define ASM_COMMENT_START "# "
-+
-+/* ------------------------------- *
-+ * Output and Generation of Labels
-+ * ------------------------------- */
-+
-+#define GLOBAL_ASM_OP "\t.global\t"
-+
-+
-+/* -------------- *
-+ * Output of Data
-+ * -------------- */
-+
-+#define DWARF2_UNWIND_INFO 0
-+
-+
-+/* -------------------------------- *
-+ * Assembler Commands for Alignment
-+ * -------------------------------- */
-+
-+#define ASM_OUTPUT_ALIGN(FILE, LOG) \
-+  do { \
-+    fprintf ((FILE), "%s%d\n", ALIGN_ASM_OP, (LOG)); \
-+  } while (0)
-+
-+
-+/* -------------------------------- *
-+ * Output of Assembler Instructions
-+ * -------------------------------- */
-+
-+#define REGISTER_NAMES \
-+{ \
-+    "zero", \
-+    "at", \
-+    "r2", \
-+    "r3", \
-+    "r4", \
-+    "r5", \
-+    "r6", \
-+    "r7", \
-+    "r8", \
-+    "r9", \
-+    "r10", \
-+    "r11", \
-+    "r12", \
-+    "r13", \
-+    "r14", \
-+    "r15", \
-+    "r16", \
-+    "r17", \
-+    "r18", \
-+    "r19", \
-+    "r20", \
-+    "r21", \
-+    "r22", \
-+    "r23", \
-+    "r24", \
-+    "r25", \
-+    "gp", \
-+    "sp", \
-+    "fp", \
-+    "ta", \
-+    "ba", \
-+    "ra", \
-+    "status", \
-+    "estatus", \
-+    "bstatus", \
-+    "ipri", \
-+    "ecause", \
-+    "pc", \
-+    "rap", \
-+    "fake_fp", \
-+    "fake_ap", \
-+}
-+
-+#define ASM_OUTPUT_OPCODE(STREAM, PTR)\
-+   (PTR) = asm_output_opcode (STREAM, PTR)
-+
-+#define PRINT_OPERAND(STREAM, X, CODE) \
-+    nios2_print_operand (STREAM, X, CODE)
-+
-+#define PRINT_OPERAND_ADDRESS(STREAM, X) \
-+    nios2_print_operand_address (STREAM, X)
-+
-+#define ASM_OUTPUT_ADDR_VEC_ELT(FILE, VALUE)  \
-+do { fputs (integer_asm_op (POINTER_SIZE / BITS_PER_UNIT, TRUE), FILE); \
-+     fprintf (FILE, ".L%u\n", (unsigned) (VALUE));               \
-+   } while (0)
-+
-+
-+/* ------------ *
-+ * Label Output
-+ * ------------ */
-+
-+
-+/* ---------------------------------------------------- *
-+ * Dividing the Output into Sections (Texts, Data, ...)
-+ * ---------------------------------------------------- */
-+
-+/* Output before read-only data.  */
-+#define TEXT_SECTION_ASM_OP ("\t.section\t.text")
-+
-+/* Output before writable data.  */
-+#define DATA_SECTION_ASM_OP ("\t.section\t.data")
-+
-+
-+/* Default the definition of "small data" to 8 bytes. */
-+/* ??? How come I can't use HOST_WIDE_INT here? */
-+extern unsigned long nios2_section_threshold;
-+#define NIOS2_DEFAULT_GVALUE 8
-+
-+
-+
-+/* This says how to output assembler code to declare an
-+   uninitialized external linkage data object.  Under SVR4,
-+   the linker seems to want the alignment of data objects
-+   to depend on their types.  We do exactly that here.  */
-+
-+#undef COMMON_ASM_OP
-+#define COMMON_ASM_OP	"\t.comm\t"
-+
-+#undef  ASM_OUTPUT_ALIGNED_COMMON
-+#define ASM_OUTPUT_ALIGNED_COMMON(FILE, NAME, SIZE, ALIGN)		\
-+do 									\
-+{									\
-+  if ((SIZE) <= nios2_section_threshold)				\
-+    {									\
-+      named_section (0, ".sbss", 0);					\
-+      (*targetm.asm_out.globalize_label) (FILE, NAME);			\
-+      ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
-+      if (!flag_inhibit_size_directive)					\
-+	ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE);			\
-+      ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT));	\
-+      ASM_OUTPUT_LABEL(FILE, NAME);					\
-+      ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1);			\
-+    }									\
-+  else									\
-+    {									\
-+      fprintf ((FILE), "%s", COMMON_ASM_OP);				\
-+      assemble_name ((FILE), (NAME));					\
-+      fprintf ((FILE), ","HOST_WIDE_INT_PRINT_UNSIGNED",%u\n", (SIZE), (ALIGN) / BITS_PER_UNIT);	\
-+    }									\
-+}									\
-+while (0)
-+
-+
-+/* This says how to output assembler code to declare an
-+   uninitialized internal linkage data object.  Under SVR4,
-+   the linker seems to want the alignment of data objects
-+   to depend on their types.  We do exactly that here.  */
-+
-+#undef  ASM_OUTPUT_ALIGNED_LOCAL
-+#define ASM_OUTPUT_ALIGNED_LOCAL(FILE, NAME, SIZE, ALIGN)		\
-+do {									\
-+  if ((SIZE) <= nios2_section_threshold)				\
-+    named_section (0, ".sbss", 0);					\
-+  else									\
-+    named_section (0, ".bss", 0);					\
-+  ASM_OUTPUT_TYPE_DIRECTIVE (FILE, NAME, "object");			\
-+  if (!flag_inhibit_size_directive)					\
-+    ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, SIZE);			\
-+  ASM_OUTPUT_ALIGN ((FILE), exact_log2((ALIGN) / BITS_PER_UNIT));	\
-+  ASM_OUTPUT_LABEL(FILE, NAME);						\
-+  ASM_OUTPUT_SKIP((FILE), (SIZE) ? (SIZE) : 1);				\
-+} while (0)
-+
-+
-+
-+/***************************
-+ * Miscellaneous Parameters
-+ ***************************/
-+
-+#define MOVE_MAX 4
-+
-+#define Pmode SImode
-+#define FUNCTION_MODE QImode
-+
-+#define CASE_VECTOR_MODE Pmode
-+
-+#define TRULY_NOOP_TRUNCATION(OUTPREC, INPREC) 1
-+
-+#define LOAD_EXTEND_OP(MODE) (ZERO_EXTEND)
-+
-+#define WORD_REGISTER_OPERATIONS
---- gcc-3.4.3/gcc/config/nios2/nios2.md
-+++ gcc-3.4.3-nios2/gcc/config/nios2/nios2.md
-@@ -0,0 +1,2078 @@
-+;; Machine Description for Altera NIOS 2G NIOS2 version.
-+;;    Copyright (C) 2003 Altera 
-+;;    Contributed by Jonah Graham (jgraham@altera.com).
-+;; 
-+;; This file is part of GNU CC.
-+;; 
-+;; GNU CC 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.
-+;; 
-+;; GNU CC 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 GNU CC; see the file COPYING.  If not, write to
-+;; the Free Software Foundation, 59 Temple Place - Suite 330,
-+;; Boston, MA 02111-1307, USA.  */
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* constants
-+;*
-+;*****************************************************************************
-+(define_constants [
-+  (GP_REGNO 26)
-+  (SP_REGNO 27)
-+  (FP_REGNO 28)
-+  (RA_REGNO 31)
-+  (RAP_REGNO 38)
-+  (FIRST_RETVAL_REGNO 2)
-+  (LAST_RETVAL_REGNO 3)
-+  (FIRST_ARG_REGNO 4)
-+  (LAST_ARG_REGNO 7)
-+  (SC_REGNO 23)
-+  (PC_REGNO 37)
-+  (FAKE_FP_REGNO 39)
-+  (FAKE_AP_REGNO 40)
-+
-+
-+  (UNSPEC_BLOCKAGE 0)
-+  (UNSPEC_LDBIO 1)
-+  (UNSPEC_LDBUIO 2)
-+  (UNSPEC_LDHIO 3)
-+  (UNSPEC_LDHUIO 4)
-+  (UNSPEC_LDWIO 5)
-+  (UNSPEC_STBIO 6)
-+  (UNSPEC_STHIO 7)
-+  (UNSPEC_STWIO 8)
-+  (UNSPEC_SYNC 9)
-+  (UNSPEC_WRCTL 10)
-+  (UNSPEC_RDCTL 11)
-+  
-+])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* instruction scheduler
-+;*
-+;*****************************************************************************
-+
-+; No schedule info is currently available, using an assumption that no
-+; instruction can use the results of the previous instruction without
-+; incuring a stall.
-+
-+; length of an instruction (in bytes)
-+(define_attr "length" "" (const_int 4))
-+(define_attr "type" "unknown,complex,control,alu,cond_alu,st,ld,shift,mul,div,custom" (const_string "complex"))
-+
-+(define_asm_attributes
-+ [(set_attr "length" "4")
-+  (set_attr "type" "complex")])
-+
-+(define_automaton "nios2")
-+(automata_option "v")
-+;(automata_option "no-minimization")
-+(automata_option "ndfa")
-+
-+; The nios2 pipeline is fairly straightforward for the fast model.
-+; Every alu operation is pipelined so that an instruction can
-+; be issued every cycle. However, there are still potential
-+; stalls which this description tries to deal with.
-+
-+(define_cpu_unit "cpu" "nios2")
-+
-+(define_insn_reservation "complex" 1
-+  (eq_attr "type" "complex")
-+  "cpu")
-+
-+(define_insn_reservation "control" 1
-+  (eq_attr "type" "control")
-+  "cpu")
-+
-+(define_insn_reservation "alu" 1
-+  (eq_attr "type" "alu")
-+  "cpu")
-+
-+(define_insn_reservation "cond_alu" 1
-+  (eq_attr "type" "cond_alu")
-+  "cpu")
-+
-+(define_insn_reservation "st" 1
-+  (eq_attr "type" "st")
-+  "cpu")
-+  
-+(define_insn_reservation "custom" 1
-+  (eq_attr "type" "custom")
-+  "cpu")
-+
-+; shifts, muls and lds have three cycle latency
-+(define_insn_reservation "ld" 3
-+  (eq_attr "type" "ld")
-+  "cpu")
-+
-+(define_insn_reservation "shift" 3
-+  (eq_attr "type" "shift")
-+  "cpu")
-+
-+(define_insn_reservation "mul" 3
-+  (eq_attr "type" "mul")
-+  "cpu")
-+
-+(define_insn_reservation "div" 1
-+  (eq_attr "type" "div")
-+  "cpu")
-+
-+
-+;*****************************************************************************
-+;*
-+;* MOV Instructions
-+;*
-+;*****************************************************************************
-+
-+(define_expand "movqi"
-+  [(set (match_operand:QI 0 "nonimmediate_operand" "")
-+        (match_operand:QI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, QImode))
-+    DONE;
-+})
-+
-+(define_insn "movqi_internal"
-+  [(set (match_operand:QI 0 "nonimmediate_operand" "=m, r,r, r")
-+        (match_operand:QI 1 "general_operand"       "rM,m,rM,I"))]
-+  "(register_operand (operands[0], QImode)
-+    || register_operand (operands[1], QImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    stb%o0\\t%z1, %0
-+    ldbu%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1"
-+  [(set_attr "type" "st,ld,alu,alu")])
-+
-+(define_insn "ldbio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDBIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldbio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "ldbuio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDBUIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldbuio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "stbio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STBIO)]
-+  ""
-+  "stbio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+
-+(define_expand "movhi"
-+  [(set (match_operand:HI 0 "nonimmediate_operand" "")
-+        (match_operand:HI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, HImode))
-+    DONE;
-+})
-+
-+(define_insn "movhi_internal"
-+  [(set (match_operand:HI 0 "nonimmediate_operand" "=m, r,r, r,r")
-+        (match_operand:HI 1 "general_operand"       "rM,m,rM,I,J"))]
-+  "(register_operand (operands[0], HImode)
-+    || register_operand (operands[1], HImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    sth%o0\\t%z1, %0
-+    ldhu%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1
-+    movui\\t%0, %1"
-+  [(set_attr "type" "st,ld,alu,alu,alu")])
-+
-+(define_insn "ldhio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDHIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldhio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "ldhuio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDHUIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldhuio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "sthio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STHIO)]
-+  ""
-+  "sthio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+(define_expand "movsi"
-+  [(set (match_operand:SI 0 "nonimmediate_operand" "")
-+        (match_operand:SI 1 "general_operand" ""))]
-+  ""
-+{
-+  if (nios2_emit_move_sequence (operands, SImode))
-+    DONE;
-+})
-+
-+(define_insn "movsi_internal"
-+  [(set (match_operand:SI 0 "nonimmediate_operand" "=m, r,r, r,r,r,r")
-+        (match_operand:SI 1 "general_operand"       "rM,m,rM,I,J,S,i"))]
-+  "(register_operand (operands[0], SImode)
-+    || register_operand (operands[1], SImode)
-+    || (GET_CODE (operands[1]) == CONST_INT && INTVAL (operands[1]) == 0))"
-+  "@
-+    stw%o0\\t%z1, %0
-+    ldw%o1\\t%0, %1
-+    mov\\t%0, %z1
-+    movi\\t%0, %1
-+    movui\\t%0, %1
-+    addi\\t%0, gp, %%gprel(%1)
-+    movhi\\t%0, %H1\;addi\\t%0, %0, %L1"
-+  [(set_attr "type" "st,ld,alu,alu,alu,alu,alu")])
-+
-+(define_insn "ldwio"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(const_int 0)] UNSPEC_LDWIO))
-+   (use (match_operand:SI 1 "memory_operand" "m"))]
-+  ""
-+  "ldwio\\t%0, %1"
-+  [(set_attr "type" "ld")])
-+
-+(define_insn "stwio"
-+  [(set (match_operand:SI 0 "memory_operand" "=m")
-+	(match_operand:SI 1 "register_operand"   "r"))
-+   (unspec_volatile:SI [(const_int 0)] UNSPEC_STWIO)]
-+  ""
-+  "stwio\\t%z1, %0"
-+  [(set_attr "type" "st")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* zero extension
-+;*
-+;*****************************************************************************
-+
-+
-+(define_insn "zero_extendhisi2"
-+  [(set (match_operand:SI 0 "register_operand" "=r,r")
-+	(zero_extend:SI (match_operand:HI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xffff
-+    ldhu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+(define_insn "zero_extendqihi2"
-+  [(set (match_operand:HI 0 "register_operand" "=r,r")
-+	(zero_extend:HI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xff
-+    ldbu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+(define_insn "zero_extendqisi2"
-+  [(set (match_operand:SI 0 "register_operand" "=r,r")
-+	(zero_extend:SI (match_operand:QI 1 "nonimmediate_operand" "r,m")))]
-+  ""
-+  "@
-+    andi\\t%0, %1, 0xff
-+    ldbu%o1\\t%0, %1"
-+  [(set_attr "type"	"alu,ld")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* sign extension
-+;*
-+;*****************************************************************************
-+
-+(define_expand "extendhisi2"
-+  [(set (match_operand:SI 0 "register_operand" "")
-+	(sign_extend:SI (match_operand:HI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (16);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (operands[0], temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendhisi2_internal"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(sign_extend:SI (match_operand:HI 1 "memory_operand" "m")))]
-+  ""
-+  "ldh%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+(define_expand "extendqihi2"
-+  [(set (match_operand:HI 0 "register_operand" "")
-+	(sign_extend:HI (match_operand:QI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op0   = gen_lowpart (SImode, operands[0]);
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (24);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (op0, temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendqihi2_internal"
-+  [(set (match_operand:HI 0 "register_operand" "=r")
-+	(sign_extend:HI (match_operand:QI 1 "memory_operand" "m")))]
-+  ""
-+  "ldb%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+
-+(define_expand "extendqisi2"
-+  [(set (match_operand:SI 0 "register_operand" "")
-+	(sign_extend:SI (match_operand:QI 1 "nonimmediate_operand" "")))]
-+  ""
-+{
-+  if (optimize && GET_CODE (operands[1]) == MEM)
-+    operands[1] = force_not_mem (operands[1]);
-+
-+  if (GET_CODE (operands[1]) != MEM)
-+    {
-+      rtx op1   = gen_lowpart (SImode, operands[1]);
-+      rtx temp  = gen_reg_rtx (SImode);
-+      rtx shift = GEN_INT (24);
-+
-+      emit_insn (gen_ashlsi3 (temp, op1, shift));
-+      emit_insn (gen_ashrsi3 (operands[0], temp, shift));
-+      DONE;
-+    }
-+})
-+
-+(define_insn "extendqisi2_insn"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(sign_extend:SI (match_operand:QI 1 "memory_operand" "m")))]
-+  ""
-+  "ldb%o1\\t%0, %1"
-+  [(set_attr "type"	"ld")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Arithmetic Operations
-+;*
-+;*****************************************************************************
-+
-+(define_insn "addsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r,r")
-+        (plus:SI (match_operand:SI 1 "register_operand" "%r,r")
-+                 (match_operand:SI 2 "arith_operand"     "r,I")))]
-+  ""
-+  "add%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "subsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r")
-+        (minus:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+                  (match_operand:SI 2 "register_operand"  "r")))]
-+  ""
-+  "sub\\t%0, %z1, %2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "mulsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r,r")
-+        (mult:SI (match_operand:SI 1 "register_operand"    "r,r")
-+                 (match_operand:SI 2 "arith_operand"       "r,I")))]
-+  "TARGET_HAS_MUL"
-+  "mul%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "mul")])
-+
-+(define_expand "divsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (div:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  ""
-+{
-+  if (!TARGET_HAS_DIV)
-+    {
-+      if (!TARGET_FAST_SW_DIV)
-+	FAIL;
-+      else
-+        {
-+	  if (nios2_emit_expensive_div (operands, SImode))
-+	    DONE;
-+	}
-+    }
-+})
-+
-+(define_insn "divsi3_insn"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (div:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  "TARGET_HAS_DIV"
-+  "div\\t%0, %1, %2"
-+  [(set_attr "type" "div")])
-+
-+(define_insn "udivsi3"
-+  [(set (match_operand:SI 0 "register_operand"            "=r")
-+        (udiv:SI (match_operand:SI 1 "register_operand"     "r")
-+                (match_operand:SI 2 "register_operand"     "r")))]
-+  "TARGET_HAS_DIV"
-+  "divu\\t%0, %1, %2"
-+  [(set_attr "type" "div")])
-+
-+(define_insn "smulsi3_highpart"
-+  [(set (match_operand:SI 0 "register_operand"                            "=r")
-+	(truncate:SI
-+	 (lshiftrt:DI
-+	  (mult:DI (sign_extend:DI (match_operand:SI 1 "register_operand"  "r"))
-+		   (sign_extend:DI (match_operand:SI 2 "register_operand"  "r")))
-+	  (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "mulxss\\t%0, %1, %2"
-+  [(set_attr "type" "mul")])
-+
-+(define_insn "umulsi3_highpart"
-+  [(set (match_operand:SI 0 "register_operand"                            "=r")
-+	(truncate:SI
-+	 (lshiftrt:DI
-+	  (mult:DI (zero_extend:DI (match_operand:SI 1 "register_operand"  "r"))
-+		   (zero_extend:DI (match_operand:SI 2 "register_operand"  "r")))
-+	  (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "mulxuu\\t%0, %1, %2"
-+  [(set_attr "type" "mul")])
-+
-+
-+(define_expand "mulsidi3"
-+    [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0)
-+	  (mult:SI (match_operand:SI 1 "register_operand" "")
-+		   (match_operand:SI 2 "register_operand" "")))
-+     (set (subreg:SI (match_dup 0) 4)
-+	  (truncate:SI (lshiftrt:DI (mult:DI (sign_extend:DI (match_dup 1))
-+					     (sign_extend:DI (match_dup 2)))
-+				    (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "")
-+
-+(define_expand "umulsidi3"
-+    [(set (subreg:SI (match_operand:DI 0 "register_operand" "") 0)
-+	  (mult:SI (match_operand:SI 1 "register_operand" "")
-+		   (match_operand:SI 2 "register_operand" "")))
-+     (set (subreg:SI (match_dup 0) 4)
-+	  (truncate:SI (lshiftrt:DI (mult:DI (zero_extend:DI (match_dup 1))
-+					     (zero_extend:DI (match_dup 2)))
-+				    (const_int 32))))]
-+  "TARGET_HAS_MULX"
-+  "")
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Negate and ones complement
-+;*
-+;*****************************************************************************
-+
-+(define_insn "negsi2"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(neg:SI (match_operand:SI 1 "register_operand" "r")))]
-+  ""
-+{
-+  operands[2] = const0_rtx;
-+  return "sub\\t%0, %z2, %1";
-+}
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "one_cmplsi2"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(not:SI (match_operand:SI 1 "register_operand" "r")))]
-+  ""
-+{
-+  operands[2] = const0_rtx;
-+  return "nor\\t%0, %z2, %1";
-+}
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+; Logical Operantions
-+
-+(define_insn "andsi3"
-+  [(set (match_operand:SI 0 "register_operand"         "=r, r,r")
-+        (and:SI (match_operand:SI 1 "register_operand" "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"   "rM,J,K")))]
-+  ""
-+  "@
-+    and\\t%0, %1, %z2
-+    and%i2\\t%0, %1, %2
-+    andh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "iorsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r, r,r")
-+        (ior:SI (match_operand:SI 1 "register_operand"  "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"    "rM,J,K")))]
-+  ""
-+  "@
-+    or\\t%0, %1, %z2
-+    or%i2\\t%0, %1, %2
-+    orh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "*norsi3"
-+  [(set (match_operand:SI 0 "register_operand"                  "=r")
-+        (and:SI (not:SI (match_operand:SI 1 "register_operand"  "%r"))
-+                (not:SI (match_operand:SI 2 "reg_or_0_operand"   "rM"))))]
-+  ""
-+  "nor\\t%0, %1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "xorsi3"
-+  [(set (match_operand:SI 0 "register_operand"          "=r, r,r")
-+        (xor:SI (match_operand:SI 1 "register_operand"  "%r, r,r")
-+                (match_operand:SI 2 "logical_operand"    "rM,J,K")))]
-+  ""
-+  "@
-+    xor\\t%0, %1, %z2
-+    xor%i2\\t%0, %1, %2
-+    xorh%i2\\t%0, %1, %U2"
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Shifts
-+;*
-+;*****************************************************************************
-+
-+(define_insn "ashlsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r,r")
-+	(ashift:SI (match_operand:SI 1 "register_operand" "r,r")
-+		   (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "sll%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "ashrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(ashiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "sra%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "lshrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(lshiftrt:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "srl%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "rotlsi3"
-+  [(set (match_operand:SI 0 "register_operand"           "=r,r")
-+	(rotate:SI (match_operand:SI 1 "register_operand" "r,r")
-+		   (match_operand:SI 2 "shift_operand"    "r,L")))]
-+  ""
-+  "rol%i2\\t%0, %1, %z2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "rotrsi3"
-+  [(set (match_operand:SI 0 "register_operand"             "=r,r")
-+	(rotatert:SI (match_operand:SI 1 "register_operand" "r,r")
-+		     (match_operand:SI 2 "register_operand" "r,r")))]
-+  ""
-+  "ror\\t%0, %1, %2"
-+  [(set_attr "type" "shift")])
-+
-+(define_insn "*shift_mul_constants"
-+  [(set (match_operand:SI 0 "register_operand"                     "=r")
-+	(ashift:SI (mult:SI (match_operand:SI 1 "register_operand"  "r")
-+		            (match_operand:SI 2 "const_int_operand" "I"))
-+		   (match_operand:SI 3          "const_int_operand" "I")))]
-+  "TARGET_HAS_MUL && SMALL_INT (INTVAL (operands[2]) << INTVAL (operands[3]))"
-+{
-+  HOST_WIDE_INT mul = INTVAL (operands[2]) << INTVAL (operands[3]);
-+  rtx ops[3];
-+  
-+  ops[0] = operands[0];
-+  ops[1] = operands[1];
-+  ops[2] = GEN_INT (mul);
-+  
-+  output_asm_insn ("muli\t%0, %1, %2", ops);
-+  return "";
-+}
-+  [(set_attr "type" "mul")])
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Prologue, Epilogue and Return
-+;*
-+;*****************************************************************************
-+
-+(define_expand "prologue"
-+  [(const_int 1)]
-+  ""
-+{
-+  expand_prologue ();
-+  DONE;
-+})
-+
-+(define_expand "epilogue"
-+  [(return)]
-+  ""
-+{
-+  expand_epilogue (false);
-+  DONE;
-+})
-+
-+(define_expand "sibcall_epilogue"
-+  [(return)]
-+  ""
-+{
-+  expand_epilogue (true);
-+  DONE;
-+})
-+
-+(define_insn "return"
-+  [(return)]
-+  "reload_completed && nios2_can_use_return_insn ()"
-+  "ret\\t"
-+)
-+
-+(define_insn "return_from_epilogue"
-+  [(use (match_operand 0 "pmode_register_operand" ""))
-+   (return)]
-+  "reload_completed"
-+  "ret\\t"
-+)
-+
-+;; Block any insns from being moved before this point, since the
-+;; profiling call to mcount can use various registers that aren't
-+;; saved or used to pass arguments.
-+
-+(define_insn "blockage"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_BLOCKAGE)]
-+  ""
-+  ""
-+  [(set_attr "type" "unknown")
-+   (set_attr "length" "0")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Jumps and Calls
-+;*
-+;*****************************************************************************
-+
-+(define_insn "indirect_jump"
-+  [(set (pc) (match_operand:SI 0 "register_operand" "r"))]
-+  ""
-+  "jmp\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "jump"
-+  [(set (pc)
-+        (label_ref (match_operand 0 "" "")))]
-+  ""
-+  "br\\t%0"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_insn "indirect_call"
-+  [(call (mem:QI (match_operand:SI 0 "register_operand" "r"))
-+         (match_operand 1 "" ""))
-+   (clobber (reg:SI RA_REGNO))]
-+  ""
-+  "callr\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "indirect_call_value"
-+  [(set (match_operand 0 "" "")
-+        (call (mem:QI (match_operand:SI 1 "register_operand" "r"))
-+              (match_operand 2 "" "")))
-+   (clobber (reg:SI RA_REGNO))]
-+  ""
-+  "callr\\t%1"
-+)
-+
-+(define_expand "call"
-+  [(parallel [(call (match_operand 0 "" "")
-+                    (match_operand 1 "" ""))
-+              (clobber (reg:SI RA_REGNO))])]
-+  ""
-+  "")
-+
-+(define_expand "call_value"
-+  [(parallel [(set (match_operand 0 "" "")
-+                   (call (match_operand 1 "" "")
-+                         (match_operand 2 "" "")))
-+              (clobber (reg:SI RA_REGNO))])]
-+  ""
-+  "")
-+
-+(define_insn "*call"
-+  [(call (mem:QI (match_operand:SI 0 "immediate_operand" "i"))
-+         (match_operand 1 "" ""))
-+   (clobber (match_operand:SI 2 "register_operand" "=r"))]
-+  ""
-+  "call\\t%0"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "*call_value"
-+  [(set (match_operand 0 "" "")
-+        (call (mem:QI (match_operand:SI 1 "immediate_operand" "i"))
-+              (match_operand 2 "" "")))
-+   (clobber (match_operand:SI 3 "register_operand" "=r"))]
-+  ""
-+  "call\\t%1"
-+  [(set_attr "type" "control")])
-+
-+(define_expand "sibcall"
-+  [(parallel [(call (match_operand 0 "" "")
-+		    (match_operand 1 "" ""))
-+	      (return)
-+	      (use (match_operand 2 "" ""))])]
-+  ""
-+  {
-+    XEXP (operands[0], 0) = copy_to_mode_reg (SImode, XEXP (operands[0], 0));
-+
-+    if (operands[2] == NULL_RTX)
-+      operands[2] = const0_rtx;
-+  }
-+)
-+
-+(define_expand "sibcall_value"
-+  [(parallel [(set (match_operand 0 "" "")
-+		   (call (match_operand 1 "" "")
-+			 (match_operand 2 "" "")))
-+	      (return)
-+	      (use (match_operand 3 "" ""))])]
-+  ""
-+  {
-+    XEXP (operands[1], 0) = copy_to_mode_reg (SImode, XEXP (operands[1], 0));
-+
-+    if (operands[3] == NULL_RTX)
-+      operands[3] = const0_rtx;
-+  }
-+)
-+
-+(define_insn "sibcall_insn"
-+ [(call (mem:QI (match_operand:SI 0 "register_operand" "r"))
-+	(match_operand 1 "" ""))
-+  (return)
-+  (use (match_operand 2 "" ""))]
-+  ""
-+  "jmp\\t%0"
-+)
-+
-+(define_insn "sibcall_value_insn"
-+ [(set (match_operand 0 "register_operand" "")
-+       (call (mem:QI (match_operand:SI 1 "register_operand" "r"))
-+	     (match_operand 2 "" "")))
-+  (return)
-+  (use (match_operand 3 "" ""))]
-+  ""
-+  "jmp\\t%1"
-+)
-+
-+
-+
-+
-+(define_expand "tablejump"
-+  [(parallel [(set (pc) (match_operand 0 "register_operand" "r"))
-+              (use (label_ref (match_operand 1 "" "")))])]
-+  ""
-+  ""
-+)
-+
-+(define_insn "*tablejump"
-+  [(set (pc)
-+	(match_operand:SI 0 "register_operand" "r"))
-+   (use (label_ref (match_operand 1 "" "")))]
-+  ""
-+  "jmp\\t%0"
-+  [(set_attr "type" "control")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Comparisons
-+;*
-+;*****************************************************************************
-+;; Flow here is rather complex (based on MIPS):
-+;;
-+;;  1)	The cmp{si,di,sf,df} routine is called.  It deposits the
-+;;	arguments into the branch_cmp array, and the type into
-+;;	branch_type.  No RTL is generated.
-+;;
-+;;  2)	The appropriate branch define_expand is called, which then
-+;;	creates the appropriate RTL for the comparison and branch.
-+;;	Different CC modes are used, based on what type of branch is
-+;;	done, so that we can constrain things appropriately.  There
-+;;	are assumptions in the rest of GCC that break if we fold the
-+;;	operands into the branchs for integer operations, and use cc0
-+;;	for floating point, so we use the fp status register instead.
-+;;	If needed, an appropriate temporary is created to hold the
-+;;	of the integer compare.
-+
-+(define_expand "cmpsi"
-+  [(set (cc0)
-+	(compare:CC (match_operand:SI 0 "register_operand" "")
-+		    (match_operand:SI 1 "arith_operand" "")))]
-+  ""
-+{
-+  branch_cmp[0] = operands[0];
-+  branch_cmp[1] = operands[1];
-+  branch_type = CMP_SI;
-+  DONE;
-+})
-+
-+(define_expand "tstsi"
-+  [(set (cc0)
-+	(match_operand:SI 0 "register_operand" ""))]
-+  ""
-+{
-+  branch_cmp[0] = operands[0];
-+  branch_cmp[1] = const0_rtx;
-+  branch_type = CMP_SI;
-+  DONE;
-+})
-+
-+
-+;*****************************************************************************
-+;*
-+;* setting a register from a comparison
-+;*
-+;*****************************************************************************
-+
-+(define_expand "seq"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(eq:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (EQ, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*seq"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(eq:SI (match_operand:SI 1 "reg_or_0_operand" "%rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpeq%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sne"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ne:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (NE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sne"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ne:SI (match_operand:SI 1 "reg_or_0_operand" "%rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpne%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgt"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(gt:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GT, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgt"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(gt:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmplt\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sge"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ge:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sge"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ge:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmpge%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_expand "sle"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(le:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LE, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sle"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(le:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpge\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "slt"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(lt:SI (match_dup 1)
-+	       (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LT, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*slt"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(lt:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	       (match_operand:SI 2 "arith_operand"     "rI")))]
-+  ""
-+  "cmplt%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgtu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(gtu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GTU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgtu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(gtu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpltu\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sgeu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(geu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (GEU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sgeu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(geu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "uns_arith_operand"     "rJ")))]
-+  ""
-+  "cmpgeu%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+(define_expand "sleu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(leu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LEU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sleu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(leu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "reg_or_0_operand"  "rM")))]
-+  ""
-+  "cmpgeu\\t%0, %z2, %z1"
-+  [(set_attr "type" "alu")])
-+
-+
-+(define_expand "sltu"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(ltu:SI (match_dup 1)
-+	        (match_dup 2)))]
-+  ""
-+{
-+  if (branch_type != CMP_SI)
-+    FAIL;
-+
-+  /* set up operands from compare.  */
-+  operands[1] = branch_cmp[0];
-+  operands[2] = branch_cmp[1];
-+
-+  gen_int_relational (LTU, operands[0], operands[1], operands[2], NULL_RTX);
-+  DONE;
-+})
-+
-+
-+(define_insn "*sltu"
-+  [(set (match_operand:SI 0 "register_operand"        "=r")
-+	(ltu:SI (match_operand:SI 1 "reg_or_0_operand"  "rM")
-+	        (match_operand:SI 2 "uns_arith_operand"     "rJ")))]
-+  ""
-+  "cmpltu%i2\\t%0, %z1, %z2"
-+  [(set_attr "type" "alu")])
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* branches
-+;*
-+;*****************************************************************************
-+
-+(define_insn "*cbranch"
-+  [(set (pc)
-+	(if_then_else
-+         (match_operator:SI 0 "comparison_operator"
-+			    [(match_operand:SI 2 "reg_or_0_operand" "rM")
-+			     (match_operand:SI 3 "reg_or_0_operand" "rM")])
-+        (label_ref (match_operand 1 "" ""))
-+        (pc)))]
-+  ""
-+  "b%0\\t%z2, %z3, %l1"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_expand "beq"
-+  [(set (pc)
-+	(if_then_else (eq:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (EQ, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bne"
-+  [(set (pc)
-+	(if_then_else (ne:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (NE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bgt"
-+  [(set (pc)
-+	(if_then_else (gt:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bge"
-+  [(set (pc)
-+	(if_then_else (ge:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "ble"
-+  [(set (pc)
-+	(if_then_else (le:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LE, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "blt"
-+  [(set (pc)
-+	(if_then_else (lt:CC (cc0)
-+			     (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LT, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+(define_expand "bgtu"
-+  [(set (pc)
-+	(if_then_else (gtu:CC (cc0)
-+		 	      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bgeu"
-+  [(set (pc)
-+	(if_then_else (geu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (GEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bleu"
-+  [(set (pc)
-+	(if_then_else (leu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LEU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+(define_expand "bltu"
-+  [(set (pc)
-+	(if_then_else (ltu:CC (cc0)
-+			      (const_int 0))
-+		      (label_ref (match_operand 0 "" ""))
-+		      (pc)))]
-+  ""
-+{
-+  gen_int_relational (LTU, NULL_RTX, branch_cmp[0], branch_cmp[1], operands[0]);
-+  DONE;
-+})
-+
-+
-+;*****************************************************************************
-+;*
-+;* String and Block Operations
-+;*
-+;*****************************************************************************
-+
-+; ??? This is all really a hack to get Dhrystone to work as fast as possible
-+;     things to be fixed:
-+;        * let the compiler core handle all of this, for that to work the extra
-+;          aliasing needs to be addressed.
-+;        * we use three temporary registers for loading and storing to ensure no
-+;          ld use stalls, this is excessive, because after the first ld/st only
-+;          two are needed. Only two would be needed all the way through if 
-+;          we could schedule with other code. Consider:
-+;           1  ld $1, 0($src)
-+;           2  ld $2, 4($src)
-+;           3  ld $3, 8($src)
-+;           4  st $1, 0($dest)
-+;           5  ld $1, 12($src)
-+;           6  st $2, 4($src)
-+;           7  etc.
-+;          The first store has to wait until 4. If it does not there will be one
-+;          cycle of stalling. However, if any other instruction could be placed
-+;          between 1 and 4, $3 would not be needed.
-+;        * In small we probably don't want to ever do this ourself because there
-+;          is no ld use stall.
-+
-+(define_expand "movstrsi"
-+  [(parallel [(set (match_operand:BLK 0 "general_operand"  "")
-+		   (match_operand:BLK 1 "general_operand"  ""))
-+	      (use (match_operand:SI 2 "const_int_operand" ""))
-+	      (use (match_operand:SI 3 "const_int_operand" ""))
-+	      (clobber (match_scratch:SI 4                "=&r"))
-+	      (clobber (match_scratch:SI 5                "=&r"))
-+	      (clobber (match_scratch:SI 6                "=&r"))])]
-+  "TARGET_INLINE_MEMCPY"
-+{
-+  rtx ld_addr_reg, st_addr_reg;
-+
-+  /* If the predicate for op2 fails in expr.c:emit_block_move_via_movstr 
-+     it trys to copy to a register, but does not re-try the predicate.
-+     ??? Intead of fixing expr.c, I fix it here. */
-+  if (!const_int_operand (operands[2], SImode))
-+    FAIL;
-+
-+  /* ??? there are some magic numbers which need to be sorted out here.
-+         the basis for them is not increasing code size hugely or going
-+         out of range of offset addressing */
-+  if (INTVAL (operands[3]) < 4)
-+    FAIL;
-+  if (!optimize
-+      || (optimize_size && INTVAL (operands[2]) > 12)
-+      || (optimize < 3 && INTVAL (operands[2]) > 100)
-+      || INTVAL (operands[2]) > 200)
-+    FAIL;
-+
-+  st_addr_reg
-+    = replace_equiv_address (operands[0],
-+			     copy_to_mode_reg (Pmode, XEXP (operands[0], 0)));
-+  ld_addr_reg
-+    = replace_equiv_address (operands[1],
-+			     copy_to_mode_reg (Pmode, XEXP (operands[1], 0)));
-+  emit_insn (gen_movstrsi_internal (st_addr_reg, ld_addr_reg,
-+				    operands[2], operands[3]));
-+
-+  DONE;
-+})
-+
-+
-+(define_insn "movstrsi_internal"
-+  [(set (match_operand:BLK 0 "memory_operand"   "=o")
-+	(match_operand:BLK 1 "memory_operand"    "o"))
-+   (use (match_operand:SI 2 "const_int_operand"  "i"))
-+   (use (match_operand:SI 3 "const_int_operand"  "i"))
-+   (clobber (match_scratch:SI 4                "=&r"))
-+   (clobber (match_scratch:SI 5                "=&r"))
-+   (clobber (match_scratch:SI 6                "=&r"))]
-+  "TARGET_INLINE_MEMCPY"
-+{
-+  int ld_offset = INTVAL (operands[2]);
-+  int ld_len = INTVAL (operands[2]);
-+  int ld_reg = 0;
-+  rtx ld_addr_reg = XEXP (operands[1], 0);
-+  int st_offset = INTVAL (operands[2]);
-+  int st_len = INTVAL (operands[2]);
-+  int st_reg = 0;
-+  rtx st_addr_reg = XEXP (operands[0], 0);
-+  int delay_count = 0;
-+  
-+  /* ops[0] is the address used by the insn
-+     ops[1] is the register being loaded or stored */
-+  rtx ops[2];
-+  
-+  if (INTVAL (operands[3]) < 4)
-+    abort ();
-+  
-+  while (ld_offset >= 4)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, SImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldw\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 4;
-+      delay_count++;
-+    }
-+  
-+  if (ld_offset >= 2)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, HImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldh\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 2;
-+      delay_count++;
-+    }
-+  
-+  if (ld_offset >= 1)
-+    {
-+      /* if the load use delay has been met, I can start
-+         storing */
-+      if (delay_count >= 3)
-+        {
-+	  ops[0] = gen_rtx (MEM, SImode, 
-+			    plus_constant (st_addr_reg, st_len - st_offset));
-+	  ops[1] = operands[st_reg + 4];			 
-+	  output_asm_insn ("stw\t%1, %0", ops);
-+	  
-+	  st_reg = (st_reg + 1) % 3;
-+	  st_offset -= 4;
-+        }
-+    
-+      ops[0] = gen_rtx (MEM, QImode, 
-+			plus_constant (ld_addr_reg, ld_len - ld_offset));
-+      ops[1] = operands[ld_reg + 4];			 
-+      output_asm_insn ("ldb\t%1, %0", ops);
-+      
-+      ld_reg = (ld_reg + 1) % 3;
-+      ld_offset -= 1;
-+      delay_count++;
-+    }
-+
-+    while (st_offset >= 4)
-+      {
-+	ops[0] = gen_rtx (MEM, SImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("stw\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 4;
-+      }
-+  
-+    while (st_offset >= 2)
-+      {
-+	ops[0] = gen_rtx (MEM, HImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("sth\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 2;
-+      }
-+  
-+    while (st_offset >= 1)
-+      {
-+	ops[0] = gen_rtx (MEM, QImode, 
-+			  plus_constant (st_addr_reg, st_len - st_offset));
-+	ops[1] = operands[st_reg + 4];			 
-+	output_asm_insn ("stb\t%1, %0", ops);
-+
-+	st_reg = (st_reg + 1) % 3;
-+	st_offset -= 1;
-+      }
-+  
-+  return "";
-+}
-+; ??? lengths are not being used yet, but I will probably forget
-+; to update this once I am using lengths, so set it to something
-+; definetely big enough to cover it. 400 allows for 200 bytes
-+; of motion.
-+  [(set_attr "length" "400")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Custom instructions
-+;*
-+;*****************************************************************************
-+
-+(define_constants [
-+  (CUSTOM_N 100)
-+  (CUSTOM_NI 101)
-+  (CUSTOM_NF 102)
-+  (CUSTOM_NP 103)
-+  (CUSTOM_NII 104)
-+  (CUSTOM_NIF 105)
-+  (CUSTOM_NIP 106)
-+  (CUSTOM_NFI 107)
-+  (CUSTOM_NFF 108)
-+  (CUSTOM_NFP 109)
-+  (CUSTOM_NPI 110)
-+  (CUSTOM_NPF 111)
-+  (CUSTOM_NPP 112)
-+  (CUSTOM_IN 113)
-+  (CUSTOM_INI 114)
-+  (CUSTOM_INF 115)
-+  (CUSTOM_INP 116)
-+  (CUSTOM_INII 117)
-+  (CUSTOM_INIF 118)
-+  (CUSTOM_INIP 119)
-+  (CUSTOM_INFI 120)
-+  (CUSTOM_INFF 121)
-+  (CUSTOM_INFP 122)
-+  (CUSTOM_INPI 123)
-+  (CUSTOM_INPF 124)
-+  (CUSTOM_INPP 125)
-+  (CUSTOM_FN 126)
-+  (CUSTOM_FNI 127)
-+  (CUSTOM_FNF 128)
-+  (CUSTOM_FNP 129)
-+  (CUSTOM_FNII 130)
-+  (CUSTOM_FNIF 131)
-+  (CUSTOM_FNIP 132)
-+  (CUSTOM_FNFI 133)
-+  (CUSTOM_FNFF 134)
-+  (CUSTOM_FNFP 135)
-+  (CUSTOM_FNPI 136)
-+  (CUSTOM_FNPF 137)
-+  (CUSTOM_FNPP 138)
-+  (CUSTOM_PN 139)
-+  (CUSTOM_PNI 140)
-+  (CUSTOM_PNF 141)
-+  (CUSTOM_PNP 142)
-+  (CUSTOM_PNII 143)
-+  (CUSTOM_PNIF 144)
-+  (CUSTOM_PNIP 145)
-+  (CUSTOM_PNFI 146)
-+  (CUSTOM_PNFF 147)
-+  (CUSTOM_PNFP 148)
-+  (CUSTOM_PNPI 149)
-+  (CUSTOM_PNPF 150)
-+  (CUSTOM_PNPP 151)
-+])
-+
-+
-+(define_insn "custom_n"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")] CUSTOM_N)]
-+  ""
-+  "custom\\t%0, zero, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_ni"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")] CUSTOM_NI)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nf"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")] CUSTOM_NF)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_np"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")] CUSTOM_NP)]
-+  ""
-+  "custom\\t%0, zero, %1, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nii"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NII)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nif"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NIF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nip"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NIP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nfi"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NFI)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nff"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NFF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_nfp"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SF 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NFP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npi"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NPI)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npf"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SF 2 "register_operand"   "r")] CUSTOM_NPF)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_npp"
-+  [(unspec_volatile [(match_operand:SI 0 "custom_insn_opcode" "N")
-+                     (match_operand:SI 1 "register_operand"   "r")
-+                     (match_operand:SI 2 "register_operand"   "r")] CUSTOM_NPP)]
-+  ""
-+  "custom\\t%0, zero, %1, %2"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+(define_insn "custom_in"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_IN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_ini"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_INI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_INF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_INP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inii"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inif"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inip"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_infi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inff"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_infp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_INPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_inpp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_INPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+
-+
-+(define_insn "custom_fn"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_FN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fni"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_FNI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnf"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_FNF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_FNP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnii"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnif"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnip"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnfi"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnff"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnfp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpi"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpf"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_FNPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_fnpp"
-+  [(set (match_operand:SF 0 "register_operand"   "=r")
-+        (unspec_volatile:SF [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_FNPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+(define_insn "custom_pn"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")] CUSTOM_PN))]
-+  ""
-+  "custom\\t%1, %0, zero, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pni"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_PNI))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")] CUSTOM_PNF))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")] CUSTOM_PNP))]
-+  ""
-+  "custom\\t%1, %0, %2, zero"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnii"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNII))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnif"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNIF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnip"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNIP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnfi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNFI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnff"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNFF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnfp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SF 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNFP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpi"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNPI))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpf"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SF 3 "register_operand"   "r")] CUSTOM_PNPF))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+(define_insn "custom_pnpp"
-+  [(set (match_operand:SI 0 "register_operand"   "=r")
-+        (unspec_volatile:SI [(match_operand:SI 1 "custom_insn_opcode" "N")
-+                          (match_operand:SI 2 "register_operand"   "r")
-+                          (match_operand:SI 3 "register_operand"   "r")] CUSTOM_PNPP))]
-+  ""
-+  "custom\\t%1, %0, %2, %3"
-+  [(set_attr "type" "custom")])
-+
-+
-+
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Misc
-+;*
-+;*****************************************************************************
-+
-+(define_insn "nop"
-+  [(const_int 0)]
-+  ""
-+  "nop\\t"
-+  [(set_attr "type" "alu")])
-+
-+(define_insn "sync"
-+  [(unspec_volatile [(const_int 0)] UNSPEC_SYNC)]
-+  ""
-+  "sync\\t"
-+  [(set_attr "type" "control")])
-+
-+
-+(define_insn "rdctl"
-+  [(set (match_operand:SI 0 "register_operand" "=r")
-+	(unspec_volatile:SI [(match_operand:SI 1 "rdwrctl_operand" "O")] UNSPEC_RDCTL))]
-+  ""
-+  "rdctl\\t%0, ctl%1"
-+  [(set_attr "type" "control")])
-+
-+(define_insn "wrctl"
-+  [(unspec_volatile:SI [(match_operand:SI 0 "rdwrctl_operand"  "O")
-+                        (match_operand:SI 1 "register_operand" "r")] UNSPEC_WRCTL)]
-+  ""
-+  "wrctl\\tctl%0, %1"
-+  [(set_attr "type" "control")])
-+
-+
-+
-+;*****************************************************************************
-+;*
-+;* Peepholes
-+;*
-+;*****************************************************************************
-+
-+
---- gcc-3.4.3/gcc/config/nios2/t-nios2
-+++ gcc-3.4.3-nios2/gcc/config/nios2/t-nios2
-@@ -0,0 +1,123 @@
-+##
-+## Compiler flags to use when compiling libgcc2.c.
-+##
-+## LIB2FUNCS_EXTRA
-+## A list of source file names to be compiled or assembled and inserted into libgcc.a.
-+
-+LIB2FUNCS_EXTRA=$(srcdir)/config/nios2/lib2-divmod.c \
-+  $(srcdir)/config/nios2/lib2-divmod-hi.c \
-+  $(srcdir)/config/nios2/lib2-divtable.c \
-+  $(srcdir)/config/nios2/lib2-mul.c
-+
-+##
-+## Floating Point Emulation
-+## To have GCC include software floating point libraries in libgcc.a define FPBIT
-+## and DPBIT along with a few rules as follows:
-+##
-+## # We want fine grained libraries, so use the new code
-+## # to build the floating point emulation libraries.
-+FPBIT=$(srcdir)/config/nios2/nios2-fp-bit.c
-+DPBIT=$(srcdir)/config/nios2/nios2-dp-bit.c
-+
-+TARGET_LIBGCC2_CFLAGS = -O2
-+
-+# FLOAT_ONLY - no doubles
-+# SMALL_MACHINE - QI/HI is faster than SI
-+#     Actually SMALL_MACHINE uses chars and shorts instead of ints
-+#     since ints (16-bit ones as they are today) are at least as fast
-+#     as chars and shorts, don't define SMALL_MACHINE
-+# CMPtype - type returned by FP compare, i.e. INT (hard coded in fp-bit - see code )
-+
-+$(FPBIT): $(srcdir)/config/fp-bit.c Makefile
-+	echo '#define FLOAT'          >  ${FPBIT}
-+	cat $(srcdir)/config/fp-bit.c >> ${FPBIT}
-+
-+$(DPBIT): $(srcdir)/config/fp-bit.c Makefile
-+	echo ''          >  ${DPBIT}
-+	cat $(srcdir)/config/fp-bit.c >> ${DPBIT}
-+
-+EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o 
-+
-+# Assemble startup files. 
-+$(T)crti.o: $(srcdir)/config/nios2/crti.asm $(GCC_PASSES) 
-+	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+	-c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/nios2/crti.asm 
-+
-+$(T)crtn.o: $(srcdir)/config/nios2/crtn.asm $(GCC_PASSES) 
-+	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
-+	-c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/nios2/crtn.asm 
-+
-+
-+## You may need to provide additional #defines at the beginning of
-+## fp-bit.c and dp-bit.c to control target endianness and other options
-+##
-+## CRTSTUFF_T_CFLAGS
-+## Special flags used when compiling crtstuff.c.  See Initialization.
-+##
-+## CRTSTUFF_T_CFLAGS_S
-+## Special flags used when compiling crtstuff.c for shared linking.  Used
-+## if you use crtbeginS.o and crtendS.o in EXTRA-PARTS. See Initialization.
-+##
-+## MULTILIB_OPTIONS
-+## For some targets, invoking GCC in different ways produces objects that
-+## can not be linked together.  For example, for some targets GCC produces
-+## both big and little endian code.  For these targets, you must arrange
-+## for multiple versions of libgcc.a to be compiled, one for each set of
-+## incompatible options.  When GCC invokes the linker, it arranges to link
-+## in the right version of libgcc.a, based on the command line options
-+## used.
-+## The MULTILIB_OPTIONS macro lists the set of options for which special
-+## versions of libgcc.a must be built.  Write options that are mutually
-+## incompatible side by side, separated by a slash.  Write options that may
-+## be used together separated by a space.  The build procedure will build
-+## all combinations of compatible options.
-+##
-+## For example, if you set MULTILIB_OPTIONS to m68000/m68020 msoft-float,
-+## Makefile will build special versions of libgcc.a using the following
-+## sets of options: -m68000, -m68020, -msoft-float, -m68000 -msoft-float,
-+## and -m68020 -msoft-float.
-+
-+MULTILIB_OPTIONS = mno-hw-mul mhw-mulx
-+
-+## MULTILIB_DIRNAMES
-+## If MULTILIB_OPTIONS is used, this variable specifies the directory names
-+## that should be used to hold the various libraries.  Write one element in
-+## MULTILIB_DIRNAMES for each element in MULTILIB_OPTIONS. If
-+## MULTILIB_DIRNAMES is not used, the default value will be
-+## MULTILIB_OPTIONS, with all slashes treated as spaces.
-+## For example, if MULTILIB_OPTIONS is set to m68000/m68020 msoft-float,
-+## then the default value of MULTILIB_DIRNAMES is m68000 m68020
-+## msoft-float.  You may specify a different value if you desire a
-+## different set of directory names.
-+
-+# MULTILIB_DIRNAMES =
-+
-+## MULTILIB_MATCHES
-+## Sometimes the same option may be written in two different ways.  If an
-+## option is listed in MULTILIB_OPTIONS, GCC needs to know about any
-+## synonyms.  In that case, set MULTILIB_MATCHES to a list of items of the
-+## form option=option to describe all relevant synonyms.  For example,
-+## m68000=mc68000 m68020=mc68020.
-+##
-+## MULTILIB_EXCEPTIONS
-+## Sometimes when there are multiple sets of MULTILIB_OPTIONS being
-+## specified, there are combinations that should not be built.  In that
-+## case, set MULTILIB_EXCEPTIONS to be all of the switch exceptions in
-+## shell case syntax that should not be built.
-+## For example, in the PowerPC embedded ABI support, it is not desirable to
-+## build libraries compiled with the -mcall-aix option and either of the
-+## -fleading-underscore or -mlittle options at the same time.  Therefore
-+## MULTILIB_EXCEPTIONS is set to
-+##
-+## *mcall-aix/*fleading-underscore* *mlittle/*mcall-aix*
-+##
-+
-+MULTILIB_EXCEPTIONS = *mno-hw-mul/*mhw-mulx*
-+
-+##
-+## MULTILIB_EXTRA_OPTS Sometimes it is desirable that when building
-+## multiple versions of libgcc.a certain options should always be passed on
-+## to the compiler.  In that case, set MULTILIB_EXTRA_OPTS to be the list
-+## of options to be used for all builds.
-+##
-+
---- gcc-3.4.3/gcc/config.gcc
-+++ gcc-3.4.3-nios2/gcc/config.gcc
-@@ -1321,6 +1321,10 @@ m32rle-*-linux*)
- 		thread_file='posix'
- 	fi
- 	;;
-+# JBG
-+nios2-*-* | nios2-*-*)
-+	tm_file="elfos.h ${tm_file}"
-+	;;
- # m68hc11 and m68hc12 share the same machine description.
- m68hc11-*-*|m6811-*-*)
- 	tm_file="dbxelf.h elfos.h m68hc11/m68hc11.h"
---- gcc-3.4.3/gcc/cse.c
-+++ gcc-3.4.3-nios2/gcc/cse.c
-@@ -3134,6 +3134,10 @@ find_comparison_args (enum rtx_code code
- #ifdef FLOAT_STORE_FLAG_VALUE
- 	  REAL_VALUE_TYPE fsfv;
- #endif
-+#ifdef __nios2__
-+	  if (p->is_const)
-+	    break;
-+#endif
- 
- 	  /* If the entry isn't valid, skip it.  */
- 	  if (! exp_equiv_p (p->exp, p->exp, 1, 0))
---- gcc-3.4.3/gcc/doc/extend.texi
-+++ gcc-3.4.3-nios2/gcc/doc/extend.texi
-@@ -5636,12 +5636,118 @@ to those machines.  Generally these gene
- instructions, but allow the compiler to schedule those calls.
- 
- @menu
-+* Altera Nios II Built-in Functions::
- * Alpha Built-in Functions::
- * ARM Built-in Functions::
- * X86 Built-in Functions::
- * PowerPC AltiVec Built-in Functions::
- @end menu
- 
-+@node Altera Nios II Built-in Functions
-+@subsection Altera Nios II Built-in Functions
-+
-+These built-in functions are available for the Altera Nios II
-+family of processors.
-+
-+The following built-in functions are always available.  They
-+all generate the machine instruction that is part of the name.
-+
-+@example
-+int __builtin_ldbio (volatile const void *)
-+int __builtin_ldbuio (volatile const void *)
-+int __builtin_ldhio (volatile const void *)
-+int __builtin_ldhuio (volatile const void *)
-+int __builtin_ldwio (volatile const void *)
-+void __builtin_stbio (volatile void *, int)
-+void __builtin_sthio (volatile void *, int)
-+void __builtin_stwio (volatile void *, int)
-+void __builtin_sync (void)
-+int __builtin_rdctl (int) 
-+void __builtin_wrctl (int, int)
-+@end example
-+
-+The following built-in functions are always available.  They
-+all generate a Nios II Custom Instruction. The name of the 
-+function represents the types that the function takes and 
-+returns. The letter before the @code{n} is the return type
-+or void if absent. The @code{n} represnts the first parameter
-+to all the custom instructions, the custom instruction number.
-+The two letters after the @code{n} represent the up to two 
-+parameters to the function.
-+
-+The letters reprsent the following data types:
-+@table @code
-+@item <no letter>
-+@code{void} for return type and no parameter for parameter types.
-+
-+@item i
-+@code{int} for return type and parameter type
-+
-+@item f
-+@code{float} for return type and parameter type
-+
-+@item p
-+@code{void *} for return type and parameter type
-+
-+@end table
-+
-+And the function names are:
-+@example
-+void __builtin_custom_n (void)
-+void __builtin_custom_ni (int)
-+void __builtin_custom_nf (float)
-+void __builtin_custom_np (void *)
-+void __builtin_custom_nii (int, int)
-+void __builtin_custom_nif (int, float)
-+void __builtin_custom_nip (int, void *)
-+void __builtin_custom_nfi (float, int)
-+void __builtin_custom_nff (float, float)
-+void __builtin_custom_nfp (float, void *)
-+void __builtin_custom_npi (void *, int)
-+void __builtin_custom_npf (void *, float)
-+void __builtin_custom_npp (void *, void *)
-+int __builtin_custom_in (void)
-+int __builtin_custom_ini (int)
-+int __builtin_custom_inf (float)
-+int __builtin_custom_inp (void *)
-+int __builtin_custom_inii (int, int)
-+int __builtin_custom_inif (int, float)
-+int __builtin_custom_inip (int, void *)
-+int __builtin_custom_infi (float, int)
-+int __builtin_custom_inff (float, float)
-+int __builtin_custom_infp (float, void *)
-+int __builtin_custom_inpi (void *, int)
-+int __builtin_custom_inpf (void *, float)
-+int __builtin_custom_inpp (void *, void *)
-+float __builtin_custom_fn (void)
-+float __builtin_custom_fni (int)
-+float __builtin_custom_fnf (float)
-+float __builtin_custom_fnp (void *)
-+float __builtin_custom_fnii (int, int)
-+float __builtin_custom_fnif (int, float)
-+float __builtin_custom_fnip (int, void *)
-+float __builtin_custom_fnfi (float, int)
-+float __builtin_custom_fnff (float, float)
-+float __builtin_custom_fnfp (float, void *)
-+float __builtin_custom_fnpi (void *, int)
-+float __builtin_custom_fnpf (void *, float)
-+float __builtin_custom_fnpp (void *, void *)
-+void * __builtin_custom_pn (void)
-+void * __builtin_custom_pni (int)
-+void * __builtin_custom_pnf (float)
-+void * __builtin_custom_pnp (void *)
-+void * __builtin_custom_pnii (int, int)
-+void * __builtin_custom_pnif (int, float)
-+void * __builtin_custom_pnip (int, void *)
-+void * __builtin_custom_pnfi (float, int)
-+void * __builtin_custom_pnff (float, float)
-+void * __builtin_custom_pnfp (float, void *)
-+void * __builtin_custom_pnpi (void *, int)
-+void * __builtin_custom_pnpf (void *, float)
-+void * __builtin_custom_pnpp (void *, void *)
-+@end example
-+
-+
- @node Alpha Built-in Functions
- @subsection Alpha Built-in Functions
- 
---- gcc-3.4.3/gcc/doc/invoke.texi
-+++ gcc-3.4.3-nios2/gcc/doc/invoke.texi
-@@ -337,6 +337,14 @@ in the following sections.
- @item Machine Dependent Options
- @xref{Submodel Options,,Hardware Models and Configurations}.
- 
-+@emph{Altera Nios II Options}
-+@gccoptlist{-msmallc -mno-bypass-cache -mbypass-cache @gol
-+-mno-cache-volatile -mcache-volatile -mno-inline-memcpy @gol 
-+-minline-memcpy -mno-fast-sw-div -mfast-sw-div @gol
-+-mhw-mul -mno-hw-mul -mhw-mulx -mno-hw-mulx @gol
-+-mno-hw-div -mhw-div @gol
-+-msys-crt0= -msys-lib= -msys=nosys }
-+
- @emph{M680x0 Options}
- @gccoptlist{-m68000  -m68020  -m68020-40  -m68020-60  -m68030  -m68040 @gol
- -m68060  -mcpu32  -m5200  -m68881  -mbitfield  -mc68000  -mc68020   @gol
-@@ -5836,6 +5844,7 @@ machine description.  The default for th
- that macro, which enables you to change the defaults.
- 
- @menu
-+* Altera Nios II Options::
- * M680x0 Options::
- * M68hc1x Options::
- * VAX Options::
-@@ -5871,6 +5880,103 @@ that macro, which enables you to change 
- * FRV Options::
- @end menu
- 
-+
-+@node Altera Nios II Options
-+@subsection Altera Nios II Options
-+@cindex Altera Nios II options
-+
-+These are the @samp{-m} options defined for the Altera Nios II 
-+processor.
-+
-+@table @gcctabopt
-+
-+@item -msmallc
-+@opindex msmallc
-+
-+Link with a limited version of the C library, -lsmallc. For more 
-+information see the C Library Documentation.
-+
-+
-+@item -mbypass-cache
-+@itemx -mno-bypass-cache
-+@opindex mno-bypass-cache
-+@opindex mbypass-cache
-+
-+Force all load and store instructions to always bypass cache by 
-+using io variants of the instructions. The default is to not
-+bypass the cache.
-+
-+@item -mno-cache-volatile 
-+@itemx -mcache-volatile       
-+@opindex mcache-volatile 
-+@opindex mno-cache-volatile
-+
-+Volatile memory access bypass the cache using the io variants of 
-+the ld and st instructions. The default is to cache volatile 
-+accesses. 
-+
-+-mno-cache-volatile is deprecated and will be deleted in a 
-+future GCC release.
-+
-+
-+@item -mno-inline-memcpy
-+@itemx -minline-memcpy
-+@opindex mno-inline-memcpy 
-+@opindex minline-memcpy
-+
-+Do not inline memcpy. The default is to inline when -O is on.
-+
-+
-+@item -mno-fast-sw-div
-+@itemx -mfast-sw-div
-+@opindex mno-fast-sw-div
-+@opindex mfast-sw-div
-+
-+Do no use table based fast divide for small numbers. The default 
-+is to use the fast divide at -O3 and above.
-+
-+
-+@item -mno-hw-mul
-+@itemx -mhw-mul
-+@itemx -mno-hw-mulx
-+@itemx -mhw-mulx
-+@itemx -mno-hw-div
-+@itemx -mhw-div
-+@opindex mno-hw-mul
-+@opindex mhw-mul
-+@opindex mno-hw-mulx
-+@opindex mhw-mulx
-+@opindex mno-hw-div
-+@opindex mhw-div
-+
-+Enable or disable emitting @code{mul}, @code{mulx} and @code{div} family of 
-+instructions by the compiler. The default is to emit @code{mul}
-+and not emit @code{div} and @code{mulx}.
-+
-+The different combinations of @code{mul} and @code{mulx} instructions 
-+generate a different multilib options. 
-+
-+
-+@item -msys-crt0=@var{startfile}
-+@opindex msys-crt0
-+
-+@var{startfile} is the file name  of the startfile (crt0) to use 
-+when linking. The default is crt0.o that comes with libgloss
-+and is only suitable for use with the instruction set
-+simulator.
-+
-+@item -msys-lib=@var{systemlib}
-+@itemx -msys-lib=nosys
-+@opindex msys-lib
-+
-+@var{systemlib} is the library name of the library which provides
-+the system calls required by the C library, e.g. @code{read}, @code{write}
-+etc. The default is to use nosys, this library provides
-+stub implementations of the calls and is part of libgloss.
-+
-+@end table
-+
-+
- @node M680x0 Options
- @subsection M680x0 Options
- @cindex M680x0 options
---- gcc-3.4.3/gcc/doc/md.texi
-+++ gcc-3.4.3-nios2/gcc/doc/md.texi
-@@ -1335,6 +1335,49 @@ However, here is a summary of the machin
- available on some particular machines.
- 
- @table @emph
-+
-+@item Altera Nios II family---@file{nios2.h}
-+@table @code
-+
-+@item I
-+Integer that is valid as an immediate operand in an
-+instruction taking a signed 16-bit number. Range
-+@minus{}32768 to 32767.
-+
-+@item J
-+Integer that is valid as an immediate operand in an
-+instruction taking an unsigned 16-bit number. Range
-+0 to 65535.
-+
-+@item K
-+Integer that is valid as an immediate operand in an
-+instruction taking only the upper 16-bits of a
-+32-bit number. Range 32-bit numbers with the lower
-+16-bits being 0.
-+
-+@item L
-+Integer that is valid as an immediate operand for a 
-+shift instruction. Range 0 to 31.
-+
-+
-+@item M
-+Integer that is valid as an immediate operand for
-+only the value 0. Can be used in conjunction with
-+the format modifier @code{z} to use @code{r0}
-+instead of @code{0} in the assembly output.
-+
-+@item N
-+Integer that is valid as an immediate operand for
-+a custom instruction opcode. Range 0 to 255.
-+
-+@item S
-+Matches immediates which are addresses in the small
-+data section and therefore can be added to @code{gp}
-+as a 16-bit immediate to re-create their 32-bit value.
-+
-+@end table
-+
-+
- @item ARM family---@file{arm.h}
- @table @code
- @item f
Index: toolchain/gcc/3.4.5/602-sdk-libstdc++-includes.patch
===================================================================
--- toolchain/gcc/3.4.5/602-sdk-libstdc++-includes.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/602-sdk-libstdc++-includes.patch	(working copy)
@@ -1,22 +0,0 @@
---- gcc-3.4.1/libstdc++-v3/libmath/Makefile.am~	2003-08-27 22:29:42.000000000 +0100
-+++ gcc-3.4.1/libstdc++-v3/libmath/Makefile.am	2004-07-22 16:41:45.152130128 +0100
-@@ -32,7 +32,7 @@
- 
- libmath_la_SOURCES = stubs.c
- 
--AM_CPPFLAGS = $(CANADIAN_INCLUDES)
-+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include
- 
- # Only compiling "C" sources in this directory.
- LIBTOOL = @LIBTOOL@ --tag CC
---- gcc-3.4.1/libstdc++-v3/fragment.am.old	2004-07-22 18:24:58.024083656 +0100
-+++ gcc-3.4.1/libstdc++-v3/fragment.am	2004-07-22 18:24:59.019932264 +0100
-@@ -18,7 +18,7 @@
- 	$(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once
- 
- # -I/-D flags to pass when compiling.
--AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
-+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include
- 
- 
- 
Index: toolchain/gcc/3.4.5/800-arm-bigendian.patch
===================================================================
--- toolchain/gcc/3.4.5/800-arm-bigendian.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/800-arm-bigendian.patch	(working copy)
@@ -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.4.1-dist/gcc/config/arm/linux-elf.h
-+++ gcc-3.4.1/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__"
- 
-@@ -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
- 
---- gcc-3.4.1-dist/gcc/config.gcc
-+++ gcc-3.4.1/gcc/config.gcc
-@@ -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
Index: toolchain/gcc/3.4.5/800-powerpc-libc_stack_end-uclibc.patch
===================================================================
--- toolchain/gcc/3.4.5/800-powerpc-libc_stack_end-uclibc.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/800-powerpc-libc_stack_end-uclibc.patch	(working copy)
@@ -1,15 +0,0 @@
---- gcc-3.4.4/gcc/config/rs6000/linux-unwind.h.org	2005-06-23 17:50:34.000000000 -0600
-+++ gcc-3.4.4/gcc/config/rs6000/linux-unwind.h	2005-06-23 17:52:02.000000000 -0600
-@@ -32,6 +32,7 @@
-    these structs elsewhere;  Many fields are missing, particularly
-    from the end of the structures.  */
- 
-+#ifndef inhibit_libc
- struct gcc_vregs
- {
-   __attribute__ ((vector_size (16))) int vr[32];
-@@ -320,3 +321,4 @@
- 									\
-     goto SUCCESS;							\
-   } while (0)
-+#endif
Index: toolchain/gcc/3.4.5/700-pr15068-fix.patch
===================================================================
--- toolchain/gcc/3.4.5/700-pr15068-fix.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/700-pr15068-fix.patch	(working copy)
@@ -1,44 +0,0 @@
-See http://gcc.gnu.org/PR15068
-
-Fixes error
-
-../sysdeps/generic/s_fmax.c: In function `__fmax':
-../sysdeps/generic/s_fmax.c:28: internal compiler error: in elim_reg_cond, at flow.c:3257
-Please submit a full bug report,
-with preprocessed source if appropriate.
-See <URL:http://gcc.gnu.org/bugs.html> for instructions.
-make[2]: *** [/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/build-glibc/math/s_fmax.o] Error 1
-make[2]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822/math'
-make[1]: *** [math/others] Error 2
-make[1]: Leaving directory `/home/dank/wk/crosstool-0.28-rc35/build/arm-unknown-linux-gnu/gcc-3.4.1-glibc-20040822/glibc-20040822'
-make: *** [all] Error 2
-
-[ rediffed against gcc-3.4.1, with elbow grease, ending up with same thing as
-http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/flow.c.diff?cvsroot=gcc&only_with_tag=csl-arm-branch&r1=1.563.4.2&r2=1.563.4.3 ]
-
---- gcc-3.4.1/gcc/flow.c.old	2004-02-27 19:39:19.000000000 -0800
-+++ gcc-3.4.1/gcc/flow.c	2004-08-26 07:29:46.000000000 -0700
-@@ -1878,6 +1878,7 @@
- 	  rtx set_src = SET_SRC (pc_set (BB_END (bb)));
- 	  rtx cond_true = XEXP (set_src, 0);
- 	  rtx reg = XEXP (cond_true, 0);
-+ 	  enum rtx_code inv_cond;
- 
- 	  if (GET_CODE (reg) == SUBREG)
- 	    reg = SUBREG_REG (reg);
-@@ -1886,11 +1887,13 @@
- 	     in the form of a comparison of a register against zero.  
- 	     If the condition is more complex than that, then it is safe
- 	     not to record any information.  */
--	  if (GET_CODE (reg) == REG
-+ 	  inv_cond = reversed_comparison_code (cond_true, BB_END (bb));
-+ 	  if (inv_cond != UNKNOWN
-+	      && GET_CODE (reg) == REG
- 	      && XEXP (cond_true, 1) == const0_rtx)
- 	    {
- 	      rtx cond_false
--		= gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond_true)),
-+		= gen_rtx_fmt_ee (inv_cond,
- 				  GET_MODE (cond_true), XEXP (cond_true, 0),
- 				  XEXP (cond_true, 1));
- 	      if (GET_CODE (XEXP (set_src, 1)) == PC)
Index: toolchain/gcc/3.4.5/601-gcc34-arm-ldm-peephole2.patch
===================================================================
--- toolchain/gcc/3.4.5/601-gcc34-arm-ldm-peephole2.patch	(revision 20005)
+++ toolchain/gcc/3.4.5/601-gcc34-arm-ldm-peephole2.patch	(working copy)
@@ -1,42 +0,0 @@
-The 30_all_gcc34-arm-ldm-peephole.patch from Debian was conflicting 
-with the newer 36_all_pr16201-fix.patch, so i cut out the hunk from 
-it that was causing problems and grabbed an updated version from 
-upstream cvs.
-
-Index: gcc/config/arm/arm.c
-===================================================================
-RCS file: /cvsroot/gcc/gcc/gcc/config/arm/arm.c,v
-retrieving revision 1.432
-retrieving revision 1.433
-diff -u -r1.432 -r1.433
---- gcc-3.4.4/gcc/config/arm/arm.c	29 Mar 2005 03:00:23 -0000	1.432
-+++ gcc-3.4.4/gcc/config/arm/arm.c	1 Apr 2005 11:02:22 -0000	1.433
-@@ -5139,6 +5139,10 @@
- int
- adjacent_mem_locations (rtx a, rtx b)
- {
-+  /* We don't guarantee to preserve the order of these memory refs.  */
-+  if (volatile_refs_p (a) || volatile_refs_p (b))
-+    return 0;
-+
-   if ((GET_CODE (XEXP (a, 0)) == REG
-        || (GET_CODE (XEXP (a, 0)) == PLUS
- 	   && GET_CODE (XEXP (XEXP (a, 0), 1)) == CONST_INT))
-@@ -5178,6 +5182,17 @@
- 	return 0;
- 
-       val_diff = val1 - val0;
-+
-+      if (arm_ld_sched)
-+	{
-+	  /* If the target has load delay slots, then there's no benefit
-+	     to using an ldm instruction unless the offset is zero and
-+	     we are optimizing for size.  */
-+	  return (optimize_size && (REGNO (reg0) == REGNO (reg1))
-+		  && (val0 == 0 || val1 == 0 || val0 == 4 || val1 == 4)
-+		  && (val_diff == 4 || val_diff == -4));
-+	}
-+
-       return ((REGNO (reg0) == REGNO (reg1))
- 	      && (val_diff == 4 || val_diff == -4));
-     }
Index: toolchain/gcc/3.4.5/arm-softfloat.patch.conditional
===================================================================
--- toolchain/gcc/3.4.5/arm-softfloat.patch.conditional	(revision 20005)
+++ toolchain/gcc/3.4.5/arm-softfloat.patch.conditional	(working copy)
@@ -1,270 +0,0 @@
-Note... modified my mjn3 to not conflict with the big endian arm patch.
-Warning!!!  Only the linux target is aware of TARGET_ENDIAN_DEFAULT.
-Also changed
-  #define SUBTARGET_EXTRA_ASM_SPEC "\
-  %{!mcpu=*:-mcpu=xscale} \
-  %{mhard-float:-mfpu=fpa} \
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
-to
-  #define SUBTARGET_EXTRA_ASM_SPEC "\
-  %{mhard-float:-mfpu=fpa} \
-  %{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
-in gcc/config/arm/linux-elf.h.
-#
-# Submitted:
-#
-# Dimitry Andric <dimitry@andric.com>, 2004-05-01
-#
-# Description:
-#
-# Nicholas Pitre released this patch for gcc soft-float support here: 
-# http://lists.arm.linux.org.uk/pipermail/linux-arm/2003-October/006436.html
-#
-# This version has been adapted to work with gcc 3.4.0.
-#
-# The original patch doesn't distinguish between softfpa and softvfp modes
-# in the way Nicholas Pitre probably meant.  His description is:
-#
-# "Default is to use APCS-32 mode with soft-vfp.  The old Linux default for
-# floats can be achieved with -mhard-float or with the configure
-# --with-float=hard option.  If -msoft-float or --with-float=soft is used then
-# software float support will be used just like the default but with the legacy
-# big endian word ordering for double float representation instead."
-#
-# Which means the following:
-#
-# * If you compile without -mhard-float or -msoft-float, you should get
-#   software floating point, using the VFP format.  The produced object file
-#   should have these flags in its header:
-#
-#     private flags = 600: [APCS-32] [VFP float format] [software FP]
-#
-# * If you compile with -mhard-float, you should get hardware floating point,
-#   which always uses the FPA format.  Object file header flags should be:
-#
-#     private flags = 0: [APCS-32] [FPA float format]
-#
-# * If you compile with -msoft-float, you should get software floating point,
-#   using the FPA format.  This is done for compatibility reasons with many
-#   existing distributions.  Object file header flags should be:
-#
-#     private flags = 200: [APCS-32] [FPA float format] [software FP]
-#
-# The original patch from Nicholas Pitre contained the following constructs:
-#
-#   #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
-#     %{mhard-float:-mfpu=fpa} \
-#     %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-#
-# However, gcc doesn't accept this ";:" notation, used in the 3rd line.  This
-# is probably the reason Robert Schwebel modified it to:
-#
-#   #define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
-#     %{mhard-float:-mfpu=fpa} \
-#     %{!mhard-float: %{msoft-float:-mfpu=softfpa -mfpu=softvfp}}"
-#
-# But this causes the following behaviour:
-#
-# * If you compile without -mhard-float or -msoft-float, the compiler generates
-#   software floating point instructions, but *nothing* is passed to the
-#   assembler, which results in an object file which has flags:
-#
-#     private flags = 0: [APCS-32] [FPA float format]
-#
-#   This is not correct!
-#
-# * If you compile with -mhard-float, the compiler generates hardware floating
-#   point instructions, and passes "-mfpu=fpa" to the assembler, which results
-#   in an object file which has the same flags as in the previous item, but now
-#   those *are* correct.
-#    
-# * If you compile with -msoft-float, the compiler generates software floating
-#   point instructions, and passes "-mfpu=softfpa -mfpu=softvfp" (in that
-#   order) to the assembler, which results in an object file with flags:
-#
-#   private flags = 600: [APCS-32] [VFP float format] [software FP]
-#
-#   This is not correct, because the last "-mfpu=" option on the assembler
-#   command line determines the actual FPU convention used (which should be FPA
-#   in this case).
-#
-# Therefore, I modified this patch to get the desired behaviour.  Every
-# instance of the notation:
-#
-#   %{msoft-float:-mfpu=softfpa -mfpu=softvfp}
-#
-# was changed to:
-#
-#   %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}
-#
-# I also did the following:
-# 
-# * Modified all TARGET_DEFAULT macros I could find to include ARM_FLAG_VFP, to
-#   be consistent with Nicholas' original patch.
-# * Removed any "msoft-float" or "mhard-float" from all MULTILIB_DEFAULTS
-#   macros I could find.  I think that if you compile without any options, you
-#   would like to get the defaults. :)
-# * Removed the extra -lfloat option from LIBGCC_SPEC, since it isn't needed
-#   anymore.  (The required functions are now in libgcc.)
-
-diff -urN gcc-3.4.1-old/gcc/config/arm/coff.h gcc-3.4.1/gcc/config/arm/coff.h
---- gcc-3.4.1-old/gcc/config/arm/coff.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/coff.h	2004-09-02 21:51:15.000000000 -0500
-@@ -31,11 +31,16 @@
- #define TARGET_VERSION fputs (" (ARM/coff)", stderr)
- 
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" }
-+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork" }
- #endif
- 
- /* This is COFF, but prefer stabs.  */
-diff -urN gcc-3.4.1-old/gcc/config/arm/elf.h gcc-3.4.1/gcc/config/arm/elf.h
---- gcc-3.4.1-old/gcc/config/arm/elf.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -46,7 +46,9 @@
- 
- #ifndef SUBTARGET_ASM_FLOAT_SPEC
- #define SUBTARGET_ASM_FLOAT_SPEC "\
--%{mapcs-float:-mfloat} %{msoft-float:-mfpu=softfpa}"
-+%{mapcs-float:-mfloat} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- #endif
- 
- #ifndef ASM_SPEC
-@@ -106,12 +108,17 @@
- #endif
- 
- #ifndef TARGET_DEFAULT
--#define TARGET_DEFAULT (ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- #endif
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "marm", "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
-+  { "marm", "mlittle-endian", "mapcs-32", "mno-thumb-interwork", "fno-leading-underscore" }
- #endif
- 
- #define TARGET_ASM_FILE_START_APP_OFF true
-diff -urN gcc-3.4.1-old/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h
---- gcc-3.4.1-old/gcc/config/arm/linux-elf.h	2004-09-02 21:50:52.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/linux-elf.h	2004-09-02 22:00:49.000000000 -0500
-@@ -44,12 +44,26 @@
- #define TARGET_LINKER_EMULATION "armelf_linux"
- #endif
- 
--/* Default is to use APCS-32 mode.  */
-+/*
-+ * Default is to use APCS-32 mode with soft-vfp.
-+ * The old Linux default for floats can be achieved with -mhard-float
-+ * or with the configure --with-float=hard option.
-+ * If -msoft-float or --with-float=soft is used then software float 
-+ * support will be used just like the default but with the legacy
-+ * big endian word ordering for double float representation instead.
-+ */
- #undef  TARGET_DEFAULT
--#define TARGET_DEFAULT \
--		( ARM_FLAG_APCS_32 | \
--		  ARM_FLAG_MMU_TRAPS | \
--		  TARGET_ENDIAN_DEFAULT )
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_SOFT_FLOAT	\
-+	| TARGET_ENDIAN_DEFAULT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_MMU_TRAPS )
-+
-+#undef  SUBTARGET_EXTRA_ASM_SPEC
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- 
- #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6
- 
-@@ -57,7 +71,7 @@
- 
- #undef  MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--	{ "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" }
-+	{ "marm", TARGET_ENDIAN_OPTION, "mapcs-32", "mno-thumb-interwork" }
- 
- #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__"
- 
-@@ -72,7 +86,7 @@
-    %{shared:-lc} \
-    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
- 
--#define LIBGCC_SPEC "%{msoft-float:-lfloat} -lgcc"
-+#define LIBGCC_SPEC "-lgcc"
- 
- /* Provide a STARTFILE_SPEC appropriate for GNU/Linux.  Here we add
-    the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
-diff -urN gcc-3.4.1-old/gcc/config/arm/t-linux gcc-3.4.1/gcc/config/arm/t-linux
---- gcc-3.4.1-old/gcc/config/arm/t-linux	2003-09-20 16:09:07.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/t-linux	2004-09-02 21:51:15.000000000 -0500
-@@ -4,7 +4,10 @@
- LIBGCC2_DEBUG_CFLAGS = -g0
- 
- LIB1ASMSRC = arm/lib1funcs.asm
--LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
-+LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx \
-+	_negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
-+	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
-+	_fixsfsi _fixunssfsi
- 
- # MULTILIB_OPTIONS = mhard-float/msoft-float
- # MULTILIB_DIRNAMES = hard-float soft-float
-diff -urN gcc-3.4.1-old/gcc/config/arm/unknown-elf.h gcc-3.4.1/gcc/config/arm/unknown-elf.h
---- gcc-3.4.1-old/gcc/config/arm/unknown-elf.h	2004-02-24 08:25:22.000000000 -0600
-+++ gcc-3.4.1/gcc/config/arm/unknown-elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -30,7 +30,12 @@
- 
- /* Default to using APCS-32 and software floating point.  */
- #ifndef TARGET_DEFAULT
--#define TARGET_DEFAULT	(ARM_FLAG_SOFT_FLOAT | ARM_FLAG_APCS_32 | ARM_FLAG_APCS_FRAME | ARM_FLAG_MMU_TRAPS)
-+#define TARGET_DEFAULT		\
-+	( ARM_FLAG_SOFT_FLOAT	\
-+	| ARM_FLAG_VFP		\
-+	| ARM_FLAG_APCS_32	\
-+	| ARM_FLAG_APCS_FRAME	\
-+	| ARM_FLAG_MMU_TRAPS )
- #endif
- 
- /* Now we define the strings used to build the spec file.  */
-diff -urN gcc-3.4.1-old/gcc/config/arm/xscale-elf.h gcc-3.4.1/gcc/config/arm/xscale-elf.h
---- gcc-3.4.1-old/gcc/config/arm/xscale-elf.h	2003-07-01 18:26:43.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/xscale-elf.h	2004-09-02 21:51:15.000000000 -0500
-@@ -49,11 +49,12 @@
- 		     endian, regardless of the endian-ness of the memory
- 		     system.  */
- 		     
--#define SUBTARGET_EXTRA_ASM_SPEC "%{!mcpu=*:-mcpu=xscale} \
--  %{mhard-float:-mfpu=fpa} \
--  %{!mhard-float: %{msoft-float:-mfpu=softfpa;:-mfpu=softvfp}}"
-+#define SUBTARGET_EXTRA_ASM_SPEC "\
-+%{!mcpu=*:-mcpu=xscale} \
-+%{mhard-float:-mfpu=fpa} \
-+%{!mhard-float: %{msoft-float:-mfpu=softfpa} %{!msoft-float:-mfpu=softvfp}}"
- 
- #ifndef MULTILIB_DEFAULTS
- #define MULTILIB_DEFAULTS \
--  { "mlittle-endian", "mno-thumb-interwork", "marm", "msoft-float" }
-+  { "mlittle-endian", "mno-thumb-interwork", "marm" }
- #endif
Index: toolchain/gcc/Config.in
===================================================================
--- toolchain/gcc/Config.in	(revision 20005)
+++ toolchain/gcc/Config.in	(working copy)
@@ -8,68 +8,22 @@
 	help
 	  Select the version of gcc you wish to use.
 
-	config BR2_GCC_VERSION_3_3_5
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "gcc 3.3.5"
-
-	config BR2_GCC_VERSION_3_3_6
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "gcc 3.3.6"
-
-	config BR2_GCC_VERSION_3_4_2
-		depends !BR2_avr32 && BR2_DEPRECATED
-		bool "gcc 3.4.2"
-
-	config BR2_GCC_VERSION_3_4_3
-		depends !BR2_avr32 && BR2_DEPRECATED
-		bool "gcc 3.4.3"
-
-	config BR2_GCC_VERSION_3_4_4
-		depends !BR2_avr32 && BR2_DEPRECATED
-		bool "gcc 3.4.4"
-
-	config BR2_GCC_VERSION_3_4_5
-		depends !BR2_avr32 && BR2_DEPRECATED
-		bool "gcc 3.4.5"
-
 	config BR2_GCC_VERSION_3_4_6
 		depends on !BR2_avr32
 		bool "gcc 3.4.6"
 
-	config BR2_GCC_VERSION_4_0_0
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "gcc 4.0.0"
-
-	config BR2_GCC_VERSION_4_0_1
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "gcc 4.0.1"
-
-	config BR2_GCC_VERSION_4_0_2
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "gcc 4.0.2"
-
-	config BR2_GCC_VERSION_4_0_3
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "gcc 4.0.3"
-
 	config BR2_GCC_VERSION_4_0_4
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
+		depends !BR2_avr32 && !BR2_nios2
+		depends BR2_DEPRECATED
 		bool "gcc 4.0.4"
 
-	config BR2_GCC_VERSION_4_1_0
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "gcc 4.1.0"
-
-	config BR2_GCC_VERSION_4_1_1
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
-		bool "gcc 4.1.1"
-
 	config BR2_GCC_VERSION_4_1_2
 		depends !BR2_nios2
 		bool "gcc 4.1.2"
 
 	config BR2_GCC_VERSION_4_2_0
-		depends !BR2_avr32 && !BR2_nios2 && BR2_DEPRECATED
+		depends !BR2_avr32 && !BR2_nios2
+		depends BR2_DEPRECATED
 		bool "gcc 4.2.0"
 
 	config BR2_GCC_VERSION_4_2_1
@@ -88,9 +42,19 @@
 	bool
 	default n
 
+config BR2_GCC_SUPPORTS_SYSROOT
+	bool
+	default n if BR2_GCC_VERSION_3_4_6 || BR2_GCC_VERSION_4_0_4 || BR2_GCC_VERSION_4_1_2
+	default y if !BR2_GCC_VERSION_3_4_6 && !BR2_GCC_VERSION_4_0_4 && !BR2_GCC_VERSION_4_1_2
+
+config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
+	bool
+	default n if BR2_GCC_VERSION_3_4_6 || BR2_GCC_VERSION_4_0_4 || BR2_GCC_VERSION_4_1_2 || BR2_GCC_VERSION_4_2_0 || BR2_GCC_VERSION_4_2_1
+	default y if !BR2_GCC_VERSION_3_4_6 && !BR2_GCC_VERSION_4_0_4 && !BR2_GCC_VERSION_4_1_2 && !BR2_GCC_VERSION_4_2_0 && !BR2_GCC_VERSION_4_2_1
+
 config BR2_GCC_SNAP_DATE
 	string "GCC snapshot date"
-	default "20070622"
+	default "20070921"
 	depends BR2_GCC_IS_SNAP
 	help
 	  Enter snapshot date to use for gcc.  Format is:
@@ -98,20 +62,8 @@
 
 config BR2_GCC_VERSION
 	string
-	default "3.3.5"     if BR2_GCC_VERSION_3_3_5
-	default "3.3.6"     if BR2_GCC_VERSION_3_3_6
-	default "3.4.2"     if BR2_GCC_VERSION_3_4_2
-	default "3.4.3"     if BR2_GCC_VERSION_3_4_3
-	default "3.4.4"     if BR2_GCC_VERSION_3_4_4
-	default "3.4.5"     if BR2_GCC_VERSION_3_4_5
 	default "3.4.6"     if BR2_GCC_VERSION_3_4_6
-	default "4.0.0"     if BR2_GCC_VERSION_4_0_0
-	default "4.0.1"     if BR2_GCC_VERSION_4_0_1
-	default "4.0.2"     if BR2_GCC_VERSION_4_0_2
-	default "4.0.3"     if BR2_GCC_VERSION_4_0_3
 	default "4.0.4"     if BR2_GCC_VERSION_4_0_4
-	default "4.1.0"     if BR2_GCC_VERSION_4_1_0
-	default "4.1.1"     if BR2_GCC_VERSION_4_1_1
 	default "4.1.2"     if BR2_GCC_VERSION_4_1_2
 	default "4.2.0"     if BR2_GCC_VERSION_4_2_0
 	default "4.2.1"     if BR2_GCC_VERSION_4_2_1
@@ -119,7 +71,7 @@
 
 config BR2_TOOLCHAIN_SYSROOT
 	bool "Enable toolchain with --sysroot support"
-	depends on !BR2_GCC_VERSION_3_3_5 && !BR2_GCC_VERSION_3_3_6 && !BR2_GCC_VERSION_3_4_2 && !BR2_GCC_VERSION_3_4_3 && !BR2_GCC_VERSION_3_4_4 && !BR2_GCC_VERSION_3_4_5 && !BR2_GCC_VERSION_3_4_6 && !BR2_GCC_VERSION_4_0_0 && !BR2_GCC_VERSION_4_0_1 && !BR2_GCC_VERSION_4_0_2 && !BR2_GCC_VERSION_4_0_3 && !BR2_GCC_VERSION_4_0_4 && !BR2_GCC_VERSION_4_1_0 && !BR2_GCC_VERSION_4_1_1 && !BR2_GCC_VERSION_4_1_2
+	depends on BR2_GCC_SUPPORTS_SYSROOT
 	default y
 	help
 	  Enables --sysroot=dir for binutils and gcc.
@@ -164,7 +116,7 @@
 	default n
 	# >= 4.2.0 work fine without LARGEFILE
 	# huh? why so? select BR2_LARGEFILE
-	select BR2_LARGEFILE if BR2_GCC_VERSION_3_3_5 || BR2_GCC_VERSION_3_3_6 || BR2_GCC_VERSION_3_4_2 || BR2_GCC_VERSION_3_4_3 || BR2_GCC_VERSION_3_4_4 || BR2_GCC_VERSION_3_4_5 || BR2_GCC_VERSION_3_4_6 || BR2_GCC_VERSION_4_0_0 || BR2_GCC_VERSION_4_0_1 || BR2_GCC_VERSION_4_0_2 || BR2_GCC_VERSION_4_0_3 || BR2_GCC_VERSION_4_0_4 || BR2_GCC_VERSION_4_1_0 || BR2_GCC_VERSION_4_1_1 || BR2_GCC_VERSION_4_1_2
+	select BR2_LARGEFILE if BR2_GCC_SUPPORTS_SYSROOT
 	help
 	  Build/install c++ compiler and libstdc++?
 
Index: toolchain/uClibc/Config.in
===================================================================
--- toolchain/uClibc/Config.in	(revision 20005)
+++ toolchain/uClibc/Config.in	(working copy)
@@ -9,10 +9,6 @@
 	help
 	  Select the version of uClibc you wish to use.
 
-	config BR2_UCLIBC_VERSION_0_9_28
-		depends BR2_DEPRECATED
-		bool "uClibc 0.9.28"
-
 	config BR2_UCLIBC_VERSION_0_9_28_3
 		depends BR2_avr32 || BR2_DEPRECATED
 		bool "uClibc 0.9.28.3"
@@ -37,7 +33,6 @@
 
 config BR2_UCLIBC_CONFIG
 	string "uClibc configuration file to use?"
-	default "toolchain/uClibc/uClibc-0.9.28.config" if BR2_UCLIBC_VERSION_0_9_28
 	default "toolchain/uClibc/uClibc-0.9.28.config" if BR2_UCLIBC_VERSION_0_9_28_3
 	default "toolchain/uClibc/uClibc-0.9.29.config" if BR2_UCLIBC_VERSION_0_9_29
 	default "toolchain/uClibc/uClibc-0.9.29.config" if BR2_UCLIBC_VERSION_0_9_30
Index: .defconfig
===================================================================
--- .defconfig	(revision 20005)
+++ .defconfig	(working copy)
@@ -26,8 +26,8 @@
 # BR2_KERNEL_HEADERS_2_6_11 is not set
 # BR2_KERNEL_HEADERS_2_6_12 is not set
 # BR2_KERNEL_HEADERS_2_6_19_2 is not set
-BR2_KERNEL_HEADERS_2_6_20=y
-BR2_DEFAULT_KERNEL_HEADERS="2.6.20.4"
+BR2_KERNEL_HEADERS_2_6_22=y
+BR2_DEFAULT_KERNEL_HEADERS="2.6.22.8"
 
 #
 # uClibc Options
@@ -48,52 +48,22 @@
 #
 # Binutils Options
 #
-# BR2_BINUTILS_VERSION_2_14_90_0_8 is not set
-# BR2_BINUTILS_VERSION_2_15 is not set
-# BR2_BINUTILS_VERSION_2_15_94_0_2_2 is not set
-# BR2_BINUTILS_VERSION_2_16_1 is not set
-# BR2_BINUTILS_VERSION_2_16_90_0_3 is not set
-# BR2_BINUTILS_VERSION_2_16_91_0_5 is not set
-# BR2_BINUTILS_VERSION_2_16_91_0_6 is not set
-# BR2_BINUTILS_VERSION_2_16_91_0_7 is not set
-BR2_BINUTILS_VERSION_2_17=y
-# BR2_BINUTILS_VERSION_2_17_50_0_2 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_3 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_4 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_5 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_6 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_7 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_8 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_9 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_10 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_12 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_14 is not set
-# BR2_BINUTILS_VERSION_2_17_50_0_16 is not set
-BR2_BINUTILS_VERSION="2.17"
+BR2_BINUTILS_VERSION_2_18=y
+# BR2_BINUTILS_VERSION_2_18_50_0_1 is not set
+BR2_BINUTILS_VERSION="2.18"
 BR2_EXTRA_BINUTILS_CONFIG_OPTIONS=""
 
 
 #
 # Gcc Options
 #
-# BR2_GCC_VERSION_3_3_5 is not set
-# BR2_GCC_VERSION_3_3_6 is not set
-# BR2_GCC_VERSION_3_4_2 is not set
-# BR2_GCC_VERSION_3_4_3 is not set
-# BR2_GCC_VERSION_3_4_4 is not set
-# BR2_GCC_VERSION_3_4_5 is not set
 # BR2_GCC_VERSION_3_4_6 is not set
-# BR2_GCC_VERSION_4_0_0 is not set
-# BR2_GCC_VERSION_4_0_1 is not set
-# BR2_GCC_VERSION_4_0_2 is not set
-# BR2_GCC_VERSION_4_0_3 is not set
 # BR2_GCC_VERSION_4_0_4 is not set
-# BR2_GCC_VERSION_4_1_0 is not set
-# BR2_GCC_VERSION_4_1_1 is not set
 # BR2_GCC_VERSION_4_1_2 is not set
-BR2_GCC_VERSION_4_2_0=y
+# BR2_GCC_VERSION_4_2_0 is not set
+BR2_GCC_VERSION_4_2_1=y
 # BR2_GCC_IS_SNAP is not set
-BR2_GCC_VERSION="4.2.0"
+BR2_GCC_VERSION="4.2.1"
 # BR2_GCC_USE_SJLJ_EXCEPTIONS is not set
 BR2_EXTRA_GCC_CONFIG_OPTIONS=""
 BR2_GCC_SHARED_LIBGCC=y
Index: TODO
===================================================================
--- TODO	(revision 20005)
+++ TODO	(working copy)
@@ -1,5 +1,7 @@
 Buildroot3 TODOs
 
+- stabilize for a 0.10.0 release
+
 - fix packages/Makefile.autotools.in to use a package-imposed patchdir
 - convert all packages that use autoconf to use the infrastructure of
   packages/Makefile.autotools.in
Index: Config.in
===================================================================
--- Config.in	(revision 20005)
+++ Config.in	(working copy)
@@ -1,11 +1,15 @@
 #
 
-mainmenu "Buildroot2 Configuration"
+mainmenu "Buildroot3 Configuration"
 
 config BR2_HAVE_DOT_CONFIG
 	bool
 	default y
 
+config BR2_VERSION
+	string
+	default "0.10.0-svn"
+
 source "target/arch.in"
 
 menu "Build options"
Index: package/config/kconfig-to-buildroot2.patch
===================================================================
--- package/config/kconfig-to-buildroot2.patch	(revision 20005)
+++ package/config/kconfig-to-buildroot2.patch	(working copy)
@@ -135,7 +135,7 @@
  		return 1;
  
 -	sym = sym_lookup("KERNELVERSION", 0);
-+	sym = sym_lookup("VERSION", 0);
++	sym = sym_lookup("BR2_VERSION", 0);
  	sym_calc_value(sym);
  	time(&now);
  	env = getenv("KCONFIG_NOTIMESTAMP");
@@ -249,7 +249,7 @@
  	}
  
 -	sym = sym_lookup("KERNELVERSION", 0);
-+	sym = sym_lookup("VERSION", 0);
++	sym = sym_lookup("BR2_VERSION", 0);
  	sym_calc_value(sym);
  	time(&now);
  	fprintf(out, "#\n"
@@ -520,7 +520,7 @@
 -	sprintf(title, _("Linux Kernel v%s Configuration"),
 -		getenv("KERNELVERSION"));
 +	sprintf(title, _("Buildroot v%s Configuration"),
-+		getenv("VERSION"));
++		getenv("BR2_VERSION"));
  	gtk_window_set_title(GTK_WINDOW(main_wnd), title);
  
  	gtk_widget_show(main_wnd);
@@ -536,545 +536,6 @@
    <property name="type">GTK_WINDOW_TOPLEVEL</property>
    <property name="window_position">GTK_WIN_POS_NONE</property>
    <property name="modal">False</property>
-diff -rdup kernel-config/kconfig-to-buildroot2.patch config/kconfig-to-buildroot2.patch
---- kernel-config/kconfig-to-buildroot2.patch	2007-09-23 15:33:01.000000000 +0200
-+++ config/kconfig-to-buildroot2.patch	2007-09-23 15:39:23.000000000 +0200
-@@ -1,5 +1,6 @@
----- kconfig/conf.c	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/conf.c	2007-06-28 13:10:46.000000000 +0200
-+diff -rdup kernel-config/conf.c config/conf.c
-+--- kernel-config/conf.c	2007-09-22 00:38:23.000000000 +0200
-++++ config/conf.c	2007-09-23 15:35:12.000000000 +0200
- @@ -542,7 +542,7 @@ int main(int ac, char **av)
-  		exit(1);
-  	}
-@@ -9,12 +10,14 @@
-  	switch (input_mode) {
-  	case set_default:
-  		if (!defconfig_file)
--@@ -557,10 +557,10 @@ int main(int ac, char **av)
-+@@ -557,11 +557,11 @@ int main(int ac, char **av)
-  	case ask_silent:
-  		if (stat(".config", &tmpstat)) {
-  			printf(_("***\n"
- -				"*** You have not yet configured your kernel!\n"
--+				"*** You have not yet configured Buildroot!\n"
-+-				"*** (missing kernel .config file)\n"
-++				"*** You have not yet configured buildroot!\n"
-++				"*** (missing .config file)\n"
-  				"***\n"
-  				"*** Please run some configurator (e.g. \"make oldconfig\" or\n"
- -				"*** \"make menuconfig\" or \"make xconfig\").\n"
-@@ -22,7 +25,7 @@
-  				"***\n"));
-  			exit(1);
-  		}
--@@ -603,7 +603,7 @@ int main(int ac, char **av)
-+@@ -604,7 +604,7 @@ int main(int ac, char **av)
-  	} else if (conf_get_changed()) {
-  		name = getenv("KCONFIG_NOSILENTUPDATE");
-  		if (name && *name) {
-@@ -31,7 +34,7 @@
-  			return 1;
-  		}
-  	} else
--@@ -614,12 +614,12 @@ int main(int ac, char **av)
-+@@ -615,12 +615,12 @@ int main(int ac, char **av)
-  		check_conf(&rootmenu);
-  	} while (conf_cnt);
-  	if (conf_write(NULL)) {
-@@ -47,18 +50,27 @@
-  		return 1;
-  	}
-  
----- kconfig/confdata.c	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/confdata.c	2007-06-28 13:06:23.000000000 +0200
--@@ -21,7 +21,7 @@ static void conf_warning(const char *fmt
-+diff -rdup kernel-config/confdata.c config/confdata.c
-+--- kernel-config/confdata.c	2007-09-22 00:38:23.000000000 +0200
-++++ config/confdata.c	2007-09-23 15:33:26.000000000 +0200
-+@@ -11,6 +11,7 @@
-+ #include <string.h>
-+ #include <time.h>
-+ #include <unistd.h>
-++#include <libgen.h>
-+ 
-+ #define LKC_DIRECT_LINK
-+ #include "lkc.h"
-+@@ -21,7 +22,7 @@ static void conf_warning(const char *fmt
-  static const char *conf_filename;
-  static int conf_lineno, conf_warnings, conf_unsaved;
-  
- -const char conf_defname[] = "arch/$ARCH/defconfig";
--+const char conf_defname[] = "extra/Configs/defconfigs/$ARCH";
-++const char conf_defname[] = ".defconfig";
-  
-  static void conf_warning(const char *fmt, ...)
-  {
--@@ -150,22 +150,22 @@ load:
-+@@ -150,22 +151,22 @@ load:
-  		sym = NULL;
-  		switch (line[0]) {
-  		case '#':
-@@ -86,7 +98,7 @@
-  				if (sym->type == S_UNKNOWN)
-  					sym->type = S_BOOLEAN;
-  			}
--@@ -183,12 +183,8 @@ load:
-+@@ -183,12 +184,8 @@ load:
-  				;
-  			}
-  			break;
-@@ -101,7 +113,7 @@
-  			if (!p)
-  				continue;
-  			*p++ = 0;
--@@ -199,13 +195,13 @@ load:
-+@@ -199,13 +196,13 @@ load:
-  					*p2 = 0;
-  			}
-  			if (def == S_DEF_USER) {
-@@ -118,7 +130,7 @@
-  				if (sym->type == S_UNKNOWN)
-  					sym->type = S_OTHER;
-  			}
--@@ -416,7 +412,7 @@ int conf_write(const char *name)
-+@@ -416,7 +413,7 @@ int conf_write(const char *name)
-  	if (!out)
-  		return 1;
-  
-@@ -127,7 +139,7 @@
-  	sym_calc_value(sym);
-  	time(&now);
-  	env = getenv("KCONFIG_NOTIMESTAMP");
--@@ -425,10 +421,8 @@ int conf_write(const char *name)
-+@@ -425,10 +422,8 @@ int conf_write(const char *name)
-  
-  	fprintf(out, _("#\n"
-  		       "# Automatically generated make config: don't edit\n"
-@@ -138,7 +150,7 @@
-  		     use_timestamp ? "# " : "",
-  		     use_timestamp ? ctime(&now) : "");
-  
--@@ -462,19 +456,19 @@ int conf_write(const char *name)
-+@@ -462,19 +457,19 @@ int conf_write(const char *name)
-  			case S_TRISTATE:
-  				switch (sym_get_tristate_value(sym)) {
-  				case no:
-@@ -162,7 +174,7 @@
-  				while (1) {
-  					l = strcspn(str, "\"\\");
-  					if (l) {
--@@ -490,12 +484,12 @@ int conf_write(const char *name)
-+@@ -490,12 +485,12 @@ int conf_write(const char *name)
-  			case S_HEX:
-  				str = sym_get_string_value(sym);
-  				if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
-@@ -177,7 +189,62 @@
-  				break;
-  			}
-  		}
--@@ -672,22 +668,19 @@ int conf_write_autoconf(void)
-+@@ -535,7 +530,7 @@ int conf_write(const char *name)
-+ 
-+ int conf_split_config(void)
-+ {
-+-	char *name, path[128];
-++	char *name, path[128], *opwd, *dir, *_name;
-+ 	char *s, *d, c;
-+ 	struct symbol *sym;
-+ 	struct stat sb;
-+@@ -546,8 +541,20 @@ int conf_split_config(void)
-+ 		name = "include/config/auto.conf";
-+ 	conf_read_simple(name, S_DEF_AUTO);
-+ 
-+-	if (chdir("include/config"))
-++	opwd = malloc(256);
-++	_name = strdup(name);
-++	if (opwd == NULL || _name == NULL)
-+ 		return 1;
-++	opwd = getcwd(opwd, 256);
-++	dir = dirname(_name);
-++	if (dir == NULL) {
-++		res = 1;
-++		goto err;
-++	}
-++	if (chdir(dir)) {
-++		res = 1;
-++		goto err;
-++	}
-+ 
-+ 	res = 0;
-+ 	for_all_symbols(i, sym) {
-+@@ -640,9 +647,11 @@ int conf_split_config(void)
-+ 		close(fd);
-+ 	}
-+ out:
-+-	if (chdir("../.."))
-+-		return 1;
-+-
-++	if (chdir(opwd))
-++		res = 1;
-++err:
-++	free(opwd);
-++	free(_name);
-+ 	return res;
-+ }
-+ 
-+@@ -657,7 +666,7 @@ int conf_write_autoconf(void)
-+ 
-+ 	sym_clear_all_valid();
-+ 
-+-	file_write_dep("include/config/auto.conf.cmd");
-++	file_write_dep(".config.cmd");
-+ 
-+ 	if (conf_split_config())
-+ 		return 1;
-+@@ -672,22 +681,19 @@ int conf_write_autoconf(void)
-  		return 1;
-  	}
-  
-@@ -204,7 +271,7 @@
-  
-  	for_all_symbols(i, sym) {
-  		sym_calc_value(sym);
--@@ -700,19 +693,19 @@ int conf_write_autoconf(void)
-+@@ -700,19 +706,19 @@ int conf_write_autoconf(void)
-  			case no:
-  				break;
-  			case mod:
-@@ -230,7 +297,7 @@
-  			while (1) {
-  				l = strcspn(str, "\"\\");
-  				if (l) {
--@@ -732,14 +725,14 @@ int conf_write_autoconf(void)
-+@@ -732,14 +738,14 @@ int conf_write_autoconf(void)
-  		case S_HEX:
-  			str = sym_get_string_value(sym);
-  			if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
-@@ -249,8 +316,9 @@
-  			break;
-  		default:
-  			break;
----- kconfig/expr.c	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/expr.c	2007-06-28 13:24:38.000000000 +0200
-+diff -rdup kernel-config/expr.c config/expr.c
-+--- kernel-config/expr.c	2007-09-22 00:38:23.000000000 +0200
-++++ config/expr.c	2007-09-23 15:33:26.000000000 +0200
- @@ -331,7 +331,7 @@ struct expr *expr_trans_bool(struct expr
-  		e->right.expr = expr_trans_bool(e->right.expr);
-  		break;
-@@ -421,305 +489,11 @@
-  				tmp = e->left.expr;
-  				free(e);
-  				e = tmp;
----- kconfig/expr.h	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/expr.h	2007-06-28 13:08:57.000000000 +0200
-+diff -rdup kernel-config/expr.h config/expr.h
-+--- kernel-config/expr.h	2007-09-22 00:38:23.000000000 +0200
-++++ config/expr.h	2007-09-23 15:33:26.000000000 +0200
- @@ -65,7 +65,7 @@ enum symbol_type {
-  
-  enum {
-  	S_DEF_USER,		/* main user value */
---	S_DEF_AUTO,
--+	S_DEF_AUTO
-- };
-- 
-- struct symbol {
--@@ -139,7 +139,7 @@ struct menu {
-- 	struct property *prompt;
-- 	struct expr *dep;
-- 	unsigned int flags;
---	//char *help;
--+	/*char *help; */
-- 	struct file *file;
-- 	int lineno;
-- 	void *data;
----- kconfig/gconf.c	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/gconf.c	2007-06-28 12:15:29.000000000 +0200
--@@ -271,8 +271,8 @@ void init_main_window(const gchar * glad
-- 					  /*"style", PANGO_STYLE_OBLIQUE, */
-- 					  NULL);
-- 
---	sprintf(title, _("Linux Kernel v%s Configuration"),
---		getenv("KERNELVERSION"));
--+	sprintf(title, _("Buildroot v%s Configuration"),
--+		getenv("VERSION"));
-- 	gtk_window_set_title(GTK_WINDOW(main_wnd), title);
-- 
-- 	gtk_widget_show(main_wnd);
----- kconfig/gconf.glade	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/gconf.glade	2007-06-28 12:17:40.000000000 +0200
--@@ -5,7 +5,7 @@
-- 
-- <widget class="GtkWindow" id="window1">
--   <property name="visible">True</property>
---  <property name="title" translatable="yes">Gtk Kernel Configurator</property>
--+  <property name="title" translatable="yes">Gtk Buildroot Configurator</property>
--   <property name="type">GTK_WINDOW_TOPLEVEL</property>
--   <property name="window_position">GTK_WIN_POS_NONE</property>
--   <property name="modal">False</property>
----- kconfig/mconf.c	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/mconf.c	2007-06-28 12:15:29.000000000 +0200
--@@ -30,20 +30,18 @@ static char menu_backtitle[128];
-- static const char mconf_readme[] = N_(
-- "Overview\n"
-- "--------\n"
---"Some kernel features may be built directly into the kernel.\n"
---"Some may be made into loadable runtime modules.  Some features\n"
--+"Some features may be built directly into Buildroot.  Some features\n"
-- "may be completely removed altogether.  There are also certain\n"
---"kernel parameters which are not really features, but must be\n"
--+"parameters which are not really features, but must be\n"
-- "entered in as decimal or hexadecimal numbers or possibly text.\n"
-- "\n"
---"Menu items beginning with [*], <M> or [ ] represent features\n"
---"configured to be built in, modularized or removed respectively.\n"
---"Pointed brackets <> represent module capable features.\n"
--+"Menu items beginning with [*] or [ ] represent features\n"
--+"configured to be built in or removed respectively.\n"
-- "\n"
-- "To change any of these features, highlight it with the cursor\n"
---"keys and press <Y> to build it in, <M> to make it a module or\n"
---"<N> to removed it.  You may also press the <Space Bar> to cycle\n"
---"through the available options (ie. Y->N->M->Y).\n"
--+"keys and press <Y> to build it in or <N> to removed it.\n"
--+"You may also press the <Space Bar> to cycle\n"
--+"through the available options (ie. Y->N->Y).\n"
-- "\n"
-- "Some additional keyboard hints:\n"
-- "\n"
--@@ -116,7 +114,7 @@ static const char mconf_readme[] = N_(
-- "-----------------------------\n"
-- "Menuconfig supports the use of alternate configuration files for\n"
-- "those who, for various reasons, find it necessary to switch\n"
---"between different kernel configurations.\n"
--+"between different configurations.\n"
-- "\n"
-- "At the end of the main menu you will find two options.  One is\n"
-- "for saving the current configuration to a file of your choosing.\n"
--@@ -149,7 +147,7 @@ static const char mconf_readme[] = N_(
-- "\n"
-- "Optional personality available\n"
-- "------------------------------\n"
---"If you prefer to have all of the kernel options listed in a single\n"
--+"If you prefer to have all of the options listed in a single\n"
-- "menu, rather than the default multimenu hierarchy, run the menuconfig\n"
-- "with MENUCONFIG_MODE environment variable set to single_menu. Example:\n"
-- "\n"
--@@ -179,9 +177,9 @@ menu_instructions[] = N_(
-- 	"Arrow keys navigate the menu.  "
-- 	"<Enter> selects submenus --->.  "
-- 	"Highlighted letters are hotkeys.  "
---	"Pressing <Y> includes, <N> excludes, <M> modularizes features.  "
--+	"Pressing <Y> selectes a feature, while <N> will exclude a feature.  "
-- 	"Press <Esc><Esc> to exit, <?> for Help, </> for Search.  "
---	"Legend: [*] built-in  [ ] excluded  <M> module  < > module capable"),
--+	"Legend: [*] feature is selected  [ ] feature is excluded"),
-- radiolist_instructions[] = N_(
-- 	"Use the arrow keys to navigate this window or "
-- 	"press the hotkey of the item you wish to select "
--@@ -201,18 +199,18 @@ setmod_text[] = N_(
-- 	"This feature depends on another which has been configured as a module.\n"
-- 	"As a result, this feature will be built as a module."),
-- nohelp_text[] = N_(
---	"There is no help available for this kernel option.\n"),
--+	"There is no help available for this option.\n"),
-- load_config_text[] = N_(
-- 	"Enter the name of the configuration file you wish to load.  "
-- 	"Accept the name shown to restore the configuration you "
-- 	"last retrieved.  Leave blank to abort."),
-- load_config_help[] = N_(
-- 	"\n"
---	"For various reasons, one may wish to keep several different kernel\n"
--+	"For various reasons, one may wish to keep several different Buildroot\n"
-- 	"configurations available on a single machine.\n"
-- 	"\n"
-- 	"If you have saved a previous configuration in a file other than the\n"
---	"kernel's default, entering the name of the file here will allow you\n"
--+	"Buildroot's default, entering the name of the file here will allow you\n"
-- 	"to modify that configuration.\n"
-- 	"\n"
-- 	"If you are uncertain, then you have probably never used alternate\n"
--@@ -222,7 +220,7 @@ save_config_text[] = N_(
-- 	"as an alternate.  Leave blank to abort."),
-- save_config_help[] = N_(
-- 	"\n"
---	"For various reasons, one may wish to keep different kernel\n"
--+	"For various reasons, one may wish to keep different Buildroot\n"
-- 	"configurations available on a single machine.\n"
-- 	"\n"
-- 	"Entering a file name here will allow you to later retrieve, modify\n"
--@@ -871,9 +869,9 @@ int main(int ac, char **av)
-- 	conf_parse(av[1]);
-- 	conf_read(NULL);
-- 
---	sym = sym_lookup("KERNELVERSION", 0);
--+	sym = sym_lookup("VERSION", 0);
-- 	sym_calc_value(sym);
---	sprintf(menu_backtitle, _("Linux Kernel v%s Configuration"),
--+	sprintf(menu_backtitle, _("Buildroot v%s Configuration"),
-- 		sym_get_string_value(sym));
-- 
-- 	mode = getenv("MENUCONFIG_MODE");
--@@ -893,7 +891,7 @@ int main(int ac, char **av)
-- 		if (conf_get_changed())
-- 			res = dialog_yesno(NULL,
-- 					   _("Do you wish to save your "
---					     "new kernel configuration?\n"
--+					     "new Buildroot configuration?\n"
-- 					     "<ESC><ESC> to continue."),
-- 					   6, 60);
-- 		else
--@@ -905,22 +903,22 @@ int main(int ac, char **av)
-- 	case 0:
-- 		if (conf_write(NULL)) {
-- 			fprintf(stderr, _("\n\n"
---				"Error during writing of the kernel configuration.\n"
---				"Your kernel configuration changes were NOT saved."
--+				"Error during writing of the Buildroot configuration.\n"
--+				"Your Buildroot configuration changes were NOT saved."
-- 				"\n\n"));
-- 			return 1;
-- 		}
-- 	case -1:
-- 		printf(_("\n\n"
---			"*** End of Linux kernel configuration.\n"
---			"*** Execute 'make' to build the kernel or try 'make help'."
--+			"*** End of Buildroot configuration.\n"
--+			"*** Execute 'make' to build Buildroot or try 'make help'."
-- 			"\n\n"));
-- 		break;
-- 	default:
-- 		fprintf(stderr, _("\n\n"
---			"Your kernel configuration changes were NOT saved."
--+			"Your Buildroot configuration changes were NOT saved."
-- 			"\n\n"));
-- 	}
-- 
---	return 0;
--+	return conf_write_autoconf();
-- }
----- kconfig/symbol.c	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/symbol.c	2007-06-28 12:15:29.000000000 +0200
--@@ -61,10 +61,10 @@ void sym_init(void)
-- 	if (p)
-- 		sym_add_default(sym, p);
-- 
---	sym = sym_lookup("KERNELVERSION", 0);
--+	sym = sym_lookup("VERSION", 0);
-- 	sym->type = S_STRING;
-- 	sym->flags |= SYMBOL_AUTO;
---	p = getenv("KERNELVERSION");
--+	p = getenv("VERSION");
-- 	if (p)
-- 		sym_add_default(sym, p);
-- 
----- kconfig/zconf.tab.c_shipped	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/zconf.tab.c_shipped	2007-06-28 12:15:29.000000000 +0200
--@@ -2115,7 +2115,7 @@ void conf_parse(const char *name)
-- 	modules_sym = sym_lookup(NULL, 0);
-- 	modules_sym->type = S_BOOLEAN;
-- 	modules_sym->flags |= SYMBOL_AUTO;
---	rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL);
--+	rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL);
-- 
-- #if YYDEBUG
-- 	if (getenv("ZCONF_DEBUG"))
----- kconfig/zconf.y	2007-06-11 20:37:06.000000000 +0200
--+++ Buildroot/zconf.y	2007-06-28 12:15:29.000000000 +0200
--@@ -484,7 +484,7 @@ void conf_parse(const char *name)
-- 	modules_sym = sym_lookup(NULL, 0);
-- 	modules_sym->type = S_BOOLEAN;
-- 	modules_sym->flags |= SYMBOL_AUTO;
---	rootmenu.prompt = menu_add_prompt(P_MENU, "Linux Kernel Configuration", NULL);
--+	rootmenu.prompt = menu_add_prompt(P_MENU, "Buildroot Configuration", NULL);
-- 
-- #if YYDEBUG
-- 	if (getenv("ZCONF_DEBUG"))
--Index: confdata.c
--===================================================================
----- kconfig/confdata.c	(revision 18967)
--+++ Buildroot/confdata.c	(working copy)
--@@ -21,7 +21,7 @@ static void conf_warning(const char *fmt
-- static const char *conf_filename;
-- static int conf_lineno, conf_warnings, conf_unsaved;
-- 
---const char conf_defname[] = "extra/Configs/defconfigs/$ARCH";
--+const char conf_defname[] = ".defconfig";
-- 
-- static void conf_warning(const char *fmt, ...)
-- {
----- kconfig/confdata.c	2007-07-02 16:07:19.000000000 +0200
--+++ Buildroot/confdata.c	2007-07-02 16:05:21.000000000 +0200
--@@ -651,7 +651,7 @@ int conf_write_autoconf(void)
-- 
-- 	sym_clear_all_valid();
-- 
---	file_write_dep("include/config/auto.conf.cmd");
--+	file_write_dep(".config.cmd");
-- 
-- 	if (conf_split_config())
-- 		return 1;
----- kconfig/confdata.c	2007-07-07 11:13:12.000000000 +0200
--+++ Buildroot/confdata.c	2007-07-08 01:30:44.000000000 +0200
--@@ -11,6 +11,7 @@
-- #include <string.h>
-- #include <time.h>
-- #include <unistd.h>
--+#include <libgen.h>
-- 
-- #define LKC_DIRECT_LINK
-- #include "lkc.h"
--@@ -529,7 +530,7 @@ int conf_write(const char *name)
-- 
-- int conf_split_config(void)
-- {
---	char *name, path[128];
--+	char *name, path[128], *opwd, *dir, *_name;
-- 	char *s, *d, c;
-- 	struct symbol *sym;
-- 	struct stat sb;
--@@ -540,8 +541,20 @@ int conf_split_config(void)
-- 		name = "include/config/auto.conf";
-- 	conf_read_simple(name, S_DEF_AUTO);
-- 
---	if (chdir("include/config"))
--+	opwd = malloc(256);
--+	_name = strdup(name);
--+	if (opwd == NULL || _name == NULL)
-- 		return 1;
--+	opwd = getcwd(opwd, 256);
--+	dir = dirname(_name);
--+	if (dir == NULL) {
--+		res = 1;
--+		goto err;
--+	}
--+	if (chdir(dir)) {
--+		res = 1;
--+		goto err;
--+	}
-- 
-- 	res = 0;
-- 	for_all_symbols(i, sym) {
--@@ -634,9 +647,11 @@ int conf_split_config(void)
-- 		close(fd);
-- 	}
-- out:
---	if (chdir("../.."))
---		return 1;
---
--+	if (chdir(opwd))
--+		res = 1;
--+err:
--+	free(opwd);
--+	free(_name);
-- 	return res;
-- }
-- 
-+-	S_DE
-\ No newline at end of file
 diff -rdup kernel-config/mconf.c config/mconf.c
 --- kernel-config/mconf.c	2007-09-22 00:38:23.000000000 +0200
 +++ config/mconf.c	2007-09-23 15:36:33.000000000 +0200
@@ -1172,7 +633,7 @@
  	struct symbol *sym;
  
 -	sym = sym_lookup("KERNELVERSION", 0);
-+	sym = sym_lookup("VERSION", 0);
++	sym = sym_lookup("BR2_VERSION", 0);
  	sym_calc_value(sym);
  	size = snprintf(menu_backtitle, sizeof(menu_backtitle),
 -	                _("%s - Linux Kernel v%s Configuration"),
@@ -1226,11 +687,11 @@
  		sym_add_default(sym, p);
  
 -	sym = sym_lookup("KERNELVERSION", 0);
-+	sym = sym_lookup("VERSION", 0);
++	sym = sym_lookup("BR2_VERSION", 0);
  	sym->type = S_STRING;
  	sym->flags |= SYMBOL_AUTO;
 -	p = getenv("KERNELVERSION");
-+	p = getenv("VERSION");
++	p = getenv("BR2_VERSION");
  	if (p)
  		sym_add_default(sym, p);
  
Index: package/config/mconf.c
===================================================================
--- package/config/mconf.c	(revision 20005)
+++ package/config/mconf.c	(working copy)
@@ -398,7 +398,7 @@
 	int size;
 	struct symbol *sym;
 
-	sym = sym_lookup("VERSION", 0);
+	sym = sym_lookup("BR2_VERSION", 0);
 	sym_calc_value(sym);
 	size = snprintf(menu_backtitle, sizeof(menu_backtitle),
 	                _("%s - buildroot v%s Configuration"),
Index: package/config/symbol.c
===================================================================
--- package/config/symbol.c	(revision 20005)
+++ package/config/symbol.c	(working copy)
@@ -61,10 +61,10 @@
 	if (p)
 		sym_add_default(sym, p);
 
-	sym = sym_lookup("VERSION", 0);
+	sym = sym_lookup("BR2_VERSION", 0);
 	sym->type = S_STRING;
 	sym->flags |= SYMBOL_AUTO;
-	p = getenv("VERSION");
+	p = getenv("BR2_VERSION");
 	if (p)
 		sym_add_default(sym, p);
 
Index: package/config/confdata.c
===================================================================
--- package/config/confdata.c	(revision 20005)
+++ package/config/confdata.c	(working copy)
@@ -413,7 +413,7 @@
 	if (!out)
 		return 1;
 
-	sym = sym_lookup("VERSION", 0);
+	sym = sym_lookup("BR2_VERSION", 0);
 	sym_calc_value(sym);
 	time(&now);
 	env = getenv("KCONFIG_NOTIMESTAMP");
@@ -681,7 +681,7 @@
 		return 1;
 	}
 
-	sym = sym_lookup("VERSION", 0);
+	sym = sym_lookup("BR2_VERSION", 0);
 	sym_calc_value(sym);
 	time(&now);
 	fprintf(out, "#\n"
Index: package/config/gconf.c
===================================================================
--- package/config/gconf.c	(revision 20005)
+++ package/config/gconf.c	(working copy)
@@ -272,7 +272,7 @@
 					  NULL);
 
 	sprintf(title, _("Buildroot v%s Configuration"),
-		getenv("VERSION"));
+		getenv("BR2_VERSION"));
 	gtk_window_set_title(GTK_WINDOW(main_wnd), title);
 
 	gtk_widget_show(main_wnd);
