]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[multiple changes]
authorBenjamin Kosnik <bkoz@gcc.gnu.org>
Tue, 5 Nov 2002 00:51:35 +0000 (00:51 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Tue, 5 Nov 2002 00:51:35 +0000 (00:51 +0000)
2002-11-04  Benjamin Kosnik  <bkoz@redhat.com>

* config/linker-map.gnu: Export string operator+.
Export __default_alloc_template::_S_force_new.
* testsuite/abi_check.cc: Output tweaks.

2002-11-04  Benjamin Kosnik  <bkoz@redhat.com>

        PR libstdc++/8172
        * src/string-inst.cc: Add instantiation.

2002-11-04  Christian Ehrhardt  <ehrhardt@mathematik.uni-ulm.de>

PR libstdc++/8197
* config/link-map.gnu: Export math stubbs.

2002-11-04  Benjamin Kosnik  <bkoz@redhat.com>

PR libstdc++/8318
* include/std/std_iostream.h: Tweak.
* include/std/std_iosfwd.h: Add _GLIBCPP_USE_WCHAR_T.
* include/std/std_iomanip.h: Same.
* include/bits/stringfwd.h: Same.
* include/bits/basic_string.tcc: Same.
* include/bits/sstream.tcc: Same.
* include/bits/fstream.tcc: Same.
* include/bits/basic_ios.tcc: Same.
* include/bits/streambuf.tcc: Same.
* include/bits/locale_facets.tcc: Same.

From-SVN: r58805

14 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/config/linker-map.gnu
libstdc++-v3/include/bits/basic_ios.tcc
libstdc++-v3/include/bits/basic_string.tcc
libstdc++-v3/include/bits/fstream.tcc
libstdc++-v3/include/bits/locale_facets.tcc
libstdc++-v3/include/bits/sstream.tcc
libstdc++-v3/include/bits/streambuf.tcc
libstdc++-v3/include/bits/stringfwd.h
libstdc++-v3/include/std/std_iomanip.h
libstdc++-v3/include/std/std_iosfwd.h
libstdc++-v3/include/std/std_iostream.h
libstdc++-v3/src/string-inst.cc
libstdc++-v3/testsuite/abi_check.cc

index 5c2f1c06b45d628bc005ca11083e7ee4d3b9db05..28ab80161bb33a27840d8b6482e1d4e704f229ea 100644 (file)
@@ -1,3 +1,33 @@
+2002-11-04  Benjamin Kosnik  <bkoz@redhat.com>
+
+       * config/linker-map.gnu: Export string operator+.
+       Export __default_alloc_template::_S_force_new.
+       * testsuite/abi_check.cc: Output tweaks.
+
+2002-11-04  Benjamin Kosnik  <bkoz@redhat.com>
+
+        PR libstdc++/8172
+        * src/string-inst.cc: Add instantiation.
+       
+2002-11-04  Christian Ehrhardt  <ehrhardt@mathematik.uni-ulm.de>
+
+       PR libstdc++/8197
+       * config/link-map.gnu: Export math stubbs.
+
+2002-11-04  Benjamin Kosnik  <bkoz@redhat.com>
+
+       PR libstdc++/8318
+       * include/std/std_iostream.h: Tweak.
+       * include/std/std_iosfwd.h: Add _GLIBCPP_USE_WCHAR_T.
+       * include/std/std_iomanip.h: Same.
+       * include/bits/stringfwd.h: Same.
+       * include/bits/basic_string.tcc: Same.
+       * include/bits/sstream.tcc: Same.
+       * include/bits/fstream.tcc: Same.
+       * include/bits/basic_ios.tcc: Same.
+       * include/bits/streambuf.tcc: Same.
+       * include/bits/locale_facets.tcc: Same.
+
 2002-11-01  Benjamin Kosnik  <bkoz@redhat.com>
 
        PR libstdc++/8348
index 588ad57fdd867f3dcf032a6b3f13edadba18e2d9..e2fa73d664e45a46ac7b17e775ff93d43fac624f 100644 (file)
@@ -28,7 +28,26 @@ GLIBCPP_3.2 {
     # All but the last are terminated with a semicolon.
     extern "C++"
     {
-      std::[A-Za-k]*;
+      std::[A-Za]*;
+      std::ba[a-r]*;
+      std::basic_[a-r]*;
+      std::basic_streambuf*;
+      std::basic_stringbuf*;
+      std::basic_stringstream*;
+      std::basic_[t-z]*;
+      std::ba[t-z]*;
+      std::b[b-z]*;
+      std::c[a-n]*;
+      std::co[a-c]*;
+      std::codecvt_byname*;
+      std::codecvt::[A-Za-b]*;
+      std::codecvt::[A-Zd-z]*;
+      std::codecvt_c;
+      std::codecvt_w;
+      std::co[e-z]*;
+      std::c[p-z]*;
+      std::c_[a-z]*;   
+      std::[A-Zd-k]*;
       std::length_error*;
       std::logic_error*;
       std::locale::[A-Za-z]*;
@@ -45,19 +64,90 @@ GLIBCPP_3.2 {
       std::__timepunct*;
       std::__numeric_limits_base*;
       std::_S_bit_count;
-      std::_S_first_one;
-      std::__default_alloc_template*;
-      std::__malloc_alloc_template*
+      std::_S_first_one
     };
 
     # Names not in an 'extern' block are mangled names.
 
+    # std::string minus binary operator plus
+    _ZNKSs*;
+    _ZNKSb*;
+    _ZNSs[A-Za-z]*;
+    _ZNSs[0-9][A-Za-z]*;
+    _ZNSs[0-9][0-9][A-Za-z]*;
+    _ZNSs[0-9]_[A-Ra-z]*;
+    _ZNSs[0-9][0-9]_[A-Ra-z]*;
+    _ZNSs12_S_empty_repEv;
+    _ZNSs20_S_empty_rep_storageE;
+    _ZNSbIwSt11char_traitsIwESaIwEE20_S_empty_rep_storageE;
+    _ZNSs12_S_constructEjcRKSaIcE;
+    _ZNSs13_S_copy_chars*;
+    _ZNSbIwSt11char_traitsIwESaIwEE[A-Ra-z]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE[0-9][A-Ra-z]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9][A-Ra-z]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE[0-9]_[A-Ra-z]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE[0-9][0-9]_[A-Ra-z]*;
+    _ZNSbIwSt11char_traitsIwESaIwEE13_S_copy_chars*;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_S_constructEjwRKS1_;
+    _ZNSbIwSt11char_traitsIwESaIwEE12_S_empty_repEv;
+    _ZSt24__uninitialized_copy_auxIN9*;
+    _ZSt26__uninitialized_fill_n_aux*;
+    _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_EPKS3_RKS6_;
+    _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ES3_RKS6_;
+    _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_;
+    _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_;
+
     # std::locale destructors
     _ZNSt6localeD*;
         
+    # std::codecvt<char> members.
+    _ZNKSt7codecvtIcc11__mbstate_tE*;
+    # std::codecvt<char>::~codecvt
+    _ZNSt7codecvtIcc11__mbstate_tED*;
+    # std::codecvt<char>::codecvt(size_t), where size_t variable.
+    _ZNSt7codecvtIcc11__mbstate_tEC1Ej;
+    _ZNSt7codecvtIcc11__mbstate_tEC2Ej;
+    _ZNSt7codecvtIcc11__mbstate_tEC1Em;
+    _ZNSt7codecvtIcc11__mbstate_tEC2Em;
+    # std::codecvt<char>::id
+    _ZNSt7codecvtIcc11__mbstate_tE2idE;
+
+    # std::codecvt<wchar_t> members.
+    _ZNKSt7codecvtIwc11__mbstate_tE*;
+    # std::codecvt<wchar_t>::~codecvt
+    _ZNSt7codecvtIwc11__mbstate_tED*;
+    # std::codecvt<wchar_t>::codecvt(size_t), where size_t variable.
+    _ZNSt7codecvtIwc11__mbstate_tEC1Ej;
+    _ZNSt7codecvtIwc11__mbstate_tEC2Ej;
+    _ZNSt7codecvtIwc11__mbstate_tEC1Em;
+    _ZNSt7codecvtIwc11__mbstate_tEC2Em;
+    # std::codecvt<wchar_t>::id
+    _ZNSt7codecvtIwc11__mbstate_tE2idE;
+
+     # std::use_facet<codecvt>
+    _ZSt9use_facetISt7codecvtIcc11__mbstate_tEERKT_RKSt6locale;
+    _ZSt9use_facetISt7codecvtIwc11__mbstate_tEERKT_RKSt6locale;
+
     # std::has_facet*
     _ZSt9has_facet*;
 
+    # std::__default_alloc_template
+    _ZNSt24__default_alloc_templateILb1ELi0EE10deallocate*;
+    _ZNSt24__default_alloc_templateILb1ELi0EE8allocate*;
+    _ZNSt24__default_alloc_templateILb1ELi0EE12_S_free_listE;
+    _ZNSt24__default_alloc_templateILb1ELi0EE22_S_node_allocator_lockE;
+    _ZNSt24__default_alloc_templateILb1ELi0EE9_S_refillE*;
+
+    # std::__default_alloc_template to be removed in the future
+    _ZNSt24__default_alloc_templateILb1ELi0EE10reallocateEPv*;
+    _ZNSt24__default_alloc_templateILb1ELi0EE11_S_round_upE*;
+    _ZNSt24__default_alloc_templateILb1ELi0EE14_S_chunk_allocE*;
+    _ZNSt24__default_alloc_templateILb1ELi0EE17_S_freelist_indexE*;
+    _ZNSt24__default_alloc_templateILb1ELi0EE11_S_end_freeE;
+    _ZNSt24__default_alloc_templateILb1ELi0EE12_S_heap_sizeE;
+    _ZNSt24__default_alloc_templateILb1ELi0EE13_S_start_freeE;
+    _ZNSt24__default_alloc_templateILb1ELi0EE5_Lock*;
+
     # operator new(unsigned)
     _Znwj;
     # operator new(unsigned, std::nothrow_t const&)
@@ -109,6 +199,55 @@ GLIBCPP_3.2 {
     *;
 };
 
+# Symbols added after GLIBCPP_3.2
+GLIBCPP_3.2.1 {
+
+  _ZNSt7codecvtIcc11__mbstate_tEC1EP15__locale_structj;
+  _ZNSt7codecvtIcc11__mbstate_tEC2EP15__locale_structj;
+  _ZNSt7codecvtIwc11__mbstate_tEC1EP15__locale_structj;
+  _ZNSt7codecvtIwc11__mbstate_tEC2EP15__locale_structj;
+
+  _ZStplIcSt11char_traitsIcESaIcEESbIT_T0_T1_ERKS6_S8_;
+  _ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ERKS6_S8_;
+
+  _ZNSt24__default_alloc_templateILb1ELi0EE12_S_force_newE;
+
+  # stub functions from libmath
+  sinf;
+  sinl;
+  sinhf;
+  sinhl;
+  cosf;
+  cosl;
+  coshf;
+  coshl;
+  tanf;
+  tanl;
+  tanhf;
+  tanhl;
+  atan2f;
+  atan2l;
+  expf;
+  expl;
+  hypotf;
+  hypotl;
+  hypot;
+  logf;
+  logl;
+  log10f;
+  log10l;
+  powf;
+  powl;
+  sqrtf;
+  sqrtl;
+  copysignf;
+  nan;
+  __signbit;
+  __signbitf;
+  __signbitl;
+
+} GLIBCPP_3.2;
+
 # Symbols in the support library (libsupc++) have their own tag.
 CXXABI_1.2 {
 
index a38a95b58a0ff43834ad0635ca44bb6298a155ef..7ee8015e29f65bdb9f0246497231e498961bf61e 100644 (file)
@@ -187,7 +187,10 @@ namespace std
   // which are defined via explicit instantiations elsewhere.  
   // NB:  This syntax is a GNU extension.
   extern template class basic_ios<char>;
+
+#ifdef _GLIBCPP_USE_WCHAR_T
   extern template class basic_ios<wchar_t>;
+#endif
 } // namespace std
 
 #endif 
index 198f190eae891e754cae476846e995b1cd5caeff..4a22d8967929e51cc99e44c507885962acd279cf 100644 (file)
@@ -959,6 +959,7 @@ namespace std
     basic_istream<char>& 
     getline(basic_istream<char>&, string&);
 
+#ifdef _GLIBCPP_USE_WCHAR_T
   extern template class basic_string<wchar_t>;
   extern template 
     basic_istream<wchar_t>& 
@@ -972,6 +973,7 @@ namespace std
   extern template 
     basic_istream<wchar_t>& 
     getline(basic_istream<wchar_t>&, wstring&);
+#endif
 } // namespace std
 
 #endif
index 18dbaf1caae8b6915e88feebfce289f4e0ed6c7a..66cb9a1b179fbca2a7e072e88f5196a345717aa9 100644 (file)
@@ -477,13 +477,16 @@ namespace std
   // which are defined via explicit instantiations elsewhere.  
   // NB:  This syntax is a GNU extension.
   extern template class basic_filebuf<char>;
-  extern template class basic_filebuf<wchar_t>;
   extern template class basic_ifstream<char>;
-  extern template class basic_ifstream<wchar_t>;
   extern template class basic_ofstream<char>;
-  extern template class basic_ofstream<wchar_t>;
   extern template class basic_fstream<char>;
+
+#ifdef _GLIBCPP_USE_WCHAR_T
+  extern template class basic_filebuf<wchar_t>;
+  extern template class basic_ifstream<wchar_t>;
+  extern template class basic_ofstream<wchar_t>;
   extern template class basic_fstream<wchar_t>;
+#endif
 } // namespace std
 
 #endif 
index f21054e29663ffced849197e36d61c1952b375c1..ce6f3d7d5ffa0a34763ea1c0cfbf2e694d9bfb50 100644 (file)
@@ -2140,42 +2140,21 @@ namespace std
   extern template class moneypunct_byname<char, true>;
   extern template class money_get<char>;
   extern template class money_put<char>;
-  extern template class moneypunct<wchar_t, false>;
-  extern template class moneypunct<wchar_t, true>;
-  extern template class moneypunct_byname<wchar_t, false>;
-  extern template class moneypunct_byname<wchar_t, true>;
-  extern template class money_get<wchar_t>;
-  extern template class money_put<wchar_t>;
   extern template class numpunct<char>;
   extern template class numpunct_byname<char>;
   extern template class num_get<char>;
   extern template class num_put<char>; 
-  extern template class numpunct<wchar_t>;
-  extern template class numpunct_byname<wchar_t>;
-  extern template class num_get<wchar_t>;
-  extern template class num_put<wchar_t>;
   extern template class __timepunct<char>;
   extern template class time_put<char>;
   extern template class time_put_byname<char>;
   extern template class time_get<char>;
   extern template class time_get_byname<char>;
-  extern template class __timepunct<wchar_t>;
-  extern template class time_put<wchar_t>;
-  extern template class time_put_byname<wchar_t>;
-  extern template class time_get<wchar_t>;
-  extern template class time_get_byname<wchar_t>;
   extern template class messages<char>;
   extern template class messages_byname<char>;
-  extern template class messages<wchar_t>;
-  extern template class messages_byname<wchar_t>;
   extern template class ctype_byname<char>;
-  extern template class ctype_byname<wchar_t>;
   extern template class codecvt_byname<char, char, mbstate_t>;
-  extern template class codecvt_byname<wchar_t, char, mbstate_t>;
   extern template class collate<char>;
   extern template class collate_byname<char>;
-  extern template class collate<wchar_t>;
-  extern template class collate_byname<wchar_t>;
 
   extern template
     const codecvt<char, char, mbstate_t>& 
@@ -2229,59 +2208,6 @@ namespace std
     const messages<char>& 
     use_facet<messages<char> >(const locale&);
 
-  extern template
-    const codecvt<wchar_t, char, mbstate_t>& 
-    use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);
-
-  extern template
-    const collate<wchar_t>& 
-    use_facet<collate<wchar_t> >(const locale&);
-
-  extern template
-    const numpunct<wchar_t>& 
-    use_facet<numpunct<wchar_t> >(const locale&);
-
-  extern template 
-    const num_put<wchar_t>& 
-    use_facet<num_put<wchar_t> >(const locale&);
-
-  extern template 
-    const num_get<wchar_t>& 
-    use_facet<num_get<wchar_t> >(const locale&);
-
-  extern template
-    const moneypunct<wchar_t, true>& 
-    use_facet<moneypunct<wchar_t, true> >(const locale&);
-
-  extern template
-    const moneypunct<wchar_t, false>& 
-    use_facet<moneypunct<wchar_t, false> >(const locale&);
-  extern template 
-    const money_put<wchar_t>& 
-    use_facet<money_put<wchar_t> >(const locale&);
-
-  extern template 
-    const money_get<wchar_t>& 
-    use_facet<money_get<wchar_t> >(const locale&);
-
-  extern template
-    const __timepunct<wchar_t>& 
-    use_facet<__timepunct<wchar_t> >(const locale&);
-
-  extern template 
-    const time_put<wchar_t>& 
-    use_facet<time_put<wchar_t> >(const locale&);
-
-  extern template 
-    const time_get<wchar_t>& 
-    use_facet<time_get<wchar_t> >(const locale&);
-
-  extern template 
-    const messages<wchar_t>& 
-    use_facet<messages<wchar_t> >(const locale&);
-
-
   extern template 
     bool
     has_facet<ctype<char> >(const locale&);
@@ -2334,6 +2260,81 @@ namespace std
     bool
     has_facet<messages<char> >(const locale&);
 
+#ifdef _GLIBCPP_USE_WCHAR_T
+  extern template class moneypunct<wchar_t, false>;
+  extern template class moneypunct<wchar_t, true>;
+  extern template class moneypunct_byname<wchar_t, false>;
+  extern template class moneypunct_byname<wchar_t, true>;
+  extern template class money_get<wchar_t>;
+  extern template class money_put<wchar_t>;
+  extern template class numpunct<wchar_t>;
+  extern template class numpunct_byname<wchar_t>;
+  extern template class num_get<wchar_t>;
+  extern template class num_put<wchar_t>;
+  extern template class __timepunct<wchar_t>;
+  extern template class time_put<wchar_t>;
+  extern template class time_put_byname<wchar_t>;
+  extern template class time_get<wchar_t>;
+  extern template class time_get_byname<wchar_t>;
+  extern template class messages<wchar_t>;
+  extern template class messages_byname<wchar_t>;
+  extern template class ctype_byname<wchar_t>;
+  extern template class codecvt_byname<wchar_t, char, mbstate_t>;
+  extern template class collate<wchar_t>;
+  extern template class collate_byname<wchar_t>;
+
+  extern template
+    const codecvt<wchar_t, char, mbstate_t>& 
+    use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);
+
+  extern template
+    const collate<wchar_t>& 
+    use_facet<collate<wchar_t> >(const locale&);
+
+  extern template
+    const numpunct<wchar_t>& 
+    use_facet<numpunct<wchar_t> >(const locale&);
+
+  extern template 
+    const num_put<wchar_t>& 
+    use_facet<num_put<wchar_t> >(const locale&);
+
+  extern template 
+    const num_get<wchar_t>& 
+    use_facet<num_get<wchar_t> >(const locale&);
+
+  extern template
+    const moneypunct<wchar_t, true>& 
+    use_facet<moneypunct<wchar_t, true> >(const locale&);
+
+  extern template
+    const moneypunct<wchar_t, false>& 
+    use_facet<moneypunct<wchar_t, false> >(const locale&);
+  extern template 
+    const money_put<wchar_t>& 
+    use_facet<money_put<wchar_t> >(const locale&);
+
+  extern template 
+    const money_get<wchar_t>& 
+    use_facet<money_get<wchar_t> >(const locale&);
+
+  extern template
+    const __timepunct<wchar_t>& 
+    use_facet<__timepunct<wchar_t> >(const locale&);
+
+  extern template 
+    const time_put<wchar_t>& 
+    use_facet<time_put<wchar_t> >(const locale&);
+
+  extern template 
+    const time_get<wchar_t>& 
+    use_facet<time_get<wchar_t> >(const locale&);
+
+  extern template 
+    const messages<wchar_t>& 
+    use_facet<messages<wchar_t> >(const locale&);
+
  extern template 
     bool
     has_facet<ctype<wchar_t> >(const locale&);
@@ -2385,6 +2386,7 @@ namespace std
   extern template 
     bool
     has_facet<messages<wchar_t> >(const locale&);
+#endif
 } // namespace std
 
 #endif
index 99eb6af125f576a3fc26ce93641ee9383cbb0a3f..606705c02e91617e68d4e056a3d2e2393188e3bc 100644 (file)
@@ -226,13 +226,16 @@ namespace std
   // which are defined via explicit instantiations elsewhere.  
   // NB:  This syntax is a GNU extension.
   extern template class basic_stringbuf<char>;
-  extern template class basic_stringbuf<wchar_t>;
   extern template class basic_istringstream<char>;
-  extern template class basic_istringstream<wchar_t>;
   extern template class basic_ostringstream<char>;
-  extern template class basic_ostringstream<wchar_t>;
   extern template class basic_stringstream<char>;
+
+#ifdef _GLIBCPP_USE_WCHAR_T
+  extern template class basic_stringbuf<wchar_t>;
+  extern template class basic_istringstream<wchar_t>;
+  extern template class basic_ostringstream<wchar_t>;
   extern template class basic_stringstream<wchar_t>;
+#endif
 } // namespace std
 
 #endif
index 2101f10b2ef2dd761cbf86f71b8e2eea1ee18c84..c8084ee68ada3c6ea95e95d1fa908c589fb9a287 100644 (file)
@@ -249,11 +249,13 @@ namespace std
     __copy_streambufs(basic_ios<char>&, basic_streambuf<char>*,
                      basic_streambuf<char>*); 
 
+#ifdef _GLIBCPP_USE_WCHAR_T
   extern template class basic_streambuf<wchar_t>;
   extern template
     streamsize
     __copy_streambufs(basic_ios<wchar_t>&, basic_streambuf<wchar_t>*,
                      basic_streambuf<wchar_t>*); 
+#endif
 } // namespace std
 
 #endif 
index b7418a67a7ea1741933591099e600f1832a4b08d..db40befdab6acae8aad56311c4714557c83a89fd 100644 (file)
 
 namespace std
 {
-  template<class _CharT>
-    struct char_traits;
-  
-  template<> struct char_traits<char>;
-#ifdef _GLIBCPP_USE_WCHAR_T
-  template<> struct char_traits<wchar_t>;
-#endif
-
   template<typename _Alloc> 
     class allocator;
 
+  template<class _CharT>
+    struct char_traits;
+
   template<typename _CharT, typename _Traits = char_traits<_CharT>, 
            typename _Alloc = allocator<_CharT> >
     class basic_string;
+  
+  template<> struct char_traits<char>;
 
   typedef basic_string<char>    string;
+
+#ifdef _GLIBCPP_USE_WCHAR_T
+  template<> struct char_traits<wchar_t>;
+
   typedef basic_string<wchar_t> wstring;
+#endif
 } // namespace std
 
 #endif // _CPP_BITS_STRINGFWD_H
index e046c82f8fa156bcd2b01f86bd3299b7898a2e27..23237ce210d6b28b6cb9aebb74dfa5d451e917d4 100644 (file)
@@ -225,25 +225,27 @@ namespace std
   extern template ostream& operator<<(ostream&, _Setbase);
   extern template ostream& operator<<(ostream&, _Setprecision);
   extern template ostream& operator<<(ostream&, _Setw);
-  extern template wostream& operator<<(wostream&, _Setfill<wchar_t>);
-  extern template wostream& operator<<(wostream&, _Setiosflags);
-  extern template wostream& operator<<(wostream&, _Resetiosflags);
-  extern template wostream& operator<<(wostream&, _Setbase);
-  extern template wostream& operator<<(wostream&, _Setprecision);
-  extern template wostream& operator<<(wostream&, _Setw);
-
   extern template istream& operator>>(istream&, _Setfill<char>);
   extern template istream& operator>>(istream&, _Setiosflags);
   extern template istream& operator>>(istream&, _Resetiosflags);
   extern template istream& operator>>(istream&, _Setbase);
   extern template istream& operator>>(istream&, _Setprecision);
   extern template istream& operator>>(istream&, _Setw);
+
+#ifdef _GLIBCPP_USE_WCHAR_T
+  extern template wostream& operator<<(wostream&, _Setfill<wchar_t>);
+  extern template wostream& operator<<(wostream&, _Setiosflags);
+  extern template wostream& operator<<(wostream&, _Resetiosflags);
+  extern template wostream& operator<<(wostream&, _Setbase);
+  extern template wostream& operator<<(wostream&, _Setprecision);
+  extern template wostream& operator<<(wostream&, _Setw);
   extern template wistream& operator>>(wistream&, _Setfill<wchar_t>);
   extern template wistream& operator>>(wistream&, _Setiosflags);
   extern template wistream& operator>>(wistream&, _Resetiosflags);
   extern template wistream& operator>>(wistream&, _Setbase);
   extern template wistream& operator>>(wistream&, _Setprecision);
   extern template wistream& operator>>(wistream&, _Setw);
+#endif
 } // namespace std
 
 #endif 
index f76ca7cad706bd7ce33c8451437cb8c49ec2f136..797f4936dc8a789ed3e8e0120116721b78f81451 100644 (file)
@@ -116,6 +116,7 @@ namespace std
   typedef basic_ofstream<char>                 ofstream;
   typedef basic_fstream<char>          fstream;
 
+#ifdef _GLIBCPP_USE_WCHAR_T
   typedef basic_ios<wchar_t>           wios;
   typedef basic_streambuf<wchar_t>     wstreambuf;
   typedef basic_istream<wchar_t>       wistream;
@@ -129,6 +130,7 @@ namespace std
   typedef basic_ifstream<wchar_t>      wifstream;
   typedef basic_ofstream<wchar_t>      wofstream;
   typedef basic_fstream<wchar_t>       wfstream;
+#endif
 } // namespace std
 
 #endif
index 5b3da9c0d8bc9aacdd0805819026cc90956cdb90..d0736b835132bd663b3d2d23abdec19acde7a397 100644 (file)
@@ -51,6 +51,7 @@ namespace std
   extern ostream cout;
   extern ostream cerr;
   extern ostream clog;
+
 #ifdef _GLIBCPP_USE_WCHAR_T
   extern wistream wcin;
   extern wostream wcout;
index e812aa0cfc28d3c2fa98b42b74120bd611ace1a7..3fcaf5132e7179db2d99657e5536e09d0bc3c22d 100644 (file)
@@ -22,7 +22,8 @@
 // As a special exception, you may use this file as part of a free software
 // library without restriction.  Specifically, if other files instantiate
 // templates or use macros or inline functions from this file, or you compile
-// this file and link it with other files to produce an executable, this// file does not by itself cause the resulting executable to be covered by
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
 // the GNU General Public License.  This exception does not however
 // invalidate any other reasons why the executable file might be covered by
 // the GNU General Public License.
@@ -48,6 +49,7 @@ namespace std
   template class basic_string<C>;
   template S operator+(const C*, const S&);
   template S operator+(C, const S&);
+  template S operator+(const S&, const S&);
 } // namespace std
 
 namespace __gnu_cxx
index 21ca619ca83f278e4823ceeaffe614d514455652..c093cd507a6aa1f12cd50a1d8bff654c1c74e4fd 100644 (file)
@@ -108,6 +108,8 @@ check_compatible(const symbol_info& lhs, const symbol_info& rhs,
       if (verbose)
        {
          cout << tab << "incompatible sizes" << endl;
+         cout << tab << lhs.size << endl;
+         cout << tab << rhs.size << endl;
        }
     }
 
@@ -117,9 +119,14 @@ check_compatible(const symbol_info& lhs, const symbol_info& rhs,
       if (verbose)
        {
          cout << tab << "incompatible versions" << endl;
+         cout << tab << lhs.version_name << endl;
+         cout << tab << rhs.version_name << endl;
        }
     }
 
+  if (verbose)
+    cout << endl;
+
   return ret;
 }
 
@@ -247,7 +254,7 @@ create_symbol_data(const char* file, symbol_infos& symbols,
 }
 
 void
-report_symbol_info(const symbol_info& symbol, std::size_t n)
+report_symbol_info(const symbol_info& symbol, std::size_t n, bool ret = true)
 {
   using namespace std;
   const char tab = '\t';
@@ -259,7 +266,8 @@ report_symbol_info(const symbol_info& symbol, std::size_t n)
   cout << tab << "demangled symbol"<< endl;
   cout << tab << symbol.demangled_name << endl;
 
-  cout << endl;
+  if (ret)
+    cout << endl;
 }
 
 
@@ -370,7 +378,10 @@ main(int argc, char** argv)
                                          test.name);
 
       if (it1 == end && it2 == end)
-       incompatible.push_back(symbol_pair(test, test));
+       {
+         incompatible.push_back(symbol_pair(test, test));
+         cout << test.version_name << endl;
+       }
     }
 
   // Report results.
@@ -388,7 +399,7 @@ main(int argc, char** argv)
       // First, report name.
       const symbol_info& base = incompatible[j].first;
       const symbol_info& test = incompatible[j].second;
-      report_symbol_info(test, j + 1);
+      report_symbol_info(test, j + 1, false);
 
       // Second, report reason or reasons incompatible.
       check_compatible(base, test, true);