From ae206c960027e64205d000a69cf173c30663b67c Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Tue, 5 Nov 2002 00:51:35 +0000 Subject: [PATCH] [multiple changes] 2002-11-04 Benjamin Kosnik * 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 PR libstdc++/8172 * src/string-inst.cc: Add instantiation. 2002-11-04 Christian Ehrhardt PR libstdc++/8197 * config/link-map.gnu: Export math stubbs. 2002-11-04 Benjamin Kosnik 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 --- libstdc++-v3/ChangeLog | 30 ++++ libstdc++-v3/config/linker-map.gnu | 147 ++++++++++++++++++- libstdc++-v3/include/bits/basic_ios.tcc | 3 + libstdc++-v3/include/bits/basic_string.tcc | 2 + libstdc++-v3/include/bits/fstream.tcc | 9 +- libstdc++-v3/include/bits/locale_facets.tcc | 150 ++++++++++---------- libstdc++-v3/include/bits/sstream.tcc | 9 +- libstdc++-v3/include/bits/streambuf.tcc | 2 + libstdc++-v3/include/bits/stringfwd.h | 18 +-- libstdc++-v3/include/std/std_iomanip.h | 16 ++- libstdc++-v3/include/std/std_iosfwd.h | 2 + libstdc++-v3/include/std/std_iostream.h | 1 + libstdc++-v3/src/string-inst.cc | 4 +- libstdc++-v3/testsuite/abi_check.cc | 19 ++- 14 files changed, 308 insertions(+), 104 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 5c2f1c06b45d..28ab80161bb3 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,33 @@ +2002-11-04 Benjamin Kosnik + + * 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 + + PR libstdc++/8172 + * src/string-inst.cc: Add instantiation. + +2002-11-04 Christian Ehrhardt + + PR libstdc++/8197 + * config/link-map.gnu: Export math stubbs. + +2002-11-04 Benjamin Kosnik + + 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 PR libstdc++/8348 diff --git a/libstdc++-v3/config/linker-map.gnu b/libstdc++-v3/config/linker-map.gnu index 588ad57fdd86..e2fa73d664e4 100644 --- a/libstdc++-v3/config/linker-map.gnu +++ b/libstdc++-v3/config/linker-map.gnu @@ -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 members. + _ZNKSt7codecvtIcc11__mbstate_tE*; + # std::codecvt::~codecvt + _ZNSt7codecvtIcc11__mbstate_tED*; + # std::codecvt::codecvt(size_t), where size_t variable. + _ZNSt7codecvtIcc11__mbstate_tEC1Ej; + _ZNSt7codecvtIcc11__mbstate_tEC2Ej; + _ZNSt7codecvtIcc11__mbstate_tEC1Em; + _ZNSt7codecvtIcc11__mbstate_tEC2Em; + # std::codecvt::id + _ZNSt7codecvtIcc11__mbstate_tE2idE; + + # std::codecvt members. + _ZNKSt7codecvtIwc11__mbstate_tE*; + # std::codecvt::~codecvt + _ZNSt7codecvtIwc11__mbstate_tED*; + # std::codecvt::codecvt(size_t), where size_t variable. + _ZNSt7codecvtIwc11__mbstate_tEC1Ej; + _ZNSt7codecvtIwc11__mbstate_tEC2Ej; + _ZNSt7codecvtIwc11__mbstate_tEC1Em; + _ZNSt7codecvtIwc11__mbstate_tEC2Em; + # std::codecvt::id + _ZNSt7codecvtIwc11__mbstate_tE2idE; + + # std::use_facet + _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 { diff --git a/libstdc++-v3/include/bits/basic_ios.tcc b/libstdc++-v3/include/bits/basic_ios.tcc index a38a95b58a0f..7ee8015e29f6 100644 --- a/libstdc++-v3/include/bits/basic_ios.tcc +++ b/libstdc++-v3/include/bits/basic_ios.tcc @@ -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; + +#ifdef _GLIBCPP_USE_WCHAR_T extern template class basic_ios; +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc index 198f190eae89..4a22d8967929 100644 --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -959,6 +959,7 @@ namespace std basic_istream& getline(basic_istream&, string&); +#ifdef _GLIBCPP_USE_WCHAR_T extern template class basic_string; extern template basic_istream& @@ -972,6 +973,7 @@ namespace std extern template basic_istream& getline(basic_istream&, wstring&); +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index 18dbaf1caae8..66cb9a1b179f 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -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; - extern template class basic_filebuf; extern template class basic_ifstream; - extern template class basic_ifstream; extern template class basic_ofstream; - extern template class basic_ofstream; extern template class basic_fstream; + +#ifdef _GLIBCPP_USE_WCHAR_T + extern template class basic_filebuf; + extern template class basic_ifstream; + extern template class basic_ofstream; extern template class basic_fstream; +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index f21054e29663..ce6f3d7d5ffa 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -2140,42 +2140,21 @@ namespace std extern template class moneypunct_byname; extern template class money_get; extern template class money_put; - extern template class moneypunct; - extern template class moneypunct; - extern template class moneypunct_byname; - extern template class moneypunct_byname; - extern template class money_get; - extern template class money_put; extern template class numpunct; extern template class numpunct_byname; extern template class num_get; extern template class num_put; - extern template class numpunct; - extern template class numpunct_byname; - extern template class num_get; - extern template class num_put; extern template class __timepunct; extern template class time_put; extern template class time_put_byname; extern template class time_get; extern template class time_get_byname; - extern template class __timepunct; - extern template class time_put; - extern template class time_put_byname; - extern template class time_get; - extern template class time_get_byname; extern template class messages; extern template class messages_byname; - extern template class messages; - extern template class messages_byname; extern template class ctype_byname; - extern template class ctype_byname; extern template class codecvt_byname; - extern template class codecvt_byname; extern template class collate; extern template class collate_byname; - extern template class collate; - extern template class collate_byname; extern template const codecvt& @@ -2229,59 +2208,6 @@ namespace std const messages& use_facet >(const locale&); - extern template - const codecvt& - use_facet >(locale const&); - - extern template - const collate& - use_facet >(const locale&); - - extern template - const numpunct& - use_facet >(const locale&); - - extern template - const num_put& - use_facet >(const locale&); - - extern template - const num_get& - use_facet >(const locale&); - - extern template - const moneypunct& - use_facet >(const locale&); - - extern template - const moneypunct& - use_facet >(const locale&); - - extern template - const money_put& - use_facet >(const locale&); - - extern template - const money_get& - use_facet >(const locale&); - - extern template - const __timepunct& - use_facet<__timepunct >(const locale&); - - extern template - const time_put& - use_facet >(const locale&); - - extern template - const time_get& - use_facet >(const locale&); - - extern template - const messages& - use_facet >(const locale&); - - extern template bool has_facet >(const locale&); @@ -2334,6 +2260,81 @@ namespace std bool has_facet >(const locale&); +#ifdef _GLIBCPP_USE_WCHAR_T + extern template class moneypunct; + extern template class moneypunct; + extern template class moneypunct_byname; + extern template class moneypunct_byname; + extern template class money_get; + extern template class money_put; + extern template class numpunct; + extern template class numpunct_byname; + extern template class num_get; + extern template class num_put; + extern template class __timepunct; + extern template class time_put; + extern template class time_put_byname; + extern template class time_get; + extern template class time_get_byname; + extern template class messages; + extern template class messages_byname; + extern template class ctype_byname; + extern template class codecvt_byname; + extern template class collate; + extern template class collate_byname; + + extern template + const codecvt& + use_facet >(locale const&); + + extern template + const collate& + use_facet >(const locale&); + + extern template + const numpunct& + use_facet >(const locale&); + + extern template + const num_put& + use_facet >(const locale&); + + extern template + const num_get& + use_facet >(const locale&); + + extern template + const moneypunct& + use_facet >(const locale&); + + extern template + const moneypunct& + use_facet >(const locale&); + + extern template + const money_put& + use_facet >(const locale&); + + extern template + const money_get& + use_facet >(const locale&); + + extern template + const __timepunct& + use_facet<__timepunct >(const locale&); + + extern template + const time_put& + use_facet >(const locale&); + + extern template + const time_get& + use_facet >(const locale&); + + extern template + const messages& + use_facet >(const locale&); + extern template bool has_facet >(const locale&); @@ -2385,6 +2386,7 @@ namespace std extern template bool has_facet >(const locale&); +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/sstream.tcc b/libstdc++-v3/include/bits/sstream.tcc index 99eb6af125f5..606705c02e91 100644 --- a/libstdc++-v3/include/bits/sstream.tcc +++ b/libstdc++-v3/include/bits/sstream.tcc @@ -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; - extern template class basic_stringbuf; extern template class basic_istringstream; - extern template class basic_istringstream; extern template class basic_ostringstream; - extern template class basic_ostringstream; extern template class basic_stringstream; + +#ifdef _GLIBCPP_USE_WCHAR_T + extern template class basic_stringbuf; + extern template class basic_istringstream; + extern template class basic_ostringstream; extern template class basic_stringstream; +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/streambuf.tcc b/libstdc++-v3/include/bits/streambuf.tcc index 2101f10b2ef2..c8084ee68ada 100644 --- a/libstdc++-v3/include/bits/streambuf.tcc +++ b/libstdc++-v3/include/bits/streambuf.tcc @@ -249,11 +249,13 @@ namespace std __copy_streambufs(basic_ios&, basic_streambuf*, basic_streambuf*); +#ifdef _GLIBCPP_USE_WCHAR_T extern template class basic_streambuf; extern template streamsize __copy_streambufs(basic_ios&, basic_streambuf*, basic_streambuf*); +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/bits/stringfwd.h b/libstdc++-v3/include/bits/stringfwd.h index b7418a67a7ea..db40befdab6a 100644 --- a/libstdc++-v3/include/bits/stringfwd.h +++ b/libstdc++-v3/include/bits/stringfwd.h @@ -45,23 +45,25 @@ namespace std { - template - struct char_traits; - - template<> struct char_traits; -#ifdef _GLIBCPP_USE_WCHAR_T - template<> struct char_traits; -#endif - template class allocator; + template + struct char_traits; + template, typename _Alloc = allocator<_CharT> > class basic_string; + + template<> struct char_traits; typedef basic_string string; + +#ifdef _GLIBCPP_USE_WCHAR_T + template<> struct char_traits; + typedef basic_string wstring; +#endif } // namespace std #endif // _CPP_BITS_STRINGFWD_H diff --git a/libstdc++-v3/include/std/std_iomanip.h b/libstdc++-v3/include/std/std_iomanip.h index e046c82f8fa1..23237ce210d6 100644 --- a/libstdc++-v3/include/std/std_iomanip.h +++ b/libstdc++-v3/include/std/std_iomanip.h @@ -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); - 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); 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); + 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); 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 diff --git a/libstdc++-v3/include/std/std_iosfwd.h b/libstdc++-v3/include/std/std_iosfwd.h index f76ca7cad706..797f4936dc8a 100644 --- a/libstdc++-v3/include/std/std_iosfwd.h +++ b/libstdc++-v3/include/std/std_iosfwd.h @@ -116,6 +116,7 @@ namespace std typedef basic_ofstream ofstream; typedef basic_fstream fstream; +#ifdef _GLIBCPP_USE_WCHAR_T typedef basic_ios wios; typedef basic_streambuf wstreambuf; typedef basic_istream wistream; @@ -129,6 +130,7 @@ namespace std typedef basic_ifstream wifstream; typedef basic_ofstream wofstream; typedef basic_fstream wfstream; +#endif } // namespace std #endif diff --git a/libstdc++-v3/include/std/std_iostream.h b/libstdc++-v3/include/std/std_iostream.h index 5b3da9c0d8bc..d0736b835132 100644 --- a/libstdc++-v3/include/std/std_iostream.h +++ b/libstdc++-v3/include/std/std_iostream.h @@ -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; diff --git a/libstdc++-v3/src/string-inst.cc b/libstdc++-v3/src/string-inst.cc index e812aa0cfc28..3fcaf5132e71 100644 --- a/libstdc++-v3/src/string-inst.cc +++ b/libstdc++-v3/src/string-inst.cc @@ -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; 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 diff --git a/libstdc++-v3/testsuite/abi_check.cc b/libstdc++-v3/testsuite/abi_check.cc index 21ca619ca83f..c093cd507a6a 100644 --- a/libstdc++-v3/testsuite/abi_check.cc +++ b/libstdc++-v3/testsuite/abi_check.cc @@ -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); -- 2.47.2