Index: libcxx/include/support/win32/locale_win32.h =================================================================== --- libcxx/include/support/win32/locale_win32.h +++ libcxx/include/support/win32/locale_win32.h @@ -238,7 +238,8 @@ #define towupper_l _towupper_l #define towlower_l _towlower_l #if defined(__MINGW32__) && __MSVCRT_VERSION__ < 0x0800 -#define strftime_l( __s, __l, __f, __tm, __loc ) strftime( __s, __l, __f, __tm ) +_LIBCPP_FUNC_VIS size_t strftime_l(char *ret, size_t n, const char *format, + const struct tm *tm, locale_t loc); #else #define strftime_l _strftime_l #endif Index: libcxx/src/support/win32/locale_win32.cpp =================================================================== --- libcxx/src/support/win32/locale_win32.cpp +++ libcxx/src/support/win32/locale_win32.cpp @@ -129,3 +129,11 @@ return strtold(nptr, endptr); } #endif + +#if defined(__MINGW32__) && __MSVCRT_VERSION__ < 0x0800 +size_t strftime_l(char *ret, size_t n, const char *format, const struct tm *tm, + locale_t loc) { + __libcpp_locale_guard __current(loc); + return strftime(ret, n, format, tm); +} +#endif