libstdc++: Add C++11 member functions for ios::failure in old ABI
authorJonathan Wakely <jwakely@redhat.com>
Thu, 8 Oct 2020 13:03:52 +0000 (14:03 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 8 Oct 2020 13:45:37 +0000 (14:45 +0100)
commitf997b67550144c6c0562f94c9b9cb932125d0444
tree8858edff564203f4282df738b271d5ba5a3dff45
parentc06617a79b41da37d80d7e88a3dbc56818f3e706
libstdc++: Add C++11 member functions for ios::failure in old ABI

The new constructors that C++11 added to std::ios_base::failure were
missing for the old ABI. This adds them, but just ignores the
std::error_code argument (because there's nowhere to store it).

This also adds a code() member, which should be provided by the
std::system_error base class, but that base class isn't present in the
old ABI.

This allows the old ios::failure to be used in code that expects the new
API, although with reduced functionality.

libstdc++-v3/ChangeLog:

* include/bits/ios_base.h (ios_base::failure): Add constructors
takeing error_code argument. Add code() member function.
* testsuite/27_io/ios_base/failure/cxx11.cc: Allow test to
run for the old ABI but do not check for derivation from
std::system_error.
* testsuite/27_io/ios_base/failure/error_code.cc: New test.
libstdc++-v3/include/bits/ios_base.h
libstdc++-v3/testsuite/27_io/ios_base/failure/cxx11.cc
libstdc++-v3/testsuite/27_io/ios_base/failure/error_code.cc [new file with mode: 0644]