diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c1f6caac30a175f8932e1f45aabd8199283bd618..026704eaca3dabc179e41b2da5638e1dc06f054e 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,5 +1,15 @@
 2000-05-24  Benjamin Kosnik  <bkoz@purist.soma.redhat.com>
 
+	* Makefile.am (TAGS): Construct.
+	* Makefile.in: Rengerate.
+	* src/Makefile.am: Tweak.
+	* src/Makefile.in: Tweak.
+	* configure.in: Tweak.
+
+	* bits/c++config.h: Rename to ...
+	* bits/c++config: This.
+	* mkc++config: Adjust.
+	
 	* m4: Remove.
 	* m4/lc_message.m4: Merge into acinclude.m4.
 	* m4/mathfcts.m4: Same.
diff --git a/libstdc++-v3/Makefile.am b/libstdc++-v3/Makefile.am
index fbf76307f22db4e1a6ca0914111e7efa3e077883..3bec4532732f617bb83c9c2f76e3a60b20e7539a 100644
--- a/libstdc++-v3/Makefile.am
+++ b/libstdc++-v3/Makefile.am
@@ -94,6 +94,10 @@ distclean-multi:
 maintainer-clean-multi:
 	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
 
+# All the machinations with string instantiations messes up the
+# automake-genrated TAGS rule. Make a simple one here.
+TAGS: tags-recursive $(LISP)
+
 # Work around what appears to be a GNU make bug handling MAKEFLAGS
 # values defined in terms of make variables, as is the case for CC and
 # friends when we are called from the top level Makefile.
@@ -138,3 +142,14 @@ AM_MAKEFLAGS = \
 	"NM_FOR_BUILD=$(NM_FOR_BUILD)" \
 	"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
 	"DESTDIR=$(DESTDIR)" 
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libstdc++-v3/Makefile.in b/libstdc++-v3/Makefile.in
index ba1752084ba6918b364d810359dde91a11f1c425..c4be5361ccc850cb967eea2d50b1204103f785bc 100644
--- a/libstdc++-v3/Makefile.in
+++ b/libstdc++-v3/Makefile.in
@@ -317,21 +317,6 @@ ID: $(HEADERS) $(SOURCES) $(LISP)
 	here=`pwd` && cd $(srcdir) \
 	  && mkid -f$$here/ID $$unique $(LISP)
 
-TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SUBDIRS)'; for subdir in $$list; do \
-   if test "$$subdir" = .; then :; else \
-	    test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \
-   fi; \
-	done; \
-	list='$(SOURCES) $(HEADERS)'; \
-	unique=`for i in $$list; do echo $$i; done | \
-	  awk '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)config.h.in$$unique$(LISP)$$tags" \
-	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config.h.in $$unique $(LISP) -o $$here/TAGS)
-
 mostlyclean-tags:
 
 clean-tags:
@@ -507,6 +492,10 @@ distclean-multi:
 maintainer-clean-multi:
 	$(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
 
+# All the machinations with string instantiations messes up the
+# automake-genrated TAGS rule. Make a simple one here.
+TAGS: tags-recursive $(LISP)
+
 # 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/bits/c++config.h b/libstdc++-v3/bits/c++config
similarity index 100%
rename from libstdc++-v3/bits/c++config.h
rename to libstdc++-v3/bits/c++config
diff --git a/libstdc++-v3/configure.in b/libstdc++-v3/configure.in
index 9f2751b8f02b33e5223d6b49c14870c90bacf73f..522626039ebb0e3aaf29152b1e2131219d4b6add 100644
--- a/libstdc++-v3/configure.in
+++ b/libstdc++-v3/configure.in
@@ -1,5 +1,5 @@
 # Process this file with autoconf to produce a configure script, like so:
-# aclocal -I m4, autoconf, autoheader, automake
+# aclocal, autoconf, autoheader, automake
 
 AC_PREREQ(2.13)
 AC_INIT(src/complex.cc)
diff --git a/libstdc++-v3/mkc++config b/libstdc++-v3/mkc++config
index 381de6b1368ca61805b61c0336e00c8f64e92669..6c828f4c350399946c1d754bea714a3b10a88c14 100755
--- a/libstdc++-v3/mkc++config
+++ b/libstdc++-v3/mkc++config
@@ -19,7 +19,7 @@ if [ ! -d "$SRC_DIR" ]; then
   exit 1
 fi
 
-BASE_H="$SRC_DIR/bits/c++config.h"
+BASE_H="$SRC_DIR/bits/c++config"
 IN_H="$BUILD_DIR/config.h"
 OUT_H="$BUILD_DIR/bits/c++config.h"
 
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index f7bca912e1e5adaeadd11741490d2e738620694c..24ec463238c3cee7cc79ae66668bff7e509ac688 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -176,7 +176,8 @@ libio_headers =
 endif
 
 generated_headers = \
-	bits/std_limits.h bits/c++config.h bits/c++threads.h bits/c++io.h
+	 $(top_builddir)/bits/std_limits.h $(top_builddir)/bits/c++config.h \
+	 $(top_builddir)/bits/c++threads.h $(top_builddir)/bits/c++io.h
 
 cpu_headers = \
 	 $(top_srcdir)/@cpu_include_dir@/bits/atomicity.h 
@@ -259,7 +260,6 @@ install: myinstallheaders
 
 # NB: As libio_headers may be empty, need this to make sure bash doesn't
 # choke on an empty for... loop by using libio_headers_install
-
 myinstallheaders: $(headers:%=$(myincludep)%)
 	if test -z "$(MULTISUBDIR)"; then \
 	for i in $(std_headers); do \
@@ -267,8 +267,8 @@ myinstallheaders: $(headers:%=$(myincludep)%)
 	        $(INSTALL_DATA) $(top_srcdir)/std/$$i $(myincludep); \
 	done; \
 	for i in $(generated_headers); do \
-	  echo "$(INSTALL_DATA) $(top_builddir)/$$i $(myincludep)bits/"; \
-	        $(INSTALL_DATA) $(top_builddir)/$$i $(myincludep)bits/; \
+	  echo "$(INSTALL_DATA) $$i $(myincludep)bits/"; \
+	        $(INSTALL_DATA) $$i $(myincludep)bits/; \
 	done; \
 	libio_headers_install='$(libio_headers)'; \
 	for i in $$libio_headers_install; do \
@@ -286,10 +286,19 @@ $(headers:%=$(myincludep)%): $(myincludep)%: %
 	$(INSTALL_DATA) $^ $@; \
 	fi;
 
-# For the next time 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 -fno-implicit-templates. 
+# All the machinations with string instantiations messes up the
+# automake-genrated TAGS rule. Make a simple one here.
+TAGS: $(generated_headers) $(cpu_headers) 
+	etags -C $(top_srcdir)/bits/*.h $(top_srcdir)/bits/*.tcc \
+	$(generated_headers) $(cpu_headers) $(libio_headers) \
+	$(top_srcdir)/src/*.cc \
+	$(top_builddir)/src/limitsMEMBERS.cc $(top_builddir)/src/c++io.cc \
+	-o $(top_builddir)/TAGS
+
+# 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
+# -fno-implicit-templates.
 misc-inst.o: misc-inst.cc
 	$(CXXCOMPILE) -fimplicit-templates -c $<
 misc-inst.lo: misc-inst.cc
@@ -530,3 +539,4 @@ wstringSCOPY.o \
 wstringEQ.o : string-inst.cc
 	$(CXXCOMPILE) -fimplicit-templates \
 	-c -D`echo $@ | tr -dc '0-9A-Z'` -DC=wchar_t $< -o $@
+
diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in
index 392511960d8c1da247fbb8d8cbda51ae3a336c3e..926f68d5001af5200987ecea4747673728658f06 100644
--- a/libstdc++-v3/src/Makefile.in
+++ b/libstdc++-v3/src/Makefile.in
@@ -257,7 +257,8 @@ std_headers = \
 @GLIBCPP_NEED_LIBIO_FALSE@libio_headers = \
 
 generated_headers = \
-	bits/std_limits.h bits/c++config.h bits/c++threads.h bits/c++io.h
+	 $(top_builddir)/bits/std_limits.h $(top_builddir)/bits/c++config.h \
+	 $(top_builddir)/bits/c++threads.h $(top_builddir)/bits/c++io.h
 
 
 cpu_headers = \
@@ -493,16 +494,6 @@ ID: $(HEADERS) $(SOURCES) $(LISP)
 	here=`pwd` && cd $(srcdir) \
 	  && mkid -f$$here/ID $$unique $(LISP)
 
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) $(LISP)
-	tags=; \
-	here=`pwd`; \
-	list='$(SOURCES) $(HEADERS)'; \
-	unique=`for i in $$list; do echo $$i; done | \
-	  awk '    { files[$$0] = 1; } \
-	       END { for (i in files) print i; }'`; \
-	test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
-	  || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags  $$unique $(LISP) -o $$here/TAGS)
-
 mostlyclean-tags:
 
 clean-tags:
@@ -611,7 +602,6 @@ install: myinstallheaders
 
 # NB: As libio_headers may be empty, need this to make sure bash doesn't
 # choke on an empty for... loop by using libio_headers_install
-
 myinstallheaders: $(headers:%=$(myincludep)%)
 	if test -z "$(MULTISUBDIR)"; then \
 	for i in $(std_headers); do \
@@ -619,8 +609,8 @@ myinstallheaders: $(headers:%=$(myincludep)%)
 	        $(INSTALL_DATA) $(top_srcdir)/std/$$i $(myincludep); \
 	done; \
 	for i in $(generated_headers); do \
-	  echo "$(INSTALL_DATA) $(top_builddir)/$$i $(myincludep)bits/"; \
-	        $(INSTALL_DATA) $(top_builddir)/$$i $(myincludep)bits/; \
+	  echo "$(INSTALL_DATA) $$i $(myincludep)bits/"; \
+	        $(INSTALL_DATA) $$i $(myincludep)bits/; \
 	done; \
 	libio_headers_install='$(libio_headers)'; \
 	for i in $$libio_headers_install; do \
@@ -638,10 +628,19 @@ $(headers:%=$(myincludep)%): $(myincludep)%: %
 	$(INSTALL_DATA) $^ $@; \
 	fi;
 
-# For the next time 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 -fno-implicit-templates. 
+# All the machinations with string instantiations messes up the
+# automake-genrated TAGS rule. Make a simple one here.
+TAGS: $(generated_headers) $(cpu_headers) 
+	etags -C $(top_srcdir)/bits/*.h $(top_srcdir)/bits/*.tcc \
+	$(generated_headers) $(cpu_headers) $(libio_headers) \
+	$(top_srcdir)/src/*.cc \
+	$(top_builddir)/src/limitsMEMBERS.cc $(top_builddir)/src/c++io.cc \
+	-o $(top_builddir)/TAGS
+
+# 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
+# -fno-implicit-templates.
 misc-inst.o: misc-inst.cc
 	$(CXXCOMPILE) -fimplicit-templates -c $<
 misc-inst.lo: misc-inst.cc