testsuite_abi.cc: Add support for not counting GLIBCXX_LDBL_* compat symbols missing...
authorBenjamin Kosnik <bkoz@redhat.com>
Fri, 21 Mar 2008 11:31:11 +0000 (11:31 +0000)
committerBenjamin Kosnik <bkoz@gcc.gnu.org>
Fri, 21 Mar 2008 11:31:11 +0000 (11:31 +0000)
2008-03-20  Benjamin Kosnik  <bkoz@redhat.com>

* 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
libstdc++-v3/testsuite/util/testsuite_abi.cc

index 578a36cb039d049a193f6cf2177f6e560139450f..a48967dcad73ab3fb50b6c800e0e324634ec4ce2 100644 (file)
@@ -1,3 +1,9 @@
+2008-03-20  Benjamin Kosnik  <bkoz@redhat.com>
+
+       * 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  <pcarlini@suse.de>
 
        PR libstdc++/35637
index 93205b8cc67cb2c5afdc07c5741bce8b5c6925d8..e78a1132462074b10c9c61c604732d119513d11d 100644 (file)
@@ -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.