From 72040fcbf6e47156a600a9a8ebdc9c1a55afb7de Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Mon, 4 Nov 2002 22:57:00 +0000 Subject: [PATCH] linker-map.gnu: Export string operator+. 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. From-SVN: r58801 --- libstdc++-v3/ChangeLog | 6 +++ libstdc++-v3/config/linker-map.gnu | 64 +++++++++++++++++++++++++++-- libstdc++-v3/testsuite/abi_check.cc | 19 +++++++-- 3 files changed, 81 insertions(+), 8 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 67b4639865e..68dc94f7b1a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +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-01 Benjamin Kosnik PR libstdc++/8172 diff --git a/libstdc++-v3/config/linker-map.gnu b/libstdc++-v3/config/linker-map.gnu index 8cf226db912..e2fa73d664e 100644 --- a/libstdc++-v3/config/linker-map.gnu +++ b/libstdc++-v3/config/linker-map.gnu @@ -28,7 +28,15 @@ GLIBCPP_3.2 { # All but the last are terminated with a semicolon. extern "C++" { - std::[A-Za-b]*; + 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*; @@ -56,13 +64,39 @@ 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*; @@ -97,6 +131,23 @@ GLIBCPP_3.2 { # 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&) @@ -156,6 +207,11 @@ GLIBCPP_3.2.1 { _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; diff --git a/libstdc++-v3/testsuite/abi_check.cc b/libstdc++-v3/testsuite/abi_check.cc index 21ca619ca83..c093cd507a6 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);