https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3c1f6631e62150c41d18e255079189b0313bff18

commit 3c1f6631e62150c41d18e255079189b0313bff18
Author:     Timo Kreuzer <[email protected]>
AuthorDate: Wed Sep 9 19:18:27 2020 +0200
Commit:     Timo Kreuzer <[email protected]>
CommitDate: Sun Sep 13 15:37:29 2020 +0200

    [MSVCRT] Add vista exports
---
 dll/win32/msvcrt/msvcrt.spec | 551 ++++++++++++++++++++++++++++
 dll/win32/msvcrt/stubs.c     | 831 +++++++++++++++++++++++++++++++++++++++++++
 sdk/lib/crt/crt.cmake        |   2 +-
 3 files changed, 1383 insertions(+), 1 deletion(-)

diff --git a/dll/win32/msvcrt/msvcrt.spec b/dll/win32/msvcrt/msvcrt.spec
index cf07e0b8b77..00bf4e65f3d 100644
--- a/dll/win32/msvcrt/msvcrt.spec
+++ b/dll/win32/msvcrt/msvcrt.spec
@@ -197,6 +197,31 @@
 @ cdecl -arch=i386 _CIsqrt()
 @ cdecl -arch=i386 _CItan()
 @ cdecl -arch=i386 _CItanh()
+@ stub -version=0x600+ _CrtCheckMemory
+@ stub -version=0x600+ _CrtDbgBreak
+@ stub -version=0x600+ _CrtDbgReport
+@ stub -version=0x600+ _CrtDbgReportV
+@ stub -version=0x600+ _CrtDbgReportW
+@ stub -version=0x600+ _CrtDbgReportWV
+@ stub -version=0x600+ _CrtDoForAllClientObjects
+@ stub -version=0x600+ _CrtDumpMemoryLeaks
+@ stub -version=0x600+ _CrtIsMemoryBlock
+@ stub -version=0x600+ _CrtIsValidHeapPointer
+@ stub -version=0x600+ _CrtIsValidPointer
+@ stub -version=0x600+ _CrtMemCheckpoint
+@ stub -version=0x600+ _CrtMemDifference
+@ stub -version=0x600+ _CrtMemDumpAllObjectsSince
+@ stub -version=0x600+ _CrtMemDumpStatistics
+@ stub -version=0x600+ _CrtReportBlockType
+@ stub -version=0x600+ _CrtSetAllocHook
+@ stub -version=0x600+ _CrtSetBreakAlloc
+@ stub -version=0x600+ _CrtSetDbgBlockType
+@ stub -version=0x600+ _CrtSetDbgFlag
+@ stub -version=0x600+ _CrtSetDumpClient
+@ stub -version=0x600+ _CrtSetReportFile
+@ stub -version=0x600+ _CrtSetReportHook
+@ stub -version=0x600+ _CrtSetReportHook2
+@ stub -version=0x600+ _CrtSetReportMode
 @ stdcall _CxxThrowException(long long)
 @ cdecl -arch=i386 -norelay _EH_prolog()
 @ cdecl _Getdays()
@@ -207,13 +232,16 @@
 @ cdecl _XcptFilter(long ptr)
 @ stdcall -arch=x86_64,arm __C_specific_handler(ptr long ptr ptr)
 @ cdecl __CppXcptFilter(long ptr)
+@ stub -version=0x600+ -arch=i386 __CxxCallUnwindDelDtor
 @ stub -arch=i386 __CxxCallUnwindDtor
 @ stub -arch=i386 __CxxCallUnwindVecDtor
 @ cdecl -arch=i386 __CxxDetectRethrow(ptr)
 @ cdecl -arch=i386 __CxxExceptionFilter()
 @ cdecl -arch=i386,x86_64 -norelay __CxxFrameHandler(ptr ptr ptr ptr)
 @ cdecl -arch=i386 -norelay __CxxFrameHandler2(ptr ptr ptr ptr) 
__CxxFrameHandler
+@ cdecl -version=0x600+ -arch=x86_64 -norelay __CxxFrameHandler2(ptr ptr ptr 
ptr) __CxxFrameHandler
 @ cdecl -arch=arm -norelay __CxxFrameHandler3(ptr ptr ptr ptr)
+@ cdecl -version=0x600+ -arch=i386,x86_64 -norelay __CxxFrameHandler3(ptr ptr 
ptr ptr)
 @ stdcall -arch=i386 __CxxLongjmpUnwind(ptr)
 @ cdecl -arch=i386 __CxxQueryExceptionSize()
 @ cdecl -arch=i386 __CxxRegisterExceptionObject()
@@ -238,8 +266,10 @@
 @ cdecl __crtGetStringTypeW(long long wstr long ptr)
 @ cdecl __crtLCMapStringA(long long str long str long long long)
 @ cdecl __crtLCMapStringW(long long wstr long wstr long long long)
+@ stub -version=0x600+ __daylight
 @ cdecl __dllonexit(ptr ptr ptr)
 @ cdecl __doserrno()
+@ stub -version=0x600+ __dstbias
 @ cdecl __fpecode()
 @ cdecl __getmainargs(ptr ptr ptr long ptr)
 @ extern __initenv
@@ -251,6 +281,27 @@
 @ extern __lc_collate_cp MSVCRT___lc_collate_cp
 @ extern __lc_handle MSVCRT___lc_handle
 @ cdecl __lconv_init()
+@ stub -version=0x600+ -arch=i386 __libm_sse2_acos
+@ stub -version=0x600+ -arch=i386 __libm_sse2_acosf
+@ stub -version=0x600+ -arch=i386 __libm_sse2_asin
+@ stub -version=0x600+ -arch=i386 __libm_sse2_asinf
+@ stub -version=0x600+ -arch=i386 __libm_sse2_atan
+@ stub -version=0x600+ -arch=i386 __libm_sse2_atan2
+@ stub -version=0x600+ -arch=i386 __libm_sse2_atanf
+@ stub -version=0x600+ -arch=i386 __libm_sse2_cos
+@ stub -version=0x600+ -arch=i386 __libm_sse2_cosf
+@ stub -version=0x600+ -arch=i386 __libm_sse2_exp
+@ stub -version=0x600+ -arch=i386 __libm_sse2_expf
+@ stub -version=0x600+ -arch=i386 __libm_sse2_log
+@ stub -version=0x600+ -arch=i386 __libm_sse2_log10
+@ stub -version=0x600+ -arch=i386 __libm_sse2_log10f
+@ stub -version=0x600+ -arch=i386 __libm_sse2_logf
+@ stub -version=0x600+ -arch=i386 __libm_sse2_pow
+@ stub -version=0x600+ -arch=i386 __libm_sse2_powf
+@ stub -version=0x600+ -arch=i386 __libm_sse2_sin
+@ stub -version=0x600+ -arch=i386 __libm_sse2_sinf
+@ stub -version=0x600+ -arch=i386 __libm_sse2_tan
+@ stub -version=0x600+ -arch=i386 __libm_sse2_tanf
 @ extern __mb_cur_max
 @ cdecl -arch=i386 __p___argc()
 @ cdecl -arch=i386 __p___argv()
@@ -288,6 +339,7 @@
 @ cdecl __set_app_type(long)
 @ extern __setlc_active
 @ cdecl __setusermatherr(ptr)
+@ stub -version=0x600+ __strncnt
 @ cdecl __threadhandle() kernel32.GetCurrentThread
 @ cdecl __threadid() kernel32.GetCurrentThreadId
 @ cdecl __toascii(long)
@@ -296,11 +348,14 @@
 @ extern __unguarded_readlc_active
 @ extern __wargv __wargv
 @ cdecl __wcserror(wstr)
+@ cdecl -version=0x600+ __wcserror_s(ptr long wstr)
+@ stub -version=0x600+ __wcsncnt
 @ cdecl __wgetmainargs(ptr ptr ptr long ptr)
 @ extern __winitenv
 @ cdecl -arch=i386 _abnormal_termination()
 # stub _abs64
 @ cdecl _access(str long)
+@ cdecl -version=0x600+ _access_s(str long)
 @ extern _acmdln
 @ stdcall -arch=i386 _adj_fdiv_m16i(long)
 @ stdcall -arch=i386 _adj_fdiv_m32(long)
@@ -318,24 +373,39 @@
 @ extern -arch=i386 _adjust_fdiv
 @ extern _aexit_rtn
 @ cdecl _aligned_free(ptr)
+@ stub -version=0x600+ _aligned_free_dbg
 @ cdecl _aligned_malloc(long long)
+@ stub -version=0x600+ _aligned_malloc_dbg
 @ cdecl _aligned_offset_malloc(long long long)
+@ stub -version=0x600+ _aligned_offset_malloc_dbg
 @ cdecl _aligned_offset_realloc(ptr long long long)
+@ stub -version=0x600+ _aligned_offset_realloc_dbg
 @ cdecl _aligned_realloc(ptr long long)
+@ stub -version=0x600+ _aligned_realloc_dbg
 @ cdecl _amsg_exit(long)
 @ cdecl _assert(str str long)
 @ cdecl _atodbl(ptr str)
+@ stub -version=0x600+ _atodbl_l
+@ stub -version=0x600+ _atof_l
+@ stub -version=0x600+ _atoflt_l
 @ cdecl -ret64 _atoi64(str)
+@ stub -version=0x600+ _atoi64_l
+@ stub -version=0x600+ _atoi_l
+@ stub -version=0x600+ _atol_l
 @ cdecl _atoldbl(ptr str)
+@ stub -version=0x600+ _atoldbl_l
 @ cdecl _beep(long long)
 @ cdecl _beginthread(ptr long ptr)
 @ cdecl _beginthreadex(ptr long ptr ptr long ptr)
 @ cdecl _c_exit()
 @ cdecl _cabs(long)
 @ cdecl _callnewh(long)
+@ stub -version=0x600+ _calloc_dbg
 @ cdecl _cexit()
 @ cdecl _cgets(str)
+@ stub -version=0x600+ _cgets_s
 @ cdecl -stub _cgetws(wstr)
+@ stub -version=0x600+ _cgetws_s
 @ cdecl _chdir(str)
 @ cdecl _chdrive(long)
 @ cdecl _chgsign(double)
@@ -343,29 +413,58 @@
 @ cdecl -arch=i386 -norelay _chkesp()
 @ cdecl _chmod(str long)
 @ cdecl _chsize(long long)
+@ cdecl -version=0x600+ _chsize_s(long int64)
+@ stub -version=0x600+ _chvalidator
+@ stub -version=0x600+ _chvalidator_l
 @ cdecl -arch=i386,x86_64 _clearfp()
 @ cdecl _close(long)
 @ cdecl _commit(long)
 @ extern _commode
 @ cdecl -arch=i386,x86_64 _control87(long long)
 @ cdecl _controlfp(long long)
+@ cdecl -version=0x600+ _controlfp_s(ptr long long)
 @ cdecl _copysign( double double )
 @ cdecl -arch=x86_64,arm _copysignf(long long)
 @ varargs _cprintf(str)
+@ stub -version=0x600+ _cprintf_l
+@ stub -version=0x600+ _cprintf_p
+@ stub -version=0x600+ _cprintf_p_l
+@ stub -version=0x600+ _cprintf_s
+@ stub -version=0x600+ _cprintf_s_l
 @ cdecl _cputs(str)
 @ cdecl -stub _cputws(wstr)
 @ cdecl _creat(str long)
+@ stub -version=0x600+ _crtAssertBusy
+@ stub -version=0x600+ _crtBreakAlloc
+@ stub -version=0x600+ _crtDbgFlag
 @ varargs _cscanf(str)
+@ stub -version=0x600+ _cscanf_l
+@ stub -version=0x600+ _cscanf_s
+@ stub -version=0x600+ _cscanf_s_l
+@ stub -version=0x600+ _ctime32
+@ stub -version=0x600+ _ctime32_s
 @ cdecl _ctime64(ptr)
+@ cdecl -version=0x600+ _ctime64_s(ptr long ptr)
 @ extern _ctype
 @ cdecl _cwait(ptr long long)
 @ varargs _cwprintf(wstr)
+@ stub -version=0x600+ _cwprintf_l
+@ stub -version=0x600+ _cwprintf_p
+@ stub -version=0x600+ _cwprintf_p_l
+@ stub -version=0x600+ _cwprintf_s
+@ stub -version=0x600+ _cwprintf_s_l
 @ varargs -stub _cwscanf(wstr)
+@ stub -version=0x600+ _cwscanf_l
+@ stub -version=0x600+ _cwscanf_s
+@ stub -version=0x600+ _cwscanf_s_l
 @ extern _daylight
+@ stub -version=0x600+ _difftime32
+@ stub -version=0x600+ _difftime64
 @ extern _dstbias
 @ cdecl _dup(long)
 @ cdecl _dup2(long long)
 @ cdecl _ecvt(double long ptr ptr)
+@ stub -version=0x600+ _ecvt_s
 @ cdecl _endthread()
 @ cdecl _endthreadex(long)
 @ extern _environ
@@ -384,8 +483,10 @@
 @ cdecl _execvpe(str ptr ptr)
 @ cdecl _exit(long)
 @ cdecl _expand(ptr long)
+@ stub -version=0x600+ _expand_dbg
 @ cdecl _fcloseall()
 @ cdecl _fcvt(double long ptr ptr)
+@ stub -version=0x600+ _fcvt_s
 @ cdecl _fdopen(long str)
 @ cdecl _fgetchar()
 @ cdecl _fgetwchar()
@@ -410,22 +511,61 @@
 @ cdecl -stub -arch=x86_64 _fpclassf(long)
 @ cdecl -arch=i386 _fpieee_flt(long ptr ptr)
 @ cdecl _fpreset()
+@ stub -version=0x600+ _fprintf_l
+@ stub -version=0x600+ _fprintf_p
+@ stub -version=0x600+ _fprintf_p_l
+@ stub -version=0x600+ _fprintf_s_l
 @ cdecl _fputchar(long)
 @ cdecl _fputwchar(long)
+@ stub -version=0x600+ _free_dbg
+@ stub -version=0x600+ _freea
+@ stub -version=0x600+ _freea_s
+@ stub -version=0x600+ _fscanf_l
+@ stub -version=0x600+ _fscanf_s_l
+@ cdecl -version=0x600+ _fseeki64(ptr int64 long)
 @ cdecl _fsopen(str str long)
 @ cdecl _fstat(long ptr)
 @ cdecl _fstat64(long ptr)
 @ cdecl _fstati64(long ptr)
 @ cdecl _ftime(ptr)
+@ stub -version=0x600+ _ftime32
+@ stub -version=0x600+ _ftime32_s
 @ cdecl _ftime64(ptr)
+@ cdecl -version=0x600+ _ftime64_s(ptr)
 @ cdecl -arch=i386 -ret64 _ftol()
+@ cdecl -version=0x600+ -arch=i386 _ftol2(long)
+@ cdecl -version=0x600+ -arch=i386 _ftol2_sse(long)
+@ stub -version=0x600+ -arch=i386 _ftol2_sse_excpt
 @ cdecl _fullpath(ptr str long)
+@ stub -version=0x600+ _fullpath_dbg
 @ cdecl _futime(long ptr)
+@ stub -version=0x600+ _futime32
 @ cdecl _futime64(long ptr)
+@ stub -version=0x600+ _fwprintf_l
+@ stub -version=0x600+ _fwprintf_p
+@ stub -version=0x600+ _fwprintf_p_l
+@ stub -version=0x600+ _fwprintf_s_l
+@ stub -version=0x600+ _fwscanf_l
+@ stub -version=0x600+ _fwscanf_s_l
 @ cdecl _gcvt(double long str)
+@ stub -version=0x600+ _gcvt_s
+@ cdecl -version=0x600+ _get_doserrno(ptr)
+@ stub -version=0x600+ _get_environ
+@ cdecl -version=0x600+ _get_errno(ptr)
+@ stub -version=0x600+ _get_fileinfo
+@ stub -version=0x600+ _get_fmode
 # @ cdecl _get_heap_handle()
 @ cdecl _get_osfhandle(long)
+@ cdecl -version=0x600+ _get_osplatform(ptr)
+@ stub -version=0x600+ _get_osver
+@ cdecl -version=0x600+ _get_output_format()
+@ cdecl -version=0x600+ _get_pgmptr(ptr)
 @ cdecl _get_sbh_threshold()
+@ stub -version=0x600+ _get_wenviron
+@ stub -version=0x600+ _get_winmajor
+@ stub -version=0x600+ _get_winminor
+@ stub -version=0x600+ _get_winver
+@ cdecl -version=0x600+ _get_wpgmptr(ptr)
 @ cdecl _getch()
 @ cdecl _getche()
 @ cdecl _getcwd(str long)
@@ -444,7 +584,10 @@
 @ cdecl -stub _getwche()
 @ cdecl _getws(ptr)
 @ cdecl -arch=i386 _global_unwind2(ptr)
+@ cdecl -version=0x600+ _gmtime32(ptr)
+@ cdecl -version=0x600+ _gmtime32_s(ptr ptr)
 @ cdecl _gmtime64(ptr)
+@ cdecl -version=0x600+ _gmtime64_s(ptr ptr)
 @ cdecl _heapadd(ptr long)
 @ cdecl _heapchk()
 @ cdecl _heapmin()
@@ -455,58 +598,121 @@
 @ cdecl _hypot(double double)
 @ cdecl -arch=x86_64,arm _hypotf(long long)
 @ cdecl _i64toa(long long ptr long)
+@ cdecl -version=0x600+ _i64toa_s(int64 ptr long long)
 @ cdecl _i64tow(long long ptr long)
+@ cdecl -version=0x600+ _i64tow_s(int64 ptr long long)
 @ cdecl _initterm(ptr ptr)
+@ cdecl -version=0x600+ _initterm_e(ptr ptr)
 @ cdecl -arch=i386 _inp(long) MSVCRT__inp
 @ cdecl -arch=i386 _inpd(long) MSVCRT__inpd
 @ cdecl -arch=i386 _inpw(long) MSVCRT__inpw
+@ cdecl -version=0x600+ _invalid_parameter(wstr wstr wstr long long)
 @ extern _iob
+@ cdecl -version=0x600+ _isalnum_l(long ptr)
+@ cdecl -version=0x600+ _isalpha_l(long ptr)
 @ cdecl _isatty(long)
+@ cdecl -version=0x600+ _iscntrl_l(long ptr)
 @ cdecl _isctype(long long)
+@ cdecl -version=0x600+ _isctype_l(long long ptr)
+@ cdecl -version=0x600+ _isdigit_l(long ptr)
+@ cdecl -version=0x600+ _isgraph_l(long ptr)
+@ cdecl -version=0x600+ _isleadbyte_l(long ptr)
+@ cdecl -version=0x600+ _islower_l(long ptr)
 @ cdecl _ismbbalnum(long)
+@ stub -version=0x600+ _ismbbalnum_l
 @ cdecl _ismbbalpha(long)
+@ stub -version=0x600+ _ismbbalpha_l
 @ cdecl _ismbbgraph(long)
+@ stub -version=0x600+ _ismbbgraph_l
 @ cdecl _ismbbkalnum(long)
+@ stub -version=0x600+ _ismbbkalnum_l
 @ cdecl _ismbbkana(long)
+@ stub -version=0x600+ _ismbbkana_l
 @ cdecl _ismbbkprint(long)
+@ stub -version=0x600+ _ismbbkprint_l
 @ cdecl _ismbbkpunct(long)
+@ stub -version=0x600+ _ismbbkpunct_l
 @ cdecl _ismbblead(long)
+@ stub -version=0x600+ _ismbblead_l
 @ cdecl _ismbbprint(long)
+@ stub -version=0x600+ _ismbbprint_l
 @ cdecl _ismbbpunct(long)
+@ stub -version=0x600+ _ismbbpunct_l
 @ cdecl _ismbbtrail(long)
+@ stub -version=0x600+ _ismbbtrail_l
 @ cdecl _ismbcalnum(long)
+@ stub -version=0x600+ _ismbcalnum_l
 @ cdecl _ismbcalpha(long)
+@ stub -version=0x600+ _ismbcalpha_l
 @ cdecl _ismbcdigit(long)
+@ stub -version=0x600+ _ismbcdigit_l
 @ cdecl _ismbcgraph(long)
+@ stub -version=0x600+ _ismbcgraph_l
 @ cdecl _ismbchira(long)
+@ stub -version=0x600+ _ismbchira_l
 @ cdecl _ismbckata(long)
+@ stub -version=0x600+ _ismbckata_l
 @ cdecl _ismbcl0(long)
+@ stub -version=0x600+ _ismbcl0_l
 @ cdecl _ismbcl1(long)
+@ stub -version=0x600+ _ismbcl1_l
 @ cdecl _ismbcl2(long)
+@ stub -version=0x600+ _ismbcl2_l
 @ cdecl _ismbclegal(long)
+@ stub -version=0x600+ _ismbclegal_l
 @ cdecl _ismbclower(long)
+@ stub -version=0x600+ _ismbclower_l
 @ cdecl _ismbcprint(long)
+@ stub -version=0x600+ _ismbcprint_l
 @ cdecl _ismbcpunct(long)
+@ stub -version=0x600+ _ismbcpunct_l
 @ cdecl _ismbcspace(long)
+@ stub -version=0x600+ _ismbcspace_l
 @ cdecl _ismbcsymbol(long)
+@ stub -version=0x600+ _ismbcsymbol_l
 @ cdecl _ismbcupper(long)
+@ stub -version=0x600+ _ismbcupper_l
 @ cdecl _ismbslead(ptr ptr)
+@ stub -version=0x600+ _ismbslead_l
 @ cdecl _ismbstrail(ptr ptr)
+@ stub -version=0x600+ _ismbstrail_l
 @ cdecl _isnan(double)
 @ stub -arch=x86_64 _isnanf
+@ cdecl -version=0x600+ _isprint_l(long ptr)
+@ cdecl -version=0x600+ _isspace_l(long ptr)
+@ cdecl -version=0x600+ _isupper_l(long ptr)
+@ cdecl -version=0x600+ _iswalnum_l(long ptr)
+@ cdecl -version=0x600+ _iswalpha_l(long ptr)
+@ cdecl -version=0x600+ _iswcntrl_l(long ptr)
+@ cdecl -version=0x600+ _iswctype_l(long ptr)
+@ cdecl -version=0x600+ _iswdigit_l(long ptr)
+@ cdecl -version=0x600+ _iswgraph_l(long ptr)
+@ cdecl -version=0x600+ _iswlower_l(long ptr)
+@ cdecl -version=0x600+ _iswprint_l(long ptr)
+@ cdecl -version=0x600+ _iswpunct_l(long ptr)
+@ cdecl -version=0x600+ _iswspace_l(long ptr)
+@ cdecl -version=0x600+ _iswupper_l(long ptr)
+@ cdecl -version=0x600+ _iswxdigit_l(long ptr)
+@ cdecl -version=0x600+ _isxdigit_l(long ptr)
 @ cdecl _itoa(long ptr long)
+@ cdecl -version=0x600+ _itoa_s(long str long long)
 @ cdecl _itow(long ptr long)
+@ cdecl -version=0x600+ _itow_s() # FIXME
 @ cdecl _j0(double)
 @ cdecl _j1(double)
 @ cdecl _jn(long double)
 @ cdecl _kbhit()
 @ cdecl _lfind(ptr ptr ptr long ptr)
+@ stub -version=0x600+ _lfind_s
 @ cdecl -arch=i386 _loaddll(str)
 @ cdecl -arch=x86_64 -version=0x502 _loaddll(str)
 @ cdecl -arch=x86_64 _local_unwind(ptr ptr)
 @ cdecl -arch=i386 _local_unwind2(ptr long)
 @ cdecl -arch=i386 -version=0x600+ _local_unwind4(ptr ptr long)
+@ stub -version=0x600+ _localtime32
+@ stub -version=0x600+ _localtime32_s
 @ cdecl _localtime64(ptr)
+@ cdecl -version=0x600+ _localtime64_s(ptr ptr)
 @ cdecl _lock(long)
 @ cdecl _locking(long long long)
 @ cdecl _logb(double)
@@ -514,74 +720,167 @@
 @ cdecl _lrotl(long long)
 @ cdecl _lrotr(long long)
 @ cdecl _lsearch(ptr ptr long long ptr)
+@ stub -version=0x600+ _lsearch_s
 @ cdecl _lseek(long long long)
 @ cdecl -ret64 _lseeki64(long double long)
 @ cdecl _ltoa(long ptr long)
+@ cdecl -version=0x600+ _ltoa_s(long str long long)
 @ cdecl _ltow(long ptr long)
+@ cdecl -version=0x600+ _ltow_s(long ptr long long)
 @ cdecl _makepath(ptr str str str str)
+@ stub -version=0x600+ _makepath_s
+@ stub -version=0x600+ _malloc_dbg
 @ cdecl _mbbtombc(long)
+@ stub -version=0x600+ _mbbtombc_l
 @ cdecl _mbbtype(long long)
 @ extern _mbcasemap
 @ cdecl _mbccpy (str str)
+@ stub -version=0x600+ _mbccpy_l
+@ stub -version=0x600+ _mbccpy_s
+@ stub -version=0x600+ _mbccpy_s_l
 @ cdecl _mbcjistojms(long)
+@ stub -version=0x600+ _mbcjistojms_l
 @ cdecl _mbcjmstojis(long)
+@ stub -version=0x600+ _mbcjmstojis_l
 @ cdecl _mbclen(ptr)
+@ stub -version=0x600+ _mbclen_l
 @ cdecl _mbctohira(long)
+@ stub -version=0x600+ _mbctohira_l
 @ cdecl _mbctokata(long)
+@ stub -version=0x600+ _mbctokata_l
 @ cdecl _mbctolower(long)
+@ stub -version=0x600+ _mbctolower_l
 @ cdecl _mbctombb(long)
+@ stub -version=0x600+ _mbctombb_l
 @ cdecl _mbctoupper(long)
+@ stub -version=0x600+ _mbctoupper_l
 @ extern _mbctype
+@ stub -version=0x600+ _mblen_l
 @ cdecl _mbsbtype(str long)
+@ stub -version=0x600+ _mbsbtype_l
 @ cdecl _mbscat(str str)
+@ stub -version=0x600+ _mbscat_s
+@ stub -version=0x600+ _mbscat_s_l
 @ cdecl _mbschr(str long)
+@ stub -version=0x600+ _mbschr_l
 @ cdecl _mbscmp(str str)
+@ stub -version=0x600+ _mbscmp_l
 @ cdecl _mbscoll(str str)
+@ stub -version=0x600+ _mbscoll_l
 @ cdecl _mbscpy(ptr str)
+@ stub -version=0x600+ _mbscpy_s
+@ stub -version=0x600+ _mbscpy_s_l
 @ cdecl _mbscspn(str str)
+@ stub -version=0x600+ _mbscspn_l
 @ cdecl _mbsdec(ptr ptr)
+@ stub -version=0x600+ _mbsdec_l
 @ cdecl _mbsdup(str)
 @ cdecl _mbsicmp(str str)
+@ stub -version=0x600+ _mbsicmp_l
 @ cdecl _mbsicoll(str str)
+@ stub -version=0x600+ _mbsicoll_l
 @ cdecl _mbsinc(str)
+@ stub -version=0x600+ _mbsinc_l
 @ cdecl _mbslen(str)
+@ stub -version=0x600+ _mbslen_l
 @ cdecl _mbslwr(str)
+@ stub -version=0x600+ _mbslwr_l
+@ stub -version=0x600+ _mbslwr_s
+@ stub -version=0x600+ _mbslwr_s_l
 @ cdecl _mbsnbcat(str str long)
+@ stub -version=0x600+ _mbsnbcat_l
+@ stub -version=0x600+ _mbsnbcat_s
+@ stub -version=0x600+ _mbsnbcat_s_l
 @ cdecl _mbsnbcmp(str str long)
+@ stub -version=0x600+ _mbsnbcmp_l
 @ cdecl _mbsnbcnt(ptr long)
+@ stub -version=0x600+ _mbsnbcnt_l
 @ cdecl _mbsnbcoll(str str long)
+@ stub -version=0x600+ _mbsnbcoll_l
 @ cdecl _mbsnbcpy(ptr str long)
+@ stub -version=0x600+ _mbsnbcpy_l
+@ cdecl -version=0x600+ _mbsnbcpy_s(ptr long str long)
+@ stub -version=0x600+ _mbsnbcpy_s_l
 @ cdecl _mbsnbicmp(str str long)
+@ stub -version=0x600+ _mbsnbicmp_l
 @ cdecl _mbsnbicoll(str str long)
+@ stub -version=0x600+ _mbsnbicoll_l
 @ cdecl _mbsnbset(str long long)
+@ stub -version=0x600+ _mbsnbset_l
+@ stub -version=0x600+ _mbsnbset_s
+@ stub -version=0x600+ _mbsnbset_s_l
 @ cdecl _mbsncat(str str long)
+@ stub -version=0x600+ _mbsncat_l
+@ stub -version=0x600+ _mbsncat_s
+@ stub -version=0x600+ _mbsncat_s_l
 @ cdecl _mbsnccnt(str long)
+@ stub -version=0x600+ _mbsnccnt_l
 @ cdecl _mbsncmp(str str long)
+@ stub -version=0x600+ _mbsncmp_l
 @ cdecl _mbsncoll(str str long)
+@ stub -version=0x600+ _mbsncoll_l
 @ cdecl _mbsncpy(str str long)
+@ stub -version=0x600+ _mbsncpy_l
+@ stub -version=0x600+ _mbsncpy_s
+@ stub -version=0x600+ _mbsncpy_s_l
 @ cdecl _mbsnextc(str)
+@ stub -version=0x600+ _mbsnextc_l
 @ cdecl _mbsnicmp(str str long)
+@ stub -version=0x600+ _mbsnicmp_l
 @ cdecl _mbsnicoll(str str long)
+@ stub -version=0x600+ _mbsnicoll_l
 @ cdecl _mbsninc(str long)
+@ stub -version=0x600+ _mbsninc_l
+@ stub -version=0x600+ _mbsnlen
+@ stub -version=0x600+ _mbsnlen_l
 @ cdecl _mbsnset(str long long)
+@ stub -version=0x600+ _mbsnset_l
+@ stub -version=0x600+ _mbsnset_s
+@ stub -version=0x600+ _mbsnset_s_l
 @ cdecl _mbspbrk(str str)
+@ stub -version=0x600+ _mbspbrk_l
 @ cdecl _mbsrchr(str long)
+@ stub -version=0x600+ _mbsrchr_l
 @ cdecl _mbsrev(str)
+@ stub -version=0x600+ _mbsrev_l
 @ cdecl _mbsset(str long)
+@ stub -version=0x600+ _mbsset_l
+@ stub -version=0x600+ _mbsset_s
+@ stub -version=0x600+ _mbsset_s_l
 @ cdecl _mbsspn(str str)
+@ stub -version=0x600+ _mbsspn_l
 @ cdecl _mbsspnp(str str)
+@ stub -version=0x600+ _mbsspnp_l
 @ cdecl _mbsstr(str str)
+@ stub -version=0x600+ _mbsstr_l
 @ cdecl _mbstok(str str)
+@ stub -version=0x600+ _mbstok_l
+@ stub -version=0x600+ _mbstok_s
+@ stub -version=0x600+ _mbstok_s_l
+@ cdecl -version=0x600+ _mbstowcs_l(ptr str long ptr)
+@ stub -version=0x600+ _mbstowcs_s_l
 @ cdecl _mbstrlen(str)
+@ stub -version=0x600+ _mbstrlen_l
+@ stub -version=0x600+ _mbstrnlen
+@ stub -version=0x600+ _mbstrnlen_l
 @ cdecl _mbsupr(str)
+@ stub -version=0x600+ _mbsupr_l
+@ stub -version=0x600+ _mbsupr_s
+@ stub -version=0x600+ _mbsupr_s_l
+@ cdecl -version=0x600+ _mbtowc_l(ptr wstr long long)
 @ cdecl _memccpy(ptr ptr long long)
 @ cdecl _memicmp(str str long)
+@ cdecl -version=0x600+ _memicmp_l(ptr ptr long ptr)
 @ cdecl _mkdir(str)
 @ cdecl _mkgmtime(ptr)
+@ cdecl -version=0x600+ _mkgmtime32(ptr)
 @ cdecl _mkgmtime64(ptr)
 @ cdecl _mktemp(str)
+@ stub -version=0x600+ _mktemp_s
+@ cdecl -version=0x600+ _mktime32(ptr)
 @ cdecl _mktime64(ptr)
 @ cdecl _msize(ptr)
+@ stub -version=0x600+ -arch=i386 _msize_debug
 @ cdecl _nextafter(double double)
 @ stub -arch=x86_64 _nextafterf
 @ cdecl _onexit(ptr)
@@ -597,14 +896,20 @@
 @ extern _pgmptr
 @ cdecl _pipe(ptr long long)
 @ cdecl _popen(str str)
+@ stub -version=0x600+ _printf_l
+@ stub -version=0x600+ _printf_p
+@ stub -version=0x600+ _printf_p_l
+@ stub -version=0x600+ _printf_s_l
 @ cdecl _purecall()
 @ cdecl _putch(long)
 @ cdecl _putenv(str)
+@ stub -version=0x600+ _putenv_s
 @ cdecl _putw(long ptr)
 @ cdecl _putwch(long)
 @ cdecl _putws(wstr)
 @ extern _pwctype
 @ cdecl _read(long ptr long)
+@ stub -version=0x600+ _realloc_dbg
 @ cdecl _resetstkoflw()
 @ cdecl _rmdir(str)
 @ cdecl _rmtmp()
@@ -618,12 +923,26 @@
 @ cdecl -arch=i386 _safe_fprem1()
 @ cdecl _scalb(double long)
 @ stub -arch=x86_64 _scalbf
+@ stub -version=0x600+ _scanf_l
+@ stub -version=0x600+ _scanf_s_l
 @ varargs _scprintf(str)
+@ stub -version=0x600+ _scprintf_l
+@ stub -version=0x600+ _scprintf_p_l
 @ varargs _scwprintf(wstr)
+@ stub -version=0x600+ _scwprintf_l
+@ stub -version=0x600+ _scwprintf_p_l
 @ cdecl _searchenv(str str ptr)
+@ cdecl -version=0x600+ _searchenv_s(str str ptr long)
+@ stub -version=0x600+ -arch=i386 _seh_longjmp_unwind4
 @ stdcall -arch=i386 _seh_longjmp_unwind(ptr)
 @ stub -arch=i386 _set_SSE2_enable
+@ stub -version=0x600+ _set_controlfp
+@ cdecl -version=0x600+ _set_doserrno(long)
+@ cdecl -version=0x600+ _set_errno(long)
 @ cdecl _set_error_mode(long)
+@ stub -version=0x600+ _set_fileinfo
+@ stub -version=0x600+ _set_fmode
+@ stub -version=0x600+ _set_output_format
 @ cdecl _set_sbh_threshold(long)
 @ cdecl _seterrormode(long)
 @ cdecl -norelay _setjmp(ptr)
@@ -635,10 +954,25 @@
 @ cdecl _setsystime(ptr long)
 @ cdecl _sleep(long)
 @ varargs _snprintf(ptr long str)
+@ stub -version=0x600+ _snprintf_c
+@ stub -version=0x600+ _snprintf_c_l
+@ stub -version=0x600+ _snprintf_l
+@ stub -version=0x600+ _snprintf_s
+@ stub -version=0x600+ _snprintf_s_l
 @ varargs _snscanf(str long str)
+@ stub -version=0x600+ _snscanf_l
+@ stub -version=0x600+ _snscanf_s
+@ stub -version=0x600+ _snscanf_s_l
 @ varargs _snwprintf(ptr long wstr)
+@ stub -version=0x600+ _snwprintf_l
+@ stub -version=0x600+ _snwprintf_s
+@ stub -version=0x600+ _snwprintf_s_l
 @ varargs _snwscanf(wstr long wstr)
+@ stub -version=0x600+ _snwscanf_l
+@ stub -version=0x600+ _snwscanf_s
+@ stub -version=0x600+ _snwscanf_s_l
 @ varargs _sopen(str long long)
+@ cdecl -version=0x600+ _sopen_s(ptr str long long long)
 @ varargs _spawnl(long str str)
 @ varargs _spawnle(long str str)
 @ varargs _spawnlp(long str str)
@@ -648,44 +982,92 @@
 @ cdecl _spawnvp(long str ptr)
 @ cdecl _spawnvpe(long str ptr ptr)
 @ cdecl _splitpath(str ptr ptr ptr ptr)
+@ stub -version=0x600+ _splitpath_s
+@ stub -version=0x600+ _sprintf_l
+@ stub -version=0x600+ _sprintf_p_l
+@ stub -version=0x600+ _sprintf_s_l
+@ stub -version=0x600+ _sscanf_l
+@ stub -version=0x600+ _sscanf_s_l
 @ cdecl _stat(str ptr)
 @ cdecl _stat64(str ptr)
 @ cdecl _stati64(str ptr)
 @ cdecl _statusfp()
 @ cdecl _strcmpi(str str)
+@ cdecl -version=0x600+ _strcoll_l(str str ptr)
 @ cdecl _strdate(ptr)
+@ cdecl -version=0x600+ _strdate_s(ptr long)
 @ cdecl _strdup(str)
+@ stub -version=0x600+ _strdup_dbg
 @ cdecl _strerror(long)
+@ cdecl -version=0x600+ _strerror_s(ptr long str)
 @ cdecl _stricmp(str str)
+@ cdecl -version=0x600+ _stricmp_l(str str ptr)
 @ cdecl _stricoll(str str)
+@ cdecl -version=0x600+ _stricoll_l(str str ptr)
 @ cdecl _strlwr(str)
+@ stub -version=0x600+ _strlwr_l
+@ cdecl -version=0x600+ _strlwr_s(str long)
+@ cdecl -version=0x600+ _strlwr_s_l(str long ptr)
 @ cdecl _strncoll(str str long)
+@ cdecl -version=0x600+ _strncoll_l(str str long ptr)
 @ cdecl _strnicmp(str str long)
+@ cdecl -version=0x600+ _strnicmp_l(str str long ptr)
 @ cdecl _strnicoll(str str long)
+@ cdecl -version=0x600+ _strnicoll_l(str str long ptr)
 @ cdecl _strnset(str long long)
+@ cdecl -version=0x600+ _strnset_s(str long long long)
 @ cdecl _strrev(str)
 @ cdecl _strset(str long)
+@ cdecl -version=0x600+ _strset_s(str long long)
 @ cdecl _strtime(ptr)
+@ cdecl -version=0x600+ _strtime_s(ptr long)
+@ stub -version=0x600+ _strtod_l
 @ cdecl _strtoi64(str ptr long)
+@ cdecl -version=0x600+ _strtoi64_l(str ptr long ptr)
+@ stub -version=0x600+ _strtol_l
 @ cdecl _strtoui64(str ptr long) strtoull
+@ stub -version=0x600+ _strtoui64_l
+@ cdecl -version=0x600+ _strtoul_l(str ptr long ptr)
 @ cdecl _strupr(str)
+@ cdecl -version=0x600+ _strupr_l(str ptr)
+@ cdecl -version=0x600+ _strupr_s(str long)
+@ cdecl -version=0x600+ _strupr_s_l(str long ptr)
+@ cdecl -version=0x600+ _strxfrm_l(ptr str long ptr)
 @ cdecl _swab(str str long)
+@ stub -version=0x600+ _swprintf
+@ stub -version=0x600+ _swprintf_c
+@ stub -version=0x600+ _swprintf_c_l
+@ stub -version=0x600+ _swprintf_p_l
+@ stub -version=0x600+ _swprintf_s_l
+@ stub -version=0x600+ _swscanf_l
+@ stub -version=0x600+ _swscanf_s_l
 @ extern _sys_errlist
 @ extern _sys_nerr
 @ cdecl _tell(long)
 @ cdecl -ret64 _telli64(long)
 @ cdecl _tempnam(str str)
+@ stub -version=0x600+ _tempnam_dbg
+@ stub -version=0x600+ _time32
 @ cdecl _time64(ptr)
 @ extern _timezone
 @ cdecl _tolower(long)
+@ cdecl -version=0x600+ _tolower_l(long ptr)
 @ cdecl _toupper(long)
+@ cdecl -version=0x600+ _toupper_l(long ptr)
+@ cdecl -version=0x600+ _towlower_l(long ptr)
+@ cdecl -version=0x600+ _towupper_l(long ptr)
 @ extern _tzname
 @ cdecl _tzset()
 @ cdecl _ui64toa(long long ptr long)
+@ cdecl -version=0x600+ _ui64toa_s(int64 ptr long long)
 @ cdecl _ui64tow(long long ptr long)
+@ cdecl -version=0x600+ _ui64tow_s(int64 ptr long long)
 @ cdecl _ultoa(long ptr long)
+@ stub -version=0x600+ _ultoa_s
 @ cdecl _ultow(long ptr long)
+@ stub -version=0x600+ _ultow_s
 @ cdecl _umask(long)
+@ stub -version=0x600+ _umask_s
 @ cdecl _ungetch(long)
 # stub _ungetwch
 @ cdecl _unlink(str)
@@ -693,33 +1075,116 @@
 @ cdecl -arch=x86_64 -version=0x502 _unloaddll(ptr)
 @ cdecl _unlock(long)
 @ cdecl _utime(str ptr)
+@ stub -version=0x600+ _utime32
 @ cdecl _utime64(str ptr)
+@ stub -version=0x600+ _vcprintf
+@ stub -version=0x600+ _vcprintf_l
+@ stub -version=0x600+ _vcprintf_p
+@ stub -version=0x600+ _vcprintf_p_l
+@ stub -version=0x600+ _vcprintf_s
+@ stub -version=0x600+ _vcprintf_s_l
+@ stub -version=0x600+ _vcwprintf
+@ stub -version=0x600+ _vcwprintf_l
+@ stub -version=0x600+ _vcwprintf_p
+@ stub -version=0x600+ _vcwprintf_p_l
+@ stub -version=0x600+ _vcwprintf_s
+@ stub -version=0x600+ _vcwprintf_s_l
+@ stub -version=0x600+ _vfprintf_l
+@ stub -version=0x600+ _vfprintf_p
+@ stub -version=0x600+ _vfprintf_p_l
+@ stub -version=0x600+ _vfprintf_s_l
+@ stub -version=0x600+ _vfwprintf_l
+@ stub -version=0x600+ _vfwprintf_p
+@ stub -version=0x600+ _vfwprintf_p_l
+@ stub -version=0x600+ _vfwprintf_s_l
+@ stub -version=0x600+ _vprintf_l
+@ stub -version=0x600+ _vprintf_p
+@ stub -version=0x600+ _vprintf_p_l
+@ stub -version=0x600+ _vprintf_s_l
 @ cdecl _vscprintf(str ptr)
+@ stub -version=0x600+ _vscprintf_l
+@ stub -version=0x600+ _vscprintf_p_l
 @ cdecl _vscwprintf(wstr ptr)
+@ stub -version=0x600+ _vscwprintf_l
+@ stub -version=0x600+ _vscwprintf_p_l
 @ cdecl _vsnprintf(ptr long str ptr)
+@ stub -version=0x600+ _vsnprintf_c
+@ stub -version=0x600+ _vsnprintf_c_l
+@ stub -version=0x600+ _vsnprintf_l
+@ stub -version=0x600+ _vsnprintf_s
+@ stub -version=0x600+ _vsnprintf_s_l
 @ cdecl _vsnwprintf(ptr long wstr ptr)
+@ stub -version=0x600+ _vsnwprintf_l
+@ stub -version=0x600+ _vsnwprintf_s
+@ stub -version=0x600+ _vsnwprintf_s_l
+@ stub -version=0x600+ _vsprintf_l
+@ stub -version=0x600+ _vsprintf_p
+@ stub -version=0x600+ _vsprintf_p_l
+@ stub -version=0x600+ _vsprintf_s_l
+@ stub -version=0x600+ _vswprintf
+@ stub -version=0x600+ _vswprintf_c
+@ stub -version=0x600+ _vswprintf_c_l
+@ stub -version=0x600+ _vswprintf_l
+@ stub -version=0x600+ _vswprintf_p_l
+@ stub -version=0x600+ _vswprintf_s_l
+@ stub -version=0x600+ _vwprintf_l
+@ stub -version=0x600+ _vwprintf_p
+@ stub -version=0x600+ _vwprintf_p_l
+@ stub -version=0x600+ _vwprintf_s_l
 @ cdecl _waccess(wstr long)
+@ cdecl -version=0x600+ _waccess_s(wstr long)
 @ cdecl _wasctime(ptr)
+@ cdecl -version=0x600+ _wasctime_s(ptr long ptr)
+@ stub -version=0x600+ _wassert
 @ cdecl _wchdir(wstr)
 @ cdecl _wchmod(wstr long)
 @ extern _wcmdln
 @ cdecl _wcreat(wstr long)
+@ cdecl -version=0x600+ _wcscoll_l(str str ptr)
 @ cdecl _wcsdup(wstr)
+@ stub -version=0x600+ _wcsdup_dbg
 @ cdecl _wcserror(long)
+@ cdecl -version=0x600+ _wcserror_s(ptr long long)
+@ stub -version=0x600+ _wcsftime_l
 @ cdecl _wcsicmp(wstr wstr)
+@ cdecl -version=0x600+ _wcsicmp_l(wstr wstr ptr)
 @ cdecl _wcsicoll(wstr wstr)
+@ cdecl -version=0x600+ _wcsicoll_l(wstr wstr ptr)
 @ cdecl _wcslwr(wstr)
+@ cdecl -version=0x600+ _wcslwr_l(wstr ptr)
+@ cdecl -version=0x600+ _wcslwr_s(wstr long)
+@ cdecl -version=0x600+ _wcslwr_s_l(wstr long ptr)
 @ cdecl _wcsncoll(wstr wstr long)
+@ cdecl -version=0x600+ _wcsncoll_l(wstr wstr long ptr)
 @ cdecl _wcsnicmp(wstr wstr long)
+@ cdecl -version=0x600+ _wcsnicmp_l(wstr wstr long ptr)
 @ cdecl _wcsnicoll(wstr wstr long)
+@ cdecl -version=0x600+ _wcsnicoll_l(wstr str long ptr)
 @ cdecl _wcsnset(wstr long long)
+@ cdecl -version=0x600+ _wcsnset_s(wstr long long long)
 @ cdecl _wcsrev(wstr)
 @ cdecl _wcsset(wstr long)
+@ cdecl -version=0x600+ _wcsset_s(ptr long long)
 @ cdecl _wcstoi64(wstr ptr long)
+@ cdecl -version=0x600+ _wcstoi64_l(wstr ptr long ptr)
+@ stub -version=0x600+ _wcstol_l
+@ cdecl -version=0x600+ _wcstombs_l(ptr wstr long ptr)
+@ stub -version=0x600+ _wcstombs_s_l
 @ cdecl _wcstoui64(wstr ptr long)
+@ cdecl -version=0x600+ _wcstoui64_l(wstr ptr long ptr)
+@ stub -version=0x600+ _wcstoul_l
 @ cdecl _wcsupr(wstr)
+@ cdecl -version=0x600+ _wcsupr_l(wstr ptr)
+@ cdecl -version=0x600+ _wcsupr_s(wstr long)
+@ cdecl -version=0x600+ _wcsupr_s_l(ptr long ptr)
+@ cdecl -version=0x600+ _wcsxfrm_l(ptr wstr long ptr)
 @ cdecl _wctime(ptr)
+@ stub -version=0x600+ _wctime32
+@ stub -version=0x600+ _wctime32_s
 @ cdecl _wctime64(ptr)
+@ cdecl -version=0x600+ _wctime64_s(ptr long ptr)
+@ stub -version=0x600+ _wctomb_l
+@ stub -version=0x600+ _wctomb_s_l
 # stub _wctype
 @ extern _wenviron
 @ varargs _wexecl(wstr wstr)
@@ -738,30 +1203,47 @@
 # stub _wfindnext64
 @ cdecl _wfindnexti64(long ptr)
 @ cdecl _wfopen(wstr wstr)
+@ cdecl -version=0x600+ _wfopen_s(ptr wstr wstr)
 @ cdecl _wfreopen(wstr wstr ptr)
+@ stub -version=0x600+ _wfreopen_s
 @ cdecl _wfsopen(wstr wstr long)
 @ cdecl _wfullpath(ptr wstr long)
+@ stub -version=0x600+ _wfullpath_dbg
 @ cdecl _wgetcwd(wstr long)
 @ cdecl _wgetdcwd(long wstr long)
 @ cdecl _wgetenv(wstr)
+@ stub -version=0x600+ _wgetenv_s
 @ extern _winmajor
 @ extern _winminor
+@ stub -version=0x600+ _winput_s
 @ extern _winver
 @ cdecl _wmakepath(ptr wstr wstr wstr wstr)
+@ stub -version=0x600+ _wmakepath_s
 @ cdecl _wmkdir(wstr)
 @ cdecl _wmktemp(wstr)
+@ stub -version=0x600+ _wmktemp_s
 @ varargs _wopen(wstr long)
+@ stub -version=0x600+ _woutput_s
 @ cdecl _wperror(wstr)
 @ extern _wpgmptr
 @ cdecl _wpopen(wstr wstr)
+@ stub -version=0x600+ _wprintf_l
+@ stub -version=0x600+ _wprintf_p
+@ stub -version=0x600+ _wprintf_p_l
+@ stub -version=0x600+ _wprintf_s_l
 @ cdecl _wputenv(wstr)
+@ stub -version=0x600+ _wputenv_s
 @ cdecl _wremove(wstr)
 @ cdecl _wrename(wstr wstr)
 @ cdecl _write(long ptr long)
 @ cdecl _wrmdir(wstr)
+@ stub -version=0x600+ _wscanf_l
+@ stub -version=0x600+ _wscanf_s_l
 @ cdecl _wsearchenv(wstr wstr ptr)
+@ cdecl -version=0x600+ _wsearchenv_s(wstr wstr ptr long)
 @ cdecl _wsetlocale(long wstr)
 @ varargs _wsopen(wstr long long)
+@ cdecl -version=0x600+ _wsopen_s(ptr wstr long long long)
 @ varargs _wspawnl(long wstr wstr)
 @ varargs _wspawnle(long wstr wstr)
 @ varargs _wspawnlp(long wstr wstr)
@@ -771,20 +1253,30 @@
 @ cdecl _wspawnvp(long wstr ptr)
 @ cdecl _wspawnvpe(long wstr ptr ptr)
 @ cdecl _wsplitpath(wstr ptr ptr ptr ptr)
+@ stub -version=0x600+ _wsplitpath_s
 @ cdecl _wstat(wstr ptr)
 @ cdecl _wstat64(wstr ptr)
 @ cdecl _wstati64(wstr ptr)
 @ cdecl _wstrdate(ptr)
+@ cdecl -version=0x600+ _wstrdate_s(ptr long)
 @ cdecl _wstrtime(ptr)
+@ stub -version=0x600+ _wstrtime_s
 @ cdecl _wsystem(wstr)
 @ cdecl _wtempnam(wstr wstr)
+@ stub -version=0x600+ _wtempnam_dbg
 @ cdecl _wtmpnam(ptr)
+@ stub -version=0x600+ _wtmpnam_s
 @ cdecl _wtof(wstr)
+@ stub -version=0x600+ _wtof_l
 @ cdecl _wtoi(wstr)
 @ cdecl _wtoi64(wstr)
+@ cdecl -version=0x600+ _wtoi64_l(wstr ptr)
+@ stub -version=0x600+ _wtoi_l
 @ cdecl _wtol(wstr)
+@ stub -version=0x600+ _wtol_l
 @ cdecl _wunlink(wstr)
 @ cdecl _wutime(wstr ptr)
+@ stub -version=0x600+ _wutime32
 @ cdecl _wutime64(wstr ptr)
 @ cdecl _y0(double)
 @ cdecl _y1(double)
@@ -794,6 +1286,7 @@
 @ cdecl acos(double)
 @ cdecl -arch=x86_64,arm acosf(long)
 @ cdecl asctime(ptr)
+@ cdecl -version=0x600+ asctime_s(ptr long ptr)
 @ cdecl asin(double)
 @ cdecl -arch=x86_64,arm asinf(long)
 @ cdecl atan(double)
@@ -805,10 +1298,13 @@
 @ cdecl atoi(str)
 @ cdecl atol(str)
 @ cdecl bsearch(ptr ptr long long ptr)
+@ stub -version=0x600+ bsearch_s
+@ stub -version=0x600+ btowc
 @ cdecl calloc(long long)
 @ cdecl ceil(double)
 @ cdecl -arch=x86_64,arm ceilf(long)
 @ cdecl clearerr(ptr)
+@ stub -version=0x600+ clearerr_s
 @ cdecl clock()
 @ cdecl cos(double)
 @ cdecl -arch=x86_64,arm cosf(long)
@@ -836,7 +1332,9 @@
 @ cdecl fmod(double double)
 @ cdecl -arch=x86_64,arm fmodf(long)
 @ cdecl fopen(str str)
+@ cdecl -version=0x600+ fopen_s(ptr str str)
 @ varargs fprintf(ptr str)
+@ stub -version=0x600+ fprintf_s
 @ cdecl fputc(long ptr)
 @ cdecl fputs(str ptr)
 @ cdecl fputwc(long ptr)
@@ -844,17 +1342,22 @@
 @ cdecl fread(ptr long long ptr)
 @ cdecl free(ptr)
 @ cdecl freopen(str str ptr)
+@ stub -version=0x600+ freopen_s
 @ cdecl frexp(double ptr)
 @ varargs fscanf(ptr str)
+@ stub -version=0x600+ fscanf_s
 @ cdecl fseek(ptr long long)
 @ cdecl fsetpos(ptr ptr)
 @ cdecl ftell(ptr)
 @ varargs fwprintf(ptr wstr)
+@ stub -version=0x600+ fwprintf_s
 @ cdecl fwrite(ptr long long ptr)
 @ varargs fwscanf(ptr wstr)
+@ stub -version=0x600+ fwscanf_s
 @ cdecl getc(ptr)
 @ cdecl getchar()
 @ cdecl getenv(str)
+@ stub -version=0x600+ getenv_s
 @ cdecl gets(str)
 @ cdecl getwc(ptr)
 @ cdecl getwchar()
@@ -897,12 +1400,20 @@
 @ cdecl longjmp(ptr long)
 @ cdecl malloc(long)
 @ cdecl mblen(ptr long)
+@ cdecl -version=0x600+ mbrlen(str long ptr)
+@ stub -version=0x600+ mbrtowc
+@ stub -version=0x600+ mbsdup_dbg
+@ stub -version=0x600+ mbsrtowcs
+@ stub -version=0x600+ mbsrtowcs_s
 @ cdecl mbstowcs(ptr str long)
+@ stub -version=0x600+ mbstowcs_s
 @ cdecl mbtowc(wstr str long)
 @ cdecl memchr(ptr long long)
 @ cdecl memcmp(ptr ptr long)
 @ cdecl memcpy(ptr ptr long)
+@ stub -version=0x600+ memcpy_s
 @ cdecl memmove(ptr ptr long)
+@ cdecl -version=0x600+ memmove_s(ptr long ptr long)
 @ cdecl memset(ptr long long)
 @ cdecl mktime(ptr)
 @ cdecl modf(double ptr)
@@ -911,19 +1422,23 @@
 @ cdecl pow(double double)
 @ cdecl -arch=x86_64,arm powf(long)
 @ varargs printf(str)
+@ stub -version=0x600+ printf_s
 @ cdecl putc(long ptr)
 @ cdecl putchar(long)
 @ cdecl puts(str)
 @ cdecl putwc(long ptr) fputwc
 @ cdecl putwchar(long) _fputwchar
 @ cdecl qsort(ptr long long ptr)
+@ stub -version=0x600+ qsort_s
 @ cdecl raise(long)
 @ cdecl rand()
+@ cdecl -version=0x600+ rand_s(ptr)
 @ cdecl realloc(ptr long)
 @ cdecl remove(str)
 @ cdecl rename(str str)
 @ cdecl rewind(ptr)
 @ varargs scanf(str)
+@ stub -version=0x600+ scanf_s
 @ cdecl setbuf(ptr ptr)
 @ cdecl -arch=x86_64,arm -norelay setjmp(ptr ptr) _setjmp
 @ cdecl setlocale(long str)
@@ -934,33 +1449,44 @@
 @ cdecl sinh(double)
 @ cdecl -arch=x86_64,arm sinhf(long)
 @ varargs sprintf(ptr str)
+@ stub -version=0x600+ sprintf_s
 @ cdecl sqrt(double)
 @ cdecl -arch=x86_64,arm sqrtf(long)
 @ cdecl srand(long)
 @ varargs sscanf(str str)
+@ stub -version=0x600+ sscanf_s
 @ cdecl strcat(str str)
+@ cdecl -version=0x600+ strcat_s(ptr long str)
 @ cdecl strchr(str long)
 @ cdecl strcmp(str str)
 @ cdecl strcoll(str str)
 @ cdecl strcpy(ptr str)
+@ cdecl -version=0x600+ strcpy_s(ptr long str)
 @ cdecl strcspn(str str)
 @ cdecl strerror(long)
+@ cdecl -version=0x600+ strerror_s(ptr long long)
 @ cdecl strftime(str long str ptr)
 @ cdecl strlen(str)
 @ cdecl strncat(str str long)
+@ cdecl -version=0x600+ strncat_s(str long str long)
 @ cdecl strncmp(str str long)
 @ cdecl strncpy(ptr str long)
+@ cdecl -version=0x600+ strncpy_s(ptr long str long)
+@ cdecl -version=0x600+ strnlen(str long)
 @ cdecl strpbrk(str str)
 @ cdecl strrchr(str long)
 @ cdecl strspn(str str)
 @ cdecl strstr(str str)
 @ cdecl strtod(str ptr)
 @ cdecl strtok(str str)
+@ cdecl -version=0x600+ strtok_s(str str ptr)
 @ cdecl strtol(str ptr long)
 @ cdecl strtoul(str ptr long)
 @ cdecl strxfrm(ptr str long)
 @ varargs swprintf(ptr wstr)
+@ stub -version=0x600+ swprintf_s
 @ varargs swscanf(wstr wstr)
+@ stub -version=0x600+ swscanf_s
 @ cdecl system(str)
 @ cdecl tan(double)
 @ cdecl -arch=x86_64,arm tanf(long)
@@ -968,40 +1494,65 @@
 @ cdecl -arch=x86_64,arm tanhf(long)
 @ cdecl time(ptr)
 @ cdecl tmpfile()
+@ stub -version=0x600+ tmpfile_s
 @ cdecl tmpnam(ptr)
+@ stub -version=0x600+ tmpnam_s
 @ cdecl tolower(long)
 @ cdecl toupper(long)
 @ cdecl towlower(long)
 @ cdecl towupper(long)
 @ cdecl ungetc(long ptr)
 @ cdecl ungetwc(long ptr)
+@ stub -version=0x600+ utime
 @ cdecl vfprintf(ptr str ptr)
+@ stub -version=0x600+ vfprintf_s
 @ cdecl vfwprintf(ptr wstr ptr)
+@ stub -version=0x600+ vfwprintf_s
 @ cdecl vprintf(str ptr)
+@ stub -version=0x600+ vprintf_s
+@ cdecl -version=0x600+ vsnprintf(ptr long str ptr)
 @ cdecl vsprintf(ptr str ptr)
+@ stub -version=0x600+ vsprintf_s
 @ cdecl vswprintf(ptr wstr ptr)
+@ stub -version=0x600+ vswprintf_s
 @ cdecl vwprintf(wstr ptr)
+@ stub -version=0x600+ vwprintf_s
+@ stub -version=0x600+ wcrtomb
+@ stub -version=0x600+ wcrtomb_s
 @ cdecl wcscat(wstr wstr)
+@ cdecl -version=0x600+ wcscat_s(wstr long wstr)
 @ cdecl wcschr(wstr long)
 @ cdecl wcscmp(wstr wstr)
 @ cdecl wcscoll(wstr wstr)
 @ cdecl wcscpy(ptr wstr)
+@ cdecl -version=0x600+ wcscpy_s(wstr long wstr)
 @ cdecl wcscspn(wstr wstr)
 @ cdecl wcsftime(ptr long wstr ptr)
 @ cdecl wcslen(wstr)
 @ cdecl wcsncat(wstr wstr long)
+@ cdecl -version=0x600+ wcsncat_s(wstr long wstr long)
 @ cdecl wcsncmp(wstr wstr long)
 @ cdecl wcsncpy(ptr wstr long)
+@ cdecl -version=0x600+ wcsncpy_s(ptr long wstr long)
+@ cdecl -version=0x600+ wcsnlen(wstr long)
 @ cdecl wcspbrk(wstr wstr)
 @ cdecl wcsrchr(wstr long)
+@ stub -version=0x600+ wcsrtombs
+@ stub -version=0x600+ wcsrtombs_s
 @ cdecl wcsspn(wstr wstr)
 @ cdecl wcsstr(wstr wstr)
 @ cdecl wcstod(wstr ptr)
 @ cdecl wcstok(wstr wstr)
+@ cdecl -version=0x600+ wcstok_s(wstr wstr ptr)
 @ cdecl wcstol(wstr ptr long)
 @ cdecl wcstombs(ptr ptr long)
+@ stub -version=0x600+ wcstombs_s
 @ cdecl wcstoul(wstr ptr long)
 @ cdecl wcsxfrm(ptr wstr long)
+@ stub -version=0x600+ wctob
 @ cdecl wctomb(ptr long)
+@ stub -version=0x600+ wctomb_s
 @ varargs wprintf(wstr)
+@ stub -version=0x600+ wprintf_s
 @ varargs wscanf(wstr)
+@ stub -version=0x600+ wscanf_s
diff --git a/dll/win32/msvcrt/stubs.c b/dll/win32/msvcrt/stubs.c
index 82e7e41b165..e120a130cc8 100644
--- a/dll/win32/msvcrt/stubs.c
+++ b/dll/win32/msvcrt/stubs.c
@@ -88,3 +88,834 @@ unsigned long MSVCRT__outpd(
     return _outpd(port, dataword);
 }
 #endif
+
+typedef struct __crt_locale_data_public
+{
+      unsigned short const* _locale_pctype;
+    _Field_range_(1, 2) int _locale_mb_cur_max;
+               unsigned int _locale_lc_codepage;
+} __crt_locale_data_public;
+
+__inline
+__crt_locale_data_public*
+__CRTDECL
+__acrt_get_locale_data_prefix(
+    void const volatile* const _LocalePointers)
+{
+    _locale_t const _TypedLocalePointers = (_locale_t)_LocalePointers;
+    return (__crt_locale_data_public*)_TypedLocalePointers->locinfo;
+}
+
+__inline
+int
+__CRTDECL
+__acrt_locale_get_ctype_array_value(
+    _In_reads_(_Char_value + 1) unsigned short const * const 
locale_pctype_array,
+    _In_range_(-1, 255) int const c,
+    _In_ int const mask
+    )
+{
+    if (c >= -1 && c <= 255)
+    {
+        return locale_pctype_array[c] & mask;
+    }
+    return 0;
+}
+
+const unsigned short* __cdecl __pctype_func(void);
+
+#if defined _CRT_DISABLE_PERFCRIT_LOCKS && !defined _DLL
+    #define __PCTYPE_FUNC  _pctype
+#else
+    #define __PCTYPE_FUNC __pctype_func()
+#endif
+
+#ifdef _DEBUG
+    _ACRTIMP int __cdecl _chvalidator(_In_ int c, _In_ int mask);
+    #define __chvalidchk(a, b) _chvalidator(a, b)
+#else
+    #define __chvalidchk(a, b) 
(__acrt_locale_get_ctype_array_value(__PCTYPE_FUNC, (a), (b)))
+#endif
+
+__inline
+int
+__CRTDECL
+_chvalidchk_l(
+    _In_ int const c,
+    _In_ int const mask,
+    _In_opt_ _locale_t const locale
+    )
+{
+#ifdef _DEBUG
+    return _chvalidator_l(locale, c, mask);
+#else
+    if (locale)
+    {
+        return 
__acrt_locale_get_ctype_array_value(__acrt_get_locale_data_prefix(locale)->_locale_pctype,
 c, mask);
+    }
+
+    return __chvalidchk(c, mask);
+#endif
+}
+
+__inline
+int
+__CRTDECL
+_ischartype_l(
+    _In_ int const c,
+    _In_ int const mask,
+    _In_opt_ _locale_t const locale)
+{
+    if (locale)
+    {
+        if (c >= -1 && c <= 255)
+        {
+            return __acrt_get_locale_data_prefix(locale)->_locale_pctype[c] & 
mask;
+        }
+
+        if (__acrt_get_locale_data_prefix(locale)->_locale_mb_cur_max > 1)
+        {
+            return _isctype_l(c, mask, locale);
+        }
+
+        return 0; // >0xFF and SBCS locale
+    }
+
+    return _chvalidchk_l(c, mask, 0);
+}
+
+//#undef _isalnum_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_isalnum_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return  _ischartype_l(c, _ALPHA | _DIGIT, locale);
+}
+
+#undef _isalpha_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_isalpha_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return _ischartype_l(c, _ALPHA, locale);
+}
+
+#undef _iscntrl_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iscntrl_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return _ischartype_l(c, _CONTROL, locale);
+}
+
+#undef _isdigit_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_isdigit_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return _ischartype_l(c, _DIGIT, locale);
+}
+
+#undef _isgraph_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_isgraph_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return _ischartype_l(c, _PUNCT | _ALPHA | _DIGIT, locale);
+}
+
+#undef _islower_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_islower_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return _ischartype_l(c, _LOWER, locale);
+}
+
+#undef _isprint_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_isprint_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return _ischartype_l(c, _BLANK | _PUNCT | _ALPHA | _DIGIT, locale);
+}
+
+#undef _isspace_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_isspace_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return _ischartype_l(c, _SPACE, locale);
+}
+
+#undef _isupper_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_isupper_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return _ischartype_l(c, _UPPER, locale);
+}
+
+#undef _iswalnum_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswalnum_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c, _ALPHA|_DIGIT, locale);
+}
+
+#undef _iswalpha_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswalpha_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c, _ALPHA, locale);
+}
+
+#undef _iswcntrl_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswcntrl_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return _iswctype_l(c, _CONTROL, locale);
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswctype_l(
+    _In_ wint_t c,
+    _In_ wctype_t type,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+#undef _iswdigit_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswdigit_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c, _DIGIT, locale);
+}
+
+#undef _iswgraph_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswgraph_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c, _PUNCT | _ALPHA | _DIGIT, locale);
+}
+
+#undef _iswlower_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswlower_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c , _LOWER, locale);
+}
+
+#undef _iswprint_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswprint_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c, _BLANK | _PUNCT | _ALPHA | _DIGIT, locale);
+}
+
+#undef _iswpunct_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswpunct_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c, _PUNCT, locale);
+}
+
+#undef _iswspace_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswspace_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c, _SPACE, locale);
+}
+
+#undef _iswupper_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswupper_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c, _UPPER, locale);
+}
+
+#undef _iswxdigit_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_iswxdigit_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    return _iswctype_l(c, _HEX, locale);
+}
+
+#undef _isxdigit_l
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_isxdigit_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    return _ischartype_l(c, _HEX, locale);
+}
+
+_Must_inspect_result_
+_CRTIMP
+int
+__cdecl
+_memicmp_l(
+    _In_reads_bytes_opt_(size) const void *buf1,
+    _In_reads_bytes_opt_(size) const void *buf2,
+    _In_ size_t size,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_strcoll_l(
+    _In_z_ const char *str1,
+    _In_z_ const char *str2,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_stricmp_l(
+    _In_z_ const char *str1,
+    _In_z_ const char *str2,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_stricoll_l(
+    _In_z_ const char *str1,
+    _In_z_ const char *str2,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_strlwr_s(
+    _Inout_updates_z_(size) char *str,
+    _In_ size_t size)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_strlwr_s_l(
+    _Inout_updates_z_(size) char *str,
+    _In_ size_t size,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_strncoll_l(
+    _In_z_ const char *str1,
+    _In_z_ const char *str2,
+    _In_ size_t maxcount,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_strnicmp_l(
+    _In_reads_or_z_(maxcount) const char *str1,
+    _In_reads_or_z_(maxcount) const char *str2,
+    _In_ size_t maxcount,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_strnicoll_l(
+    _In_z_ const char *str1,
+    _In_z_ const char *str2,
+    _In_ size_t maxcount,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_strnset_s(
+    _Inout_updates_z_(size) char *str,
+    _In_ size_t size,
+    _In_ int val,
+    _In_ size_t _MaxCount)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_CRTIMP
+char*
+_strupr_l(
+    char *str,
+    _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+wint_t
+__cdecl
+_towlower_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+wint_t
+__cdecl
+_towupper_l(
+    _In_ wint_t c,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_CRTIMP
+wchar_t*
+_wcslwr_l(
+    wchar_t *str,
+    _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_CRTIMP
+wchar_t*
+_wcsupr_l(
+    wchar_t *str,
+    _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_opt_
+_CRTIMP
+size_t
+__cdecl
+_wcsxfrm_l(
+    _Out_writes_opt_(maxcount) _Post_maybez_ wchar_t *dst,
+    _In_z_ const wchar_t *src,
+    _In_ size_t maxcount,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_strset_s(
+    _Inout_updates_z_(size) char *dst,
+    _In_ size_t size,
+    _In_ int val)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_strupr_s(
+    _Inout_updates_z_(size) char *str,
+    _In_ size_t size)
+{
+    return _strupr_s_l(str, size, 0);
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_strupr_s_l(
+    _Inout_updates_z_(_Size) char *str,
+    _In_ size_t size,
+    _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return ENOTSUP;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_tolower_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_toupper_l(
+    _In_ int c,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_wcscoll_l(
+    _In_z_ const wchar_t *str1,
+    _In_z_ const wchar_t *str2,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_wcsicmp_l(
+    _In_z_ const wchar_t *str1,
+    _In_z_ const wchar_t *str2,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_wcsicoll_l(
+    _In_z_ const wchar_t *str1,
+    _In_z_ const wchar_t *str2,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_wcslwr_s(
+    _Inout_updates_z_(sizeInWords) wchar_t *str,
+    _In_ size_t sizeInWords)
+{
+    return _wcslwr_s_l(str, sizeInWords, NULL);
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_wcslwr_s_l(
+    _Inout_updates_z_(sizeInWords) wchar_t *str,
+    _In_ size_t sizeInWords,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return ENOTSUP;
+}
+
+typedef size_t rsize_t;
+
+_Check_return_wat_
+_CRTIMP // _ACRTIMP
+errno_t
+__cdecl
+strncat_s(
+    _Inout_updates_z_(size) char* dest,
+    _In_ rsize_t size,
+    _In_reads_or_z_(maxCount) char const* src,
+    _In_ rsize_t  maxCount)
+{
+    UNIMPLEMENTED;
+    return ENOTSUP;
+}
+
+_Check_return_opt_
+_CRTIMP
+_CRT_INSECURE_DEPRECATE(vsnprintf_s)
+int
+__cdecl
+vsnprintf_(
+    _Out_writes_(maxCount) char *dst,
+    _In_ size_t maxCount,
+    _In_z_ _Printf_format_string_ const char *format,
+    va_list argptr)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_wcsnicoll_l(
+    _In_z_ const wchar_t *str1,
+    _In_z_ const wchar_t *str2,
+    _In_ size_t maxCount,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_wcsnicmp_l(
+    _In_reads_or_z_(_MaxCount) const wchar_t *str1,
+    _In_reads_or_z_(_MaxCount) const wchar_t *str2,
+    _In_ size_t maxCount,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_
+_CRTIMP
+int
+__cdecl
+_wcsncoll_l(
+    _In_z_ const wchar_t *str1,
+    _In_z_ const wchar_t *str2,
+    _In_ size_t maxCount,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_strerror_s(
+    _Out_writes_z_(_SizeInBytes) char *buf,
+    _In_ size_t sizeInBytes,
+    _In_opt_z_ const char *errMsg)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_wcsnset_s(
+    _Inout_updates_z_(_DstSizeInWords) wchar_t *dst,
+    _In_ size_t sizeInWords,
+    _In_ wchar_t val,
+    _In_ size_t maxCount)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_wcsset_s(
+    _Inout_updates_z_(_SizeInWords) wchar_t *str,
+    _In_ size_t sizeInWords,
+    _In_ wchar_t val)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_wat_
+_CRTIMP
+errno_t
+__cdecl
+_wcsupr_s_l(
+    _Inout_updates_z_(_Size) wchar_t *str,
+    _In_ size_t size,
+    _In_opt_ _locale_t locale)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+_Check_return_opt_
+_CRTIMP
+_CRT_INSECURE_DEPRECATE(vsnprintf_s)
+int
+__cdecl
+vsnprintf(
+    _Out_writes_(_MaxCount) char *dest,
+    _In_ size_t maxCount,
+    _In_z_ _Printf_format_string_ const char *format,
+    va_list argptr)
+{
+    UNIMPLEMENTED;
+    return 0;
+}
+
+
+
diff --git a/sdk/lib/crt/crt.cmake b/sdk/lib/crt/crt.cmake
index b200145c0d6..1148d12d289 100644
--- a/sdk/lib/crt/crt.cmake
+++ b/sdk/lib/crt/crt.cmake
@@ -292,7 +292,7 @@ list(APPEND CRT_SOURCE
     string/strtod.c
     string/strtoi64.c
     string/strtok.c
-    #string/strtok_s.c
+    string/strtok_s.c
     string/strtol.c
     string/strtoul.c
     string/strtoull.c

Reply via email to