https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3c1f6631e62150c41d18e…
commit 3c1f6631e62150c41d18e255079189b0313bff18
Author: Timo Kreuzer <timo.kreuzer(a)reactos.org>
AuthorDate: Wed Sep 9 19:18:27 2020 +0200
Commit: Timo Kreuzer <timo.kreuzer(a)reactos.org>
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