Some notes on the 'bootstrap with or without libc headers' debate:
http://linuxfromscratch.org/pipermail/lfs-dev/2005-July/052409.html
http://gcc.gnu.org/ml/gcc/2005-07/msg01195.html

--- gcc/unwind-dw2.c
+++ gcc/unwind-dw2.c
@@ -253,9 +253,11 @@
 }
 #endif
 
+#ifndef inhibit_libc
 #ifdef MD_UNWIND_SUPPORT
 #include MD_UNWIND_SUPPORT
 #endif
+#endif
 
 /* Extract any interesting information from the CIE for the translation
    unit F belongs to.  Return a pointer to the byte after the augmentation,
--- gcc/configure
+++ gcc/configure
@@ -12857,7 +12857,7 @@ then
 	    | powerpc*-*-*,powerpc64*-*-*)
 		CROSS="$CROSS -DNATIVE_CROSS" ;;
 	esac
-elif test "x$TARGET_SYSTEM_ROOT" != x; then
+elif test "x$TARGET_SYSTEM_ROOT" != x -o $build != $host; then
         SYSTEM_HEADER_DIR=$build_system_header_dir
 fi
 
--- gcc/configure.ac
+++ gcc/configure.ac
@@ -1717,7 +1717,7 @@ then
 	    | powerpc*-*-*,powerpc64*-*-*)
 		CROSS="$CROSS -DNATIVE_CROSS" ;;
 	esac
-elif test "x$TARGET_SYSTEM_ROOT" != x; then
+elif test "x$TARGET_SYSTEM_ROOT" != x -o $build != $host; then
         SYSTEM_HEADER_DIR=$build_system_header_dir 
 fi