diff mbox

version typeinfo for 128bit types

Message ID alpine.DEB.2.02.1404241950410.4141@stedding.saclay.inria.fr
State New
Headers show

Commit Message

Marc Glisse April 24, 2014, 6:03 p.m. UTC
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.

Comments

Jonathan Wakely April 25, 2014, 12:17 a.m. UTC | #1
On 24/04/14 20:03 +0200, Marc Glisse wrote:
>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?

OK, and sorry for forgetting about that file in the testsuite!
Marc Glisse April 25, 2014, 8:24 a.m. UTC | #2
On Fri, 25 Apr 2014, Jonathan Wakely wrote:

> On 24/04/14 20:03 +0200, Marc Glisse wrote:
>> 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?
>
> OK, and sorry for forgetting about that file in the testsuite!

Done.

You might also want to update the latestp check to GLIBCXX_3.4.21 and 
CXXABI_TM_2 since I think adding symbols to GLIBCXX_3.4.20 or CXXABI_TM_1 
at this point should make a noisy error.
diff mbox

Patch

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)