Commit c52f1eb09901e038ceb7012730e7cf3395d65a78 incorectly stated that _strtoi64 and _strtoui64 symbols are available since the first release of msvcrt.dll library (part of MS Visual C++ 4.2).
But only the symbol _atoi64 mentioned in that commit is available since the first msvcrt.dll release. Symbols _strtoi64 and _strtoui64 (as can be now seen in msvcrt.def.in comments) were introduced in Windows XP version of msvcrt.dll. So for I386 msvcrt.dll builds, use mingw-w64 implementation of _strtoi64 and _strtoui64 functions, like it was before that mentioned commit. The mentioned commit broke support for Windows NT 4.0 and Windows 2000 as msvcrt!_strtoi64 and msvcrt!_strtoui64 symbols are not available on these systems. This issue was reported by Marius Negruțiu into mingw-w64 bug tracker: https://sourceforge.net/p/mingw-w64/bugs/966/ --- mingw-w64-crt/Makefile.am | 2 ++ mingw-w64-crt/lib-common/msvcrt.def.in | 12 ++++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am index bf3628e4cf67..69ef8cd37425 100644 --- a/mingw-w64-crt/Makefile.am +++ b/mingw-w64-crt/Makefile.am @@ -439,6 +439,8 @@ src_msvcrt32=\ misc/imaxabs.c \ misc/lc_locale_func.c \ misc/seterrno.c \ + misc/strtoimax.c \ + misc/strtoumax.c \ misc/wassert.c \ stdio/_scprintf.c \ stdio/_vscprintf.c diff --git a/mingw-w64-crt/lib-common/msvcrt.def.in b/mingw-w64-crt/lib-common/msvcrt.def.in index ecab547c5dcc..2a592599dbb5 100644 --- a/mingw-w64-crt/lib-common/msvcrt.def.in +++ b/mingw-w64-crt/lib-common/msvcrt.def.in @@ -1084,8 +1084,8 @@ _scwprintf F_I386(_set_SSE2_enable) _snscanf _snwscanf -_strtoi64 -_strtoui64 +F_NON_I386(_strtoi64) ; i386 _strtoi64 replaced by emu +F_NON_I386(_strtoui64) ; i386 _strtoui64 replaced by emu _ungetwch F_NON_I386(_vscprintf) ; i386 _vscprintf replaced by emu _vscwprintf @@ -1804,10 +1804,10 @@ _strtoumax_l == _strtoui64_l atoll == _atoi64 F_NON_I386(imaxabs == _abs64) ; i386 imaxabs alias provided by emu F_NON_I386(llabs == _abs64) ; i386 llabs alias provided by emu -strtoimax == _strtoi64 -strtoll == _strtoi64 -strtoull == _strtoui64 -strtoumax == _strtoui64 +F_NON_I386(strtoimax == _strtoi64) ; i386 strtoimax alias provided by emu +F_NON_I386(strtoll == _strtoi64) ; i386 strtoll alias provided by emu +F_NON_I386(strtoull == _strtoui64) ; i386 strtoull alias provided by emu +F_NON_I386(strtoumax == _strtoui64) ; i386 strtoumax alias provided by emu ; This is list of internal symbol aliases for printf/scanf functions used by mingw __ms_fprintf == fprintf -- 2.20.1 _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public