ARM32 and ARM64 always contain all Vista symbols. So use them directly instead of the mingw-w64 emulation.
The only Vista+ symbol which is not enabled right now is vsnprintf. It needs to be inspected if this Vista+ symbol is C99 compatible vsnprintf() function or MSVC variant _vsnprintf() which does not fill nul term byte. --- mingw-w64-crt/Makefile.am | 22 +++++--- mingw-w64-crt/lib-common/msvcrt.def.in | 78 +++++++++++++------------- 2 files changed, 52 insertions(+), 48 deletions(-) diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index 440e5d345d74..e2964f1e9d9f 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am @@ -300,6 +300,15 @@ src_msvcrt=\ misc/imaxdiv.c \ misc/invalid_parameter_handler.c \ misc/purecall.c \ + secapi/_vscprintf_p.c \ + secapi/_vscwprintf_p.c \ + secapi/_vswprintf_p.c \ + secapi/wmemcpy_s.c \ + secapi/wmemmove_s.c \ + stdio/fseeki64.c \ + stdio/mingw_lock.c + +src_msvcrt_add_x86=\ secapi/_access_s.c \ secapi/_cgets_s.c \ secapi/_cgetws_s.c \ @@ -324,27 +333,20 @@ src_msvcrt=\ secapi/_vcprintf_s_l.c \ secapi/_vcwprintf_s.c \ secapi/_vcwprintf_s_l.c \ - secapi/_vscprintf_p.c \ - secapi/_vscwprintf_p.c \ - secapi/_vswprintf_p.c \ secapi/_waccess_s.c \ secapi/_wasctime_s.c \ secapi/_wctime32_s.c \ secapi/_wctime64_s.c \ - secapi/_wstrtime_s.c \ secapi/_wmktemp_s.c \ secapi/_wstrdate_s.c \ + secapi/_wstrtime_s.c \ secapi/asctime_s.c \ secapi/memcpy_s.c \ secapi/memmove_s.c \ secapi/rand_s.c \ secapi/sprintf_s.c \ secapi/strerror_s.c \ - secapi/vsprintf_s.c \ - secapi/wmemcpy_s.c \ - secapi/wmemmove_s.c \ - stdio/fseeki64.c \ - stdio/mingw_lock.c + secapi/vsprintf_s.c # Files included in libucrt*.a src_ucrtbase=\ @@ -435,6 +437,7 @@ src_ucrtbasearm64=\ # Files included in libmsvcrt-os.a (for msvcrt.dll) on x86_32 src_msvcrt32=\ $(src_msvcrt) \ + $(src_msvcrt_add_x86) \ math/x86/_copysignf.c \ misc/___mb_cur_max_func.c \ misc/__pctype_func.c \ @@ -456,6 +459,7 @@ src_msvcrt32=\ # Files included in libmsvcrt-os.a (for msvcrt.dll) on x86_64 src_msvcrt64=\ $(src_msvcrt) \ + $(src_msvcrt_add_x86) \ misc/__p___argc.c \ misc/__p___argv.c \ misc/__p___wargv.c \ diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in b/mingw-w64-crt/lib-common/msvcrt.def.in index 57d20034f38f..e0ed8c185eab 100644 --- a/mingw-w64-crt/lib-common/msvcrt.def.in +++ b/mingw-w64-crt/lib-common/msvcrt.def.in @@ -1351,7 +1351,7 @@ F_I386(__libm_sse2_tanf) __strncnt __wcserror_s __wcsncnt -; _access_s replaced by emu +F_ARM_ANY(_access_s) ; i386 and x64 _access_s replaced by emu _aligned_free_dbg _aligned_malloc_dbg _aligned_offset_malloc_dbg @@ -1365,17 +1365,17 @@ _atoi_l _atol_l _atoldbl_l _calloc_dbg -; _cgets_s replaced by emu -; _cgetws_s replaced by emu -; _chsize_s replaced by emu +F_ARM_ANY(_cgets_s) ; i386 and x64 _cgets_s replaced by emu +F_ARM_ANY(_cgetws_s) ; i386 and x64 _cgetws_s replaced by emu +F_ARM_ANY(_chsize_s) ; i386 and x64 _chsize_s replaced by emu _chvalidator _chvalidator_l -; _controlfp_s replaced by emu +F_ARM_ANY(_controlfp_s) ; i386 and x64 _controlfp_s replaced by emu _cprintf_l _cprintf_p _cprintf_p_l -; _cprintf_s replaced by emu -; _cprintf_s_l replaced by emu +F_ARM_ANY(_cprintf_s) ; i386 and x64 _cprintf_s replaced by emu +F_ARM_ANY(_cprintf_s_l) ; i386 and x64 _cprintf_s_l replaced by emu _crtAssertBusy _crtBreakAlloc _crtDbgFlag @@ -1383,13 +1383,13 @@ _cscanf_l _cscanf_s _cscanf_s_l _ctime32 F_I386(== ctime) ; i386 _ctime32 replaced by alias -; _ctime32_s replaced by emu -; _ctime64_s replaced by emu +F_ARM_ANY(_ctime32_s) ; i386 and x64 _ctime32_s replaced by emu +F_ARM_ANY(_ctime64_s) ; i386 and x64 _ctime64_s replaced by emu _cwprintf_l _cwprintf_p _cwprintf_p_l -; _cwprintf_s replaced by emu -; _cwprintf_s_l replaced by emu +F_ARM_ANY(_cwprintf_s) ; i386 and x64 _cwprintf_s replaced by emu +F_ARM_ANY(_cwprintf_s_l) ; i386 and x64 _cwprintf_s_l replaced by emu _cwscanf_l _cwscanf_s _cwscanf_s_l @@ -1439,8 +1439,8 @@ F_X86_ANY(_get_winminor) F_X86_ANY(_get_winver) F_X86_ANY(_get_wpgmptr) _gmtime32 F_I386(== gmtime) ; i386 _gmtime32 replaced by alias -; _gmtime32_s replaced by emu -; _gmtime64_s replaced by emu +F_ARM_ANY(_gmtime32_s) ; i386 and x64 _gmtime32_s replaced by emu +F_ARM_ANY(_gmtime64_s) ; i386 and x64 _gmtime64_s replaced by emu _i64toa_s _i64tow_s _initterm_e @@ -1503,8 +1503,8 @@ _itow_s _lfind_s F_I386(_local_unwind4) _localtime32 F_I386(== localtime) ; i386 _localtime32 replaced by alias -; _localtime32_s replaced by emu -; _localtime64_s replaced by emu +F_ARM_ANY(_localtime32_s) ; i386 and x64 _localtime32_s replaced by emu +F_ARM_ANY(_localtime64_s) ; i386 and x64 _localtime64_s replaced by emu _lsearch_s _ltoa_s _ltow_s @@ -1595,7 +1595,7 @@ _mbsnlen _mbstrnlen _memicmp_l _mkgmtime32 F_I386(== _mkgmtime) ; i386 _mkgmtime32 replaced by alias -; _mktemp_s replaced by emu +F_ARM_ANY(_mktemp_s) ; i386 and x64 _mktemp_s replaced by emu _mktime32 F_I386(== mktime) ; i386 _mktime32 replaced by alias F_NON_I386(_msize_dbg) F_I386(_msize_debug) @@ -1633,7 +1633,7 @@ _snwprintf_s_l _snwscanf_l _snwscanf_s _snwscanf_s_l -; _sopen_s replaced by emu +F_ARM_ANY(_sopen_s) ; i386 and x64 _sopen_s replaced by emu _splitpath_s _sprintf_l _sprintf_p_l @@ -1641,7 +1641,7 @@ _sprintf_s_l _sscanf_l _sscanf_s_l _strcoll_l -; _strdate_s replaced by emu +F_ARM_ANY(_strdate_s) ; i386 and x64 _strdate_s replaced by emu _strdup_dbg _strerror_s _stricmp_l @@ -1654,7 +1654,7 @@ _strnicmp_l _strnicoll_l _strnset_s _strset_s -; _strtime_s replaced by emu +F_ARM_ANY(_strtime_s) ; i386 and x64 _strtime_s replaced by emu _strtod_l _strtoi64_l _strtol_l @@ -1681,20 +1681,20 @@ _ui64toa_s _ui64tow_s _ultoa_s _ultow_s -; _umask_s replaced by emu +F_ARM_ANY(_umask_s) ; i386 and x64 _umask_s replaced by emu _utime32 F_I386(== _utime) ; i386 _utime32 replaced by alias _vcprintf _vcprintf_l _vcprintf_p _vcprintf_p_l -; _vcprintf_s replaced by emu -; _vcprintf_s_l replaced by emu +F_ARM_ANY(_vcprintf_s) ; i386 and x64 _vcprintf_s replaced by emu +F_ARM_ANY(_vcprintf_s_l) ; i386 and x64 _vcprintf_s_l replaced by emu _vcwprintf _vcwprintf_l _vcwprintf_p _vcwprintf_p_l -; _vcwprintf_s replaced by emu -; _vcwprintf_s_l replaced by emu +F_ARM_ANY(_vcwprintf_s) ; i386 and x64 _vcwprintf_s replaced by emu +F_ARM_ANY(_vcwprintf_s_l) ; i386 and x64 _vcwprintf_s_l replaced by emu _vfprintf_l _vfprintf_p _vfprintf_p_l @@ -1733,8 +1733,8 @@ _vwprintf_l _vwprintf_p _vwprintf_p_l _vwprintf_s_l -; _waccess_s replaced by emu -; _wasctime_s replaced by emu +F_ARM_ANY(_waccess_s) ; i386 and x64 _waccess_s replaced by emu +F_ARM_ANY(_wasctime_s) ; i386 and x64 _wasctime_s replaced by emu F_ARM_ANY(_wassert) ; i386 and x64 _wassert replaced by emu _wcscoll_l _wcsdup_dbg @@ -1761,8 +1761,8 @@ _wcsupr_s _wcsupr_s_l _wcsxfrm_l _wctime32 F_I386(== _wctime) ; i386 _wctime32 replaced by alias -; _wctime32_s replaced by emu -; _wctime64_s replaced by emu +F_ARM_ANY(_wctime32_s) ; i386 and x64 _wctime32_s replaced by emu +F_ARM_ANY(_wctime64_s) ; i386 and x64 _wctime64_s replaced by emu _wctomb_l _wctomb_s_l _wfopen_s @@ -1771,7 +1771,7 @@ _wfullpath_dbg _wgetenv_s _winput_s _wmakepath_s -; _wmktemp_s replaced by emu +F_ARM_ANY(_wmktemp_s) ; i386 and x64 _wmktemp_s replaced by emu _woutput_s _wprintf_l _wprintf_p @@ -1783,8 +1783,8 @@ _wscanf_s_l _wsearchenv_s _wsopen_s _wsplitpath_s -; _wstrdate_s replaced by emu -; _wstrtime_s replaced by emu +F_ARM_ANY(_wstrdate_s) ; i386 and x64 _wstrdate_s replaced by emu +F_ARM_ANY(_wstrtime_s) ; i386 and x64 _wstrtime_s replaced by emu _wtempnam_dbg _wtmpnam_s _wtof_l @@ -1792,7 +1792,7 @@ _wtoi64_l _wtoi_l _wtol_l _wutime32 F_I386(== _wutime) ; i386 _wutime32 replaced by alias -; asctime_s replaced by emu +F_ARM_ANY(asctime_s) ; i386 and x64 asctime_s replaced by emu bsearch_s F_ARM_ANY(btowc) ; i386 and x64 btowc replaced by emu clearerr_s @@ -1809,20 +1809,20 @@ mbsdup_dbg F_ARM_ANY(mbsrtowcs) ; i386 and x64 mbsrtowcs replaced by emu mbsrtowcs_s mbstowcs_s -; memcpy_s replaced by emu -; memmove_s replaced by emu +F_ARM_ANY(memcpy_s) ; i386 and x64 memcpy_s replaced by emu +F_ARM_ANY(memmove_s) ; i386 and x64 memmove_s replaced by emu printf_s qsort_s -; rand_s replaced by emu +F_ARM_ANY(rand_s) ; i386 and x64 rand_s replaced by emu scanf_s -; sprintf_s replaced by emu +F_ARM_ANY(sprintf_s) ; i386 and x64 sprintf_s replaced by emu sscanf_s strcat_s strcpy_s -; strerror_s replaced by emu +F_ARM_ANY(strerror_s) ; i386 and x64 strerror_s replaced by emu strncat_s strncpy_s -; strnlen replaced by emu +F_ARM_ANY(strnlen) ; i386 and x64 strnlen replaced by emu strtok_s swprintf_s swscanf_s @@ -1834,7 +1834,7 @@ vfprintf_s vfwprintf_s vprintf_s ; vsnprintf replaced by emu -; vsprintf_s replaced by emu +F_ARM_ANY(vsprintf_s) ; i386 and x64 vsprintf_s replaced by emu vswprintf_s vwprintf_s F_ARM_ANY(wcrtomb) ; i386 and x64 wcrtomb replaced by emu -- 2.20.1 _______________________________________________ Mingw-w64-public mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mingw-w64-public
