Fix libstdc++ testsuite failures with -D_GLIBCXX_USE_CXX11_ABI=0
Backport from mainline 2017-06-14 Jonathan Wakely <jwakely@redhat.com> * doc/xml/manual/test.xml: Correct instructions on running tests. * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Adjust to pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS. * testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise. * testsuite/27_io/basic_istream/extractors_arithmetic/char/ exceptions_failbit.cc: Likewise. * testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/ exceptions_failbit.cc: Likewise. * testsuite/27_io/basic_istream/extractors_other/char/ exceptions_null.cc: Likewise. * testsuite/27_io/basic_istream/extractors_other/wchar_t/ exceptions_null.cc: Likewise. * testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise. * testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/char/ exceptions_null.cc: Likewise. * testsuite/27_io/basic_ostream/inserters_other/wchar_t/ exceptions_null.cc: Likewise. * testsuite/27_io/ios_base/storage/2.cc: Likewise. From-SVN: r253039
This commit is contained in:
parent
ae6af5239b
commit
7899221766
@ -1,5 +1,28 @@
|
||||
2017-09-20 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
Backport from mainline
|
||||
2017-06-14 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* doc/xml/manual/test.xml: Correct instructions on running tests.
|
||||
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Adjust to pass when
|
||||
-D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
|
||||
* testsuite/27_io/basic_ios/exceptions/char/1.cc: Likewise.
|
||||
* testsuite/27_io/basic_istream/extractors_arithmetic/char/
|
||||
exceptions_failbit.cc: Likewise.
|
||||
* testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/
|
||||
exceptions_failbit.cc: Likewise.
|
||||
* testsuite/27_io/basic_istream/extractors_other/char/
|
||||
exceptions_null.cc: Likewise.
|
||||
* testsuite/27_io/basic_istream/extractors_other/wchar_t/
|
||||
exceptions_null.cc: Likewise.
|
||||
* testsuite/27_io/basic_istream/sentry/char/12297.cc: Likewise.
|
||||
* testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc: Likewise.
|
||||
* testsuite/27_io/basic_ostream/inserters_other/char/
|
||||
exceptions_null.cc: Likewise.
|
||||
* testsuite/27_io/basic_ostream/inserters_other/wchar_t/
|
||||
exceptions_null.cc: Likewise.
|
||||
* testsuite/27_io/ios_base/storage/2.cc: Likewise.
|
||||
|
||||
PR libstdc++/79162
|
||||
* include/bits/basic_string.h [!_GLIBCXX_USE_CXX11_ABI]
|
||||
(basic_string::_If_sv): Remove from the overload set when the
|
||||
|
@ -17,9 +17,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
// 27.4.4.2 basic_ios member functions
|
||||
|
||||
// NB: Don't include any other headers in this file.
|
||||
@ -36,29 +33,36 @@ void test02()
|
||||
// basic_ios& copyfmt(const basic_ios& rhs)
|
||||
{
|
||||
std::ios ios_01(0);
|
||||
std::ios ios_02(0);
|
||||
std::ios ios_02(0);
|
||||
ios_01.exceptions(std::ios_base::eofbit);
|
||||
ios_02.exceptions(std::ios_base::eofbit);
|
||||
|
||||
|
||||
try {
|
||||
ios_01.copyfmt(ios_02);
|
||||
}
|
||||
ios_01.copyfmt(ios_02);
|
||||
}
|
||||
catch(...) {
|
||||
VERIFY( false );
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
std::ios ios_01(0);
|
||||
std::ios ios_02(0);
|
||||
std::ios ios_02(0);
|
||||
ios_01.clear(std::ios_base::eofbit);
|
||||
ios_02.exceptions(std::ios_base::eofbit);
|
||||
|
||||
try {
|
||||
ios_01.copyfmt(ios_02);
|
||||
VERIFY( false );
|
||||
}
|
||||
catch(std::ios_base::failure& fail) {
|
||||
}
|
||||
catch(exception_type&) {
|
||||
VERIFY( true );
|
||||
}
|
||||
catch(...) {
|
||||
@ -67,7 +71,7 @@ void test02()
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
int main()
|
||||
{
|
||||
test02();
|
||||
return 0;
|
||||
|
@ -17,9 +17,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
// 27.4.4.2 basic_ios member functions
|
||||
|
||||
// NB: Don't include any other headers in this file.
|
||||
@ -44,7 +41,7 @@ void test01()
|
||||
std::ios ios_01(0);
|
||||
try {
|
||||
ios_01.exceptions(std::ios_base::eofbit);
|
||||
}
|
||||
}
|
||||
catch(...) {
|
||||
VERIFY( false );
|
||||
}
|
||||
@ -53,13 +50,20 @@ void test01()
|
||||
}
|
||||
|
||||
{
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
std::ios ios_01(0);
|
||||
ios_01.clear(std::ios_base::eofbit);
|
||||
try {
|
||||
ios_01.exceptions(std::ios_base::eofbit);
|
||||
VERIFY( false );
|
||||
}
|
||||
catch(std::ios_base::failure& fail) {
|
||||
}
|
||||
catch(exception_type&) {
|
||||
iostate02 = ios_01.exceptions();
|
||||
VERIFY( static_cast<bool>(iostate02 & std::ios_base::eofbit) );
|
||||
}
|
||||
@ -69,7 +73,7 @@ void test01()
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
return 0;
|
||||
|
@ -15,9 +15,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
#include <sstream>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
@ -29,20 +26,27 @@ void test_failbit()
|
||||
|
||||
istringstream stream("jaylib - champion sound");
|
||||
stream.exceptions(ios_base::failbit);
|
||||
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
T i;
|
||||
stream >> i;
|
||||
VERIFY( false );
|
||||
}
|
||||
catch (const ios_base::failure&)
|
||||
{
|
||||
catch (const exception_type&)
|
||||
{
|
||||
// stream should set failbit and throw ios_base::failure.
|
||||
VERIFY( stream.fail() );
|
||||
VERIFY( !stream.bad() );
|
||||
VERIFY( !stream.eof() );
|
||||
}
|
||||
}
|
||||
catch(...)
|
||||
{ VERIFY( false ); }
|
||||
}
|
||||
|
@ -15,9 +15,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
#include <sstream>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
@ -29,20 +26,27 @@ void test_failbit()
|
||||
|
||||
wistringstream stream(L"jaylib - champion sound");
|
||||
stream.exceptions(ios_base::failbit);
|
||||
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
T i;
|
||||
stream >> i;
|
||||
VERIFY( false );
|
||||
}
|
||||
catch (const ios_base::failure&)
|
||||
{
|
||||
catch (const exception_type&)
|
||||
{
|
||||
// stream should set failbit and throw ios_base::failure.
|
||||
VERIFY( stream.fail() );
|
||||
VERIFY( !stream.bad() );
|
||||
VERIFY( !stream.eof() );
|
||||
}
|
||||
}
|
||||
catch(...)
|
||||
{ VERIFY( false ); }
|
||||
}
|
||||
|
@ -15,9 +15,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
#include <istream>
|
||||
#include <ostream>
|
||||
#include <streambuf>
|
||||
@ -38,12 +35,19 @@ void test4()
|
||||
istringstream stream;
|
||||
stream.exceptions(ios_base::failbit);
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
stream >> static_cast<streambuf*>(0);
|
||||
VERIFY(false);
|
||||
}
|
||||
catch (ios_base::failure&)
|
||||
catch (exception_type&)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -15,9 +15,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
#include <istream>
|
||||
#include <ostream>
|
||||
#include <streambuf>
|
||||
@ -38,12 +35,19 @@ void test4()
|
||||
wistringstream stream;
|
||||
stream.exceptions(ios_base::failbit);
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
stream >> static_cast<wstreambuf*>(0);
|
||||
VERIFY( false );
|
||||
}
|
||||
catch (ios_base::failure&)
|
||||
catch (exception_type&)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -15,12 +15,8 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
// 27.6.1.1.2 class basic_istream::sentry
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
#include <sstream>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
@ -29,16 +25,23 @@ int main()
|
||||
using namespace std;
|
||||
istringstream stream;
|
||||
stream.exceptions(ios_base::eofbit);
|
||||
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
istream::sentry sentry(stream, false);
|
||||
VERIFY( false );
|
||||
}
|
||||
catch (ios_base::failure&)
|
||||
catch (exception_type&)
|
||||
{
|
||||
VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) );
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -15,9 +15,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
// 27.6.1.1.2 class basic_istream::sentry
|
||||
|
||||
#include <sstream>
|
||||
@ -28,16 +25,23 @@ int main()
|
||||
using namespace std;
|
||||
wistringstream stream;
|
||||
stream.exceptions(ios_base::eofbit);
|
||||
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
wistream::sentry sentry(stream, false);
|
||||
VERIFY( false );
|
||||
}
|
||||
catch (ios_base::failure&)
|
||||
catch (exception_type&)
|
||||
{
|
||||
VERIFY( stream.rdstate() == (ios_base::eofbit | ios_base::failbit) );
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -15,9 +15,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
#include <istream>
|
||||
#include <ostream>
|
||||
#include <streambuf>
|
||||
@ -39,13 +36,20 @@ void test3()
|
||||
|
||||
ostringstream stream;
|
||||
stream.exceptions(ios_base::badbit);
|
||||
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
stream << static_cast<streambuf*>(0);
|
||||
VERIFY( false );
|
||||
}
|
||||
catch (ios_base::failure&)
|
||||
catch (exception_type&)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -15,9 +15,6 @@
|
||||
// with this library; see the file COPYING3. If not see
|
||||
// <http://www.gnu.org/licenses/>.
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
|
||||
#include <istream>
|
||||
#include <ostream>
|
||||
#include <streambuf>
|
||||
@ -39,13 +36,20 @@ void test3()
|
||||
|
||||
wostringstream stream;
|
||||
stream.exceptions(ios_base::badbit);
|
||||
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
stream << static_cast<wstreambuf*>(0);
|
||||
VERIFY( false );
|
||||
}
|
||||
catch (ios_base::failure&)
|
||||
catch (exception_type&)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -26,10 +26,7 @@
|
||||
// Skip test at -m64 on Darwin because RLIMITS are not being honored.
|
||||
// Radar 6467883: 10.4/10.5 setrlimits are not honored by memory allocators
|
||||
// Radar 6467884: 10.X systems are not robust when paging space is exceeded
|
||||
// { dg-skip-if "" { *-*-darwin* && lp64 } { "*" } { "" } }
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
// { dg-options "-D_GLIBCXX_USE_CXX11_ABI=1" }
|
||||
// { dg-skip-if "" { *-*-darwin* && lp64 } { "*" } { "" } }
|
||||
|
||||
#include <sstream>
|
||||
#include <iostream>
|
||||
@ -52,12 +49,19 @@ void test02()
|
||||
// pword
|
||||
ios.pword(1) = v;
|
||||
VERIFY( ios.pword(1) == v );
|
||||
|
||||
try
|
||||
|
||||
// The library throws the new definition of std::ios::failure
|
||||
#if _GLIBCXX_USE_CXX11_ABI
|
||||
typedef std::ios_base::failure exception_type;
|
||||
#else
|
||||
typedef std::exception exception_type;
|
||||
#endif
|
||||
|
||||
try
|
||||
{
|
||||
v = ios.pword(max);
|
||||
}
|
||||
catch(std::ios_base::failure& obj)
|
||||
catch(exception_type&)
|
||||
{
|
||||
// Ok.
|
||||
VERIFY( ios.bad() );
|
||||
@ -69,14 +73,14 @@ void test02()
|
||||
VERIFY( v == 0 );
|
||||
|
||||
VERIFY( ios.pword(1) == v );
|
||||
|
||||
|
||||
// max is different code path from max-1
|
||||
v = &test;
|
||||
try
|
||||
{
|
||||
v = ios.pword(std::numeric_limits<int>::max());
|
||||
}
|
||||
catch(std::ios_base::failure& obj)
|
||||
catch(exception_type&)
|
||||
{
|
||||
// Ok.
|
||||
VERIFY( ios.bad() );
|
||||
@ -90,12 +94,12 @@ void test02()
|
||||
// iword
|
||||
ios.iword(1) = 1;
|
||||
VERIFY( ios.iword(1) == 1 );
|
||||
|
||||
try
|
||||
|
||||
try
|
||||
{
|
||||
l = ios.iword(max);
|
||||
}
|
||||
catch(std::ios_base::failure& obj)
|
||||
catch(exception_type&)
|
||||
{
|
||||
// Ok.
|
||||
VERIFY( ios.bad() );
|
||||
@ -110,11 +114,11 @@ void test02()
|
||||
|
||||
// max is different code path from max-1
|
||||
l = 1;
|
||||
try
|
||||
try
|
||||
{
|
||||
l = ios.iword(std::numeric_limits<int>::max());
|
||||
}
|
||||
catch(std::ios_base::failure& obj)
|
||||
catch(exception_type&)
|
||||
{
|
||||
// Ok.
|
||||
VERIFY( ios.bad() );
|
||||
|
Loading…
Reference in New Issue
Block a user