diff options
Diffstat (limited to 'libstdc++-v3/testsuite/util/testsuite_abi.cc')
-rw-r--r-- | libstdc++-v3/testsuite/util/testsuite_abi.cc | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/libstdc++-v3/testsuite/util/testsuite_abi.cc b/libstdc++-v3/testsuite/util/testsuite_abi.cc index 93205b8..e78a113 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. |