On Thu, 19 Jan 2023, LIU Hao wrote:
Back in 2017, commit 1035bed24e833ea5eb487c78f4f350ea48f31e8b updated
msvcrt.def.in and changed
_set_controlfp
_set_doserrno
_set_errno
to
F_ARM_ANY(_set_controlfp)
F_ARM_ANY(_set_doserrno)
F_ARM_ANY(_set_errno)
so libmsvcrt no longer has them.
This summary is a bit simplified... Before
2146d75d7fd027118fe267f2a8fb139bcab6a9b8, in August 2017, there was
separate msvcrt.def.in for each architecture, and then, the x86 ones did
lack _set_doserrno.
In that commit, I merged msvcrt.def.in for different architectures
(merging arm32 and x86_64 in that commit, merging in the i386 version in
0360917119ad3f09635d75103b6dba859cfe0c93), and exposed a bunch of
functions that only exist in msvcrt.dll in newer versions.
Most/all of these functions, that we exposed, are missing on XP. Some of
them are such that we do have a statically linked wrapper (that e.g. try
to load the real one with GetProcAddress and use a fallback otherwise) -
and by exposing them, we ended up using that instead of the statically
linked function.
So after noticing this issue, I made the commit that reverted the
availability to pretty much exactly what it was before the merge.
I don't mind making individual symbols available though (but they need to
be checked - we can't revert that commit outright).
But really Windows 10 MSVCRT has them; I haven't checked Windows 7 though.
I checked, and it seems like these functions exist since Vista, on all
architectures.
We probably shouldn't make _set_errno available everywhere, since we have
a custom version of that (in misc/seterrno.c). If we don't care about the
x86_64 version of XP, we could skip that from the x86_64 version of
libmsvcrt-os.a and make it available in the def file though.
The other two functions, _set_controlfp and _set_doserrno, don't have any
extra custom wrapping anywhere, so it's probably fine to just make them
available though.
// Martin
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public