On Sun, Mar 20, 2011 at 01:58:24AM +0100, Benjamin Kosnik wrote: > 2011-03-19 Jakub Jelinek <ja...@redhat.com> > > * config/abi/pre/gnu.ver (CXXABI_1.3): Don't export _ZT[IS][PK]*[no]. > (CXXABI_1.3.5): Export _ZTI[PK]*[no]. > > This looks good to me, nice catch. I'll figure out what happened with > check_abi when I'm back, conductivity-wise.
The problem is that abicheck only flags as incompatible additions to GLIBCXX_3.4, but not other base versions. Ideally it would flag addition to any version that hasn't been added (addition of the version is flagged by OBJECT:0:CXXABI_1.3.5 etc. entries (no @s in it). This patch for now just complains about additions to any base versions, I'll leave the better alternative to you ;) 2011-03-21 Jakub Jelinek <ja...@redhat.com> * testsuite/util/testsuite_abi.cc (check_version): Set incompatible even when adding symbols to CXXABI_1.3, GLIBCXX_LDBL_3.4 and CXXABI_LDBL_1.3 versions. --- libstdc++-v3/testsuite/util/testsuite_abi.cc.jj 2010-12-13 12:06:14.000000000 +0100 +++ libstdc++-v3/testsuite/util/testsuite_abi.cc 2011-03-21 09:22:13.296401986 +0100 @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 +// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 // Free Software Foundation, Inc. // This library is free software; you can redistribute it and/or @@ -217,10 +217,14 @@ check_version(symbol& test, bool added) else test.version_status = symbol::incompatible; - // Check that added symbols aren't added in the base version. - if (added && test.version_name == known_versions[0]) + // Check that added symbols aren't added in the base versions. + if (added + && (test.version_name == known_versions[0] + || test.version_name == "CXXABI_1.3" + || test.version_name == "GLIBCXX_LDBL_3.4" + || test.version_name == "CXXABI_LDBL_1.3")) 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) Jakub