From 4a49c70b858351daecd43cac4bbe5d7f6e4e70e4 Mon Sep 17 00:00:00 2001 From: Benjamin Kosnik Date: Fri, 21 Mar 2008 11:31:11 +0000 Subject: [PATCH] testsuite_abi.cc: Add support for not counting GLIBCXX_LDBL_* compat symbols missing if... 2008-03-20 Benjamin Kosnik * testsuite/util/testsuite_abi.cc: Add support for not counting GLIBCXX_LDBL_* compat symbols missing if no long double compat symbols under test. From-SVN: r133417 --- libstdc++-v3/ChangeLog | 6 +++++ libstdc++-v3/testsuite/util/testsuite_abi.cc | 23 ++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 578a36cb039..a48967dcad7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2008-03-20 Benjamin Kosnik + + * testsuite/util/testsuite_abi.cc: Add support for not counting + GLIBCXX_LDBL_* compat symbols missing if no long double compat + symbols under test. + 2008-03-20 Paolo Carlini PR libstdc++/35637 diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc index 93205b8cc67..e78a1132462 100644 --- a/libstdc++-v3/testsuite/util/testsuite_abi.cc +++ b/libstdc++-v3/testsuite/util/testsuite_abi.cc @@ -354,6 +354,16 @@ compare_symbols(const char* baseline_file, const char* test_file, exit(2); } + // Check to see if any long double compatibility symbols are produced. + bool ld_version_found(false); + symbol_objects::iterator li(test_objects.begin()); + while (!ld_version_found && li != test_objects.end()) + { + if (li->second.version_name.find("GLIBCXX_LDBL_") != std::string::npos) + ld_version_found = true; + ++li; + } + // Sort out names. // Assuming baseline_names, test_names are both unique w/ no duplicates. // @@ -389,8 +399,17 @@ compare_symbols(const char* baseline_file, const char* test_file, for (size_t j = 0; j < missing_size; ++j) { symbol& base = baseline_objects[missing_names[j]]; - base.status = symbol::subtracted; - incompatible.push_back(symbol_pair(base, base)); + + // Iff no test long double symbols at all and the symbol missing + // is a baseline long double symbol, skip. + if (!ld_version_found + && base.version_name.find("GLIBCXX_LDBL_") != std::string::npos) + continue; + else + { + base.status = symbol::subtracted; + incompatible.push_back(symbol_pair(base, base)); + } } // Check shared names for compatibility. -- 2.30.2