From b0f033d404a5dc5f34ec653e192745789c0fa836 Mon Sep 17 00:00:00 2001 From: Nicolas Cavallari Date: Fri, 16 May 2014 14:17:03 +0200 Subject: [PATCH 1/7] libstdc++-v3: Export more C99 feature check results. libstdc++-v3/ * acinclude.m4 ([GLIBCXX_ENABLE_C99]): Export more results when checking for C99 features. * (configure, config.h.in): Regenerate. --- libstdc++-v3/acinclude.m4 | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index 55427cd..bad3b63 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -1057,6 +1057,11 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ [glibcxx_cv_c99_stdio=yes], [glibcxx_cv_c99_stdio=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_stdio) + if test x"$glibcxx_cv_c99_stdio" = x"yes"; then + AC_DEFINE(_GLIBCXX_USE_C99_STDIO, 1, + [Define if C99 functions in should be wrapped in + in namespace std.]) + fi # Check for the existence in of lldiv_t, et. al. AC_MSG_CHECKING([for ISO C99 support in ]) @@ -1081,6 +1086,11 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ ],[glibcxx_cv_c99_stdlib=yes], [glibcxx_cv_c99_stdlib=no]) ]) AC_MSG_RESULT($glibcxx_cv_c99_stdlib) + if test x"$glibcxx_cv_c99_stdlib" = x"yes"; then + AC_DEFINE(_GLIBCXX_USE_C99_STDLIB, 1, + [Define if C99 functions in should be wrapped in + in namespace std.]) + fi # Check for the existence in of wcstold, etc. glibcxx_cv_c99_wchar=no; @@ -1124,6 +1134,11 @@ AC_DEFUN([GLIBCXX_ENABLE_C99], [ [Defined if iswblank exists.])],[]) AC_MSG_RESULT($glibcxx_cv_c99_wchar) + if test x"$glibcxx_cv_c99_wchar" = x"yes"; then + AC_DEFINE(_GLIBCXX_USE_C99_WCHAR, 1, + [Define if C99 functions in should be wrapped in + in namespace std.]) + fi fi # Option parsed, now set things appropriately. -- 2.0.1 From 64db96ab58dbcaa95870259d1447591fcef52d4b Mon Sep 17 00:00:00 2001 From: Nicolas Cavallari Date: Fri, 16 May 2014 14:17:07 +0200 Subject: [PATCH 2/7] PR libstdc++/58393 std::to_string on uclibc PR libstdc++/58393 libstdc++-v3/ * include/bits/basic_string.h (to_w?string,sto*): Use more fine-grained _GLIBCXX_USE_C99_{STDLIB,STDIO,WCHAR} feature check when appropriate. --- libstdc++-v3/include/bits/basic_string.h | 44 +++++++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index cd60376..bd47f7a 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -2828,11 +2828,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99) \ - && !defined(_GLIBCXX_HAVE_BROKEN_VSWPRINTF)) +#if (__cplusplus >= 201103L) #include +#ifdef _GLIBCXX_USE_C99_STDLIB + namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION @@ -2876,6 +2877,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION stold(const string& __str, size_t* __idx = 0) { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _GLIBCXX_USE_C99_STDLIB */ + +#ifdef _GLIBCXX_USE_C99_STDIO + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + // NB: (v)snprintf vs sprintf. // DR 1261. @@ -2940,7 +2952,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION "%Lf", __val); } +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _GLIBCXX_USE_C99_STDIO */ + #ifdef _GLIBCXX_USE_WCHAR_T + +#ifdef _GLIBCXX_USE_C99_WCHAR + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + inline int stoi(const wstring& __str, size_t* __idx = 0, int __base = 10) { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), @@ -2979,6 +3003,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION stold(const wstring& __str, size_t* __idx = 0) { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _GLIBCXX_USE_C99_WCHAR */ + +#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + // DR 1261. inline wstring to_wstring(int __val) @@ -3040,12 +3075,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __gnu_cxx::__to_xstring(&std::vswprintf, __n, L"%Lf", __val); } -#endif _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#endif /* C++11 && _GLIBCXX_USE_C99 ... */ +#endif /* !_GLIBCXX_HAVE_BROKEN_VSWPRINTF */ +#endif /* _GLIBCXX_USE_WCHAR_T */ +#endif /* C++11 */ #if __cplusplus >= 201103L -- 2.0.1 From f945dbd7a71fdb92631929172e75c3125d1696d1 Mon Sep 17 00:00:00 2001 From: Nicolas Cavallari Date: Fri, 16 May 2014 14:17:09 +0200 Subject: [PATCH 3/7] libstdc++-v3: vstring: Use more specific feature check. libstdc++-v3/ * libstdc++-v3/include/ext/vstring.h (to_w?string,sto*): Use more fine-grained _GLIBCXX_USE_C99_{STDLIB,STDIO,WCHAR} feature checks when appropriate. --- libstdc++-v3/include/ext/vstring.h | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libstdc++-v3/include/ext/vstring.h b/libstdc++-v3/include/ext/vstring.h index 749d370..b99c4e4 100644 --- a/libstdc++-v3/include/ext/vstring.h +++ b/libstdc++-v3/include/ext/vstring.h @@ -2680,7 +2680,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99)) +#if __cplusplus >= 201103L #include @@ -2688,6 +2688,7 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION +#ifdef _GLIBCXX_USE_C99_STDLIB // 21.4 Numeric Conversions [string.conversions]. inline int stoi(const __vstring& __str, std::size_t* __idx = 0, int __base = 10) @@ -2726,7 +2727,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double stold(const __vstring& __str, std::size_t* __idx = 0) { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); } +#endif /* _GLIBCXX_USE_C99_STDLIB */ +#ifdef _GLIBCXX_USE_C99_STDIO // NB: (v)snprintf vs sprintf. // DR 1261. @@ -2789,8 +2792,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf, __n, "%Lf", __val); } +#endif /* _GLIBCXX_USE_C99_STDIO */ #ifdef _GLIBCXX_USE_WCHAR_T +#ifdef _GLIBCXX_USE_C99_WCHAR inline int stoi(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10) { return __gnu_cxx::__stoa(&std::wcstol, "stoi", __str.c_str(), @@ -2828,6 +2833,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline long double stold(const __wvstring& __str, std::size_t* __idx = 0) { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); } +#endif /* _GLIBCXX_USE_C99_WCHAR */ #ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF // DR 1261. @@ -2890,16 +2896,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf, __n, L"%Lf", __val); } -#endif -#endif +#endif /* !_GLIBCXX_HAVE_BROKEN_VSWPRINTF */ +#endif /* _GLIBCXX_USE_WCHAR_T */ _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#endif - -#if __cplusplus >= 201103L - #include namespace std _GLIBCXX_VISIBILITY(default) -- 2.0.1 From 762d99f1b1e94429ea5d12c7b237bded7034dc17 Mon Sep 17 00:00:00 2001 From: Nicolas Cavallari Date: Fri, 16 May 2014 14:17:12 +0200 Subject: [PATCH 4/7] libstdc++-v3: locale: Use more specific feature checks. libstdc++-v3/ * config/locale/generic/c_locale.h (__convert_from_v): check _GLIBCXX_USE_C99_STDIO instead of _GLIBCXX_USE_C99 to use vsnprintf(). * config/locale/gnu/c_locale.h (__convert_from_v): Likewise. * include/bits/locale_facets.tcc (num_put::_M_insert_float): Update the test wether __convert_from_v() can use vsnprintf accordingly. * include/bits/locale_facets_nonio.tcc (money_put::do_put): Likewise. --- libstdc++-v3/config/locale/generic/c_locale.h | 2 +- libstdc++-v3/config/locale/gnu/c_locale.h | 2 +- libstdc++-v3/include/bits/locale_facets.tcc | 4 ++-- libstdc++-v3/include/bits/locale_facets_nonio.tcc | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libstdc++-v3/config/locale/generic/c_locale.h b/libstdc++-v3/config/locale/generic/c_locale.h index e934ffc..5e827dc 100644 --- a/libstdc++-v3/config/locale/generic/c_locale.h +++ b/libstdc++-v3/config/locale/generic/c_locale.h @@ -70,7 +70,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __builtin_va_list __args; __builtin_va_start(__args, __fmt); -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_STDIO const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); #else const int __ret = __builtin_vsprintf(__out, __fmt, __args); diff --git a/libstdc++-v3/config/locale/gnu/c_locale.h b/libstdc++-v3/config/locale/gnu/c_locale.h index ac6b176..d580df0 100644 --- a/libstdc++-v3/config/locale/gnu/c_locale.h +++ b/libstdc++-v3/config/locale/gnu/c_locale.h @@ -88,7 +88,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __builtin_va_list __args; __builtin_va_start(__args, __fmt); -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_STDIO const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); #else const int __ret = __builtin_vsprintf(__out, __fmt, __args); diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index cf12a08..99361de 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -954,7 +954,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL } // The following code uses vsnprintf (or vsprintf(), when - // _GLIBCXX_USE_C99 is not defined) to convert floating point values + // _GLIBCXX_USE_C99_STDIO is not defined) to convert floating point values // for insertion into a stream. An optimization would be to replace // them with code that works directly on a wide buffer and then use // __pad to do the padding. It would be good to replace them anyway @@ -987,7 +987,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL char __fbuf[16]; __num_base::_S_format_float(__io, __fbuf, __mod); -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_STDIO // First try a buffer perhaps big enough (most probably sufficient // for non-ios_base::fixed outputs) int __cs_size = __max_digits * 3; diff --git a/libstdc++-v3/include/bits/locale_facets_nonio.tcc b/libstdc++-v3/include/bits/locale_facets_nonio.tcc index 41d944d..3db539a 100644 --- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc +++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc @@ -572,7 +572,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL { const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_STDIO // First try a buffer perhaps big enough. int __cs_size = 64; char* __cs = static_cast(__builtin_alloca(__cs_size)); -- 2.0.1 From 83d3ea11919a0f07ab35be4d93795d056f9db27d Mon Sep 17 00:00:00 2001 From: Nicolas Cavallari Date: Fri, 16 May 2014 14:17:14 +0200 Subject: [PATCH 5/7] libstdc++-v3: More specific feature checks to export C functions libstdc++-v3/ * include/c_compatibility/math.h: Guard C99 math functions by _GLIBCXX_USE_C99_MATH instead of _GLIBCXX_USE_C99. * include/c_compatibility/wchar.h: Guard C99 wchar functions by _GLIBCXX_USE_C99_WCHAR instead of _GLIBCXX_USE_C99. * include/c_global/cwchar: Likewise. * include/c_std/cwchar: Likewise. * include/tr1/cwchar: Likewise. * include/c_global/cstdio: Guard C99 stdio functions by _GLIBCXX_USE_C99_STDIO instead of _GLIBCXX_USE_C99. * include/c_std/cstdio: Likewise. * include/tr1/cstdio: Likewise. * include/c_global/cstdlib: Guard C99 stdio functions by _GLIBCXX_USE_C99_STDLIB instead of _GLIBCXX_USE_C99. * include/c_std/cstdlib: Likewise. * include/tr1/cstdlib: Likewise. * include/tr1/stdlib.h: Likewise. --- libstdc++-v3/include/c_compatibility/math.h | 2 +- libstdc++-v3/include/c_compatibility/wchar.h | 2 +- libstdc++-v3/include/c_global/cstdio | 4 ++-- libstdc++-v3/include/c_global/cstdlib | 4 ++-- libstdc++-v3/include/c_global/cwchar | 4 ++-- libstdc++-v3/include/c_std/cstdio | 2 +- libstdc++-v3/include/c_std/cstdlib | 4 ++-- libstdc++-v3/include/c_std/cwchar | 2 +- libstdc++-v3/include/tr1/cstdio | 2 +- libstdc++-v3/include/tr1/cstdlib | 4 ++-- libstdc++-v3/include/tr1/cwchar | 2 +- libstdc++-v3/include/tr1/stdlib.h | 2 +- 12 files changed, 17 insertions(+), 17 deletions(-) diff --git a/libstdc++-v3/include/c_compatibility/math.h b/libstdc++-v3/include/c_compatibility/math.h index c6d59ba..7847800 100644 --- a/libstdc++-v3/include/c_compatibility/math.h +++ b/libstdc++-v3/include/c_compatibility/math.h @@ -56,7 +56,7 @@ using std::fabs; using std::floor; using std::fmod; -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_MATH using std::fpclassify; using std::isfinite; using std::isinf; diff --git a/libstdc++-v3/include/c_compatibility/wchar.h b/libstdc++-v3/include/c_compatibility/wchar.h index fed87f1..eb7b7be 100644 --- a/libstdc++-v3/include/c_compatibility/wchar.h +++ b/libstdc++-v3/include/c_compatibility/wchar.h @@ -103,7 +103,7 @@ using std::wmemmove; using std::wmemset; using std::wcsftime; -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR using std::wcstold; using std::wcstoll; using std::wcstoull; diff --git a/libstdc++-v3/include/c_global/cstdio b/libstdc++-v3/include/c_global/cstdio index 6043b3d..2265ae1 100644 --- a/libstdc++-v3/include/c_global/cstdio +++ b/libstdc++-v3/include/c_global/cstdio @@ -146,7 +146,7 @@ namespace std using ::vsprintf; } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO #undef snprintf #undef vfscanf @@ -189,6 +189,6 @@ namespace std using ::__gnu_cxx::vsscanf; } // namespace std -#endif // _GLIBCXX_USE_C99 +#endif // _GLIBCXX_USE_C99_STDIO #endif diff --git a/libstdc++-v3/include/c_global/cstdlib b/libstdc++-v3/include/c_global/cstdlib index e98a726..0873c36 100644 --- a/libstdc++-v3/include/c_global/cstdlib +++ b/libstdc++-v3/include/c_global/cstdlib @@ -182,7 +182,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB #undef _Exit #undef llabs @@ -253,7 +253,7 @@ namespace std using ::__gnu_cxx::strtold; } // namespace std -#endif // _GLIBCXX_USE_C99 +#endif // _GLIBCXX_USE_C99_STDLIB #endif // !_GLIBCXX_HOSTED diff --git a/libstdc++-v3/include/c_global/cwchar b/libstdc++-v3/include/c_global/cwchar index c2ff50d..5eb84d8 100644 --- a/libstdc++-v3/include/c_global/cwchar +++ b/libstdc++-v3/include/c_global/cwchar @@ -232,7 +232,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR #undef wcstold #undef wcstoll @@ -289,7 +289,7 @@ namespace std using std::vwscanf; #endif -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR using std::wcstold; using std::wcstoll; using std::wcstoull; diff --git a/libstdc++-v3/include/c_std/cstdio b/libstdc++-v3/include/c_std/cstdio index 9434da6..c846999 100644 --- a/libstdc++-v3/include/c_std/cstdio +++ b/libstdc++-v3/include/c_std/cstdio @@ -144,7 +144,7 @@ namespace std using ::vsprintf; } // namespace std -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO #undef snprintf #undef vfscanf diff --git a/libstdc++-v3/include/c_std/cstdlib b/libstdc++-v3/include/c_std/cstdlib index 7f0d9b2..9676ea9 100644 --- a/libstdc++-v3/include/c_std/cstdlib +++ b/libstdc++-v3/include/c_std/cstdlib @@ -180,7 +180,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB #undef _Exit #undef llabs @@ -251,7 +251,7 @@ namespace std using ::__gnu_cxx::strtold; } // namespace std -#endif // _GLIBCXX_USE_C99 +#endif // _GLIBCXX_USE_C99_STDLIB #endif // !_GLIBCXX_HOSTED diff --git a/libstdc++-v3/include/c_std/cwchar b/libstdc++-v3/include/c_std/cwchar index c6f1f23..90d7ff6 100644 --- a/libstdc++-v3/include/c_std/cwchar +++ b/libstdc++-v3/include/c_std/cwchar @@ -228,7 +228,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR #undef wcstold #undef wcstoll diff --git a/libstdc++-v3/include/tr1/cstdio b/libstdc++-v3/include/tr1/cstdio index b320ffd..28cdbe4 100644 --- a/libstdc++-v3/include/tr1/cstdio +++ b/libstdc++-v3/include/tr1/cstdio @@ -33,7 +33,7 @@ #include -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/libstdc++-v3/include/tr1/cstdlib b/libstdc++-v3/include/tr1/cstdlib index fa4d93e..2c592aa 100644 --- a/libstdc++-v3/include/tr1/cstdlib +++ b/libstdc++-v3/include/tr1/cstdlib @@ -35,7 +35,7 @@ #if _GLIBCXX_HOSTED -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STLIB namespace std _GLIBCXX_VISIBILITY(default) { @@ -65,7 +65,7 @@ namespace tr1 } } -#endif // _GLIBCXX_USE_C99 +#endif // _GLIBCXX_USE_C99_STDLIB #endif // _GLIBCXX_HOSTED diff --git a/libstdc++-v3/include/tr1/cwchar b/libstdc++-v3/include/tr1/cwchar index 4482574..3d70468 100644 --- a/libstdc++-v3/include/tr1/cwchar +++ b/libstdc++-v3/include/tr1/cwchar @@ -52,7 +52,7 @@ namespace tr1 using std::vwscanf; #endif -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR using std::wcstold; using std::wcstoll; using std::wcstoull; diff --git a/libstdc++-v3/include/tr1/stdlib.h b/libstdc++-v3/include/tr1/stdlib.h index c50c363..0dd538c 100644 --- a/libstdc++-v3/include/tr1/stdlib.h +++ b/libstdc++-v3/include/tr1/stdlib.h @@ -33,7 +33,7 @@ #if _GLIBCXX_HOSTED -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB using std::tr1::atoll; using std::tr1::strtoll; -- 2.0.1 From 52d3d0bbb4753f198fc7425a1cae43f446b3b4b1 Mon Sep 17 00:00:00 2001 From: Nicolas Cavallari Date: Fri, 16 May 2014 14:17:18 +0200 Subject: [PATCH 6/7] libstdc++-v3: More specific feature checks on testsuite. libstdc++-v3/testsuite/ * 21_strings/basic_string/numeric_conversions/wchar_t/stod.cc: Depend on _GLIBCXX_USE_C99_WCHAR and/or _GLIBCXX_USE_WCHAR_T instead of _GLIBCXX_USE_C99 when appropriate. * 21_strings/basic_string/numeric_conversions/wchar_t/stof.cc: Likewise. * 21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc: Likewise. * 21_strings/basic_string/numeric_conversions/wchar_t/stol.cc: Likewise. * 21_strings/basic_string/numeric_conversions/wchar_t/stold.cc: Likewise. * 21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc: Likewise. * 21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc: Likewise. * 21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc: Likewise. * 21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc: Likewise. * 26_numerics/headers/cstdlib/13943.cc: Depend on _GLIBCXX_USE_C99_STDLIB instead of _GLIBCXX_USE_C99 for lldiv(). * 26_numerics/headers/cstdlib/types_std_c++0x.cc: Likewise. * 18_support/exception_ptr/60612-terminate.cc: Likewise for _Exit(). * 18_support/exception_ptr/60612-unexpected.cc: Likewise. * tr1/8_c_compatibility/cmath/templates.cc: Depend on _GLIBCXX_USE_C99_MATH instead of _GLIBCXX_USE_C99 * tr1/8_c_compatibility/cstdio/functions.cc: Likewise with _GLIBCXX_USE_C99_STDIO * tr1/8_c_compatibility/cstdlib/functions.cc: Likewise with _GLIBCXX_USE_C99_STDLIB * tr1/8_c_compatibility/cstdlib/types_std_tr1.cc: Likewise. * tr1/8_c_compatibility/cwchar/functions.cc: Likewise with _GLIBCXX_USE_C99_WCHAR. --- libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc | 4 ++-- libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc | 4 ++-- .../21_strings/basic_string/numeric_conversions/wchar_t/stod.cc | 4 ++-- .../21_strings/basic_string/numeric_conversions/wchar_t/stof.cc | 4 ++-- .../21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc | 4 ++-- .../21_strings/basic_string/numeric_conversions/wchar_t/stol.cc | 4 ++-- .../21_strings/basic_string/numeric_conversions/wchar_t/stold.cc | 4 ++-- .../21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc | 6 ++++-- .../21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc | 6 ++++-- .../21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc | 6 ++++-- .../basic_string/numeric_conversions/wchar_t/to_wstring.cc | 4 ++-- libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc | 4 ++-- .../testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc | 2 +- libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc | 6 +++--- libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc | 2 +- libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc | 6 +++--- .../testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc | 2 +- libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc | 2 +- 18 files changed, 40 insertions(+), 34 deletions(-) diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc index 19f8fd2..7b2f4fb 100644 --- a/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc +++ b/libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc @@ -23,7 +23,7 @@ #include #include -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_STDLIB void terminate() { _Exit(0); } void f() noexcept @@ -39,7 +39,7 @@ void f() noexcept int main() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_STDLIB f(); #endif return 0; diff --git a/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc b/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc index 708f748..f97f09a 100644 --- a/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc +++ b/libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc @@ -23,7 +23,7 @@ #include #include -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_STDLIB void unexpected() { _Exit(0); } void f() throw() @@ -39,7 +39,7 @@ void f() throw() int main() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_STDLIB f(); #endif } diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc index 1aa237a..5556f8e 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; @@ -130,7 +130,7 @@ test01() VERIFY( d1 == -1.0 ); } -#endif +#endif /* _GLIBCXX_USE_C99_WCHAR */ } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc index cb39995..241b400 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; @@ -130,7 +130,7 @@ test01() VERIFY( f1 == -1.0f ); } -#endif +#endif /* _GLIBCXX_USE_C99_WCHAR */ } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc index 9813d33..c648a0f 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; @@ -195,7 +195,7 @@ test01() VERIFY( test ); VERIFY( i1 == 1 ); -#endif +#endif /* _GLIBCXX_USE_C99_WCHAR */ } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc index a111754..c7733fa 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; @@ -158,7 +158,7 @@ test01() VERIFY( test ); VERIFY( l1 == numeric_limits::min() ); -#endif +#endif /* _GLIBCXX_USE_C99_WCHAR */ } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc index a49b1f0..3a3ac68f 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc @@ -29,7 +29,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_WCHAR bool test __attribute__((unused)) = false; using namespace std; @@ -107,7 +107,7 @@ test01() } VERIFY( test ); -#endif +#endif /* _GLIBCXX_USE_C99_WCHAR */ } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc index b25155b..f508221 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc @@ -29,7 +29,8 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_WCHAR +#ifdef _GLIBCXX_USE_WCHAR_T bool test __attribute__((unused)) = false; using namespace std; @@ -158,7 +159,8 @@ test01() VERIFY( test ); VERIFY( ll1 == numeric_limits::min() ); -#endif +#endif /* _GLIBCXX_USE_WCHAR_T */ +#endif /* _GLIBCXX_USE_C99_WCHAR */ } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc index 5eb55ca..a395df7 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc @@ -29,7 +29,8 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_WCHAR +#ifdef _GLIBCXX_USE_WCHAR_T bool test __attribute__((unused)) = false; using namespace std; @@ -145,7 +146,8 @@ test01() VERIFY( test ); VERIFY( ul1 == numeric_limits::max() ); -#endif +#endif /* _GLIBCXX_USE_WCHAR_T */ +#endif /* _GLIBCXX_USE_C99_WCHAR */ } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc index 6fb7082..b2403ad 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc @@ -29,7 +29,8 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_WCHAR +#ifdef _GLIBCXX_USE_WCHAR_T bool test __attribute__((unused)) = false; using namespace std; @@ -145,7 +146,8 @@ test01() VERIFY( test ); VERIFY( ull1 == numeric_limits::max() ); -#endif +#endif /* _GLIBCXX_USE_WCHAR_T */ +#endif /* _GLIBCXX_USE_C99_WCHAR */ } int main() diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc index 8b94ed0..fe7441e 100644 --- a/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc +++ b/libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc @@ -27,7 +27,7 @@ void test01() { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_WCHAR_T bool test __attribute__((unused)) = true; using namespace std; @@ -56,7 +56,7 @@ test01() wstring six(to_wstring(ld2)); VERIFY( six == L"-4.000000" ); -#endif +#endif /* _GLIBCXX_USE_WCHAR_T */ } int main() diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc index 3ff3afc..2069abd 100644 --- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc +++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc @@ -19,7 +19,7 @@ #include #include -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB // libstdc++/13943 void test01() { @@ -36,7 +36,7 @@ void test01() int main() { -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB test01(); #endif return 0; diff --git a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc index 7617232..cbda6bf 100644 --- a/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc +++ b/libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc @@ -24,7 +24,7 @@ void test01() { -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB typedef std::lldiv_t my_lldiv_t; diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc index cd7c58e..a03b085 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc @@ -23,7 +23,7 @@ #include -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_MATH #if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC template @@ -60,5 +60,5 @@ void test01() test01_do(); } -#endif -#endif +#endif /* !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */ +#endif /* _GLIBCXX_USE_C99_MATH */ diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc index 3758958..4a47f80 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc @@ -30,7 +30,7 @@ void test01(int dummy, ...) std::va_list ap; va_start(ap, dummy); -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDIO char* s = 0; const char* cs = 0; diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc index 4d225da..9ed0184 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc @@ -27,7 +27,7 @@ void test01() { -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB long long i = 0; const char* s = 0; @@ -67,7 +67,7 @@ void test01() dret = dret; #endif -#endif +#endif /* _GLIBCXX_USE_C99_STDLIB */ } -#endif +#endif /* _GLIBCXX_HOSTED */ diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc index e5f06ab..a073f2c 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc @@ -27,7 +27,7 @@ void test01() { -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_STDLIB typedef std::tr1::lldiv_t my_lldiv_t; diff --git a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc index b504f21..a00072f 100644 --- a/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc +++ b/libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc @@ -67,7 +67,7 @@ void test01(int dummy, ...) ret3 = ret3; // Suppress unused warning. #endif -#if _GLIBCXX_USE_C99 +#if _GLIBCXX_USE_C99_WCHAR const wchar_t* nptr2 = 0; wchar_t** endptr2 = 0; -- 2.0.1 From c8ef82356dbcca36bc555f06da8659a6daa83644 Mon Sep 17 00:00:00 2001 From: Nicolas Cavallari Date: Tue, 13 May 2014 15:54:00 +0200 Subject: [PATCH 7/7] libstdc++-v3: More specific feature checks for debug mode. * libstdc++-v3/src/c++11/debug.cc (_Error_formatter::_M_format_word): Test for _GLIBCXX_USE_C99_STDIO instead of _GLIBCXX_USE_C99 to use snprintf. --- libstdc++-v3/src/c++11/debug.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libstdc++-v3/src/c++11/debug.cc b/libstdc++-v3/src/c++11/debug.cc index d51cbf6..77d7e15 100644 --- a/libstdc++-v3/src/c++11/debug.cc +++ b/libstdc++-v3/src/c++11/debug.cc @@ -788,7 +788,7 @@ namespace __gnu_debug int __n __attribute__ ((__unused__)), const char* __fmt, _Tp __s) const throw () { -#ifdef _GLIBCXX_USE_C99 +#ifdef _GLIBCXX_USE_C99_STDIO std::snprintf(__buf, __n, __fmt, __s); #else std::sprintf(__buf, __fmt, __s); -- 2.0.1