diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 831e14dc731bdd6ba1fcac77a11fbe65ca2a4136..741e887d094355fedfc92d79d2e6ee0c95623f26 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,11 @@
+2002-04-17  Benjamin Kosnik  <bkoz@redhat.com>
+
+	* config/linker-map.gnu (__malloc_alloc_template): Add.
+	(__default_alloc_template): Same.	
+	* include/bits/stl_alloc.h (__malloc_alloc_template): Add extern
+	template.
+	(__default_alloc_template): Same.
+	
 2002-04-17  Benjamin Kosnik  <bkoz@redhat.com>
 
 	* testsuite/27_io/filebuf_virtuals.cc: Add _S_pback_size instantiation.
diff --git a/libstdc++-v3/config/linker-map.gnu b/libstdc++-v3/config/linker-map.gnu
index 0a87f3d79bcc1cb9fca938297e891a173448cfc7..2a55bb2e46339ba84c29b73a95c2305a82303e10 100644
--- a/libstdc++-v3/config/linker-map.gnu
+++ b/libstdc++-v3/config/linker-map.gnu
@@ -36,7 +36,9 @@ GLIBCPP_3.1 {
       std::__timepunct*;
       std::__numeric_limits_base*;
       std::_S_bit_count;
-      std::_S_first_one
+      std::_S_first_one;
+      std::__default_alloc_template*;
+      std::__malloc_alloc_template*
     };
 
     # Names not in an 'extern' block are mangled names.
diff --git a/libstdc++-v3/include/bits/stl_alloc.h b/libstdc++-v3/include/bits/stl_alloc.h
index e193297513c33219eb404e63bef3527b5b186b5f..7c34000401c13efd68af4270af06a91cf6dbdb76 100644
--- a/libstdc++-v3/include/bits/stl_alloc.h
+++ b/libstdc++-v3/include/bits/stl_alloc.h
@@ -927,6 +927,11 @@ struct _Alloc_traits<_Tp, __allocator<_Tp1, __debug_alloc<_Alloc> > >
   // NB: This syntax is a GNU extension.
   extern template class allocator<char>;
   extern template class allocator<wchar_t>;
+#ifdef __USE_MALLOC
+  extern template class __malloc_alloc_template<0>;
+#else
+  extern template class __default_alloc_template<true, 0>;
+#endif
 } // namespace std
 
 #endif /* __GLIBCPP_INTERNAL_ALLOC_H */