[PATCH v2 03/22] vcruntime140: Add the new MSVC 2015 compiler specific DLL.

Martin Storsjo martin at martin.st
Mon Aug 3 14:26:02 CDT 2015


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.
---
 configure.ac                        |  1 +
 dlls/vcruntime140/Makefile.in       | 33 +++++++++++++++
 dlls/vcruntime140/vcruntime140.spec | 82 +++++++++++++++++++++++++++++++++++++
 3 files changed, 116 insertions(+)
 create mode 100644 dlls/vcruntime140/Makefile.in
 create mode 100644 dlls/vcruntime140/vcruntime140.spec

diff --git a/configure.ac b/configure.ac
index fe3ca0e..95b9b6a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3326,6 +3326,7 @@ WINE_CONFIG_DLL(vcomp)
 WINE_CONFIG_TEST(dlls/vcomp/tests)
 WINE_CONFIG_DLL(vcomp100)
 WINE_CONFIG_DLL(vcomp90)
+WINE_CONFIG_DLL(vcruntime140,,[implib])
 WINE_CONFIG_DLL(vdhcp.vxd,enable_win16)
 WINE_CONFIG_DLL(vdmdbg,,[implib])
 WINE_CONFIG_DLL(ver.dll16,enable_win16)
diff --git a/dlls/vcruntime140/Makefile.in b/dlls/vcruntime140/Makefile.in
new file mode 100644
index 0000000..92f99c4
--- /dev/null
+++ b/dlls/vcruntime140/Makefile.in
@@ -0,0 +1,33 @@
+EXTRADEFS = -D_MT -D_MSVCR_VER=140
+MODULE    = vcruntime140.dll
+IMPORTLIB = vcruntime140
+DELAYIMPORTS = advapi32 user32
+PARENTSRC = ../msvcrt
+
+C_SRCS = \
+	console.c \
+	cpp.c \
+	ctype.c \
+	data.c \
+	dir.c \
+	environ.c \
+	errno.c \
+	except.c \
+	except_arm.c \
+	except_i386.c \
+	except_x86_64.c \
+	exit.c \
+	file.c \
+	heap.c \
+	locale.c \
+	lock.c \
+	main.c \
+	math.c \
+	mbcs.c \
+	misc.c \
+	process.c \
+	string.c \
+	thread.c \
+	time.c \
+	undname.c \
+	wcs.c
diff --git a/dlls/vcruntime140/vcruntime140.spec b/dlls/vcruntime140/vcruntime140.spec
new file mode 100644
index 0000000..9027955
--- /dev/null
+++ b/dlls/vcruntime140/vcruntime140.spec
@@ -0,0 +1,82 @@
+@ stub _CreateFrameInfo
+@ stdcall _CxxThrowException(long long)
+@ cdecl -arch=i386 -norelay _EH_prolog()
+@ stub _FindAndUnlinkFrame
+@ stub _IsExceptionObjectToBeDestroyed
+@ stub _NLG_Dispatch2
+@ stub _NLG_Return
+@ stub _NLG_Return2
+@ stub _SetWinRTOutOfMemoryExceptionCallback
+@ cdecl __AdjustPointer(ptr ptr)
+@ stub __BuildCatchObject
+@ stub __BuildCatchObjectHelper
+@ cdecl -arch=i386,x86_64,arm __CxxDetectRethrow(ptr)
+@ stub __CxxExceptionFilter
+@ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler(ptr ptr ptr ptr)
+@ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler2(ptr ptr ptr ptr) __CxxFrameHandler
+@ cdecl -arch=i386,x86_64,arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr) __CxxFrameHandler
+@ stdcall -arch=i386 __CxxLongjmpUnwind(ptr)
+@ cdecl -arch=i386,x86_64,arm __CxxQueryExceptionSize()
+@ stub __CxxRegisterExceptionObject
+@ stub __CxxUnregisterExceptionObject
+@ stub __DestructExceptionObject
+@ stub __FrameUnwindFilter
+@ stub __GetPlatformExceptionInfo
+@ cdecl __RTCastToVoid(ptr) MSVCRT___RTCastToVoid
+@ cdecl __RTDynamicCast(ptr long ptr ptr long) MSVCRT___RTDynamicCast
+@ cdecl __RTtypeid(ptr) MSVCRT___RTtypeid
+@ stub __TypeMatch
+@ stub __current_exception
+@ stub __current_exception_context
+@ stub __intrinsic_setjmp
+@ stub __processing_throw
+@ stub __report_gsfailure
+@ stub __std_exception_copy
+@ stub __std_exception_destroy
+@ stub __std_terminate
+@ stub __std_type_info_compare
+@ stub __std_type_info_destroy_list
+@ stub __std_type_info_hash
+@ stub __std_type_info_name
+@ stub __telemetry_main_invoke_trigger
+@ stub __telemetry_main_return_trigger
+@ cdecl __unDName(ptr str long ptr ptr long)
+@ cdecl __unDNameEx(ptr str long ptr ptr ptr long)
+@ cdecl __uncaught_exception() MSVCRT___uncaught_exception
+@ stub __uncaught_exceptions
+@ stub __vcrt_GetModuleFileNameW
+@ stub __vcrt_GetModuleHandleW
+@ stub __vcrt_InitializeCriticalSectionEx
+@ stub __vcrt_LoadLibraryExW
+@ cdecl -arch=i386 -norelay _chkesp()
+@ cdecl -arch=i386 _except_handler2(ptr ptr ptr ptr)
+@ cdecl -arch=i386 _except_handler3(ptr ptr ptr ptr)
+@ cdecl -arch=i386 _except_handler4_common(ptr ptr ptr ptr ptr ptr)
+@ stub _get_purecall_handler
+@ cdecl _get_unexpected() MSVCRT__get_unexpected
+@ cdecl -arch=i386 _global_unwind2(ptr)
+@ stub _is_exception_typeof
+@ cdecl -arch=i386 _local_unwind2(ptr long)
+@ cdecl -arch=i386 _local_unwind4(ptr ptr long)
+@ cdecl -arch=i386 _longjmpex(ptr long) MSVCRT_longjmp
+@ cdecl _purecall()
+@ stdcall -arch=i386 _seh_longjmp_unwind4(ptr)
+@ stdcall -arch=i386 _seh_longjmp_unwind(ptr)
+@ cdecl _set_purecall_handler(ptr)
+@ stub -arch=win32 ?_set_se_translator@@YAP6AXIPAU_EXCEPTION_POINTERS@@@ZH at Z  # void(__cdecl*__cdecl _set_se_translator(int))(unsigned int,struct _EXCEPTION_POINTERS *)
+@ stub -arch=win64 ?_set_se_translator@@YAP6AXIPEAU_EXCEPTION_POINTERS@@@ZH at Z  # void(__cdecl*__cdecl _set_se_translator(int))(unsigned int,struct _EXCEPTION_POINTERS * __ptr64)
+@ cdecl -arch=i386 -norelay _setjmp3(ptr long) MSVCRT__setjmp3
+@ cdecl -arch=i386,x86_64,arm longjmp(ptr long) MSVCRT_longjmp
+@ cdecl memchr(ptr long long) MSVCRT_memchr
+@ cdecl memcmp(ptr ptr long) MSVCRT_memcmp
+@ cdecl memcpy(ptr ptr long) MSVCRT_memcpy
+@ cdecl memmove(ptr ptr long) MSVCRT_memmove
+@ cdecl memset(ptr long long) MSVCRT_memset
+@ stub set_unexpected
+@ cdecl strchr(str long) MSVCRT_strchr
+@ cdecl strrchr(str long) MSVCRT_strrchr
+@ cdecl strstr(str str) MSVCRT_strstr
+@ stub unexpected
+@ cdecl wcschr(wstr long) MSVCRT_wcschr
+@ cdecl wcsrchr(wstr long) ntdll.wcsrchr
+@ cdecl wcsstr(wstr wstr) MSVCRT_wcsstr
-- 
2.3.2.223.g7a9409c




More information about the wine-patches mailing list