diff -uNr gcc-4.6.3.orig/gcc/testsuite/lib/prune.exp gcc-4.6.3/gcc/testsuite/lib/prune.exp
--- gcc-4.6.3.orig/gcc/testsuite/lib/prune.exp	2011-10-19 09:52:45.000000000 -0400
+++ gcc-4.6.3/gcc/testsuite/lib/prune.exp	2012-02-24 11:23:13.000000000 -0500
@@ -59,7 +59,10 @@
     regsub -all "(^|\n)\[^\n\]*ld: warning: can't add line info to anonymous symbol\[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*_bound\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*warning:\[^\n\]*TAG_variable:  AT_location\[^\n\]*didn't have valid function low pc\[^\n\]*" $text "" text
-    
+   
+    # Ignore harmless warnings from Xcode 4.0.
+    regsub -all "(^|\n)\[^\n\]*ld: warning: could not create compact unwind for\[^\n\]*" $text "" text
+ 
     #send_user "After:$text\n"
 
     return $text
diff -uNr gcc-4.6.3.orig/libjava/Makefile.am gcc-4.6.3/libjava/Makefile.am
--- gcc-4.6.3.orig/libjava/Makefile.am	2011-06-18 00:31:10.000000000 -0400
+++ gcc-4.6.3/libjava/Makefile.am	2012-02-24 11:23:13.000000000 -0500
@@ -492,7 +492,7 @@
 libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
 	$(LIBLTDL) $(SYS_ZLIBS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
 	-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
-	$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+	$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LDLIBICONV)
 libgcj_la_LIBADD = \
 	classpath/native/fdlibm/libfdlibm.la \
 	java/lang/Object.lo \
diff -uNr gcc-4.6.3.orig/libjava/Makefile.in gcc-4.6.3/libjava/Makefile.in
--- gcc-4.6.3.orig/libjava/Makefile.in	2011-06-18 00:33:10.000000000 -0400
+++ gcc-4.6.3/libjava/Makefile.in	2012-02-24 11:23:13.000000000 -0500
@@ -1066,7 +1066,7 @@
 libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
 	$(LIBLTDL) $(SYS_ZLIBS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
 	-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
-	$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+	$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LDLIBICONV)
 
 libgcj_la_LIBADD = \
 	classpath/native/fdlibm/libfdlibm.la \
diff -uNr gcc-4.6.3.orig/libjava/configure gcc-4.6.3/libjava/configure
--- gcc-4.6.3.orig/libjava/configure	2012-02-24 11:16:47.000000000 -0500
+++ gcc-4.6.3/libjava/configure	2012-02-24 11:23:13.000000000 -0500
@@ -1619,6 +1619,8 @@
                           default=yes
   --enable-java-maintainer-mode
                           allow rebuilding of .class and .h files
+  --enable-libjava-multilib
+                          build libjava as multilib
   --disable-dependency-tracking  speeds up one-time build
   --enable-dependency-tracking   do not reject slow dependency extractors
   --enable-maintainer-mode  enable make rules and dependencies not useful
@@ -3363,6 +3365,16 @@
 fi
 
 
+# Check whether --enable-libjava-multilib was given.
+if test "${enable_libjava_multilib+set}" = set; then
+  enableval=$enable_libjava_multilib;
+fi
+
+if test "$enable_libjava_multilib" = no; then
+  multilib=no
+  ac_configure_args="$ac_configure_args --disable-multilib"
+fi
+
 # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
 
 
diff -uNr gcc-4.6.3.orig/libjava/configure.ac gcc-4.6.3/libjava/configure.ac
--- gcc-4.6.3.orig/libjava/configure.ac	2012-02-24 11:16:46.000000000 -0500
+++ gcc-4.6.3/libjava/configure.ac	2012-02-24 11:23:13.000000000 -0500
@@ -139,6 +139,13 @@
 	[allow rebuilding of .class and .h files]))
 AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes)
 
+AC_ARG_ENABLE(libjava-multilib,
+	AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib]))
+if test "$enable_libjava_multilib" = no; then
+  multilib=no
+  ac_configure_args="$ac_configure_args --disable-multilib"
+fi
+
 # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
 GCC_NO_EXECUTABLES
 
diff -uNr gcc-4.6.3.orig/libjava/libgcj.spec.in gcc-4.6.3/libjava/libgcj.spec.in
--- gcc-4.6.3.orig/libjava/libgcj.spec.in	2011-06-18 00:30:08.000000000 -0400
+++ gcc-4.6.3/libjava/libgcj.spec.in	2012-02-24 11:23:13.000000000 -0500
@@ -7,6 +7,6 @@
 *startfile: @THREADSTARTFILESPEC@ %(startfileorig)
 
 %rename lib liborig
-*lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ @LIBMATHSPEC@ @LDLIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) @LIBSTDCXXSPEC@ %(liborig)
+*lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ @LIBMATHSPEC@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) @LIBSTDCXXSPEC@ %(liborig)
 
 *jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ @ATOMICSPEC@ @LIBGCJ_BC_SPEC@ -fkeep-inline-functions
diff -uNr gcc-4.6.3.orig/libquadmath/configure gcc-4.6.3/libquadmath/configure
--- gcc-4.6.3.orig/libquadmath/configure	2011-12-19 19:21:18.000000000 -0500
+++ gcc-4.6.3/libquadmath/configure	2012-02-24 11:23:13.000000000 -0500
@@ -3395,7 +3395,7 @@
 eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
 $as_echo "$ac_try_echo"; } >&5
   (eval "$ac_try") 2>&5
-  ac_status=$?
+  ac_status=0
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; }; then
     cross_compiling=no
diff -uNr gcc-4.6.3.orig/libstdc++-v3/testsuite/lib/prune.exp gcc-4.6.3/libstdc++-v3/testsuite/lib/prune.exp
--- gcc-4.6.3.orig/libstdc++-v3/testsuite/lib/prune.exp	2011-09-01 18:03:45.000000000 -0400
+++ gcc-4.6.3/libstdc++-v3/testsuite/lib/prune.exp	2012-02-24 11:23:13.000000000 -0500
@@ -55,6 +55,10 @@
     regsub -all "(^|\n)\[^\n\]*warning: DWARFDebugInfoEntry::AppendDependants\[^\n\]*AT_\[^\n\]*_bound\[^\n\]*FORM_ref4\[^\n\]*" $text "" text
     regsub -all "(^|\n)\[^\n\]*warning:\[^\n\]*TAG_variable:  AT_location\[^\n\]*didn't have valid function low pc\[^\n\]*" $text "" text
 
+    # Ignore harmless warnings from Xcode 4.0.
+    regsub -all "(^|\n)\[^\n\]*ld: warning: could not create compact unwind for\[^\n\]*" $text "" text
+
+
     foreach p $additional_prunes {
 	if { [string length $p] > 0 } {
 	    # Following regexp matches a complete line containing $p.
