summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2002-11-04 22:57:00 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2002-11-04 22:57:00 +0000
commitb19cad40b13c57520def9623ef5c5d7948fe957a (patch)
tree7f7456acf9625ebb226fb88d8a12eca00d8c861a
parentb2114062b43297b59b419766e876eff50fcb2e11 (diff)
downloadgcc-b19cad40b13c57520def9623ef5c5d7948fe957a.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58801 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--libstdc++-v3/ChangeLog6
-rw-r--r--libstdc++-v3/config/linker-map.gnu64
-rw-r--r--libstdc++-v3/testsuite/abi_check.cc19
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 <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-01 Benjamin Kosnik <bkoz@redhat.com>
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);