Fix libstdc++ testsuite failures with -D_GLIBCXX_USE_CXX11_ABI=0
authorJonathan Wakely <jwakely@redhat.com>
Wed, 14 Jun 2017 19:38:30 +0000 (20:38 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Wed, 14 Jun 2017 19:38:30 +0000 (20:38 +0100)
* doc/xml/manual/test.xml: Correct instructions on running tests.
* testsuite/21_strings/basic_string/cons/char/deduction.cc: Adjust to
pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
Likewise.
* testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
* 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: r249206

15 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/doc/xml/manual/test.xml
libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc

index 05efaa06824a8457f358fabbb1752c62324d739a..8820d9d03d7db425e46226172267ef0ad6801a3e 100644 (file)
@@ -1,3 +1,28 @@
+2017-06-14  Jonathan Wakely  <jwakely@redhat.com>
+
+       * doc/xml/manual/test.xml: Correct instructions on running tests.
+       * testsuite/21_strings/basic_string/cons/char/deduction.cc: Adjust to
+       pass when -D_GLIBCXX_USE_CXX11_ABI=0 added to RUNTESTFLAGS.
+       * testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc:
+       Likewise.
+       * testsuite/27_io/basic_ios/copyfmt/char/1.cc: Likewise.
+       * 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.
+
 2017-06-12  Pedro Alves  <palves@redhat.com>
 
        * doc/xml/manual/status_cxx2017.xml: Update C++17 constexpr
index 7cb7dafd5df3db2f0db71f282e4d54c6b318f87c..154b74cbf9f0d26356cb6990e5f89f10921a6509 100644 (file)
@@ -569,7 +569,7 @@ cat 27_io/objects/char/3_xin.in | a.out</programlisting>
       For example, to run the tests with
       <option>-O1 -D_GLIBCXX_ASSERTIONS</option>
       you could use:
-<programlisting>    make RUNTESTFLAGS=--target_board=unix/-O1/-D_GLIBCXX_ASSERTIONS</programlisting>
+<programlisting>    make check RUNTESTFLAGS=--target_board=unix/-O1/-D_GLIBCXX_ASSERTIONS</programlisting>
     </para>
 
     <para>
@@ -577,7 +577,7 @@ cat 27_io/objects/char/3_xin.in | a.out</programlisting>
       tests multiple times in different variations. For example, to run the
       entire testsuite three times using <option>-O3</option> but with
       different <option>-std</option> options:
-<programlisting>    make 'RUNTESTFLAGS=--target_board=unix/-O3\"{-std=gnu++98,-std=gnu++11,-std=gnu++14}\"'</programlisting>
+<programlisting>    make check 'RUNTESTFLAGS=--target_board=unix/-O3\"{-std=gnu++98,-std=gnu++11,-std=gnu++14}\"'</programlisting>
       N.B. that set of variations could also be written as
       <literal>unix/-O3\"{-std=gnu++98,-std=gnu++11,}\"</literal> so that
       the third variation would use the default for <option>-std</option>
index c9af333f28e9b08212188dbd72ff32435ded9356..205714a7f5f4a6908547cf3d8fa072f365ae5a16 100644 (file)
@@ -50,11 +50,13 @@ test01()
   const std::basic_string s4 = s3;
   check_type<const std::string>(s4);
 
+#if _GLIBCXX_USE_CXX11_ABI
   std::basic_string s5(s0, a);
   check_type<std::string>(s5);
 
   std::basic_string s6(std::move(s0), a);
   check_type<std::string>(s6);
+#endif
 
   std::basic_string s7(s0, 0, 0);
   check_type<std::string>(s7);
index 1f8eadb355ad1d21ee4fb7404489b5ae7412bdab..23ae07c6634c63d11af532be875470acd75daf03 100644 (file)
@@ -46,11 +46,13 @@ test01()
   const std::basic_string s4 = s2;
   check_type<const std::wstring>(s4);
 
+#if _GLIBCXX_USE_CXX11_ABI
   std::basic_string s5(s0, a);
   check_type<std::wstring>(s5);
 
   std::basic_string s6(std::move(s0), a);
   check_type<std::wstring>(s6);
+#endif
 
   std::basic_string s7(s0, 0, 0);
   check_type<std::wstring>(s7);
index 87551a08311119ca609eec379015ff22259527f2..840017e4e850034c73d69defca22efe05d5d184d 100644 (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.
@@ -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;
index 86b7bee35d39c56193e88b9bed284f00c7c4721a..152e783640a7f73b41c7f394cba3906a67f5f9ee 100644 (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.
@@ -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;
index 2f1edf6e79c944e4e5a17ec40f0c8207e38d92e4..5fa3f1f34a044b4d09e2ee62e53a2c4ecb4b24cb 100644 (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>
 
@@ -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 ); }
 }
index 7038565eb899641b7c8f511b6ccd1083c1ec511f..4ff48f7371277e009d2ce0cc17d208dc69a0925d 100644 (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>
 
@@ -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 ); }
 }
index 50c70f96378dd0911ab0fcdfb09409175a56aa9f..088aaa428082d858ce7442b541c795f7fb3862df 100644 (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&)
     {
     }
 
index 0d8a3cd3f3af3f65da42843aba16e04e1f61c5fd..fd6322b4cdba3511a1873f86f347e7d3a8cf0a0c 100644 (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&)
     {
     }
 
index ceb92347e088b9d224f2d3571792e1aff8bb6199..0900a70d148a167ac5112c864ea87de159afd26f 100644 (file)
 // 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;
 }
index dc9d48a18d83f905d551016c3b5a96704f1ca164..e72fe1a03a05eb8e2a0580a35829c835fe6c29b7 100644 (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>
@@ -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;
 }
index ab9ef94da35ca788270feb8dd7b8690717bb8e2a..9a7bd06f21a3d86ff069da5c36601a794981365b 100644 (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>
@@ -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&)
     {
     }
 
index bba6dd0e3f1d037b24716fae20485bcd7d59e5cf..fcfb37d2dacfb33db50ce0ade12a0f136fd4f9af 100644 (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>
@@ -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&)
     {
     }
 
index d2c9ec50e5301aabaab23a51bf86fc0c15e5cdc3..8fa306f61a2f1c24980a2dedfefb9c9270d2d4f5 100644 (file)
 // 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() );