diff -ruN gcc-4.3.2/configure gcc-4.3.2.patched/configure
--- gcc-4.3.2/configure	2008-02-01 19:29:30.000000000 -0800
+++ gcc-4.3.2.patched/configure	2008-12-25 08:59:11.000000000 -0800
@@ -2141,6 +2141,7 @@
     noconfigdirs="$noconfigdirs ld gas gdb gprof"
     noconfigdirs="$noconfigdirs sim target-rda"
     noconfigdirs="$noconfigdirs ${libgcj}"
+    noconfigdirs="$noconfigdirs target-libstdc++-v3"
     ;;
   *-*-freebsd[12] | *-*-freebsd[12].* | *-*-freebsd*aout*)
     noconfigdirs="$noconfigdirs target-newlib target-libgloss ${libgcj}"
@@ -2220,6 +2221,10 @@
   sh-*-linux*)
     noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
     ;;
+  sh-*-elf)
+    noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
+    noconfigdirs="$noconfigdirs target-libstdc++-v3"
+	;;
   sh*-*-pe|mips*-*-pe|*arm-wince-pe)
     noconfigdirs="$noconfigdirs ${libgcj}"
     noconfigdirs="$noconfigdirs target-examples"
@@ -2247,6 +2252,7 @@
     ;;
   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
+    noconfigdirs="$noconfigdirs target-libstdc++-v3"
     libgloss_dir=arm
     ;;
   arm*-*-linux-gnueabi)
@@ -2373,6 +2379,7 @@
     ;;
   i[3456789]86-*-coff | i[3456789]86-*-elf)
     noconfigdirs="$noconfigdirs ${libgcj}"
+    noconfigdirs="$noconfigdirs target-libstdc++-v3"
     libgloss_dir=i386
     ;;
   i[3456789]86-*-linux*)
@@ -2438,6 +2445,10 @@
   i[3456789]86-*-rdos*)
     noconfigdirs="$noconfigdirs gdb target-newlib target-libgloss"
     ;;
+  x86_64-*-elf)
+    noconfigdirs="$noconfigdirs ${libgcj}"
+	noconfigdirs="$noconfigdirs target-libiberty target-libstdc++-v3"
+    ;;
   m32r-*-*)
     noconfigdirs="$noconfigdirs ${libgcj}"
     ;;
@@ -2494,6 +2505,10 @@
     noconfigdirs="$noconfigdirs ${libgcj}"
     libgloss_dir=rs6000
     ;;
+  powerpc-*-elf)
+    noconfigdirs="$noconfigdirs ${libgcj}"
+    noconfigdirs="$noconfigdirs target-libstdc++-v3"
+    ;;
   powerpc-*-eabi* | powerpcle-*-eabi* | powerpc-*-rtems* )
     libgloss_dir=rs6000
     ;;
Files gcc-4.3.2/gcc/config/arm/.t-arm-elf.swp and gcc-4.3.2.patched/gcc/config/arm/.t-arm-elf.swp differ
diff -ruN gcc-4.3.2/gcc/config/arm/t-arm-elf gcc-4.3.2.patched/gcc/config/arm/t-arm-elf
--- gcc-4.3.2/gcc/config/arm/t-arm-elf	2007-01-03 15:48:10.000000000 -0800
+++ gcc-4.3.2.patched/gcc/config/arm/t-arm-elf	2008-12-25 10:07:27.000000000 -0800
@@ -6,8 +6,8 @@
 	_truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
 	_fixsfsi _fixunssfsi _floatdidf _floatdisf _floatundidf _floatundisf
 
-MULTILIB_OPTIONS     = marm/mthumb
-MULTILIB_DIRNAMES    = arm thumb
+MULTILIB_OPTIONS     = mthumb
+MULTILIB_DIRNAMES    = thumb
 MULTILIB_EXCEPTIONS  = 
 MULTILIB_MATCHES     =
 
@@ -21,6 +21,10 @@
 #MULTILIB_MATCHES      += march?armv7=mcpu?cortex-r4
 #MULTILIB_MATCHES      += march?armv7=mcpu?cortex-m3
 
+# build a bunch of specialized versions of libcc for particular cores
+MULTILIB_OPTIONS    += mcpu=arm7tdmi/mcpu=arm9tdmi/mcpu=arm920t/mcpu=arm926ej-s/mcpu=arm1136j-s/mcpu=arm1136jf-s/mcpu=arm1176jz-s/mcpu=arm1176jzf-s/mcpu=xscale/mcpu=mpcore/mcpu=cortex-a8/march=armv4t/march=armv5t/march=armv5te/march=armv6/march=armv6j/march=armv6k/march=armv6z/march=armv6zk/march=armv7-a/march=armv7-r
+MULTILIB_DIRNAMES   += arm7tdmi arm9tdmi arm920t arm926ej-s arm1136j-s arm1136jf-s arm1176jz-s arm1176jzf-s xscale mpcore cortex-a8 armv4t armv5t armv5te armv6 armv6j armv6k armv6z armv6zk armv7-a armv7-r
+
 # MULTILIB_OPTIONS    += mcpu=ep9312
 # MULTILIB_DIRNAMES   += ep9312
 # MULTILIB_EXCEPTIONS += *mthumb/*mcpu=ep9312*
@@ -33,8 +37,8 @@
 # MULTILIB_DIRNAMES   += fpu soft
 # MULTILIB_EXCEPTIONS += *mthumb/*mhard-float*
 # 
-# MULTILIB_OPTIONS    += mno-thumb-interwork/mthumb-interwork
-# MULTILIB_DIRNAMES   += normal interwork
+MULTILIB_OPTIONS    += mno-thumb-interwork/mthumb-interwork
+MULTILIB_DIRNAMES   += normal interwork
 # 
 # MULTILIB_OPTIONS    += fno-leading-underscore/fleading-underscore
 # MULTILIB_DIRNAMES   += elf under
diff -ruN gcc-4.3.2/gcc/config/i386/t-x86_64elf gcc-4.3.2.patched/gcc/config/i386/t-x86_64elf
--- gcc-4.3.2/gcc/config/i386/t-x86_64elf	1969-12-31 16:00:00.000000000 -0800
+++ gcc-4.3.2.patched/gcc/config/i386/t-x86_64elf	2008-12-25 08:49:29.000000000 -0800
@@ -0,0 +1,21 @@
+# On x86-64 we do not need any exports for glibc for 64-bit libgcc_s,
+# override the settings
+# from t-slibgcc-elf-ver and t-linux
+#SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
+#		 $(srcdir)/config/i386/libgcc-x86_64-glibc.ver
+
+MULTILIB_OPTIONS = m64/m32
+MULTILIB_DIRNAMES = 64 32 
+MULTILIB_OSDIRNAMES = ../lib64 ../lib
+
+LIBGCC = stmp-multilib
+INSTALL_LIBGCC = install-multilib
+
+#EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o \
+#		     crtbeginT.o crtfastmath.o
+
+# The pushl in CTOR initialization interferes with frame pointer elimination.
+# crtend*.o cannot be compiled without -fno-asynchronous-unwind-tables,
+# because then __FRAME_END__ might not be the last thing in .eh_frame
+# section.
+#CRTSTUFF_T_CFLAGS = -fno-omit-frame-pointer -fno-asynchronous-unwind-tables
diff -ruN gcc-4.3.2/gcc/config.gcc gcc-4.3.2.patched/gcc/config.gcc
--- gcc-4.3.2/gcc/config.gcc	2008-06-09 09:32:15.000000000 -0700
+++ gcc-4.3.2.patched/gcc/config.gcc	2008-12-25 08:49:29.000000000 -0800
@@ -1121,6 +1121,10 @@
 	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/x86-64.h i386/freebsd.h i386/freebsd64.h"
 	tmake_file="${tmake_file} i386/t-crtstuff"
 	;;
+x86_64-*-elf*)
+	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/x86-64.h"
+	tmake_file="i386/t-x86_64elf"
+	;;
 i[34567]86-*-netbsdelf*)
 	tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h netbsd.h netbsd-elf.h i386/netbsd-elf.h"
 	;;
