Re: [Mingw-w64-public] [PATCH] crt: Do not depend on _strtoi64/_strtoui64 symbols for I386 msvcrt.dll

2024-04-08 Thread LIU Hao

在 2024-04-06 06:19, Pali Rohár 写道:

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(-)


Thanks for the patch. looks good to me, too. Pushed to master now.



--
Best regards,
LIU Hao



OpenPGP_signature.asc
Description: OpenPGP digital signature
___
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public


[Mingw-w64-public] [PATCH] crt: Do not depend on _strtoi64/_strtoui64 symbols for I386 msvcrt.dll

2024-04-05 Thread Pali Rohár
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