[Bug libstdc++/70238] New: [5/6 Regression] std::future_category ABI change

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Mar 15 11:27:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70238

            Bug ID: 70238
           Summary: [5/6 Regression] std::future_category ABI change
           Product: gcc
           Version: 5.3.0
            Status: UNCONFIRMED
          Keywords: ABI
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org
  Target Milestone: ---

In GCC 4.8 std::future_category returned std::error_category while with
GCC 5 it now returns std::_V2::error_category but it's manged
symbol didn't change nor was there a new symbol version introduced.

This makes the following testcase fail when compiled with GCC 4.8 or 4.9
and run with the libstdc++ runtime from GCC 5 or later.

#include <thread>
#include <future>
#include <system_error>

extern "C" void abort (void);

using namespace std;
int main(int argc, char *argv[])
{
  const std::error_category& cat = std::future_category();
  std::error_condition e_cond((int)std::future_errc::future_already_retrieved,
cat);

  bool ret=cat.equivalent((int)std::future_errc::promise_already_satisfied,
e_cond);
  if (ret != 0)
    abort ();
  return 0;
}


More information about the Gcc-bugs mailing list