aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/util/testsuite_abi.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/testsuite/util/testsuite_abi.cc')
-rw-r--r--libstdc++-v3/testsuite/util/testsuite_abi.cc23
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.