On Thu, 24 Apr 2014, Rainer Orth wrote:
Marc Glisse <marc.gli...@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.gli...@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)