https://bugs.gentoo.org/577238 we should be able to drop this with gcc-6+ --- a/libstdc++-v3/config/locale/generic/c_locale.h +++ b/libstdc++-v3/config/locale/generic/c_locale.h @@ -70,7 +70,7 @@ __builtin_va_list __args; __builtin_va_start(__args, __fmt); -#ifdef _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); #else const int __ret = __builtin_vsprintf(__out, __fmt, __args); --- a/libstdc++-v3/config/locale/gnu/c_locale.h +++ b/libstdc++-v3/config/locale/gnu/c_locale.h @@ -88,7 +88,7 @@ __builtin_va_list __args; __builtin_va_start(__args, __fmt); -#ifdef _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); #else const int __ret = __builtin_vsprintf(__out, __fmt, __args); --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -5246,7 +5246,7 @@ _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99) +#if __cplusplus >= 201103L && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)) #include --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -992,7 +992,7 @@ char __fbuf[16]; __num_base::_S_format_float(__io, __fbuf, __mod); -#ifdef _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) // Precision is always used except for hexfloat format. const bool __use_prec = (__io.flags() & ios_base::floatfield) != ios_base::floatfield; --- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc +++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc @@ -578,7 +578,7 @@ { const locale __loc = __io.getloc(); const ctype<_CharT>& __ctype = use_facet >(__loc); -#ifdef _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) // First try a buffer perhaps big enough. int __cs_size = 64; char* __cs = static_cast(__builtin_alloca(__cs_size)); @@ -751,7 +751,7 @@ case 'S': // Seconds. [tm_sec] // [00, 60] in C99 (one leap-second), [00, 61] in C89. -#ifdef _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 60, 2, #else __beg = _M_extract_num(__beg, __end, __tm->tm_sec, 0, 61, 2, --- a/libstdc++-v3/include/c_compatibility/math.h +++ b/libstdc++-v3/include/c_compatibility/math.h @@ -56,7 +56,7 @@ using std::floor; using std::fmod; -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) using std::fpclassify; using std::isfinite; using std::isinf; --- a/libstdc++-v3/include/c_compatibility/wchar.h +++ b/libstdc++-v3/include/c_compatibility/wchar.h @@ -103,7 +103,7 @@ using std::wmemset; using std::wcsftime; -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) using std::wcstold; using std::wcstoll; using std::wcstoull; --- a/libstdc++-v3/include/c_global/cstdio +++ b/libstdc++-v3/include/c_global/cstdio @@ -146,7 +146,7 @@ using ::vsprintf; } // namespace -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) #undef snprintf #undef vfscanf --- a/libstdc++-v3/include/c_global/cstdlib +++ b/libstdc++-v3/include/c_global/cstdlib @@ -195,7 +195,7 @@ _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) #undef _Exit #undef llabs --- a/libstdc++-v3/include/c_global/cwchar +++ b/libstdc++-v3/include/c_global/cwchar @@ -232,7 +232,7 @@ _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) #undef wcstold #undef wcstoll @@ -289,7 +289,7 @@ using std::vwscanf; #endif -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) using std::wcstold; using std::wcstoll; using std::wcstoull; --- a/libstdc++-v3/include/c_std/cstdio +++ b/libstdc++-v3/include/c_std/cstdio @@ -144,7 +144,7 @@ using ::vsprintf; } // namespace std -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) #undef snprintf #undef vfscanf --- a/libstdc++-v3/include/c_std/cstdlib +++ b/libstdc++-v3/include/c_std/cstdlib @@ -192,7 +192,7 @@ _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) #undef _Exit #undef llabs --- a/libstdc++-v3/include/c_std/cwchar +++ b/libstdc++-v3/include/c_std/cwchar @@ -228,7 +228,7 @@ _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) #undef wcstold #undef wcstoll --- a/libstdc++-v3/include/ext/vstring.h +++ b/libstdc++-v3/include/ext/vstring.h @@ -2680,7 +2680,7 @@ _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99)) +#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__))) #include --- a/libstdc++-v3/include/tr1/cstdio +++ b/libstdc++-v3/include/tr1/cstdio @@ -33,7 +33,7 @@ #include -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) namespace std _GLIBCXX_VISIBILITY(default) { --- a/libstdc++-v3/include/tr1/cstdlib +++ b/libstdc++-v3/include/tr1/cstdlib @@ -35,7 +35,7 @@ #if _GLIBCXX_HOSTED -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) namespace std _GLIBCXX_VISIBILITY(default) { --- a/libstdc++-v3/include/tr1/cwchar +++ b/libstdc++-v3/include/tr1/cwchar @@ -52,7 +52,7 @@ using std::vwscanf; #endif -#if _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) using std::wcstold; using std::wcstoll; using std::wcstoull; --- 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 defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) using std::tr1::atoll; using std::tr1::strtoll; --- a/libstdc++-v3/src/c++11/debug.cc +++ b/libstdc++-v3/src/c++11/debug.cc @@ -788,7 +788,7 @@ int __n __attribute__ ((__unused__)), const char* __fmt, _Tp __s) const throw () { -#ifdef _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) std::snprintf(__buf, __n, __fmt, __s); #else std::sprintf(__buf, __fmt, __s); --- a/libstdc++-v3/src/c++98/locale_facets.cc +++ b/libstdc++-v3/src/c++98/locale_facets.cc @@ -72,7 +72,7 @@ ios_base::fmtflags __fltfield = __flags & ios_base::floatfield; -#ifdef _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) // Precision is always used except for hexfloat format. if (__fltfield != (ios_base::fixed | ios_base::scientific)) #endif @@ -89,7 +89,7 @@ *__fptr++ = 'f'; else if (__fltfield == ios_base::scientific) *__fptr++ = (__flags & ios_base::uppercase) ? 'E' : 'e'; -#ifdef _GLIBCXX_USE_C99 +#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__) else if (__fltfield == (ios_base::fixed | ios_base::scientific)) *__fptr++ = (__flags & ios_base::uppercase) ? 'A' : 'a'; #endif