This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]