diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d393cf7925269d77bc0bc1f2c1dd52808faf48e5..a09e85f324d76d831fa3e75b391732a47809b430 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,22 @@
+2000-12-23  Benjamin Kosnik  <bkoz@redhat.com>
+
+	* src/Makefile.am (CSTD_INCLUDES): Change from CSHADOW_INCLUDES.
+	(strstream.cc): Add special rule for deprecated files.
+	* libsupc++/Makefile.am (INCLUDES): Sync.
+	* acinclude.m4 (GLIBCPP_EXPORT_INCLUDES): And here.
+
+	Reported by Fred Fish  <fnf@ninemoons.com>
+	* include/backward/iomanip.h: Remove backward from include
+	* include/backward/strstream.h: Same.
+	* include/backward/stream.h: Same.
+	* include/backward/ostream.h: Same.
+	* include/backward/istream.h: Same.
+	* src/strstream.cc: And here.
+
+	Reported by  Brad Garcia  <bgarcia@laurelnetworks.com>
+	* src/string-inst.cc (_S_find): Use generic template.
+	* include/bits/string.tcc (_S_find): Remove specializations
+	
 2000-12-22  Benjamin Kosnik  <bkoz@fillmore.redhat.com>
 
 	Attempt to make locale visible in gdb.
diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
index 5828c9a7ae47fe4214871be2a75920227864a6a8..8402499faccea19462f2b7646bb69ebb536169e1 100644
--- a/libstdc++-v3/Makefile.in
+++ b/libstdc++-v3/Makefile.in
@@ -68,7 +68,7 @@ AS = @AS@
 CC = @CC@
 CPP = @CPP@
 CSHADOW_FLAGS = @CSHADOW_FLAGS@
-CSHADOW_INCLUDES = @CSHADOW_INCLUDES@
+CSTD_INCLUDES = @CSTD_INCLUDES@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXX_libstdcxx = @CXX_libstdcxx@
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index 1cdc89354d020f5dbfdf0d6b334e6e75b9949c6c..74be39222f538c937bb698bfa8bfd8a147c0bbd6 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -1613,7 +1613,7 @@ AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
   #  CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
   #                   -I$(top_blddir)/cshadow'
   #else
-  CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
+  CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
   #endif
 
   # Now, export this to all the little Makefiles....
@@ -1622,7 +1622,7 @@ AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
   AC_SUBST(LIBMATH_INCLUDES)
   AC_SUBST(LIBSUPCXX_INCLUDES)
   AC_SUBST(LIBIO_INCLUDES)
-  AC_SUBST(CSHADOW_INCLUDES)
+  AC_SUBST(CSTD_INCLUDES)
 ])
 
 
diff --git a/libstdc++-v3/aclocal.m4 b/libstdc++-v3/aclocal.m4
index ff65e719f3ab1aedc355f34807a52a4234c16e1c..4c571698bf6494ca68cea8cea6068ec66f631142 100644
--- a/libstdc++-v3/aclocal.m4
+++ b/libstdc++-v3/aclocal.m4
@@ -1625,7 +1625,7 @@ AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
   #  CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
   #                   -I$(top_blddir)/cshadow'
   #else
-  CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
+  CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
   #endif
 
   # Now, export this to all the little Makefiles....
@@ -1634,7 +1634,7 @@ AC_DEFUN(GLIBCPP_EXPORT_INCLUDES, [
   AC_SUBST(LIBMATH_INCLUDES)
   AC_SUBST(LIBSUPCXX_INCLUDES)
   AC_SUBST(LIBIO_INCLUDES)
-  AC_SUBST(CSHADOW_INCLUDES)
+  AC_SUBST(CSTD_INCLUDES)
 ])
 
 
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 0e87b07d6cb0edd9516410ed24e230e9adc05576..6a5b9aa162eda56e32b99a5d66142979102e8d67 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -19781,7 +19781,7 @@ gxx_target_include_dir='$(exec_prefix)/$(target_alias)/include/g++-$(libstdcxx_i
   #  CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR) \
   #                   -I$(top_blddir)/cshadow'
   #else
-  CSHADOW_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
+  CSTD_INCLUDES='-I$(GLIBCPP_INCLUDE_DIR)/std -I$(C_INCLUDE_DIR)'
   #endif
 
   # Now, export this to all the little Makefiles....
@@ -20039,7 +20039,7 @@ s%@TOPLEVEL_INCLUDES@%$TOPLEVEL_INCLUDES%g
 s%@LIBMATH_INCLUDES@%$LIBMATH_INCLUDES%g
 s%@LIBSUPCXX_INCLUDES@%$LIBSUPCXX_INCLUDES%g
 s%@LIBIO_INCLUDES@%$LIBIO_INCLUDES%g
-s%@CSHADOW_INCLUDES@%$CSHADOW_INCLUDES%g
+s%@CSTD_INCLUDES@%$CSTD_INCLUDES%g
 s%@OPTIMIZE_CXXFLAGS@%$OPTIMIZE_CXXFLAGS%g
 s%@WARN_FLAGS@%$WARN_FLAGS%g
 
diff --git a/libstdc++-v3/include/backward/iomanip.h b/libstdc++-v3/include/backward/iomanip.h
index 76b209c1fd95ceb9b7105276e778322ee8302d05..432252c59141e8273ead9d0ad169c4f6bef65cc7 100644
--- a/libstdc++-v3/include/backward/iomanip.h
+++ b/libstdc++-v3/include/backward/iomanip.h
@@ -28,7 +28,7 @@
 #ifndef _CPP_BACKWARD_IOMANIP_H
 #define _CPP_BACKWARD_IOMANIP_H 1
 
-#include <backward/iostream.h>
+#include <iostream.h>
 #include <bits/std_iomanip.h>
 
 using std::resetiosflags;
diff --git a/libstdc++-v3/include/backward/istream.h b/libstdc++-v3/include/backward/istream.h
index c80c474565ffe48133affd44e8020dec200217ac..57ea07e95de3f860cb4abd3a9b167198fe394af8 100644
--- a/libstdc++-v3/include/backward/istream.h
+++ b/libstdc++-v3/include/backward/istream.h
@@ -28,7 +28,7 @@
 #ifndef _CPP_BACKWARD_ISTREAM_H
 #define _CPP_BACKWARD_ISTREAM_H 1
 
-#include <backward/iostream.h>
+#include <iostream.h>
 
 #endif
 
diff --git a/libstdc++-v3/include/backward/ostream.h b/libstdc++-v3/include/backward/ostream.h
index aa129b571e722690da7e70a2bcfcc5a41f1a57d5..7b4878563de11d3d0fd141f745f9ee11211908d5 100644
--- a/libstdc++-v3/include/backward/ostream.h
+++ b/libstdc++-v3/include/backward/ostream.h
@@ -28,7 +28,7 @@
 #ifndef _CPP_BACKWARD_OSTREAM_H
 #define _CPP_BACKWARD_OSTREAM_H 1
 
-#include <backward/iostream.h>
+#include <iostream.h>
 
 #endif 
 
diff --git a/libstdc++-v3/include/backward/stream.h b/libstdc++-v3/include/backward/stream.h
index 0207f693787ee682fc43f8c8b4f9f9aae3cdda3f..15c32b821f1abd167844815e94a537da6d05e733 100644
--- a/libstdc++-v3/include/backward/stream.h
+++ b/libstdc++-v3/include/backward/stream.h
@@ -28,7 +28,7 @@
 #ifndef _CPP_BACKWARD_STREAM_H
 #define _CPP_BACKWARD_STREAM_H 1
 
-#include <backward/iostream.h>
+#include <iostream.h>
 
 #endif 
 
diff --git a/libstdc++-v3/include/backward/strstream.h b/libstdc++-v3/include/backward/strstream.h
index 72fe529cfea43ecfac0b3ee21bcb15eab4e89f2a..3918141a14b06eb035ac4d873e9177469343ba3d 100644
--- a/libstdc++-v3/include/backward/strstream.h
+++ b/libstdc++-v3/include/backward/strstream.h
@@ -30,7 +30,7 @@
 #ifndef _CPP_BACKWARD_STRSTREAM_H
 #define _CPP_BACKWARD_STRSTREAM_H 1
 
-#include <backward/strstream>
+#include <strstream>
 
 using std::strstreambuf;
 using std::istrstream;
diff --git a/libstdc++-v3/include/bits/string.tcc b/libstdc++-v3/include/bits/string.tcc
index 386108d840575e4f49ad661ade34df9a7872e9f1..da43ae1be37e95d6a748be65f93dedb246c9d135 100644
--- a/libstdc++-v3/include/bits/string.tcc
+++ b/libstdc++-v3/include/bits/string.tcc
@@ -576,8 +576,6 @@ namespace std
     }
 
   // String operations
-  // NB: This is specialized for the standard char_traits<char>
-  // specialization to use the same optimizations as strchr.
   template<typename _CharT, typename _Traits, typename _Alloc>
     const _CharT*
     basic_string<_CharT, _Traits, _Alloc>::
@@ -586,18 +584,6 @@ namespace std
       return find_if(__beg, __end, _Char_traits_match<_CharT, _Traits>(__c));
     }
 
-  // Specialization for char, definitions in src/string-inst.cc.
-  template<>
-    const char* 
-    string::_S_find(const char* __beg, const char* __end, char __c);
-
-  // Specialization for wchar_t.
-#ifdef _GLIBCPP_USE_WCHAR_T
-  template<>
-    const wchar_t* 
-    wstring::_S_find(const wchar_t* __beg, const wchar_t* __end, wchar_t __c);
-#endif
-
   template<typename _CharT, typename _Traits, typename _Alloc>
     basic_string<_CharT, _Traits, _Alloc>::size_type
     basic_string<_CharT, _Traits, _Alloc>::
diff --git a/libstdc++-v3/libio/Makefile.in b/libstdc++-v3/libio/Makefile.in
index a80ad10e4c78fecee35fe94219bc17926a972822..8a05d158e7d2a75c8d6e68d041bddd6cdbdecb96 100644
--- a/libstdc++-v3/libio/Makefile.in
+++ b/libstdc++-v3/libio/Makefile.in
@@ -68,6 +68,7 @@ AS = @AS@
 CC = @CC@
 CPP = @CPP@
 CSHADOW_FLAGS = @CSHADOW_FLAGS@
+CSTD_INCLUDES = @CSTD_INCLUDES@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXX_libstdcxx = @CXX_libstdcxx@
diff --git a/libstdc++-v3/libmath/Makefile.in b/libstdc++-v3/libmath/Makefile.in
index 648f7d5e840de02081cec5ba68e0bae13eb0f5f6..88fd47da508cb28a660d9356efeb5c7e75b6aa0a 100644
--- a/libstdc++-v3/libmath/Makefile.in
+++ b/libstdc++-v3/libmath/Makefile.in
@@ -68,6 +68,7 @@ AS = @AS@
 CC = @CC@
 CPP = @CPP@
 CSHADOW_FLAGS = @CSHADOW_FLAGS@
+CSTD_INCLUDES = @CSTD_INCLUDES@
 CXX = @CXX@
 CXXCPP = @CXXCPP@
 CXX_libstdcxx = @CXX_libstdcxx@
diff --git a/libstdc++-v3/libsupc++/Makefile.am b/libstdc++-v3/libsupc++/Makefile.am
index 32386853eef587fa4a6f054ff20a116b4dd009a3..dfd8a6dec7cfa8d8c84f718f6531cb3aeb381dbd 100644
--- a/libstdc++-v3/libsupc++/Makefile.am
+++ b/libstdc++-v3/libsupc++/Makefile.am
@@ -65,16 +65,16 @@ WARN_CXXFLAGS = \
 # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
 GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@
 C_INCLUDE_DIR = @C_INCLUDE_DIR@
-TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+CSTD_INCLUDES = @CSTD_INCLUDES@
 LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
 LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
 LIBIO_INCLUDES = @LIBIO_INCLUDES@
-CSHADOW_INCLUDES = @CSHADOW_INCLUDES@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
 
 INCLUDES = \
 	-I$(top_srcdir)/../gcc -I$(top_srcdir)/../include \
-	$(CSHADOW_INCLUDES)  $(LIBSUPCXX_INCLUDES) -I$(GLIBCPP_INCLUDE_DIR) \
-	$(CONFIG_INCLUDES) -I$(top_builddir)/include
+	-I$(GLIBCPP_INCLUDE_DIR) $(CSTD_INCLUDES) -I$(top_builddir)/include \
+	 $(LIBSUPCXX_INCLUDES)
 
 headers = \
 	cxxabi.h exception new typeinfo
diff --git a/libstdc++-v3/libsupc++/Makefile.in b/libstdc++-v3/libsupc++/Makefile.in
index 0c1bb57b9e49fe1ec684206fd8a69e5c9e62f4b8..b05feb9692ac3cf611ceb0fa1b5627d3cad39945 100644
--- a/libstdc++-v3/libsupc++/Makefile.in
+++ b/libstdc++-v3/libsupc++/Makefile.in
@@ -143,13 +143,13 @@ WARN_CXXFLAGS =  	@WARN_FLAGS@ $(WERROR) @WFMT_FLAGS@
 # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
 GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@
 C_INCLUDE_DIR = @C_INCLUDE_DIR@
-TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+CSTD_INCLUDES = @CSTD_INCLUDES@
 LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
 LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
 LIBIO_INCLUDES = @LIBIO_INCLUDES@
-CSHADOW_INCLUDES = @CSHADOW_INCLUDES@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
 
-INCLUDES =  	-I$(top_srcdir)/../gcc -I$(top_srcdir)/../include 	$(CSHADOW_INCLUDES)  $(LIBSUPCXX_INCLUDES) -I$(GLIBCPP_INCLUDE_DIR) 	$(CONFIG_INCLUDES) -I$(top_builddir)/include
+INCLUDES =  	-I$(top_srcdir)/../gcc -I$(top_srcdir)/../include 	-I$(GLIBCPP_INCLUDE_DIR) $(CSTD_INCLUDES) -I$(top_builddir)/include 	 $(LIBSUPCXX_INCLUDES)
 
 
 headers =  	cxxabi.h exception new typeinfo
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index 343f968f7aee1f7ba126ce92abbc413fcdfef1a2..9809dd6a201c73eb2cba8c4f54d483464578e9c6 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -21,7 +21,7 @@
 ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
 ## USA.
 
-## $Id: Makefile.am,v 1.59 2000/12/18 18:03:08 bkoz Exp $
+## $Id: Makefile.am,v 1.60 2000/12/21 01:28:57 gdr Exp $
 
 AUTOMAKE_OPTIONS = 1.3 gnits
 MAINT_CHARSET = latin1
@@ -62,16 +62,16 @@ WARN_CXXFLAGS = \
 # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
 GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@
 C_INCLUDE_DIR = @C_INCLUDE_DIR@
-TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+CSTD_INCLUDES = @CSTD_INCLUDES@
 LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
 LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
 LIBIO_INCLUDES = @LIBIO_INCLUDES@
-CSHADOW_INCLUDES = @CSHADOW_INCLUDES@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
 
 INCLUDES = \
 	-nostdinc++ \
-	$(CSHADOW_INCLUDES) $(LIBSUPCXX_INCLUDES) -I$(GLIBCPP_INCLUDE_DIR) \
-	$(LIBIO_INCLUDES) $(LIBMATH_INCLUDES) -I$(top_builddir)/include \
+	-I$(GLIBCPP_INCLUDE_DIR) $(CSTD_INCLUDES) -I$(top_builddir)/include \
+	$(LIBSUPCXX_INCLUDES) $(LIBIO_INCLUDES) $(LIBMATH_INCLUDES) \
 	$(TOPLEVEL_INCLUDES)	
 
 base_headers = \
@@ -297,6 +297,7 @@ myinstallheaders:
 	done; \
 	fi;
 
+
 # We have to handle misc-inst.cc and locale-inst.cc in a special way
 # since we cannot instantiate all classes due to missing definitions
 # for things like vptrs, type_info bits, etc. when using
@@ -310,7 +311,14 @@ locale-inst.o: locale-inst.cc
 locale-inst.lo: locale-inst.cc
 	$(LTCXXCOMPILE) -fimplicit-templates -c $<
 
-# We have to instantiate wstring bits too. . . 
+# Use special rules for the deprecated source files so that they find
+# deprecated include files.
+strstream.lo: strstream.cc
+	$(LTCXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $<
+strstream.o: strstream.cc
+	$(CXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $<
+
+# Make wstring-inst.cc from string-inst.cc
 wstring-inst.o: string-inst.cc
 	$(CXXCOMPILE) -fimplicit-templates -c -DC=wchar_t $< -o $@
 wstring-inst.lo: string-inst.cc
@@ -330,6 +338,7 @@ libstdc++.INC: Makefile
 tmp-libstdc++.INC: Makefile
 	echo $(INCLUDES) > $@
 
+
 # AM_CXXFLAGS needs to be in each subdirectory so that it can be
 # modified in a per-library or per-sub-library way.  Need to manually
 # set this option because CONFIG_CXXFLAGS has to be after
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index c449a959907616e6b99a274030da939b284257b5..6b9cc03882d944fbab11c22157639f554ba1b2af 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -139,13 +139,13 @@ WARN_CXXFLAGS =  	@WARN_FLAGS@ $(WERROR) @WFMT_FLAGS@
 # Use common includes from acinclude.m4/GLIBCPP_EXPORT_INCLUDES
 GLIBCPP_INCLUDE_DIR = @GLIBCPP_INCLUDE_DIR@
 C_INCLUDE_DIR = @C_INCLUDE_DIR@
-TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
+CSTD_INCLUDES = @CSTD_INCLUDES@
 LIBMATH_INCLUDES = @LIBMATH_INCLUDES@
 LIBSUPCXX_INCLUDES = @LIBSUPCXX_INCLUDES@
 LIBIO_INCLUDES = @LIBIO_INCLUDES@
-CSHADOW_INCLUDES = @CSHADOW_INCLUDES@
+TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
 
-INCLUDES =  	-nostdinc++ 	$(CSHADOW_INCLUDES) $(LIBSUPCXX_INCLUDES) -I$(GLIBCPP_INCLUDE_DIR) 	$(LIBIO_INCLUDES) $(LIBMATH_INCLUDES) -I$(top_builddir)/include 	$(TOPLEVEL_INCLUDES)	
+INCLUDES =  	-nostdinc++ 	-I$(GLIBCPP_INCLUDE_DIR) $(CSTD_INCLUDES) -I$(top_builddir)/include 	$(LIBSUPCXX_INCLUDES) $(LIBIO_INCLUDES) $(LIBMATH_INCLUDES) 	$(TOPLEVEL_INCLUDES)	
 
 
 base_headers =  	bits/cpp_type_traits.h bits/char_traits.h bits/codecvt.h 	bits/basic_string.h bits/std_string.h  bits/string.tcc 	bits/generic_shadow.h bits/std_utility.h 	bits/std_complex.h 	bits/valarray_array.h bits/valarray_array.tcc bits/valarray_meta.h 	bits/std_valarray.h bits/mask_array.h bits/slice.h bits/slice_array.h 	bits/gslice.h bits/gslice_array.h bits/indirect_array.h 	bits/exception_support.h 	bits/std_fstream.h bits/std_iomanip.h 	bits/ios_base.h bits/fpos.h bits/basic_ios.h bits/basic_ios.tcc 	bits/std_ios.h bits/std_iosfwd.h bits/std_iostream.h 	bits/std_istream.h bits/istream.tcc bits/std_locale.h 	bits/fstream.tcc bits/ostream.tcc bits/sbuf_iter.h bits/sstream.tcc 	bits/std_ostream.h bits/std_sstream.h bits/std_streambuf.h 	bits/streambuf.tcc bits/basic_file.h 	bits/locale_facets.h bits/locale_facets.tcc bits/localefwd.h 	bits/stl_pthread_alloc.h bits/pthread_allocimpl.h 	bits/stl_threads.h bits/stl_iterator_base.h 	bits/std_bitset.h bits/std_deque.h bits/std_functional.h 	bits/std_iterator.h bits/std_list.h 	bits/std_map.h bits/std_memory.h bits/std_numeric.h 	bits/std_queue.h bits/std_set.h bits/std_stack.h 	bits/std_stdexcept.h bits/std_vector.h 	bits/stl_algo.h bits/stl_algobase.h bits/stl_alloc.h 	bits/stl_deque.h bits/stl_function.h 	bits/stl_heap.h bits/stl_iterator.h bits/stl_list.h bits/stl_map.h 	bits/stl_multimap.h bits/stl_multiset.h bits/stl_numeric.h 	bits/stl_pair.h bits/stl_queue.h bits/stl_raw_storage_iter.h 	bits/stl_relops.h bits/stl_set.h 	bits/stl_stack.h bits/stl_string_fwd.h bits/stl_tempbuf.h 	bits/stl_tree.h bits/stl_uninitialized.h bits/stl_vector.h 	bits/type_traits.h bits/stl_range_errors.h bits/std_algorithm.h 	bits/concept_checks.h bits/container_concepts.h 	bits/sequence_concepts.h bits/stl_config.h bits/stl_construct.h
@@ -577,7 +577,14 @@ locale-inst.o: locale-inst.cc
 locale-inst.lo: locale-inst.cc
 	$(LTCXXCOMPILE) -fimplicit-templates -c $<
 
-# We have to instantiate wstring bits too. . . 
+# Use special rules for the deprecated source files so that they find
+# deprecated include files.
+strstream.lo: strstream.cc
+	$(LTCXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $<
+strstream.o: strstream.cc
+	$(CXXCOMPILE) -I$(GLIBCPP_INCLUDE_DIR)/backward -c $<
+
+# Make wstring-inst.cc from string-inst.cc
 wstring-inst.o: string-inst.cc
 	$(CXXCOMPILE) -fimplicit-templates -c -DC=wchar_t $< -o $@
 wstring-inst.lo: string-inst.cc
diff --git a/libstdc++-v3/src/string-inst.cc b/libstdc++-v3/src/string-inst.cc
index a7dc153a099be3ffca68e2683b3aa9850840ff45..25550113ad9d7fc8b0906c5807ca895e71d8ce11 100644
--- a/libstdc++-v3/src/string-inst.cc
+++ b/libstdc++-v3/src/string-inst.cc
@@ -174,51 +174,28 @@ namespace std
     (S::iterator, S::iterator, const C*, const C*, forward_iterator_tag);
 
   template
-    S::size_type  S::copy(C*, S::size_type, S::size_type) const;
+    S::size_type S::copy(C*, S::size_type, S::size_type) const;
 
   template 
-    C* 
-    S::_S_construct<S::iterator>
-    (S::iterator, S::iterator, const allocator<C>&);
+    C* S::_S_construct<S::iterator>(S::iterator, S::iterator, 
+				    const allocator<C>&);
 
   template 
-    C* 
-    S::_S_construct<S::iterator>
-    (S::iterator, S::iterator, const allocator<C>&, forward_iterator_tag);
+    C* S::_S_construct<S::iterator>(S::iterator, S::iterator, 
+				    const allocator<C>&, forward_iterator_tag);
 
   template 
-    C* 
-    S::_S_construct<C*>
-    (C*, C*, const allocator<C>&, forward_iterator_tag);
+    C* S::_S_construct<C*>(C*, C*, const allocator<C>&, forward_iterator_tag);
 
   template 
-    C* 
-    S::_S_construct<const C*>
-    (const C*, const C*, const allocator<C>&, forward_iterator_tag);
+    C* S::_S_construct<const C*>(const C*, const C*, const allocator<C>&, 
+				 forward_iterator_tag);
 
   template 
-    C* 
-    S::_S_construct(S::size_type, C, S::allocator_type const&);
-
-  // These members are explicitly specialized, and can only be in one
-  // translation unit or else we get multiple copies. . . 
-#if _GLIBCPP_INSTANTIATING_CHAR
-  template<>
-    const char* 
-    string::_S_find(const char* __beg, const char* __end, char __c)
-    { 
-      const char* __ret = strchr(__beg, __c); 
-      return (__ret ? __ret : __end);
-    }
-#elif defined(_GLIBCPP_USE_WCHAR_T)
-  template<>
-    const wchar_t* 
-    wstring::_S_find(const wchar_t* __beg, const wchar_t* __end, wchar_t __c)
-    {
-      return find_if(__beg, __end, 
-		     _Char_traits_match<wchar_t, traits_type>(__c));
-    }
-#endif
+    C* S::_S_construct(S::size_type, C, S::allocator_type const&);
+
+  template
+    const C* S::_S_find(const C* __beg, const C* __end, C __c);
 
   template
     S::size_type S::find(C, S::size_type) const;
@@ -236,12 +213,12 @@ namespace std
     S::size_type S::find_last_of(C const*, S::size_type, S::size_type) const;
 
   template
-    S::size_type S::find_first_not_of(
-      C const*, S::size_type, S::size_type) const;
+    S::size_type 
+    S::find_first_not_of(C const*, S::size_type, S::size_type) const;
 
   template
-    S::size_type S::find_last_not_of(
-      C const*, S::size_type, S::size_type) const;
+    S::size_type 
+    S::find_last_not_of(C const*, S::size_type, S::size_type) const;
 
   template
     S::size_type S::find_last_not_of(C, S::size_type) const;
@@ -257,8 +234,7 @@ namespace std
     int S::compare(C const*) const;
 
   template
-    int S::compare(
-      S::size_type, S::size_type, C const*, S::size_type) const;
+    int S::compare(S::size_type, S::size_type, C const*, S::size_type) const;
 
   template S operator+(const C*, const S&);
 
diff --git a/libstdc++-v3/src/strstream.cc b/libstdc++-v3/src/strstream.cc
index 478bf109b8fa629b7198506768da6262e377a905..5731017765502331086b0db1d776e28c4e6aa18e 100644
--- a/libstdc++-v3/src/strstream.cc
+++ b/libstdc++-v3/src/strstream.cc
@@ -17,7 +17,7 @@
 // MAY BE REMOVED in a future standard revision.  You should use the
 // header <sstream> instead.
 
-#include <backward/strstream.h>
+#include <strstream.h>
 #include <algorithm>
 #include <new>
 #include <stdlib.h>