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:
Jonathan Wakely 2017-09-20 23:26:26 +01:00 committed by Jonathan Wakely
parent ae6af5239b
commit 7899221766
12 changed files with 143 additions and 77 deletions

View File

@ -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

View File

@ -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.
@ -49,6 +46,13 @@ void test02()
}
{
// 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);
ios_01.clear(std::ios_base::eofbit);
@ -58,7 +62,7 @@ void test02()
ios_01.copyfmt(ios_02);
VERIFY( false );
}
catch(std::ios_base::failure& fail) {
catch(exception_type&) {
VERIFY( true );
}
catch(...) {

View File

@ -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.
@ -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) );
}

View File

@ -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>
@ -30,13 +27,20 @@ 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() );

View File

@ -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>
@ -30,13 +27,20 @@ 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() );

View File

@ -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&)
{
}

View File

@ -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&)
{
}

View File

@ -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>
@ -30,12 +26,19 @@ int main()
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) );
}

View File

@ -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>
@ -29,12 +26,19 @@ int main()
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) );
}

View File

@ -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>
@ -40,12 +37,19 @@ 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&)
{
}

View File

@ -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>
@ -40,12 +37,19 @@ 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&)
{
}

View File

@ -28,9 +28,6 @@
// 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" }
#include <sstream>
#include <iostream>
#include <limits>
@ -53,11 +50,18 @@ void test02()
ios.pword(1) = v;
VERIFY( ios.pword(1) == v );
// 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() );
@ -76,7 +80,7 @@ void test02()
{
v = ios.pword(std::numeric_limits<int>::max());
}
catch(std::ios_base::failure& obj)
catch(exception_type&)
{
// Ok.
VERIFY( ios.bad() );
@ -95,7 +99,7 @@ void test02()
{
l = ios.iword(max);
}
catch(std::ios_base::failure& obj)
catch(exception_type&)
{
// Ok.
VERIFY( ios.bad() );
@ -114,7 +118,7 @@ void test02()
{
l = ios.iword(std::numeric_limits<int>::max());
}
catch(std::ios_base::failure& obj)
catch(exception_type&)
{
// Ok.
VERIFY( ios.bad() );