diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index e6de196160e2ff70bfda34f0e22586baaf18f91d..faebf37301dcfc3d6a170876975bc4f4a9df9f8f 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,146 @@
+2006-12-06  Benjamin Kosnik  <bkoz@redhat.com>
+
+	* include/Makefile.am (std_headers_rename): Remove.
+	(c_base_headers_rename): Remove.
+	(std_headers): Adjust to true names.
+	(c_base_headers): Adjust to true names.
+	(stamp-c_base, stamp_std, stamp_c_base_extra): Adjust.
+	* configure: Regenerate.
+	* include/Makefile.in: Regenerate.
+
+        * include/std/std_algorithm.h: To...
+        * include/std/std_bitset.h: To...
+        * include/std/std_complex.h: To...
+        * include/std/std_deque.h: To...
+        * include/std/std_fstream.h: To...
+        * include/std/std_functional.h: To...
+        * include/std/std_iomanip.h: To...
+        * include/std/std_iosfwd.h: To...
+        * include/std/std_ios.h: To...
+        * include/std/std_iostream.h: To...
+        * include/std/std_istream.h: To...
+        * include/std/std_iterator.h: To...
+        * include/std/std_limits.h: To...
+        * include/std/std_list.h: To...
+        * include/std/std_locale.h: To...
+        * include/std/std_map.h: To...
+        * include/std/std_memory.h: To...
+        * include/std/std_numeric.h: To...
+        * include/std/std_ostream.h: To...
+        * include/std/std_queue.h: To...
+        * include/std/std_set.h: To...
+        * include/std/std_sstream.h: To...
+        * include/std/std_stack.h: To...
+        * include/std/std_stdexcept.h: To...
+        * include/std/std_streambuf.h: To...
+        * include/std/std_string.h: To...
+        * include/std/std_utility.h: To...
+        * include/std/std_valarray.h: To...
+        * include/std/std_vector.h: To...
+        * include/std/algorithm: ...this.
+        * include/std/bitset: ...this.
+        * include/std/complex: ...this.
+        * include/std/deque: ...this.
+        * include/std/fstream: ...this.
+        * include/std/functional: ...this.
+        * include/std/iomanip: ...this.
+        * include/std/iosfwd: ...this.
+        * include/std/ios: ...this.
+        * include/std/iostream: ...this.
+        * include/std/istream: ...this.
+        * include/std/iterator: ...this.
+        * include/std/limits: ...this.
+        * include/std/list: ...this.
+        * include/std/locale: ...this.
+        * include/std/map: ...this.
+        * include/std/memory: ...this.
+        * include/std/numeric: ...this.
+        * include/std/ostream: ...this.
+        * include/std/queue: ...this.
+        * include/std/set: ...this.
+        * include/std/sstream: ...this.
+        * include/std/stack: ...this.
+        * include/std/stdexcept: ...this.
+        * include/std/streambuf: ...this.
+        * include/std/string: ...this.
+        * include/std/utility: ...this.
+        * include/std/valarray: ...this.
+        * include/std/vector: ...this.
+
+        * include/c_std/std_cassert.h: To...
+        * include/c_std/std_cctype.h: To...
+        * include/c_std/std_cerrno.h: To...
+        * include/c_std/std_cfloat.h: To...
+        * include/c_std/std_ciso646.h: To...
+        * include/c_std/std_climits.h: To...
+        * include/c_std/std_clocale.h: To...
+        * include/c_std/std_cmath.h: To...
+        * include/c_std/std_csetjmp.h: To...
+        * include/c_std/std_csignal.h: To...
+        * include/c_std/std_cstdarg.h: To...
+        * include/c_std/std_cstddef.h: To...
+        * include/c_std/std_cstdio.h: To...
+        * include/c_std/std_cstdlib.h: To...
+        * include/c_std/std_cstring.h: To...
+        * include/c_std/std_ctime.h: To...
+        * include/c_std/std_cwchar.h: To...
+        * include/c_std/std_cwctype.h: To...
+        * include/c_std/cassert: ...this.
+        * include/c_std/cctype: ...this.
+        * include/c_std/cerrno: ...this.
+        * include/c_std/cfloat: ...this.
+        * include/c_std/ciso646: ...this.
+        * include/c_std/climits: ...this.
+        * include/c_std/clocale: ...this.
+        * include/c_std/cmath: ...this.
+        * include/c_std/csetjmp: ...this.
+        * include/c_std/csignal: ...this.
+        * include/c_std/cstdarg: ...this.
+        * include/c_std/cstddef: ...this.
+        * include/c_std/cstdio: ...this.
+        * include/c_std/cstdlib: ...this.
+        * include/c_std/cstring: ...this.
+        * include/c_std/ctime: ...this.
+        * include/c_std/cwchar: ...this.
+        * include/c_std/cwctype: ...this.
+
+        * include/c/std_cassert.h: To...
+        * include/c/std_cctype.h: To...
+        * include/c/std_cerrno.h: To...
+        * include/c/std_cfloat.h: To...
+        * include/c/std_ciso646.h: To...
+        * include/c/std_climits.h: To...
+        * include/c/std_clocale.h: To...
+        * include/c/std_cmath.h: To...
+        * include/c/std_csetjmp.h: To...
+        * include/c/std_csignal.h: To...
+        * include/c/std_cstdarg.h: To...
+        * include/c/std_cstddef.h: To...
+        * include/c/std_cstdio.h: To...
+        * include/c/std_cstdlib.h: To...
+        * include/c/std_cstring.h: To...
+        * include/c/std_ctime.h: To...
+        * include/c/std_cwchar.h: To...
+        * include/c/std_cwctype.h: To...
+        * include/c/cassert: ...this.
+        * include/c/cctype: ...this.
+        * include/c/cerrno: ...this.
+        * include/c/cfloat: ...this.
+        * include/c/ciso646: ...this.
+        * include/c/climits: ...this.
+        * include/c/clocale: ...this.
+        * include/c/cmath: ...this.
+        * include/c/csetjmp: ...this.
+        * include/c/csignal: ...this.
+        * include/c/cstdarg: ...this.
+        * include/c/cstddef: ...this.
+        * include/c/cstdio: ...this.
+        * include/c/cstdlib: ...this.
+        * include/c/cstring: ...this.
+        * include/c/ctime: ...this.
+        * include/c/cwchar: ...this.
+        * include/c/cwctype: ...this.
+
 2006-12-05  Benjamin Kosnik  <bkoz@redhat.com>
 
 	* include/bits/localefwd.h: Consistent @file placement, use
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 0979f650b369107281052929b9563be8725fc7fd..ae4e09e15dcdad3fb20507656430d7ae1ea8c607 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -31326,39 +31326,9 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-                      save_LDFLAGS="$LDFLAGS"
+                    save_LDFLAGS="$LDFLAGS"
       LDFLAGS="-static $LDFLAGS"
-      if test x$gcc_no_link = xyes; then
-  { { echo "$as_me:$LINENO: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&5
-echo "$as_me: error: Link tests are not allowed after GCC_NO_EXECUTABLES." >&2;}
-   { (exit 1); exit 1; }; }
-fi
-cat >conftest.$ac_ext <<_ACEOF
-int main() { return 0; }
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  if test "$cross_compiling" = yes; then
+      if test "$cross_compiling" = yes; then
   { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
 See \`config.log' for more details." >&5
 echo "$as_me: error: cannot run test program while cross compiling
@@ -31390,14 +31360,6 @@ have_tls=no
 fi
 rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
 fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-have_tls=yes
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
       LDFLAGS="$save_LDFLAGS"
 else
   echo "$as_me: program exited with status $ac_status" >&5
diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index d260e8ea96dbbde9d32f359dd0a138478a45f02b..a025da1acea9da70d293905dba9772cceb4f9053 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -28,66 +28,35 @@ include $(top_srcdir)/fragment.am
 std_srcdir = ${glibcxx_srcdir}/include/std
 std_builddir = .
 std_headers = \
-	${std_srcdir}/std_algorithm.h \
-	${std_srcdir}/std_bitset.h \
-	${std_srcdir}/std_complex.h \
-	${std_srcdir}/std_deque.h \
-	${std_srcdir}/std_fstream.h \
-	${std_srcdir}/std_functional.h \
-	${std_srcdir}/std_iomanip.h \
-	${std_srcdir}/std_ios.h \
-	${std_srcdir}/std_iosfwd.h \
-	${std_srcdir}/std_iostream.h \
-	${std_srcdir}/std_istream.h \
-	${std_srcdir}/std_iterator.h \
-	${std_srcdir}/std_limits.h \
-	${std_srcdir}/std_list.h \
-	${std_srcdir}/std_locale.h \
-	${std_srcdir}/std_map.h \
-	${std_srcdir}/std_memory.h \
-	${std_srcdir}/std_numeric.h \
-	${std_srcdir}/std_ostream.h \
-	${std_srcdir}/std_queue.h \
-	${std_srcdir}/std_set.h \
-	${std_srcdir}/std_sstream.h \
-	${std_srcdir}/std_stack.h \
-	${std_srcdir}/std_stdexcept.h \
-	${std_srcdir}/std_streambuf.h \
-	${std_srcdir}/std_string.h \
-	${std_srcdir}/std_utility.h \
-	${std_srcdir}/std_valarray.h \
-	${std_srcdir}/std_vector.h
-# Renamed at build time.
-std_headers_rename = \
-	algorithm \
-	bitset \
-	complex \
-	deque \
-	fstream \
-	functional \
-	iomanip \
-	ios \
-	iosfwd \
-	iostream \
-	istream \
-	iterator \
-	limits \
-	list \
-	locale \
-	map \
-	memory \
-	numeric \
-	ostream \
-	queue \
-	set \
-	sstream \
-	stack \
-	stdexcept \
-	streambuf \
-	string \
-	utility \
-	valarray \
-	vector
+	${std_srcdir}/algorithm \
+	${std_srcdir}/bitset \
+	${std_srcdir}/complex \
+	${std_srcdir}/deque \
+	${std_srcdir}/fstream \
+	${std_srcdir}/functional \
+	${std_srcdir}/iomanip \
+	${std_srcdir}/ios \
+	${std_srcdir}/iosfwd \
+	${std_srcdir}/iostream \
+	${std_srcdir}/istream \
+	${std_srcdir}/iterator \
+	${std_srcdir}/limits \
+	${std_srcdir}/list \
+	${std_srcdir}/locale \
+	${std_srcdir}/map \
+	${std_srcdir}/memory \
+	${std_srcdir}/numeric \
+	${std_srcdir}/ostream \
+	${std_srcdir}/queue \
+	${std_srcdir}/set \
+	${std_srcdir}/sstream \
+	${std_srcdir}/stack \
+	${std_srcdir}/stdexcept \
+	${std_srcdir}/streambuf \
+	${std_srcdir}/string \
+	${std_srcdir}/utility \
+	${std_srcdir}/valarray \
+	${std_srcdir}/vector
 
 bits_srcdir = ${glibcxx_srcdir}/include/bits
 bits_builddir = ./bits
@@ -614,43 +583,24 @@ tr1_headers = \
 c_base_srcdir = $(C_INCLUDE_DIR)
 c_base_builddir = .
 c_base_headers = \
-	${c_base_srcdir}/std_cassert.h \
-	${c_base_srcdir}/std_cctype.h \
-	${c_base_srcdir}/std_cerrno.h \
-	${c_base_srcdir}/std_cfloat.h \
-	${c_base_srcdir}/std_ciso646.h \
-	${c_base_srcdir}/std_climits.h \
-	${c_base_srcdir}/std_clocale.h \
-	${c_base_srcdir}/std_cmath.h \
-	${c_base_srcdir}/std_csetjmp.h \
-	${c_base_srcdir}/std_csignal.h \
-	${c_base_srcdir}/std_cstdarg.h \
-	${c_base_srcdir}/std_cstddef.h \
-	${c_base_srcdir}/std_cstdio.h \
-	${c_base_srcdir}/std_cstdlib.h \
-	${c_base_srcdir}/std_cstring.h \
-	${c_base_srcdir}/std_ctime.h \
-	${c_base_srcdir}/std_cwchar.h \
-	${c_base_srcdir}/std_cwctype.h
-c_base_headers_rename = \
-	cassert \
-	cctype \
-	cerrno \
-	cfloat \
-	ciso646 \
-	climits \
-	clocale \
-	cmath \
-	csetjmp \
-	csignal \
-	cstdarg \
-	cstddef \
-	cstdio \
-	cstdlib \
-	cstring \
-	ctime \
-	cwchar \
-	cwctype
+	${c_base_srcdir}/cassert \
+	${c_base_srcdir}/cctype \
+	${c_base_srcdir}/cerrno \
+	${c_base_srcdir}/cfloat \
+	${c_base_srcdir}/ciso646 \
+	${c_base_srcdir}/climits \
+	${c_base_srcdir}/clocale \
+	${c_base_srcdir}/cmath \
+	${c_base_srcdir}/csetjmp \
+	${c_base_srcdir}/csignal \
+	${c_base_srcdir}/cstdarg \
+	${c_base_srcdir}/cstddef \
+	${c_base_srcdir}/cstdio \
+	${c_base_srcdir}/cstdlib \
+	${c_base_srcdir}/cstring \
+	${c_base_srcdir}/ctime \
+	${c_base_srcdir}/cwchar \
+	${c_base_srcdir}/cwctype
 
 # "C" compatibility headers.
 c_compatibility_srcdir = ${glibcxx_srcdir}/include/c_compatibility
@@ -794,8 +744,9 @@ endif
 # List of all timestamp files.  By keeping only one copy of this list, both
 # CLEANFILES and all-local are kept up-to-date.
 allstamped = \
-	stamp-std stamp-bits stamp-c_base stamp-c_compatibility \
-	stamp-backward stamp-ext stamp-pb stamp-tr1 stamp-debug stamp-host
+	stamp-std stamp-bits stamp-c_base stamp-c_base_extra \
+	stamp-c_compatibility  stamp-backward stamp-ext stamp-pb \
+	stamp-tr1 stamp-debug stamp-host
 
 # List of all files that are created by explicit building, editing, or
 # catenation.
@@ -814,10 +765,7 @@ stamp-std: ${std_headers}
 	  mkdir -p ${std_builddir} ;\
 	fi ;\
 	if [ ! -f stamp-std ]; then \
-	  (cd ${std_builddir} && for h in $?; do \
-	    build_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\
-	    $(LN_S) $$h ./$${build_name} || true ;\
-	  done) ;\
+	  (cd ${std_builddir} && $(LN_S) $? . || true) ;\
 	fi ;\
 	$(STAMP) stamp-std
 
@@ -830,21 +778,24 @@ stamp-bits: ${bits_headers}
 	fi ;\
 	$(STAMP) stamp-bits
 
-stamp-c_base: stamp-bits ${c_base_headers} ${c_base_headers_extra}
+stamp-c_base: ${c_base_headers} 
 	@if [ ! -d "${c_base_builddir}" ]; then \
 	  mkdir -p ${c_base_builddir} ;\
 	fi ;\
 	if [ ! -f stamp-c_base ]; then \
-	  (cd ${c_base_builddir} && for h in ${c_base_headers}; do \
-	    build_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\
-	    $(LN_S) $$h ./$${build_name} || true ;\
-	  done) ;\
-	  if [ ! -z "${c_base_headers_extra}" ]; then \
-	  (cd ${bits_builddir} && $(LN_S) ${c_base_headers_extra}  . || true) ;\
-	  fi ;\
+	  (cd ${c_base_builddir} && $(LN_S) $? . || true) ;\
 	fi ;\
 	$(STAMP) stamp-c_base
 
+stamp-c_base_extra: ${c_base_headers_extra}
+	@if [ ! -d "${bits_builddir}" ]; then \
+	  mkdir -p ${bits_builddir} ;\
+	fi ;\
+	if [ ! -f stamp-c_base_extra ]; then \
+	  (cd ${bits_builddir} && $(LN_S) $? . || true) ;\
+	fi ;\
+	$(STAMP) stamp-c_base_extra
+
 stamp-c_compatibility: ${c_compatibility_headers_extra}
 	@if [ ! -d "${c_compatibility_builddir}" ]; then \
 	  mkdir -p ${c_compatibility_builddir} ;\
@@ -1160,8 +1111,8 @@ install-headers:
 	for file in ${tr1_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${tr1_builddir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
-	for file in ${c_base_headers_rename}; do \
-	  $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
+	for file in ${c_base_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
 	c_base_headers_extra_install='$(c_base_headers_extra)';\
 	for file in $$c_base_headers_extra_install; do \
 	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
@@ -1169,8 +1120,8 @@ install-headers:
 	for file in $$c_compatibility_headers_install; do \
 	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
-	for file in ${std_headers_rename}; do \
-	  $(INSTALL_DATA) ${std_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
+	for file in ${std_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir}
 	for file in ${debug_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done
@@ -1201,6 +1152,8 @@ clean-local:
 # developer tries to create them via make in the include build
 # directory. (This is more of an example of how this kind of rule can
 # be made.)
-.PRECIOUS: $(std_headers_rename) $(c_base_headers_rename)
-$(std_headers_rename): ; @:
-$(c_base_headers_rename): ; @:
+.PRECIOUS: $(std_headers) $(c_base_headers) $(tr1_headers) $(ext_headers)
+$(std_headers): ; @:
+$(c_base_headers): ; @:
+$(tr1_headers): ; @:
+$(ext_headers): ; @:
diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in
index 80b1cebcb45d480186fcee5335980ea1e39cd376..3d4f0fe28511e8c67b893ccf90f356609174e96f 100644
--- a/libstdc++-v3/include/Makefile.in
+++ b/libstdc++-v3/include/Makefile.in
@@ -253,67 +253,35 @@ AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
 std_srcdir = ${glibcxx_srcdir}/include/std
 std_builddir = .
 std_headers = \
-	${std_srcdir}/std_algorithm.h \
-	${std_srcdir}/std_bitset.h \
-	${std_srcdir}/std_complex.h \
-	${std_srcdir}/std_deque.h \
-	${std_srcdir}/std_fstream.h \
-	${std_srcdir}/std_functional.h \
-	${std_srcdir}/std_iomanip.h \
-	${std_srcdir}/std_ios.h \
-	${std_srcdir}/std_iosfwd.h \
-	${std_srcdir}/std_iostream.h \
-	${std_srcdir}/std_istream.h \
-	${std_srcdir}/std_iterator.h \
-	${std_srcdir}/std_limits.h \
-	${std_srcdir}/std_list.h \
-	${std_srcdir}/std_locale.h \
-	${std_srcdir}/std_map.h \
-	${std_srcdir}/std_memory.h \
-	${std_srcdir}/std_numeric.h \
-	${std_srcdir}/std_ostream.h \
-	${std_srcdir}/std_queue.h \
-	${std_srcdir}/std_set.h \
-	${std_srcdir}/std_sstream.h \
-	${std_srcdir}/std_stack.h \
-	${std_srcdir}/std_stdexcept.h \
-	${std_srcdir}/std_streambuf.h \
-	${std_srcdir}/std_string.h \
-	${std_srcdir}/std_utility.h \
-	${std_srcdir}/std_valarray.h \
-	${std_srcdir}/std_vector.h
-
-# Renamed at build time.
-std_headers_rename = \
-	algorithm \
-	bitset \
-	complex \
-	deque \
-	fstream \
-	functional \
-	iomanip \
-	ios \
-	iosfwd \
-	iostream \
-	istream \
-	iterator \
-	limits \
-	list \
-	locale \
-	map \
-	memory \
-	numeric \
-	ostream \
-	queue \
-	set \
-	sstream \
-	stack \
-	stdexcept \
-	streambuf \
-	string \
-	utility \
-	valarray \
-	vector
+	${std_srcdir}/algorithm \
+	${std_srcdir}/bitset \
+	${std_srcdir}/complex \
+	${std_srcdir}/deque \
+	${std_srcdir}/fstream \
+	${std_srcdir}/functional \
+	${std_srcdir}/iomanip \
+	${std_srcdir}/ios \
+	${std_srcdir}/iosfwd \
+	${std_srcdir}/iostream \
+	${std_srcdir}/istream \
+	${std_srcdir}/iterator \
+	${std_srcdir}/limits \
+	${std_srcdir}/list \
+	${std_srcdir}/locale \
+	${std_srcdir}/map \
+	${std_srcdir}/memory \
+	${std_srcdir}/numeric \
+	${std_srcdir}/ostream \
+	${std_srcdir}/queue \
+	${std_srcdir}/set \
+	${std_srcdir}/sstream \
+	${std_srcdir}/stack \
+	${std_srcdir}/stdexcept \
+	${std_srcdir}/streambuf \
+	${std_srcdir}/string \
+	${std_srcdir}/utility \
+	${std_srcdir}/valarray \
+	${std_srcdir}/vector
 
 bits_srcdir = ${glibcxx_srcdir}/include/bits
 bits_builddir = ./bits
@@ -835,44 +803,24 @@ tr1_headers = \
 c_base_srcdir = $(C_INCLUDE_DIR)
 c_base_builddir = .
 c_base_headers = \
-	${c_base_srcdir}/std_cassert.h \
-	${c_base_srcdir}/std_cctype.h \
-	${c_base_srcdir}/std_cerrno.h \
-	${c_base_srcdir}/std_cfloat.h \
-	${c_base_srcdir}/std_ciso646.h \
-	${c_base_srcdir}/std_climits.h \
-	${c_base_srcdir}/std_clocale.h \
-	${c_base_srcdir}/std_cmath.h \
-	${c_base_srcdir}/std_csetjmp.h \
-	${c_base_srcdir}/std_csignal.h \
-	${c_base_srcdir}/std_cstdarg.h \
-	${c_base_srcdir}/std_cstddef.h \
-	${c_base_srcdir}/std_cstdio.h \
-	${c_base_srcdir}/std_cstdlib.h \
-	${c_base_srcdir}/std_cstring.h \
-	${c_base_srcdir}/std_ctime.h \
-	${c_base_srcdir}/std_cwchar.h \
-	${c_base_srcdir}/std_cwctype.h
-
-c_base_headers_rename = \
-	cassert \
-	cctype \
-	cerrno \
-	cfloat \
-	ciso646 \
-	climits \
-	clocale \
-	cmath \
-	csetjmp \
-	csignal \
-	cstdarg \
-	cstddef \
-	cstdio \
-	cstdlib \
-	cstring \
-	ctime \
-	cwchar \
-	cwctype
+	${c_base_srcdir}/cassert \
+	${c_base_srcdir}/cctype \
+	${c_base_srcdir}/cerrno \
+	${c_base_srcdir}/cfloat \
+	${c_base_srcdir}/ciso646 \
+	${c_base_srcdir}/climits \
+	${c_base_srcdir}/clocale \
+	${c_base_srcdir}/cmath \
+	${c_base_srcdir}/csetjmp \
+	${c_base_srcdir}/csignal \
+	${c_base_srcdir}/cstdarg \
+	${c_base_srcdir}/cstddef \
+	${c_base_srcdir}/cstdio \
+	${c_base_srcdir}/cstdlib \
+	${c_base_srcdir}/cstring \
+	${c_base_srcdir}/ctime \
+	${c_base_srcdir}/cwchar \
+	${c_base_srcdir}/cwctype
 
 
 # "C" compatibility headers.
@@ -1007,8 +955,9 @@ PCHFLAGS = -Winvalid-pch -Wno-deprecated -x c++-header $(CXXFLAGS)
 # List of all timestamp files.  By keeping only one copy of this list, both
 # CLEANFILES and all-local are kept up-to-date.
 allstamped = \
-	stamp-std stamp-bits stamp-c_base stamp-c_compatibility \
-	stamp-backward stamp-ext stamp-pb stamp-tr1 stamp-debug stamp-host
+	stamp-std stamp-bits stamp-c_base stamp-c_base_extra \
+	stamp-c_compatibility  stamp-backward stamp-ext stamp-pb \
+	stamp-tr1 stamp-debug stamp-host
 
 
 # List of all files that are created by explicit building, editing, or
@@ -1197,10 +1146,7 @@ stamp-std: ${std_headers}
 	  mkdir -p ${std_builddir} ;\
 	fi ;\
 	if [ ! -f stamp-std ]; then \
-	  (cd ${std_builddir} && for h in $?; do \
-	    build_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\
-	    $(LN_S) $$h ./$${build_name} || true ;\
-	  done) ;\
+	  (cd ${std_builddir} && $(LN_S) $? . || true) ;\
 	fi ;\
 	$(STAMP) stamp-std
 
@@ -1213,21 +1159,24 @@ stamp-bits: ${bits_headers}
 	fi ;\
 	$(STAMP) stamp-bits
 
-stamp-c_base: stamp-bits ${c_base_headers} ${c_base_headers_extra}
+stamp-c_base: ${c_base_headers} 
 	@if [ ! -d "${c_base_builddir}" ]; then \
 	  mkdir -p ${c_base_builddir} ;\
 	fi ;\
 	if [ ! -f stamp-c_base ]; then \
-	  (cd ${c_base_builddir} && for h in ${c_base_headers}; do \
-	    build_name=`echo $$h | sed -e 's,.*/std_,,' -e 's,\.h$$,,'` ;\
-	    $(LN_S) $$h ./$${build_name} || true ;\
-	  done) ;\
-	  if [ ! -z "${c_base_headers_extra}" ]; then \
-	  (cd ${bits_builddir} && $(LN_S) ${c_base_headers_extra}  . || true) ;\
-	  fi ;\
+	  (cd ${c_base_builddir} && $(LN_S) $? . || true) ;\
 	fi ;\
 	$(STAMP) stamp-c_base
 
+stamp-c_base_extra: ${c_base_headers_extra}
+	@if [ ! -d "${bits_builddir}" ]; then \
+	  mkdir -p ${bits_builddir} ;\
+	fi ;\
+	if [ ! -f stamp-c_base_extra ]; then \
+	  (cd ${bits_builddir} && $(LN_S) $? . || true) ;\
+	fi ;\
+	$(STAMP) stamp-c_base_extra
+
 stamp-c_compatibility: ${c_compatibility_headers_extra}
 	@if [ ! -d "${c_compatibility_builddir}" ]; then \
 	  mkdir -p ${c_compatibility_builddir} ;\
@@ -1531,8 +1480,8 @@ install-headers:
 	for file in ${tr1_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${tr1_builddir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
-	for file in ${c_base_headers_rename}; do \
-	  $(INSTALL_DATA) ${c_base_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
+	for file in ${c_base_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
 	c_base_headers_extra_install='$(c_base_headers_extra)';\
 	for file in $$c_base_headers_extra_install; do \
 	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}/${bits_builddir}; done
@@ -1540,8 +1489,8 @@ install-headers:
 	for file in $$c_compatibility_headers_install; do \
 	  $(INSTALL_DATA) $$file $(DESTDIR)${gxx_include_dir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
-	for file in ${std_headers_rename}; do \
-	  $(INSTALL_DATA) ${std_builddir}/$${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
+	for file in ${std_headers}; do \
+	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${std_builddir}; done
 	$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${debug_builddir}
 	for file in ${debug_headers}; do \
 	  $(INSTALL_DATA) $${file} $(DESTDIR)${gxx_include_dir}/${debug_builddir}; done
@@ -1569,9 +1518,11 @@ clean-local:
 # developer tries to create them via make in the include build
 # directory. (This is more of an example of how this kind of rule can
 # be made.)
-.PRECIOUS: $(std_headers_rename) $(c_base_headers_rename)
-$(std_headers_rename): ; @:
-$(c_base_headers_rename): ; @:
+.PRECIOUS: $(std_headers) $(c_base_headers) $(tr1_headers) $(ext_headers)
+$(std_headers): ; @:
+$(c_base_headers): ; @:
+$(tr1_headers): ; @:
+$(ext_headers): ; @:
 # 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:
diff --git a/libstdc++-v3/include/c/std_cassert.h b/libstdc++-v3/include/c/cassert
similarity index 100%
rename from libstdc++-v3/include/c/std_cassert.h
rename to libstdc++-v3/include/c/cassert
diff --git a/libstdc++-v3/include/c/std_cctype.h b/libstdc++-v3/include/c/cctype
similarity index 100%
rename from libstdc++-v3/include/c/std_cctype.h
rename to libstdc++-v3/include/c/cctype
diff --git a/libstdc++-v3/include/c/std_cerrno.h b/libstdc++-v3/include/c/cerrno
similarity index 100%
rename from libstdc++-v3/include/c/std_cerrno.h
rename to libstdc++-v3/include/c/cerrno
diff --git a/libstdc++-v3/include/c/std_cfloat.h b/libstdc++-v3/include/c/cfloat
similarity index 100%
rename from libstdc++-v3/include/c/std_cfloat.h
rename to libstdc++-v3/include/c/cfloat
diff --git a/libstdc++-v3/include/c/std_ciso646.h b/libstdc++-v3/include/c/ciso646
similarity index 100%
rename from libstdc++-v3/include/c/std_ciso646.h
rename to libstdc++-v3/include/c/ciso646
diff --git a/libstdc++-v3/include/c/std_climits.h b/libstdc++-v3/include/c/climits
similarity index 100%
rename from libstdc++-v3/include/c/std_climits.h
rename to libstdc++-v3/include/c/climits
diff --git a/libstdc++-v3/include/c/std_clocale.h b/libstdc++-v3/include/c/clocale
similarity index 100%
rename from libstdc++-v3/include/c/std_clocale.h
rename to libstdc++-v3/include/c/clocale
diff --git a/libstdc++-v3/include/c/std_cmath.h b/libstdc++-v3/include/c/cmath
similarity index 100%
rename from libstdc++-v3/include/c/std_cmath.h
rename to libstdc++-v3/include/c/cmath
diff --git a/libstdc++-v3/include/c/std_csetjmp.h b/libstdc++-v3/include/c/csetjmp
similarity index 100%
rename from libstdc++-v3/include/c/std_csetjmp.h
rename to libstdc++-v3/include/c/csetjmp
diff --git a/libstdc++-v3/include/c/std_csignal.h b/libstdc++-v3/include/c/csignal
similarity index 100%
rename from libstdc++-v3/include/c/std_csignal.h
rename to libstdc++-v3/include/c/csignal
diff --git a/libstdc++-v3/include/c/std_cstdarg.h b/libstdc++-v3/include/c/cstdarg
similarity index 100%
rename from libstdc++-v3/include/c/std_cstdarg.h
rename to libstdc++-v3/include/c/cstdarg
diff --git a/libstdc++-v3/include/c/std_cstddef.h b/libstdc++-v3/include/c/cstddef
similarity index 100%
rename from libstdc++-v3/include/c/std_cstddef.h
rename to libstdc++-v3/include/c/cstddef
diff --git a/libstdc++-v3/include/c/std_cstdio.h b/libstdc++-v3/include/c/cstdio
similarity index 100%
rename from libstdc++-v3/include/c/std_cstdio.h
rename to libstdc++-v3/include/c/cstdio
diff --git a/libstdc++-v3/include/c/std_cstdlib.h b/libstdc++-v3/include/c/cstdlib
similarity index 100%
rename from libstdc++-v3/include/c/std_cstdlib.h
rename to libstdc++-v3/include/c/cstdlib
diff --git a/libstdc++-v3/include/c/std_cstring.h b/libstdc++-v3/include/c/cstring
similarity index 100%
rename from libstdc++-v3/include/c/std_cstring.h
rename to libstdc++-v3/include/c/cstring
diff --git a/libstdc++-v3/include/c/std_ctime.h b/libstdc++-v3/include/c/ctime
similarity index 100%
rename from libstdc++-v3/include/c/std_ctime.h
rename to libstdc++-v3/include/c/ctime
diff --git a/libstdc++-v3/include/c/std_cwchar.h b/libstdc++-v3/include/c/cwchar
similarity index 100%
rename from libstdc++-v3/include/c/std_cwchar.h
rename to libstdc++-v3/include/c/cwchar
diff --git a/libstdc++-v3/include/c/std_cwctype.h b/libstdc++-v3/include/c/cwctype
similarity index 100%
rename from libstdc++-v3/include/c/std_cwctype.h
rename to libstdc++-v3/include/c/cwctype
diff --git a/libstdc++-v3/include/c_std/std_cassert.h b/libstdc++-v3/include/c_std/cassert
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cassert.h
rename to libstdc++-v3/include/c_std/cassert
diff --git a/libstdc++-v3/include/c_std/std_cctype.h b/libstdc++-v3/include/c_std/cctype
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cctype.h
rename to libstdc++-v3/include/c_std/cctype
diff --git a/libstdc++-v3/include/c_std/std_cerrno.h b/libstdc++-v3/include/c_std/cerrno
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cerrno.h
rename to libstdc++-v3/include/c_std/cerrno
diff --git a/libstdc++-v3/include/c_std/std_cfloat.h b/libstdc++-v3/include/c_std/cfloat
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cfloat.h
rename to libstdc++-v3/include/c_std/cfloat
diff --git a/libstdc++-v3/include/c_std/std_ciso646.h b/libstdc++-v3/include/c_std/ciso646
similarity index 100%
rename from libstdc++-v3/include/c_std/std_ciso646.h
rename to libstdc++-v3/include/c_std/ciso646
diff --git a/libstdc++-v3/include/c_std/std_climits.h b/libstdc++-v3/include/c_std/climits
similarity index 100%
rename from libstdc++-v3/include/c_std/std_climits.h
rename to libstdc++-v3/include/c_std/climits
diff --git a/libstdc++-v3/include/c_std/std_clocale.h b/libstdc++-v3/include/c_std/clocale
similarity index 100%
rename from libstdc++-v3/include/c_std/std_clocale.h
rename to libstdc++-v3/include/c_std/clocale
diff --git a/libstdc++-v3/include/c_std/std_cmath.h b/libstdc++-v3/include/c_std/cmath
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cmath.h
rename to libstdc++-v3/include/c_std/cmath
diff --git a/libstdc++-v3/include/c_std/std_csetjmp.h b/libstdc++-v3/include/c_std/csetjmp
similarity index 100%
rename from libstdc++-v3/include/c_std/std_csetjmp.h
rename to libstdc++-v3/include/c_std/csetjmp
diff --git a/libstdc++-v3/include/c_std/std_csignal.h b/libstdc++-v3/include/c_std/csignal
similarity index 100%
rename from libstdc++-v3/include/c_std/std_csignal.h
rename to libstdc++-v3/include/c_std/csignal
diff --git a/libstdc++-v3/include/c_std/std_cstdarg.h b/libstdc++-v3/include/c_std/cstdarg
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cstdarg.h
rename to libstdc++-v3/include/c_std/cstdarg
diff --git a/libstdc++-v3/include/c_std/std_cstddef.h b/libstdc++-v3/include/c_std/cstddef
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cstddef.h
rename to libstdc++-v3/include/c_std/cstddef
diff --git a/libstdc++-v3/include/c_std/std_cstdio.h b/libstdc++-v3/include/c_std/cstdio
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cstdio.h
rename to libstdc++-v3/include/c_std/cstdio
diff --git a/libstdc++-v3/include/c_std/std_cstdlib.h b/libstdc++-v3/include/c_std/cstdlib
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cstdlib.h
rename to libstdc++-v3/include/c_std/cstdlib
diff --git a/libstdc++-v3/include/c_std/std_cstring.h b/libstdc++-v3/include/c_std/cstring
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cstring.h
rename to libstdc++-v3/include/c_std/cstring
diff --git a/libstdc++-v3/include/c_std/std_ctime.h b/libstdc++-v3/include/c_std/ctime
similarity index 100%
rename from libstdc++-v3/include/c_std/std_ctime.h
rename to libstdc++-v3/include/c_std/ctime
diff --git a/libstdc++-v3/include/c_std/std_cwchar.h b/libstdc++-v3/include/c_std/cwchar
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cwchar.h
rename to libstdc++-v3/include/c_std/cwchar
diff --git a/libstdc++-v3/include/c_std/std_cwctype.h b/libstdc++-v3/include/c_std/cwctype
similarity index 100%
rename from libstdc++-v3/include/c_std/std_cwctype.h
rename to libstdc++-v3/include/c_std/cwctype
diff --git a/libstdc++-v3/include/std/std_algorithm.h b/libstdc++-v3/include/std/algorithm
similarity index 100%
rename from libstdc++-v3/include/std/std_algorithm.h
rename to libstdc++-v3/include/std/algorithm
diff --git a/libstdc++-v3/include/std/std_bitset.h b/libstdc++-v3/include/std/bitset
similarity index 100%
rename from libstdc++-v3/include/std/std_bitset.h
rename to libstdc++-v3/include/std/bitset
diff --git a/libstdc++-v3/include/std/std_complex.h b/libstdc++-v3/include/std/complex
similarity index 100%
rename from libstdc++-v3/include/std/std_complex.h
rename to libstdc++-v3/include/std/complex
diff --git a/libstdc++-v3/include/std/std_deque.h b/libstdc++-v3/include/std/deque
similarity index 100%
rename from libstdc++-v3/include/std/std_deque.h
rename to libstdc++-v3/include/std/deque
diff --git a/libstdc++-v3/include/std/std_fstream.h b/libstdc++-v3/include/std/fstream
similarity index 100%
rename from libstdc++-v3/include/std/std_fstream.h
rename to libstdc++-v3/include/std/fstream
diff --git a/libstdc++-v3/include/std/std_functional.h b/libstdc++-v3/include/std/functional
similarity index 100%
rename from libstdc++-v3/include/std/std_functional.h
rename to libstdc++-v3/include/std/functional
diff --git a/libstdc++-v3/include/std/std_iomanip.h b/libstdc++-v3/include/std/iomanip
similarity index 100%
rename from libstdc++-v3/include/std/std_iomanip.h
rename to libstdc++-v3/include/std/iomanip
diff --git a/libstdc++-v3/include/std/std_ios.h b/libstdc++-v3/include/std/ios
similarity index 100%
rename from libstdc++-v3/include/std/std_ios.h
rename to libstdc++-v3/include/std/ios
diff --git a/libstdc++-v3/include/std/std_iosfwd.h b/libstdc++-v3/include/std/iosfwd
similarity index 100%
rename from libstdc++-v3/include/std/std_iosfwd.h
rename to libstdc++-v3/include/std/iosfwd
diff --git a/libstdc++-v3/include/std/std_iostream.h b/libstdc++-v3/include/std/iostream
similarity index 100%
rename from libstdc++-v3/include/std/std_iostream.h
rename to libstdc++-v3/include/std/iostream
diff --git a/libstdc++-v3/include/std/std_istream.h b/libstdc++-v3/include/std/istream
similarity index 100%
rename from libstdc++-v3/include/std/std_istream.h
rename to libstdc++-v3/include/std/istream
diff --git a/libstdc++-v3/include/std/std_iterator.h b/libstdc++-v3/include/std/iterator
similarity index 100%
rename from libstdc++-v3/include/std/std_iterator.h
rename to libstdc++-v3/include/std/iterator
diff --git a/libstdc++-v3/include/std/std_limits.h b/libstdc++-v3/include/std/limits
similarity index 100%
rename from libstdc++-v3/include/std/std_limits.h
rename to libstdc++-v3/include/std/limits
diff --git a/libstdc++-v3/include/std/std_list.h b/libstdc++-v3/include/std/list
similarity index 100%
rename from libstdc++-v3/include/std/std_list.h
rename to libstdc++-v3/include/std/list
diff --git a/libstdc++-v3/include/std/std_locale.h b/libstdc++-v3/include/std/locale
similarity index 100%
rename from libstdc++-v3/include/std/std_locale.h
rename to libstdc++-v3/include/std/locale
diff --git a/libstdc++-v3/include/std/std_map.h b/libstdc++-v3/include/std/map
similarity index 100%
rename from libstdc++-v3/include/std/std_map.h
rename to libstdc++-v3/include/std/map
diff --git a/libstdc++-v3/include/std/std_memory.h b/libstdc++-v3/include/std/memory
similarity index 100%
rename from libstdc++-v3/include/std/std_memory.h
rename to libstdc++-v3/include/std/memory
diff --git a/libstdc++-v3/include/std/std_numeric.h b/libstdc++-v3/include/std/numeric
similarity index 100%
rename from libstdc++-v3/include/std/std_numeric.h
rename to libstdc++-v3/include/std/numeric
diff --git a/libstdc++-v3/include/std/std_ostream.h b/libstdc++-v3/include/std/ostream
similarity index 100%
rename from libstdc++-v3/include/std/std_ostream.h
rename to libstdc++-v3/include/std/ostream
diff --git a/libstdc++-v3/include/std/std_queue.h b/libstdc++-v3/include/std/queue
similarity index 100%
rename from libstdc++-v3/include/std/std_queue.h
rename to libstdc++-v3/include/std/queue
diff --git a/libstdc++-v3/include/std/std_set.h b/libstdc++-v3/include/std/set
similarity index 100%
rename from libstdc++-v3/include/std/std_set.h
rename to libstdc++-v3/include/std/set
diff --git a/libstdc++-v3/include/std/std_sstream.h b/libstdc++-v3/include/std/sstream
similarity index 100%
rename from libstdc++-v3/include/std/std_sstream.h
rename to libstdc++-v3/include/std/sstream
diff --git a/libstdc++-v3/include/std/std_stack.h b/libstdc++-v3/include/std/stack
similarity index 100%
rename from libstdc++-v3/include/std/std_stack.h
rename to libstdc++-v3/include/std/stack
diff --git a/libstdc++-v3/include/std/std_stdexcept.h b/libstdc++-v3/include/std/stdexcept
similarity index 100%
rename from libstdc++-v3/include/std/std_stdexcept.h
rename to libstdc++-v3/include/std/stdexcept
diff --git a/libstdc++-v3/include/std/std_streambuf.h b/libstdc++-v3/include/std/streambuf
similarity index 100%
rename from libstdc++-v3/include/std/std_streambuf.h
rename to libstdc++-v3/include/std/streambuf
diff --git a/libstdc++-v3/include/std/std_string.h b/libstdc++-v3/include/std/string
similarity index 100%
rename from libstdc++-v3/include/std/std_string.h
rename to libstdc++-v3/include/std/string
diff --git a/libstdc++-v3/include/std/std_utility.h b/libstdc++-v3/include/std/utility
similarity index 100%
rename from libstdc++-v3/include/std/std_utility.h
rename to libstdc++-v3/include/std/utility
diff --git a/libstdc++-v3/include/std/std_valarray.h b/libstdc++-v3/include/std/valarray
similarity index 100%
rename from libstdc++-v3/include/std/std_valarray.h
rename to libstdc++-v3/include/std/valarray
diff --git a/libstdc++-v3/include/std/std_vector.h b/libstdc++-v3/include/std/vector
similarity index 100%
rename from libstdc++-v3/include/std/std_vector.h
rename to libstdc++-v3/include/std/vector