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