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]

Re: version typeinfo for 128bit types


On Thu, 24 Apr 2014, Rainer Orth wrote:

Marc Glisse <marc.glisse@inria.fr> writes:

this is a follow-up for this patch:
http://gcc.gnu.org/ml/gcc-patches/2014-04/msg00618.html

once committed, g++ will generate typeinfo for __float128, and it needs
versioning. While there, I noticed that __int128 has "typeinfo" but not
"typeinfo name", so I am adding it. I manually checked that the new symbols
were exactly the 12 I expected, with the new version number.

I did not test the gnu-versioned-namespace version.

I manually updated baseline for x86_64. It is awfully inconvenient to do. I
was expecting "make new-abi-baseline" to generate it for me, but it gives
me plenty of extra symbols compared to the current one. Some random
examples:

It shouldn't be necessary to update all baselines whenever you add a new
version to libstdc++.so.6.  It seems to me that when you added
CXXABI_1.3.9, you forgot to update
libstdc++-v3/testsuite/util/testsuite_abi.cc for that.

I had no idea this file even existed, thanks for the pointer! It makes so much more sense this way :-)

Grep seems to indicate that the manual is the only other place that needs updating, but that can wait.

Is this patch ok, assuming the tests pass?

2014-04-24  Marc Glisse  <marc.glisse@inria.fr>

	* testsuite/util/testsuite_abi.cc (check_version): Update for
	CXXABI_1.3.9.

--
Marc Glisse
Index: libstdc++-v3/testsuite/util/testsuite_abi.cc
===================================================================
--- libstdc++-v3/testsuite/util/testsuite_abi.cc	(revision 209755)
+++ libstdc++-v3/testsuite/util/testsuite_abi.cc	(working copy)
@@ -203,38 +203,39 @@ check_version(symbol& test, bool added)
       known_versions.push_back("CXXABI_1.3");
       known_versions.push_back("CXXABI_LDBL_1.3");
       known_versions.push_back("CXXABI_1.3.1");
       known_versions.push_back("CXXABI_1.3.2");
       known_versions.push_back("CXXABI_1.3.3");
       known_versions.push_back("CXXABI_1.3.4");
       known_versions.push_back("CXXABI_1.3.5");
       known_versions.push_back("CXXABI_1.3.6");
       known_versions.push_back("CXXABI_1.3.7");
       known_versions.push_back("CXXABI_1.3.8");
+      known_versions.push_back("CXXABI_1.3.9");
       known_versions.push_back("CXXABI_TM_1");
     }
   compat_list::iterator begin = known_versions.begin();
   compat_list::iterator end = known_versions.end();
 
   // Check for compatible version.
   if (test.version_name.size())
     {
       compat_list::iterator it1 = find(begin, end, test.version_name);
       compat_list::iterator it2 = find(begin, end, test.name);
       if (it1 != end)
 	test.version_status = symbol::compatible;
       else
 	test.version_status = symbol::incompatible;
 
       // Check that added symbols are added in the latest pre-release version.
       bool latestp = (test.version_name == "GLIBCXX_3.4.20"
-		     || test.version_name == "CXXABI_1.3.8"
+		     || test.version_name == "CXXABI_1.3.9"
 		     || test.version_name == "CXXABI_TM_1");
       if (added && !latestp)
 	test.version_status = symbol::incompatible;
 
       // Check that long double compatibility symbols demangled as
       // __float128 are put into some _LDBL_ version name.
       if (added && test.demangled_name.find("__float128") != std::string::npos)
 	{
 	  // Has to be in _LDBL_ version name.
 	  if (test.version_name.find("_LDBL_") == std::string::npos)

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