This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[v3] gcc-3_3-branch versioning
- From: Benjamin Kosnik <bkoz at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org, mark at codesourcery dot com
- Date: Thu, 1 May 2003 18:19:11 -0400 (EDT)
- Subject: [v3] gcc-3_3-branch versioning
This updates the versions past gcc-3.2.3, fixes some of the ABI
issues, and cleans up 'make check-abi'
tested x86/linux gcc-3_3-branch
2003-05-01 Benjamin Kosnik <bkoz@redhat.com>
* configure.in (libtool_VERSION): To 5:4:0.
* configure: Regenerated.
* testsuite/abi_check.cc (check_version): Update known versions.
Check added symbols for version_name != base version. Add missing
symbols to incompatible list.
* config/linker-map.gnu: Fixup for __basic_file::showmanyc_helper.
Index: configure.in
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/configure.in,v
retrieving revision 1.110.2.4
diff -c -p -r1.110.2.4 configure.in
*** configure.in 1 May 2003 18:30:24 -0000 1.110.2.4
--- configure.in 1 May 2003 22:17:57 -0000
*************** ORIGINAL_LD_FOR_MULTILIBS=$LD
*** 13,19 ****
PACKAGE=libstdc++
AC_SUBST(PACKAGE)
# For libtool versioning info, format is CURRENT:REVISION:AGE
! libtool_VERSION=5:3:0
AC_SUBST(libtool_VERSION)
GLIBCPP_TOPREL_CONFIGURE
--- 13,19 ----
PACKAGE=libstdc++
AC_SUBST(PACKAGE)
# For libtool versioning info, format is CURRENT:REVISION:AGE
! libtool_VERSION=5:4:0
AC_SUBST(libtool_VERSION)
GLIBCPP_TOPREL_CONFIGURE
Index: config/linker-map.gnu
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/config/linker-map.gnu,v
retrieving revision 1.25.2.7
diff -c -p -r1.25.2.7 linker-map.gnu
*** config/linker-map.gnu 7 Mar 2003 22:04:18 -0000 1.25.2.7
--- config/linker-map.gnu 1 May 2003 22:17:57 -0000
*************** GLIBCPP_3.2 {
*** 82,88 ****
std::out_of_range*;
std::[A-Zp-z]*;
std::__throw_*;
- std::__basic_file*;
std::__numeric_limits_base*;
std::__timepunct*;
std::_S_bit_count;
--- 82,87 ----
*************** GLIBCPP_3.2 {
*** 158,163 ****
--- 157,179 ----
_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_EPKS3_RKS6_;
_ZStplIwSt11char_traitsIwESaIwEESbIT_T0_T1_ES3_RKS6_;
+ # std::__basic_file minus showmanyc_helper
+ _ZNSt12__basic_fileIcED*;
+ _ZNSt12__basic_fileIcEC*;
+ _ZNSt12__basic_fileIcE8sys_open*;
+ _ZNSt12__basic_fileIcE8sys_getc*;
+ _ZNSt12__basic_fileIcE10sys_ungetc*;
+ _ZNSt12__basic_fileIcE7seekpos*;
+ _ZNSt12__basic_fileIcE7seekoff*;
+ _ZNSt12__basic_fileIcE6xsputn*;
+ _ZNSt12__basic_fileIcE6xsgetn*;
+ _ZNSt12__basic_fileIcE5close*;
+ _ZNSt12__basic_fileIcE4sync*;
+ _ZNSt12__basic_fileIcE4open*;
+ _ZNSt12__basic_fileIcE2fd*;
+ _ZNSt12__basic_fileIcE12_M_open_modeE*;
+ _ZNKSt12__basic_fileIcE7is_open*;
+
# std::locale destructors
_ZNSt6localeD*;
*************** GLIBCPP_3.2.3 {
*** 373,378 ****
--- 389,397 ----
_ZNKSt7num_putI[wc]St19ostreambuf_iteratorI[wc]St11char_traitsI[wc]EEE14_M_group_float*;
_ZNKSt7num_putI[wc]St19ostreambuf_iteratorI[wc]St11char_traitsI[wc]EEE12_M_group_int*;
+
+ # __basic_file::showmanyc_helper
+ _ZNSt12__basic_fileIcE16showmanyc_helperEv;
# vtable
_ZTVSt19__locale_cache_base;
Index: testsuite/abi_check.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/abi_check.cc,v
retrieving revision 1.12.2.1
diff -c -p -r1.12.2.1 abi_check.cc
*** testsuite/abi_check.cc 4 Mar 2003 02:17:56 -0000 1.12.2.1
--- testsuite/abi_check.cc 1 May 2003 22:18:00 -0000
***************
*** 44,50 ****
struct symbol_info
{
enum category { none, function, object, error };
! category type;
std::string name;
std::string demangled_name;
int size;
--- 44,50 ----
struct symbol_info
{
enum category { none, function, object, error };
! category type;
std::string name;
std::string demangled_name;
int size;
*************** typedef __gnu_cxx::hash_map<std::string,
*** 77,109 ****
bool
! check_version(const symbol_info& test)
{
- bool ret = true;
-
typedef std::vector<std::string> compat_list;
! static compat_list known;
! if (known.empty())
{
! known.push_back("GLIBCPP_3.2");
! known.push_back("GLIBCPP_3.2.1");
! known.push_back("GLIBCPP_3.2.2");
! known.push_back("GLIBCPP_3.2.3");
! known.push_back("CXXABI_1.2");
! known.push_back("CXXABI_1.2.1");
}
!
! compat_list::iterator end = known.end();
// Check version names for compatibility...
! compat_list::iterator it1 = find(known.begin(), end, test.version_name);
// Check for weak label.
! compat_list::iterator it2 = find(known.begin(), end, test.name);
! if (it1 != end || it2 != end)
! ret = true;
! return ret;
}
bool
--- 77,113 ----
bool
! check_version(const symbol_info& test, bool added = false)
{
typedef std::vector<std::string> compat_list;
! static compat_list known_versions;
! if (known_versions.empty())
{
! known_versions.push_back("GLIBCPP_3.2"); // base version
! known_versions.push_back("GLIBCPP_3.2.1");
! known_versions.push_back("GLIBCPP_3.2.2");
! known_versions.push_back("GLIBCPP_3.2.3"); // gcc-3.3.0
! known_versions.push_back("CXXABI_1.2");
! known_versions.push_back("CXXABI_1.2.1");
}
! compat_list::iterator begin = known_versions.begin();
! compat_list::iterator end = known_versions.end();
// Check version names for compatibility...
! compat_list::iterator it1 = find(begin, end, test.version_name);
// Check for weak label.
! compat_list::iterator it2 = find(begin, end, test.name);
! // Check that added symbols aren't added in the base version.
! bool compat = true;
! if (added && test.version_name == known_versions[0])
! compat = false;
!
! if (it1 == end && it2 == end)
! compat = false;
!
! return compat;
}
bool
*************** report_symbol_info(const symbol_info& sy
*** 290,296 ****
{
using namespace std;
const char tab = '\t';
- cout << tab << n << endl;
// Add any other information to display here.
cout << tab << symbol.demangled_name << endl;
--- 294,299 ----
*************** main(int argc, char** argv)
*** 377,388 ****
added_names.erase(it);
}
else
! missing_names.push_back(what);
}
! // Check shared names for compatibility.
typedef pair<symbol_info, symbol_info> symbol_pair;
vector<symbol_pair> incompatible;
for (size_t i = 0; i < shared_names.size(); ++i)
{
symbol_info base = baseline_symbols[shared_names[i]];
--- 380,398 ----
added_names.erase(it);
}
else
! missing_names.push_back(what);
}
! // Check missing names for compatibility.
typedef pair<symbol_info, symbol_info> symbol_pair;
vector<symbol_pair> incompatible;
+ for (size_t i = 0; i < missing_names.size(); ++i)
+ {
+ symbol_info base = baseline_symbols[missing_names[i]];
+ incompatible.push_back(symbol_pair(base, base));
+ }
+
+ // Check shared names for compatibility.
for (size_t i = 0; i < shared_names.size(); ++i)
{
symbol_info base = baseline_symbols[shared_names[i]];
*************** main(int argc, char** argv)
*** 395,405 ****
for (size_t i = 0; i < added_names.size(); ++i)
{
symbol_info test = test_symbols[added_names[i]];
! if (!check_version(test))
! {
! incompatible.push_back(symbol_pair(test, test));
! cout << test.version_name << endl;
! }
}
// Report results.
--- 405,412 ----
for (size_t i = 0; i < added_names.size(); ++i)
{
symbol_info test = test_symbols[added_names[i]];
! if (!check_version(test, true))
! incompatible.push_back(symbol_pair(test, test));
}
// Report results.