From: Loren J. Rittle Date: Sat, 8 Mar 2003 08:55:54 +0000 (+0000) Subject: c_locale.cc (locale::facet::_S_create_c_locale): Throw runtime exception when unsuppo... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=85c39c6df194ac319d07b73ca4c517fc31d8d002;p=gcc.git c_locale.cc (locale::facet::_S_create_c_locale): Throw runtime exception when unsupported language is specified. * config/locale/generic/c_locale.cc (locale::facet::_S_create_c_locale): Throw runtime exception when unsupported language is specified. * testsuite/testsuite_hooks.h (run_test_wrapped_generic_locale_exception_catcher): New function. * testsuite/testsuite_hooks.cc (run_tests_wrapped_locale): Suppress runtime exception thrown by generic implementation. (run_tests_wrapped_env): Likewise. (run_test_wrapped_generic_locale_exception_catcher): New function. * testsuite/22_locale/collate/compare/char/1.cc: New test wrap. * testsuite/22_locale/collate/compare/char/2.cc: New test wrap. * testsuite/22_locale/collate/compare/char/3.cc: New test wrap. * testsuite/22_locale/collate/hash/char/2.cc: New test wrap. * testsuite/22_locale/collate/transform/char/2.cc: New test wrap. * testsuite/22_locale/collate/transform/char/3.cc: New test wrap. * testsuite/22_locale/collate_byname/1.cc: New test wrap. * testsuite/22_locale/ctype/is/char/2.cc: New test wrap. * testsuite/22_locale/facet/2.cc: New test wrap. * testsuite/22_locale/locale/cons/4.cc: New test wrap. * testsuite/22_locale/locale/cons/5.cc: New test wrap. * testsuite/22_locale/locale/cons/7.cc: New test wrap. * testsuite/22_locale/messages/members/char/1.cc: New test wrap. * testsuite/22_locale/messages/members/char/2.cc: New test wrap. * testsuite/22_locale/messages/members/char/3.cc: New test wrap. * testsuite/22_locale/messages_byname/1.cc: New test wrap. * testsuite/22_locale/money_get/get/char/1.cc: New test wrap. * testsuite/22_locale/money_get/get/char/2.cc: New test wrap. * testsuite/22_locale/money_get/get/char/3.cc: New test wrap. * testsuite/22_locale/money_get/get/char/4.cc: New test wrap. * testsuite/22_locale/money_put/put/char/1.cc: New test wrap. * testsuite/22_locale/money_put/put/char/2.cc: New test wrap. * testsuite/22_locale/money_put/put/char/3.cc: New test wrap. * testsuite/22_locale/moneypunct/members/char/2.cc: New test wrap. * testsuite/22_locale/moneypunct_byname/1.cc: New test wrap. * testsuite/22_locale/num_get/get/char/1.cc: New test wrap. * testsuite/22_locale/num_get/get/char/2.cc: New test wrap. * testsuite/22_locale/num_get/get/char/3.cc: New test wrap. * testsuite/22_locale/num_get/get/char/5.cc: New test wrap. * testsuite/22_locale/num_get/get/char/6.cc: New test wrap. * testsuite/22_locale/num_put/put/char/1.cc: New test wrap. * testsuite/22_locale/num_put/put/char/2.cc: New test wrap. * testsuite/22_locale/num_put/put/char/3.cc: New test wrap. * testsuite/22_locale/num_put/put/char/5.cc: New test wrap. * testsuite/22_locale/numpunct/members/char/1.cc: New test wrap. * testsuite/22_locale/numpunct/members/char/2.cc: New test wrap. * testsuite/22_locale/numpunct_byname/1.cc: New test wrap. * testsuite/22_locale/numpunct_byname/2.cc: New test wrap. * testsuite/22_locale/time_get/date_order/char/1.cc: New test wrap. * testsuite/22_locale/time_get/get_date/char/1.cc: New test wrap. * testsuite/22_locale/time_get/get_date/char/2.cc: New test wrap. * testsuite/22_locale/time_get/get_monthname/char/1.cc: New test wrap. * testsuite/22_locale/time_get/get_monthname/char/2.cc: New test wrap. * testsuite/22_locale/time_get/get_time/char/1.cc: New test wrap. * testsuite/22_locale/time_get/get_time/char/2.cc: New test wrap. * testsuite/22_locale/time_get/get_weekday/char/1.cc: New test wrap. * testsuite/22_locale/time_get/get_weekday/char/2.cc: New test wrap. * testsuite/22_locale/time_get/get_year/char/1.cc: New test wrap. * testsuite/22_locale/time_put/put/char/1.cc: New test wrap. * testsuite/22_locale/time_put/put/char/2.cc: New test wrap. * testsuite/22_locale/time_put/put/char/3.cc: New test wrap. * testsuite/22_locale/time_put/put/char/4.cc: New test wrap. * testsuite/22_locale/time_put/put/char/5.cc: New test wrap. * testsuite/22_locale/time_put/put/char/6.cc: New test wrap. * testsuite/22_locale/time_put/put/char/7.cc: New test wrap. * testsuite/22_locale/time_put/put/char/8.cc: New test wrap. * testsuite/27_io/filebuf_virtuals.cc: New test wrap. * testsuite/27_io/ios_members.cc: New test wrap. * testsuite/27_io/ostream_inserter_arith.cc (test02): Make void. New test wrap. * testsuite/27_io/streambuf_members.cc: New test wrap. * testsuite/27_io/stringbuf_virtuals.cc: New test wrap. From-SVN: r63975 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 1ada07bc781..47d2f49e775 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,76 @@ +2003-03-08 Loren J. Rittle + + * config/locale/generic/c_locale.cc (locale::facet::_S_create_c_locale): + Throw runtime exception when unsupported language is specified. + * testsuite/testsuite_hooks.h + (run_test_wrapped_generic_locale_exception_catcher): New function. + * testsuite/testsuite_hooks.cc (run_tests_wrapped_locale): + Suppress runtime exception thrown by generic implementation. + (run_tests_wrapped_env): Likewise. + (run_test_wrapped_generic_locale_exception_catcher): New function. + * testsuite/22_locale/collate/compare/char/1.cc: New test wrap. + * testsuite/22_locale/collate/compare/char/2.cc: New test wrap. + * testsuite/22_locale/collate/compare/char/3.cc: New test wrap. + * testsuite/22_locale/collate/hash/char/2.cc: New test wrap. + * testsuite/22_locale/collate/transform/char/2.cc: New test wrap. + * testsuite/22_locale/collate/transform/char/3.cc: New test wrap. + * testsuite/22_locale/collate_byname/1.cc: New test wrap. + * testsuite/22_locale/ctype/is/char/2.cc: New test wrap. + * testsuite/22_locale/facet/2.cc: New test wrap. + * testsuite/22_locale/locale/cons/4.cc: New test wrap. + * testsuite/22_locale/locale/cons/5.cc: New test wrap. + * testsuite/22_locale/locale/cons/7.cc: New test wrap. + * testsuite/22_locale/messages/members/char/1.cc: New test wrap. + * testsuite/22_locale/messages/members/char/2.cc: New test wrap. + * testsuite/22_locale/messages/members/char/3.cc: New test wrap. + * testsuite/22_locale/messages_byname/1.cc: New test wrap. + * testsuite/22_locale/money_get/get/char/1.cc: New test wrap. + * testsuite/22_locale/money_get/get/char/2.cc: New test wrap. + * testsuite/22_locale/money_get/get/char/3.cc: New test wrap. + * testsuite/22_locale/money_get/get/char/4.cc: New test wrap. + * testsuite/22_locale/money_put/put/char/1.cc: New test wrap. + * testsuite/22_locale/money_put/put/char/2.cc: New test wrap. + * testsuite/22_locale/money_put/put/char/3.cc: New test wrap. + * testsuite/22_locale/moneypunct/members/char/2.cc: New test wrap. + * testsuite/22_locale/moneypunct_byname/1.cc: New test wrap. + * testsuite/22_locale/num_get/get/char/1.cc: New test wrap. + * testsuite/22_locale/num_get/get/char/2.cc: New test wrap. + * testsuite/22_locale/num_get/get/char/3.cc: New test wrap. + * testsuite/22_locale/num_get/get/char/5.cc: New test wrap. + * testsuite/22_locale/num_get/get/char/6.cc: New test wrap. + * testsuite/22_locale/num_put/put/char/1.cc: New test wrap. + * testsuite/22_locale/num_put/put/char/2.cc: New test wrap. + * testsuite/22_locale/num_put/put/char/3.cc: New test wrap. + * testsuite/22_locale/num_put/put/char/5.cc: New test wrap. + * testsuite/22_locale/numpunct/members/char/1.cc: New test wrap. + * testsuite/22_locale/numpunct/members/char/2.cc: New test wrap. + * testsuite/22_locale/numpunct_byname/1.cc: New test wrap. + * testsuite/22_locale/numpunct_byname/2.cc: New test wrap. + * testsuite/22_locale/time_get/date_order/char/1.cc: New test wrap. + * testsuite/22_locale/time_get/get_date/char/1.cc: New test wrap. + * testsuite/22_locale/time_get/get_date/char/2.cc: New test wrap. + * testsuite/22_locale/time_get/get_monthname/char/1.cc: New test wrap. + * testsuite/22_locale/time_get/get_monthname/char/2.cc: New test wrap. + * testsuite/22_locale/time_get/get_time/char/1.cc: New test wrap. + * testsuite/22_locale/time_get/get_time/char/2.cc: New test wrap. + * testsuite/22_locale/time_get/get_weekday/char/1.cc: New test wrap. + * testsuite/22_locale/time_get/get_weekday/char/2.cc: New test wrap. + * testsuite/22_locale/time_get/get_year/char/1.cc: New test wrap. + * testsuite/22_locale/time_put/put/char/1.cc: New test wrap. + * testsuite/22_locale/time_put/put/char/2.cc: New test wrap. + * testsuite/22_locale/time_put/put/char/3.cc: New test wrap. + * testsuite/22_locale/time_put/put/char/4.cc: New test wrap. + * testsuite/22_locale/time_put/put/char/5.cc: New test wrap. + * testsuite/22_locale/time_put/put/char/6.cc: New test wrap. + * testsuite/22_locale/time_put/put/char/7.cc: New test wrap. + * testsuite/22_locale/time_put/put/char/8.cc: New test wrap. + * testsuite/27_io/filebuf_virtuals.cc: New test wrap. + * testsuite/27_io/ios_members.cc: New test wrap. + * testsuite/27_io/ostream_inserter_arith.cc (test02): Make void. + New test wrap. + * testsuite/27_io/streambuf_members.cc: New test wrap. + * testsuite/27_io/stringbuf_virtuals.cc: New test wrap. + 2003-03-08 Paolo Carlini Petur Runolfsson diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc index 23f79121cca..13bc21aa046 100644 --- a/libstdc++-v3/config/locale/generic/c_locale.cc +++ b/libstdc++-v3/config/locale/generic/c_locale.cc @@ -212,9 +212,13 @@ namespace std } void - locale::facet::_S_create_c_locale(__c_locale& __cloc, const char*, + locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, __c_locale) - { __cloc = NULL; } + { + __cloc = NULL; + if (strcmp (__s, "C")) + __throw_runtime_error("attempt to create locale from unhandled name in generic implementation; see http://gcc.gnu.org/ml/libstdc++/2003-02/msg00345.html"); + } void locale::facet::_S_destroy_c_locale(__c_locale& __cloc) diff --git a/libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc b/libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc index 74871082be3..bed2fb40991 100644 --- a/libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc @@ -74,6 +74,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc b/libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc index 52052f9aed0..ab29ac409e1 100644 --- a/libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc @@ -81,6 +81,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc b/libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc index 0cce392824a..c8209548bc3 100644 --- a/libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc +++ b/libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc @@ -85,6 +85,6 @@ void test03() int main() { - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc b/libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc index 75eb202da28..47fcd579ec7 100644 --- a/libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc @@ -70,6 +70,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc b/libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc index dc2b395bd66..24ff7cdac8f 100644 --- a/libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc @@ -67,6 +67,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc b/libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc index a6255afb6c3..f9d16b54944 100644 --- a/libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc +++ b/libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc @@ -88,6 +88,6 @@ void test03() int main() { - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/collate_byname/1.cc b/libstdc++-v3/testsuite/22_locale/collate_byname/1.cc index 62986628790..edfb42c2120 100644 --- a/libstdc++-v3/testsuite/22_locale/collate_byname/1.cc +++ b/libstdc++-v3/testsuite/22_locale/collate_byname/1.cc @@ -131,6 +131,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc b/libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc index 6e54ab89127..d04800a01ca 100644 --- a/libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc @@ -99,6 +99,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/facet/2.cc b/libstdc++-v3/testsuite/22_locale/facet/2.cc index abda43ec351..ea63d731a3f 100644 --- a/libstdc++-v3/testsuite/22_locale/facet/2.cc +++ b/libstdc++-v3/testsuite/22_locale/facet/2.cc @@ -89,6 +89,6 @@ void test02() int main () { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/locale/cons/4.cc b/libstdc++-v3/testsuite/22_locale/locale/cons/4.cc index 26d3aaf31d1..4864b0bad7d 100644 --- a/libstdc++-v3/testsuite/22_locale/locale/cons/4.cc +++ b/libstdc++-v3/testsuite/22_locale/locale/cons/4.cc @@ -42,6 +42,6 @@ void test03() int main() { - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/locale/cons/5.cc b/libstdc++-v3/testsuite/22_locale/locale/cons/5.cc index b9e1391977d..5c649d0b5b9 100644 --- a/libstdc++-v3/testsuite/22_locale/locale/cons/5.cc +++ b/libstdc++-v3/testsuite/22_locale/locale/cons/5.cc @@ -193,6 +193,6 @@ void test04() int main() { - test04(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test04); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/locale/cons/7.cc b/libstdc++-v3/testsuite/22_locale/locale/cons/7.cc index 75598e2a6c3..fb709666d48 100644 --- a/libstdc++-v3/testsuite/22_locale/locale/cons/7.cc +++ b/libstdc++-v3/testsuite/22_locale/locale/cons/7.cc @@ -99,6 +99,6 @@ test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc b/libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc index 05116d934d5..7167fadef10 100644 --- a/libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc @@ -64,6 +64,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc b/libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc index 3234ef6f4ce..61ffba626c1 100644 --- a/libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc @@ -64,6 +64,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc b/libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc index d8346b29156..55cf80193d6 100644 --- a/libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc +++ b/libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc @@ -64,6 +64,6 @@ void test03() int main() { - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/messages_byname/1.cc b/libstdc++-v3/testsuite/22_locale/messages_byname/1.cc index 1c6fc5b99b2..e9d3217c08f 100644 --- a/libstdc++-v3/testsuite/22_locale/messages_byname/1.cc +++ b/libstdc++-v3/testsuite/22_locale/messages_byname/1.cc @@ -73,6 +73,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc index 7bbfc88a952..f4e5481def6 100644 --- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc @@ -146,6 +146,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc index 0ca281fe5fb..42e149609a0 100644 --- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc @@ -135,6 +135,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc index eb8ef9c1c57..749c68c73ab 100644 --- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc +++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc @@ -91,6 +91,6 @@ void test03() int main() { - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc b/libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc index 3a6aa18039c..b2456658e56 100644 --- a/libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc +++ b/libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc @@ -86,6 +86,6 @@ void test04() int main() { - test04(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test04); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc b/libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc index cbc78895129..d34d3fba0e7 100644 --- a/libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc @@ -124,6 +124,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc b/libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc index 72428445d22..d1c240f7809 100644 --- a/libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc @@ -115,6 +115,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc b/libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc index 58e3ff47099..73c84b2c4d5 100644 --- a/libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc +++ b/libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc @@ -104,6 +104,6 @@ void test03() int main() { - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc b/libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc index 5434ea81575..7d74101c95d 100644 --- a/libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc @@ -95,6 +95,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc b/libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc index 01c761b5669..83fc8f62b31 100644 --- a/libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc +++ b/libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc @@ -93,7 +93,7 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc index 7cc897c36f5..3723e23ffd4 100644 --- a/libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc @@ -162,7 +162,7 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc index 4604d11ca91..108fae13c1b 100644 --- a/libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc @@ -132,7 +132,7 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc index 253e73561eb..b6c0f12ca1a 100644 --- a/libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc +++ b/libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc @@ -94,7 +94,7 @@ void test03() int main() { - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc index 21f7bef0012..94da704f1d3 100644 --- a/libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc +++ b/libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc @@ -84,7 +84,7 @@ void test05() int main() { - test05(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test05); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc b/libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc index 49f3a46e5c8..b5e0a21615b 100644 --- a/libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc +++ b/libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc @@ -49,7 +49,7 @@ void test06() int main() { - test06(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test06); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc b/libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc index d73ceb733f4..87abef44e9a 100644 --- a/libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc @@ -169,7 +169,7 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc b/libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc index dab92047cf9..a62dfc1f88b 100644 --- a/libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc @@ -105,7 +105,7 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc b/libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc index 201403a0e54..0bc92b2af0e 100644 --- a/libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc +++ b/libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc @@ -88,7 +88,7 @@ void test03() int main() { - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc b/libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc index 0af3d3cf611..eb0bd219622 100644 --- a/libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc +++ b/libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc @@ -63,7 +63,7 @@ void test05() int main() { - test05(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test05); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc b/libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc index 9babb9946cb..aba34e29267 100644 --- a/libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc @@ -60,6 +60,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc b/libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc index bb4eff5f70a..ec9512fedbe 100644 --- a/libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc @@ -82,6 +82,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc b/libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc index 4c99ddaad70..a6c71dc644e 100644 --- a/libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc +++ b/libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc @@ -71,6 +71,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/numpunct_byname/2.cc b/libstdc++-v3/testsuite/22_locale/numpunct_byname/2.cc index 133607dd5b9..f096a8b9f0c 100644 --- a/libstdc++-v3/testsuite/22_locale/numpunct_byname/2.cc +++ b/libstdc++-v3/testsuite/22_locale/numpunct_byname/2.cc @@ -40,6 +40,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc index 5b3a3236eef..46958a21da3 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc @@ -64,6 +64,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc index 659086ab26f..f242c4bee4a 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc @@ -107,6 +107,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc index 434695c703a..274a231cd6e 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc @@ -103,6 +103,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc index 8984069e59a..2fd9b760005 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc @@ -121,6 +121,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc index 66ad029c1a5..c98f8d1cb50 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc @@ -85,6 +85,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc index ef9c2bbbeb9..80d996c0c47 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc @@ -122,6 +122,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc index 9adb288ed74..1d56827071c 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc @@ -75,6 +75,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc index 4fad9019abf..ca89d1e4a2b 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc @@ -129,6 +129,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc index 5f6e1490d42..6e9d99936ef 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc @@ -85,6 +85,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc index 62f393b3c1f..aabfd6d0f25 100644 --- a/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc @@ -118,6 +118,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc index e384319299a..f54a8c91829 100644 --- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc +++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc @@ -85,6 +85,6 @@ void test01() int main() { - test01(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test01); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc index e3a88b55ece..665036b1c6e 100644 --- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc +++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc @@ -80,6 +80,6 @@ void test02() int main() { - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc index 8354897e6c9..3399669df85 100644 --- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc +++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc @@ -80,6 +80,6 @@ void test03() int main() { - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc index ef59dc2679d..afb45eecacc 100644 --- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc +++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc @@ -79,6 +79,6 @@ void test04() int main() { - test04(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test04); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc index dde913f58bf..b7b0055c29d 100644 --- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc +++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc @@ -75,6 +75,6 @@ void test05() int main() { - test05(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test05); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc index 1cec95f0bab..9287571901c 100644 --- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc +++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc @@ -73,6 +73,6 @@ void test06() int main() { - test06(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test06); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc index 931c6e060a8..00cefcfe7b9 100644 --- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc +++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc @@ -74,6 +74,6 @@ void test07() int main() { - test07(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test07); return 0; } diff --git a/libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc b/libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc index 4d801f38b72..10afde5c500 100644 --- a/libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc +++ b/libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc @@ -72,6 +72,6 @@ void test08() int main() { - test08(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test08); return 0; } diff --git a/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc b/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc index fd459636049..c60433cebf0 100644 --- a/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc +++ b/libstdc++-v3/testsuite/27_io/filebuf_virtuals.cc @@ -769,7 +769,7 @@ main() test05(); test06(); - test07(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test07); test08(); test09(); test10(); diff --git a/libstdc++-v3/testsuite/27_io/ios_members.cc b/libstdc++-v3/testsuite/27_io/ios_members.cc index 4c359801678..3b7dc24c454 100644 --- a/libstdc++-v3/testsuite/27_io/ios_members.cc +++ b/libstdc++-v3/testsuite/27_io/ios_members.cc @@ -168,6 +168,6 @@ int main() { test01(); test02(); - test03(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test03); return 0; } diff --git a/libstdc++-v3/testsuite/27_io/ostream_inserter_arith.cc b/libstdc++-v3/testsuite/27_io/ostream_inserter_arith.cc index e4e618d68d8..6f9719f306d 100644 --- a/libstdc++-v3/testsuite/27_io/ostream_inserter_arith.cc +++ b/libstdc++-v3/testsuite/27_io/ostream_inserter_arith.cc @@ -253,7 +253,7 @@ test01() return 0; } -int +void test02() { bool test = true; @@ -297,7 +297,7 @@ test02() os2 << endl; os2 << fixed << setprecision(1) << val2 << endl; - return 0; + return; } template @@ -395,7 +395,7 @@ int main() { test01(); - test02(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test02); test03(); test04(); test05(); diff --git a/libstdc++-v3/testsuite/27_io/streambuf_members.cc b/libstdc++-v3/testsuite/27_io/streambuf_members.cc index d7ae5693d33..263a95f06fb 100644 --- a/libstdc++-v3/testsuite/27_io/streambuf_members.cc +++ b/libstdc++-v3/testsuite/27_io/streambuf_members.cc @@ -526,7 +526,7 @@ int main() test05(); test07(); - test08(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test08); test09(); test10(); diff --git a/libstdc++-v3/testsuite/27_io/stringbuf_virtuals.cc b/libstdc++-v3/testsuite/27_io/stringbuf_virtuals.cc index a2a8368abfc..c172f32b9f5 100644 --- a/libstdc++-v3/testsuite/27_io/stringbuf_virtuals.cc +++ b/libstdc++-v3/testsuite/27_io/stringbuf_virtuals.cc @@ -160,7 +160,7 @@ int main() test02(in2, false); test02(in3, false); - test08(); + __gnu_cxx_test::run_test_wrapped_generic_locale_exception_catcher(test08); test09(); return 0; } diff --git a/libstdc++-v3/testsuite/testsuite_hooks.cc b/libstdc++-v3/testsuite/testsuite_hooks.cc index 3527779bc76..0bc67ad23b4 100644 --- a/libstdc++-v3/testsuite/testsuite_hooks.cc +++ b/libstdc++-v3/testsuite/testsuite_hooks.cc @@ -148,9 +148,19 @@ namespace __gnu_cxx_test bool test = true; // Set the global locale. - locale loc_name(name); - locale orig = locale::global(loc_name); - + try + { + locale loc_name(name); + locale orig = locale::global(loc_name); + } + catch (std::runtime_error& ex) + { + if (std::strstr (ex.what(), "unhandled name in generic implementation")) + return; + else + throw; + } + const char* res = setlocale(LC_ALL, name); if (res != NULL) { @@ -173,9 +183,18 @@ namespace __gnu_cxx_test #ifdef _GLIBCPP_HAVE_SETENV // Set the global locale. - locale loc_name(name); - locale orig = locale::global(loc_name); - + try + { + locale loc_name(name); + locale orig = locale::global(loc_name); + } + catch (std::runtime_error& ex) + { + if (std::strstr (ex.what(), "unhandled name in generic implementation")) + return; + else + throw; + } // Set environment variable env to value in name. const char* oldENV = getenv(env); if (!setenv(env, name, 1)) @@ -191,6 +210,22 @@ namespace __gnu_cxx_test #endif } + void + run_test_wrapped_generic_locale_exception_catcher(const test_func f) + { + try + { + f(); + } + catch (std::runtime_error& ex) + { + if (std::strstr (ex.what(), "unhandled name in generic implementation")) + return; + else + throw; + } + } + counter::size_type counter::count = 0; unsigned int copy_constructor::count_ = 0; unsigned int copy_constructor::throw_on_ = 0; diff --git a/libstdc++-v3/testsuite/testsuite_hooks.h b/libstdc++-v3/testsuite/testsuite_hooks.h index d13e86c7518..28ff245c482 100644 --- a/libstdc++-v3/testsuite/testsuite_hooks.h +++ b/libstdc++-v3/testsuite/testsuite_hooks.h @@ -105,6 +105,9 @@ namespace __gnu_cxx_test void run_tests_wrapped_env(const char*, const char*, const func_callback&); + // Run select unit test inside exception catcher for non-C named locale + void + run_test_wrapped_generic_locale_exception_catcher(const test_func); // Test data types. struct pod_char