[PATCH 1/2] vcruntime140: Add the new MSVC 2015 compiler specific DLL.
Martin Storsjö
martin at martin.st
Mon Aug 31 15:51:05 CDT 2015
On Fri, 28 Aug 2015, Alexandre Julliard wrote:
> Martin Storsjo <martin at martin.st> writes:
>
>> Since MSVC 2015/Windows 10, the C runtime has now been split into two
>> parts, ucrtbase, which is the generic C runtime which is now considered
>> a system component, and vcruntimeX which is specific to the compiler
>> version.
>>
>> Even if this DLL only has a fraction of the functions of the full
>> msvcrt/ucrtbase, it still requires almost all the object files from
>> msvcrt.
>
> It would be better to isolate the corresponding code so that we don't
> need all the files.
That would indeed be the best. For some functions (like
memcmp/memcpy/memmove/memset and such) it's pretty straightforward, but
for others it does pull in most of the internals of the msvcrt
implementation.
One example: _purecall and _set_purecall_handler (currently implemented in
exit.c). The _purecall implementation uses _amsg_exit which in turn uses
_cprintf (console.c), _MSVCRT_app_type (data.c) and DoMessageBox, which
uses _MSVCRT_mbstowcs (mbcs.c).
Second example: MSVCRT__get_unexpected (cpp.c), using
msvcrt_get_thread_data (thread.c), which uses MSVCRT_locale (locale.c).
So unless it's a really simple function, it ends up pulling in most of the
msvcrt internals.
For the real implementation, I'd guess it uses most things from ucrtbase,
instead of having a separate full crt state within both DLLs. But I'm not
sure I'm ready to take on such a challenge.
// Martin
More information about the wine-devel
mailing list