[PATCH 2/2] msvcrt: Add DECLSPEC_HOTPATCH to string functions.

Roman Pišl rpisl at seznam.cz
Wed Dec 8 05:55:56 CST 2021


This fixes LLVM ASAN an the ASAN then works as expected with Wine.
Would something like this be acceptable for upstream?

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50993
Signed-off-by: Roman Pišl <rpisl at seznam.cz>
---
 dlls/msvcrt/string.c | 206 +++++++++++++++++++++----------------------
 1 file changed, 103 insertions(+), 103 deletions(-)

diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c
index d92b7a38d12..c5a8f834705 100644
--- a/dlls/msvcrt/string.c
+++ b/dlls/msvcrt/string.c
@@ -40,7 +40,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(msvcrt);
  *		_mbsdup (MSVCRT.@)
  *		_strdup (MSVCRT.@)
  */
-char* CDECL _strdup(const char* str)
+char* CDECL DECLSPEC_HOTPATCH _strdup(const char* str)
 {
     if(str)
     {
@@ -54,7 +54,7 @@ char* CDECL _strdup(const char* str)
 /*********************************************************************
  *		_strlwr_s_l (MSVCRT.@)
  */
-int CDECL _strlwr_s_l(char *str, size_t len, _locale_t locale)
+int CDECL DECLSPEC_HOTPATCH _strlwr_s_l(char *str, size_t len, _locale_t locale)
 {
     pthreadlocinfo locinfo;
     char *ptr = str;
@@ -107,7 +107,7 @@ int CDECL _strlwr_s_l(char *str, size_t len, _locale_t locale)
 /*********************************************************************
  *		_strlwr_s (MSVCRT.@)
  */
-int CDECL _strlwr_s(char *str, size_t len)
+int CDECL DECLSPEC_HOTPATCH _strlwr_s(char *str, size_t len)
 {
     return _strlwr_s_l(str, len, NULL);
 }
@@ -115,7 +115,7 @@ int CDECL _strlwr_s(char *str, size_t len)
 /*********************************************************************
  *		_strlwr_l (MSVCRT.@)
  */
-char* CDECL _strlwr_l(char *str, _locale_t locale)
+char* CDECL DECLSPEC_HOTPATCH _strlwr_l(char *str, _locale_t locale)
 {
     _strlwr_s_l(str, -1, locale);
     return str;
@@ -124,7 +124,7 @@ char* CDECL _strlwr_l(char *str, _locale_t locale)
 /*********************************************************************
  *		_strlwr (MSVCRT.@)
  */
-char* CDECL _strlwr(char *str)
+char* CDECL DECLSPEC_HOTPATCH _strlwr(char *str)
 {
     _strlwr_s_l(str, -1, NULL);
     return str;
@@ -133,7 +133,7 @@ char* CDECL _strlwr(char *str)
 /*********************************************************************
  *              _strupr_s_l (MSVCRT.@)
  */
-int CDECL _strupr_s_l(char *str, size_t len, _locale_t locale)
+int CDECL DECLSPEC_HOTPATCH _strupr_s_l(char *str, size_t len, _locale_t locale)
 {
     pthreadlocinfo locinfo;
     char *ptr = str;
@@ -186,7 +186,7 @@ int CDECL _strupr_s_l(char *str, size_t len, _locale_t locale)
 /*********************************************************************
  *              _strupr_s (MSVCRT.@)
  */
-int CDECL _strupr_s(char *str, size_t len)
+int CDECL DECLSPEC_HOTPATCH _strupr_s(char *str, size_t len)
 {
     return _strupr_s_l(str, len, NULL);
 }
@@ -194,7 +194,7 @@ int CDECL _strupr_s(char *str, size_t len)
 /*********************************************************************
  *              _strupr_l (MSVCRT.@)
  */
-char* CDECL _strupr_l(char *str, _locale_t locale)
+char* CDECL DECLSPEC_HOTPATCH _strupr_l(char *str, _locale_t locale)
 {
     _strupr_s_l(str, -1, locale);
     return str;
@@ -203,7 +203,7 @@ char* CDECL _strupr_l(char *str, _locale_t locale)
 /*********************************************************************
  *              _strupr (MSVCRT.@)
  */
-char* CDECL _strupr(char *str)
+char* CDECL DECLSPEC_HOTPATCH _strupr(char *str)
 {
     _strupr_s_l(str, -1, NULL);
     return str;
@@ -212,7 +212,7 @@ char* CDECL _strupr(char *str)
 /*********************************************************************
  *              _strnset_s (MSVCRT.@)
  */
-int CDECL _strnset_s(char *str, size_t size, int c, size_t count)
+int CDECL DECLSPEC_HOTPATCH _strnset_s(char *str, size_t size, int c, size_t count)
 {
     size_t i;
 
@@ -236,7 +236,7 @@ int CDECL _strnset_s(char *str, size_t size, int c, size_t count)
 /*********************************************************************
  *		_strnset (MSVCRT.@)
  */
-char* CDECL _strnset(char* str, int value, size_t len)
+char* CDECL DECLSPEC_HOTPATCH _strnset(char* str, int value, size_t len)
 {
   if (len > 0 && str)
     while (*str && len--)
@@ -247,7 +247,7 @@ char* CDECL _strnset(char* str, int value, size_t len)
 /*********************************************************************
  *		_strrev (MSVCRT.@)
  */
-char* CDECL _strrev(char* str)
+char* CDECL DECLSPEC_HOTPATCH _strrev(char* str)
 {
   char * p1;
   char * p2;
@@ -266,7 +266,7 @@ char* CDECL _strrev(char* str)
 /*********************************************************************
  *		_strset (MSVCRT.@)
  */
-char* CDECL _strset(char* str, int value)
+char* CDECL DECLSPEC_HOTPATCH _strset(char* str, int value)
 {
   char *ptr = str;
   while (*ptr)
@@ -278,7 +278,7 @@ char* CDECL _strset(char* str, int value)
 /*********************************************************************
  *		strtok  (MSVCRT.@)
  */
-char * CDECL strtok( char *str, const char *delim )
+char * CDECL DECLSPEC_HOTPATCH strtok( char *str, const char *delim )
 {
     thread_data_t *data = msvcrt_get_thread_data();
     char *ret;
@@ -302,7 +302,7 @@ char * CDECL strtok( char *str, const char *delim )
 /*********************************************************************
  *		strtok_s  (MSVCRT.@)
  */
-char * CDECL strtok_s(char *str, const char *delim, char **ctx)
+char * CDECL DECLSPEC_HOTPATCH strtok_s(char *str, const char *delim, char **ctx)
 {
     if (!MSVCRT_CHECK_PMT(delim != NULL)) return NULL;
     if (!MSVCRT_CHECK_PMT(ctx != NULL)) return NULL;
@@ -331,7 +331,7 @@ char * CDECL strtok_s(char *str, const char *delim, char **ctx)
 /*********************************************************************
  *		_swab (MSVCRT.@)
  */
-void CDECL _swab(char* src, char* dst, int len)
+void CDECL DECLSPEC_HOTPATCH _swab(char* src, char* dst, int len)
 {
   if (len > 1)
   {
@@ -1045,7 +1045,7 @@ static inline double strtod_helper(const char *str, char **end, _locale_t locale
 /*********************************************************************
  *		_strtod_l  (MSVCRT.@)
  */
-double CDECL _strtod_l(const char *str, char **end, _locale_t locale)
+double CDECL DECLSPEC_HOTPATCH _strtod_l(const char *str, char **end, _locale_t locale)
 {
     return strtod_helper(str, end, locale, NULL);
 }
@@ -1053,7 +1053,7 @@ double CDECL _strtod_l(const char *str, char **end, _locale_t locale)
 /*********************************************************************
  *		strtod  (MSVCRT.@)
  */
-double CDECL strtod( const char *str, char **end )
+double CDECL DECLSPEC_HOTPATCH strtod( const char *str, char **end )
 {
     return _strtod_l( str, end, NULL );
 }
@@ -1063,7 +1063,7 @@ double CDECL strtod( const char *str, char **end )
 /*********************************************************************
  *		strtof_l  (MSVCR120.@)
  */
-float CDECL _strtof_l( const char *str, char **end, _locale_t locale )
+float CDECL DECLSPEC_HOTPATCH _strtof_l( const char *str, char **end, _locale_t locale )
 {
     double ret = _strtod_l(str, end, locale);
     if (ret && isfinite(ret)) {
@@ -1077,7 +1077,7 @@ float CDECL _strtof_l( const char *str, char **end, _locale_t locale )
 /*********************************************************************
  *		strtof  (MSVCR120.@)
  */
-float CDECL strtof( const char *str, char **end )
+float CDECL DECLSPEC_HOTPATCH strtof( const char *str, char **end )
 {
     return _strtof_l(str, end, NULL);
 }
@@ -1087,7 +1087,7 @@ float CDECL strtof( const char *str, char **end )
 /*********************************************************************
  *		atof  (MSVCRT.@)
  */
-double CDECL atof( const char *str )
+double CDECL DECLSPEC_HOTPATCH atof( const char *str )
 {
     return _strtod_l(str, NULL, NULL);
 }
@@ -1095,7 +1095,7 @@ double CDECL atof( const char *str )
 /*********************************************************************
  *		_atof_l  (MSVCRT.@)
  */
-double CDECL _atof_l( const char *str, _locale_t locale)
+double CDECL DECLSPEC_HOTPATCH _atof_l( const char *str, _locale_t locale)
 {
     return _strtod_l(str, NULL, locale);
 }
@@ -1103,7 +1103,7 @@ double CDECL _atof_l( const char *str, _locale_t locale)
 /*********************************************************************
  *		_atoflt_l  (MSVCRT.@)
  */
-int CDECL _atoflt_l(_CRT_FLOAT *value, char *str, _locale_t locale)
+int CDECL DECLSPEC_HOTPATCH _atoflt_l(_CRT_FLOAT *value, char *str, _locale_t locale)
 {
     double d;
     int err;
@@ -1120,7 +1120,7 @@ int CDECL _atoflt_l(_CRT_FLOAT *value, char *str, _locale_t locale)
 /*********************************************************************
  * _atoflt  (MSVCR100.@)
  */
-int CDECL _atoflt(_CRT_FLOAT *value, char *str)
+int CDECL DECLSPEC_HOTPATCH _atoflt(_CRT_FLOAT *value, char *str)
 {
     return _atoflt_l(value, str, NULL);
 }
@@ -1128,7 +1128,7 @@ int CDECL _atoflt(_CRT_FLOAT *value, char *str)
 /*********************************************************************
  *              _atodbl_l  (MSVCRT.@)
  */
-int CDECL _atodbl_l(_CRT_DOUBLE *value, char *str, _locale_t locale)
+int CDECL DECLSPEC_HOTPATCH _atodbl_l(_CRT_DOUBLE *value, char *str, _locale_t locale)
 {
     int err;
 
@@ -1143,7 +1143,7 @@ int CDECL _atodbl_l(_CRT_DOUBLE *value, char *str, _locale_t locale)
 /*********************************************************************
  *              _atodbl  (MSVCRT.@)
  */
-int CDECL _atodbl(_CRT_DOUBLE *value, char *str)
+int CDECL DECLSPEC_HOTPATCH _atodbl(_CRT_DOUBLE *value, char *str)
 {
     return _atodbl_l(value, str, NULL);
 }
@@ -1151,7 +1151,7 @@ int CDECL _atodbl(_CRT_DOUBLE *value, char *str)
 /*********************************************************************
  *		_strcoll_l (MSVCRT.@)
  */
-int CDECL _strcoll_l( const char* str1, const char* str2, _locale_t locale )
+int CDECL DECLSPEC_HOTPATCH _strcoll_l( const char* str1, const char* str2, _locale_t locale )
 {
     pthreadlocinfo locinfo;
 
@@ -1168,7 +1168,7 @@ int CDECL _strcoll_l( const char* str1, const char* str2, _locale_t locale )
 /*********************************************************************
  *		strcoll (MSVCRT.@)
  */
-int CDECL strcoll( const char* str1, const char* str2 )
+int CDECL DECLSPEC_HOTPATCH strcoll( const char* str1, const char* str2 )
 {
     return _strcoll_l(str1, str2, NULL);
 }
@@ -1176,7 +1176,7 @@ int CDECL strcoll( const char* str1, const char* str2 )
 /*********************************************************************
  *		_stricoll_l (MSVCRT.@)
  */
-int CDECL _stricoll_l( const char* str1, const char* str2, _locale_t locale )
+int CDECL DECLSPEC_HOTPATCH _stricoll_l( const char* str1, const char* str2, _locale_t locale )
 {
     pthreadlocinfo locinfo;
 
@@ -1194,7 +1194,7 @@ int CDECL _stricoll_l( const char* str1, const char* str2, _locale_t locale )
 /*********************************************************************
  *		_stricoll (MSVCRT.@)
  */
-int CDECL _stricoll( const char* str1, const char* str2 )
+int CDECL DECLSPEC_HOTPATCH _stricoll( const char* str1, const char* str2 )
 {
     return _stricoll_l(str1, str2, NULL);
 }
@@ -1202,7 +1202,7 @@ int CDECL _stricoll( const char* str1, const char* str2 )
 /*********************************************************************
  *              _strncoll_l (MSVCRT.@)
  */
-int CDECL _strncoll_l( const char* str1, const char* str2, size_t count, _locale_t locale )
+int CDECL DECLSPEC_HOTPATCH _strncoll_l( const char* str1, const char* str2, size_t count, _locale_t locale )
 {
     pthreadlocinfo locinfo;
 
@@ -1221,7 +1221,7 @@ int CDECL _strncoll_l( const char* str1, const char* str2, size_t count, _locale
 /*********************************************************************
  *              _strncoll (MSVCRT.@)
  */
-int CDECL _strncoll( const char* str1, const char* str2, size_t count )
+int CDECL DECLSPEC_HOTPATCH _strncoll( const char* str1, const char* str2, size_t count )
 {
     return _strncoll_l(str1, str2, count, NULL);
 }
@@ -1229,7 +1229,7 @@ int CDECL _strncoll( const char* str1, const char* str2, size_t count )
 /*********************************************************************
  *              _strnicoll_l (MSVCRT.@)
  */
-int CDECL _strnicoll_l( const char* str1, const char* str2, size_t count, _locale_t locale )
+int CDECL DECLSPEC_HOTPATCH _strnicoll_l( const char* str1, const char* str2, size_t count, _locale_t locale )
 {
     pthreadlocinfo locinfo;
 
@@ -1248,7 +1248,7 @@ int CDECL _strnicoll_l( const char* str1, const char* str2, size_t count, _local
 /*********************************************************************
  *              _strnicoll (MSVCRT.@)
  */
-int CDECL _strnicoll( const char* str1, const char* str2, size_t count )
+int CDECL DECLSPEC_HOTPATCH _strnicoll( const char* str1, const char* str2, size_t count )
 {
     return _strnicoll_l(str1, str2, count, NULL);
 }
@@ -1256,7 +1256,7 @@ int CDECL _strnicoll( const char* str1, const char* str2, size_t count )
 /*********************************************************************
  *                  strncpy (MSVCRT.@)
  */
-char* __cdecl strncpy(char *dst, const char *src, size_t len)
+char* __cdecl DECLSPEC_HOTPATCH strncpy(char *dst, const char *src, size_t len)
 {
     size_t i;
 
@@ -1271,7 +1271,7 @@ char* __cdecl strncpy(char *dst, const char *src, size_t len)
 /*********************************************************************
  *      strcpy (MSVCRT.@)
  */
-char* CDECL strcpy(char *dst, const char *src)
+char* CDECL DECLSPEC_HOTPATCH strcpy(char *dst, const char *src)
 {
     char *ret = dst;
     while ((*dst++ = *src++));
@@ -1281,7 +1281,7 @@ char* CDECL strcpy(char *dst, const char *src)
 /*********************************************************************
  *      strcpy_s (MSVCRT.@)
  */
-int CDECL strcpy_s( char* dst, size_t elem, const char* src )
+int CDECL DECLSPEC_HOTPATCH strcpy_s( char* dst, size_t elem, const char* src )
 {
     size_t i;
     if(!elem) return EINVAL;
@@ -1303,7 +1303,7 @@ int CDECL strcpy_s( char* dst, size_t elem, const char* src )
 /*********************************************************************
  *      strcat_s (MSVCRT.@)
  */
-int CDECL strcat_s( char* dst, size_t elem, const char* src )
+int CDECL DECLSPEC_HOTPATCH strcat_s( char* dst, size_t elem, const char* src )
 {
     size_t i, j;
     if(!dst) return EINVAL;
@@ -1332,7 +1332,7 @@ int CDECL strcat_s( char* dst, size_t elem, const char* src )
 /*********************************************************************
  *      strcat (MSVCRT.@)
  */
-char* __cdecl strcat( char *dst, const char *src )
+char* __cdecl DECLSPEC_HOTPATCH strcat( char *dst, const char *src )
 {
     char *d = dst;
     while (*d) d++;
@@ -1343,7 +1343,7 @@ char* __cdecl strcat( char *dst, const char *src )
 /*********************************************************************
  *      strncat_s (MSVCRT.@)
  */
-int CDECL strncat_s( char* dst, size_t elem, const char* src, size_t count )
+int CDECL DECLSPEC_HOTPATCH strncat_s( char* dst, size_t elem, const char* src, size_t count )
 {
     size_t i, j;
 
@@ -1382,7 +1382,7 @@ int CDECL strncat_s( char* dst, size_t elem, const char* src, size_t count )
 /*********************************************************************
  *      strncat (MSVCRT.@)
  */
-char* __cdecl strncat(char *dst, const char *src, size_t len)
+char* __cdecl DECLSPEC_HOTPATCH strncat(char *dst, const char *src, size_t len)
 {
     char *d = dst;
     while (*d) d++;
@@ -1394,7 +1394,7 @@ char* __cdecl strncat(char *dst, const char *src, size_t len)
 /*********************************************************************
  *		_strxfrm_l (MSVCRT.@)
  */
-size_t CDECL _strxfrm_l( char *dest, const char *src,
+size_t CDECL DECLSPEC_HOTPATCH _strxfrm_l( char *dest, const char *src,
         size_t len, _locale_t locale )
 {
     pthreadlocinfo locinfo;
@@ -1440,7 +1440,7 @@ size_t CDECL _strxfrm_l( char *dest, const char *src,
 /*********************************************************************
  *		strxfrm (MSVCRT.@)
  */
-size_t CDECL strxfrm( char *dest, const char *src, size_t len )
+size_t CDECL DECLSPEC_HOTPATCH strxfrm( char *dest, const char *src, size_t len )
 {
     return _strxfrm_l(dest, src, len, NULL);
 }
@@ -1448,7 +1448,7 @@ size_t CDECL strxfrm( char *dest, const char *src, size_t len )
 /********************************************************************
  *		__STRINGTOLD_L (MSVCR80.@)
  */
-int CDECL __STRINGTOLD_L( MSVCRT__LDOUBLE *value, char **endptr,
+int CDECL DECLSPEC_HOTPATCH __STRINGTOLD_L( MSVCRT__LDOUBLE *value, char **endptr,
         const char *str, int flags, _locale_t locale )
 {
     pthreadlocinfo locinfo;
@@ -1480,7 +1480,7 @@ int CDECL __STRINGTOLD_L( MSVCRT__LDOUBLE *value, char **endptr,
 /********************************************************************
  *              __STRINGTOLD (MSVCRT.@)
  */
-int CDECL __STRINGTOLD( MSVCRT__LDOUBLE *value, char **endptr, const char *str, int flags )
+int CDECL DECLSPEC_HOTPATCH __STRINGTOLD( MSVCRT__LDOUBLE *value, char **endptr, const char *str, int flags )
 {
     return __STRINGTOLD_L( value, endptr, str, flags, NULL );
 }
@@ -1488,7 +1488,7 @@ int CDECL __STRINGTOLD( MSVCRT__LDOUBLE *value, char **endptr, const char *str,
 /********************************************************************
  *              _atoldbl_l (MSVCRT.@)
  */
-int CDECL _atoldbl_l( MSVCRT__LDOUBLE *value, char *str, _locale_t locale )
+int CDECL DECLSPEC_HOTPATCH _atoldbl_l( MSVCRT__LDOUBLE *value, char *str, _locale_t locale )
 {
     char *endptr;
     switch(__STRINGTOLD_L( value, &endptr, str, 0, locale ))
@@ -1502,7 +1502,7 @@ int CDECL _atoldbl_l( MSVCRT__LDOUBLE *value, char *str, _locale_t locale )
 /********************************************************************
  *		_atoldbl (MSVCRT.@)
  */
-int CDECL _atoldbl(_LDOUBLE *value, char *str)
+int CDECL DECLSPEC_HOTPATCH _atoldbl(_LDOUBLE *value, char *str)
 {
     return _atoldbl_l( (MSVCRT__LDOUBLE*)value, str, NULL );
 }
@@ -1510,7 +1510,7 @@ int CDECL _atoldbl(_LDOUBLE *value, char *str)
 /*********************************************************************
  *              strlen (MSVCRT.@)
  */
-size_t __cdecl strlen(const char *str)
+size_t __cdecl DECLSPEC_HOTPATCH strlen(const char *str)
 {
     const char *s = str;
     while (*s) s++;
@@ -1520,7 +1520,7 @@ size_t __cdecl strlen(const char *str)
 /******************************************************************
  *              strnlen (MSVCRT.@)
  */
-size_t CDECL strnlen(const char *s, size_t maxlen)
+size_t CDECL DECLSPEC_HOTPATCH strnlen(const char *s, size_t maxlen)
 {
     size_t i;
 
@@ -1535,7 +1535,7 @@ size_t CDECL strnlen(const char *s, size_t maxlen)
  *
  * FIXME: locale parameter is ignored
  */
-__int64 CDECL _strtoi64_l(const char *nptr, char **endptr, int base, _locale_t locale)
+__int64 CDECL DECLSPEC_HOTPATCH _strtoi64_l(const char *nptr, char **endptr, int base, _locale_t locale)
 {
     const char *p = nptr;
     BOOL negative = FALSE;
@@ -1607,7 +1607,7 @@ __int64 CDECL _strtoi64_l(const char *nptr, char **endptr, int base, _locale_t l
 /*********************************************************************
  *  _strtoi64 (MSVCRT.@)
  */
-__int64 CDECL _strtoi64(const char *nptr, char **endptr, int base)
+__int64 CDECL DECLSPEC_HOTPATCH _strtoi64(const char *nptr, char **endptr, int base)
 {
     return _strtoi64_l(nptr, endptr, base, NULL);
 }
@@ -1615,7 +1615,7 @@ __int64 CDECL _strtoi64(const char *nptr, char **endptr, int base)
 /*********************************************************************
  *  _atoi_l (MSVCRT.@)
  */
-int __cdecl _atoi_l(const char *str, _locale_t locale)
+int __cdecl DECLSPEC_HOTPATCH _atoi_l(const char *str, _locale_t locale)
 {
     __int64 ret = _strtoi64_l(str, NULL, 10, locale);
 
@@ -1633,7 +1633,7 @@ int __cdecl _atoi_l(const char *str, _locale_t locale)
  *  atoi (MSVCRT.@)
  */
 #if _MSVCR_VER == 0
-int __cdecl atoi(const char *str)
+int __cdecl DECLSPEC_HOTPATCH atoi(const char *str)
 {
     BOOL minus = FALSE;
     int ret = 0;
@@ -1658,7 +1658,7 @@ int __cdecl atoi(const char *str)
     return minus ? -ret : ret;
 }
 #else
-int CDECL atoi(const char *str)
+int CDECL DECLSPEC_HOTPATCH atoi(const char *str)
 {
     return _atoi_l(str, NULL);
 }
@@ -1667,7 +1667,7 @@ int CDECL atoi(const char *str)
 /******************************************************************
  *      _atoi64_l (MSVCRT.@)
  */
-__int64 CDECL _atoi64_l(const char *str, _locale_t locale)
+__int64 CDECL DECLSPEC_HOTPATCH _atoi64_l(const char *str, _locale_t locale)
 {
     return _strtoi64_l(str, NULL, 10, locale);
 }
@@ -1675,7 +1675,7 @@ __int64 CDECL _atoi64_l(const char *str, _locale_t locale)
 /******************************************************************
  *      _atoi64 (MSVCRT.@)
  */
-__int64 CDECL _atoi64(const char *str)
+__int64 CDECL DECLSPEC_HOTPATCH _atoi64(const char *str)
 {
     return _strtoi64_l(str, NULL, 10, NULL);
 }
@@ -1683,7 +1683,7 @@ __int64 CDECL _atoi64(const char *str)
 /******************************************************************
  *      _atol_l (MSVCRT.@)
  */
-__msvcrt_long CDECL _atol_l(const char *str, _locale_t locale)
+__msvcrt_long CDECL DECLSPEC_HOTPATCH _atol_l(const char *str, _locale_t locale)
 {
     __int64 ret = _strtoi64_l(str, NULL, 10, locale);
 
@@ -1700,7 +1700,7 @@ __msvcrt_long CDECL _atol_l(const char *str, _locale_t locale)
 /******************************************************************
  *      atol (MSVCRT.@)
  */
-__msvcrt_long CDECL atol(const char *str)
+__msvcrt_long CDECL DECLSPEC_HOTPATCH atol(const char *str)
 {
 #if _MSVCR_VER == 0
     return atoi(str);
@@ -1714,7 +1714,7 @@ __msvcrt_long CDECL atol(const char *str)
 /******************************************************************
  *      _atoll_l (MSVCR120.@)
  */
-__int64 CDECL _atoll_l(const char* str, _locale_t locale)
+__int64 CDECL DECLSPEC_HOTPATCH _atoll_l(const char* str, _locale_t locale)
 {
     return _strtoi64_l(str, NULL, 10, locale);
 }
@@ -1722,7 +1722,7 @@ __int64 CDECL _atoll_l(const char* str, _locale_t locale)
 /******************************************************************
  *      atoll (MSVCR120.@)
  */
-__int64 CDECL atoll(const char* str)
+__int64 CDECL DECLSPEC_HOTPATCH atoll(const char* str)
 {
     return _atoll_l(str, NULL);
 }
@@ -1732,7 +1732,7 @@ __int64 CDECL atoll(const char* str)
 /******************************************************************
  *		_strtol_l (MSVCRT.@)
  */
-__msvcrt_long CDECL _strtol_l(const char* nptr,
+__msvcrt_long CDECL DECLSPEC_HOTPATCH _strtol_l(const char* nptr,
         char** end, int base, _locale_t locale)
 {
     __int64 ret = _strtoi64_l(nptr, end, base, locale);
@@ -1751,7 +1751,7 @@ __msvcrt_long CDECL _strtol_l(const char* nptr,
 /******************************************************************
  *		strtol (MSVCRT.@)
  */
-__msvcrt_long CDECL strtol(const char* nptr, char** end, int base)
+__msvcrt_long CDECL DECLSPEC_HOTPATCH strtol(const char* nptr, char** end, int base)
 {
     return _strtol_l(nptr, end, base, NULL);
 }
@@ -1759,7 +1759,7 @@ __msvcrt_long CDECL strtol(const char* nptr, char** end, int base)
 /******************************************************************
  *		_strtoul_l (MSVCRT.@)
  */
-__msvcrt_ulong CDECL _strtoul_l(const char* nptr, char** end, int base, _locale_t locale)
+__msvcrt_ulong CDECL DECLSPEC_HOTPATCH _strtoul_l(const char* nptr, char** end, int base, _locale_t locale)
 {
     __int64 ret = _strtoi64_l(nptr, end, base, locale);
 
@@ -1777,7 +1777,7 @@ __msvcrt_ulong CDECL _strtoul_l(const char* nptr, char** end, int base, _locale_
 /******************************************************************
  *		strtoul (MSVCRT.@)
  */
-__msvcrt_ulong CDECL strtoul(const char* nptr, char** end, int base)
+__msvcrt_ulong CDECL DECLSPEC_HOTPATCH strtoul(const char* nptr, char** end, int base)
 {
     return _strtoul_l(nptr, end, base, NULL);
 }
@@ -1787,7 +1787,7 @@ __msvcrt_ulong CDECL strtoul(const char* nptr, char** end, int base)
  *
  * FIXME: locale parameter is ignored
  */
-unsigned __int64 CDECL _strtoui64_l(const char *nptr, char **endptr, int base, _locale_t locale)
+unsigned __int64 CDECL DECLSPEC_HOTPATCH _strtoui64_l(const char *nptr, char **endptr, int base, _locale_t locale)
 {
     const char *p = nptr;
     BOOL negative = FALSE;
@@ -1853,7 +1853,7 @@ unsigned __int64 CDECL _strtoui64_l(const char *nptr, char **endptr, int base, _
 /*********************************************************************
  *  _strtoui64 (MSVCRT.@)
  */
-unsigned __int64 CDECL _strtoui64(const char *nptr, char **endptr, int base)
+unsigned __int64 CDECL DECLSPEC_HOTPATCH _strtoui64(const char *nptr, char **endptr, int base)
 {
     return _strtoui64_l(nptr, endptr, base, NULL);
 }
@@ -1989,7 +1989,7 @@ static int ltow_helper(__msvcrt_long value, wchar_t *str, size_t size, int radix
 /*********************************************************************
  *  _ltoa_s (MSVCRT.@)
  */
-int CDECL _ltoa_s(__msvcrt_long value, char *str, size_t size, int radix)
+int CDECL DECLSPEC_HOTPATCH _ltoa_s(__msvcrt_long value, char *str, size_t size, int radix)
 {
     if (!MSVCRT_CHECK_PMT(str != NULL)) return EINVAL;
     if (!MSVCRT_CHECK_PMT(size > 0)) return EINVAL;
@@ -2005,7 +2005,7 @@ int CDECL _ltoa_s(__msvcrt_long value, char *str, size_t size, int radix)
 /*********************************************************************
  *  _ltow_s (MSVCRT.@)
  */
-int CDECL _ltow_s(__msvcrt_long value, wchar_t *str, size_t size, int radix)
+int CDECL DECLSPEC_HOTPATCH _ltow_s(__msvcrt_long value, wchar_t *str, size_t size, int radix)
 {
     if (!MSVCRT_CHECK_PMT(str != NULL)) return EINVAL;
     if (!MSVCRT_CHECK_PMT(size > 0)) return EINVAL;
@@ -2021,7 +2021,7 @@ int CDECL _ltow_s(__msvcrt_long value, wchar_t *str, size_t size, int radix)
 /*********************************************************************
  *  _itoa_s (MSVCRT.@)
  */
-int CDECL _itoa_s(int value, char *str, size_t size, int radix)
+int CDECL DECLSPEC_HOTPATCH _itoa_s(int value, char *str, size_t size, int radix)
 {
     return _ltoa_s(value, str, size, radix);
 }
@@ -2029,7 +2029,7 @@ int CDECL _itoa_s(int value, char *str, size_t size, int radix)
 /*********************************************************************
  *  _itoa (MSVCRT.@)
  */
-char* CDECL _itoa(int value, char *str, int radix)
+char* CDECL DECLSPEC_HOTPATCH _itoa(int value, char *str, int radix)
 {
     return ltoa_helper(value, str, SIZE_MAX, radix) ? NULL : str;
 }
@@ -2045,7 +2045,7 @@ char* CDECL _ltoa(__msvcrt_long value, char *str, int radix)
 /*********************************************************************
  *  _itow_s (MSVCRT.@)
  */
-int CDECL _itow_s(int value, wchar_t *str, size_t size, int radix)
+int CDECL DECLSPEC_HOTPATCH _itow_s(int value, wchar_t *str, size_t size, int radix)
 {
     return _ltow_s(value, str, size, radix);
 }
@@ -2249,7 +2249,7 @@ wchar_t* CDECL _i64tow(__int64 value, wchar_t *str, int radix)
 /*********************************************************************
  *  _ui64toa_s (MSVCRT.@)
  */
-int CDECL _ui64toa_s(unsigned __int64 value, char *str,
+int CDECL DECLSPEC_HOTPATCH _ui64toa_s(unsigned __int64 value, char *str,
         size_t size, int radix)
 {
     char buffer[65], *pos;
@@ -2288,7 +2288,7 @@ int CDECL _ui64toa_s(unsigned __int64 value, char *str,
 /*********************************************************************
  *      _ui64tow_s  (MSVCRT.@)
  */
-int CDECL _ui64tow_s( unsigned __int64 value, wchar_t *str,
+int CDECL DECLSPEC_HOTPATCH _ui64tow_s( unsigned __int64 value, wchar_t *str,
                              size_t size, int radix )
 {
     wchar_t buffer[65], *pos;
@@ -2326,7 +2326,7 @@ int CDECL _ui64tow_s( unsigned __int64 value, wchar_t *str,
 /*********************************************************************
  *  _ultoa_s (MSVCRT.@)
  */
-int CDECL _ultoa_s(__msvcrt_ulong value, char *str, size_t size, int radix)
+int CDECL DECLSPEC_HOTPATCH _ultoa_s(__msvcrt_ulong value, char *str, size_t size, int radix)
 {
     __msvcrt_ulong digit;
     char buffer[33], *pos;
@@ -2380,7 +2380,7 @@ int CDECL _ultoa_s(__msvcrt_ulong value, char *str, size_t size, int radix)
 /*********************************************************************
  *  _ultow_s (MSVCRT.@)
  */
-int CDECL _ultow_s(__msvcrt_ulong value, wchar_t *str, size_t size, int radix)
+int CDECL DECLSPEC_HOTPATCH _ultow_s(__msvcrt_ulong value, wchar_t *str, size_t size, int radix)
 {
     __msvcrt_ulong digit;
     WCHAR buffer[33], *pos;
@@ -2434,7 +2434,7 @@ int CDECL _ultow_s(__msvcrt_ulong value, wchar_t *str, size_t size, int radix)
 /*********************************************************************
  *  _i64toa_s (MSVCRT.@)
  */
-int CDECL _i64toa_s(__int64 value, char *str, size_t size, int radix)
+int CDECL DECLSPEC_HOTPATCH _i64toa_s(__int64 value, char *str, size_t size, int radix)
 {
     unsigned __int64 val;
     unsigned int digit;
@@ -2509,7 +2509,7 @@ int CDECL _i64toa_s(__int64 value, char *str, size_t size, int radix)
 /*********************************************************************
  *  _i64tow_s (MSVCRT.@)
  */
-int CDECL _i64tow_s(__int64 value, wchar_t *str, size_t size, int radix)
+int CDECL DECLSPEC_HOTPATCH _i64tow_s(__int64 value, wchar_t *str, size_t size, int radix)
 {
     unsigned __int64 val;
     unsigned int digit;
@@ -2605,7 +2605,7 @@ struct _I10_OUTPUT_DATA {
  *      Native sets last byte of data->str to '0' or '9', I don't know what
  *      it means. Current implementation sets it always to '0'.
  */
-int CDECL I10_OUTPUT(MSVCRT__LDOUBLE ld80, int prec, int flag, struct _I10_OUTPUT_DATA *data)
+int CDECL DECLSPEC_HOTPATCH I10_OUTPUT(MSVCRT__LDOUBLE ld80, int prec, int flag, struct _I10_OUTPUT_DATA *data)
 {
     struct fpnum num;
     double d;
@@ -2678,7 +2678,7 @@ int CDECL I10_OUTPUT(MSVCRT__LDOUBLE ld80, int prec, int flag, struct _I10_OUTPU
 /*********************************************************************
  *                  memcmp (MSVCRT.@)
  */
-int __cdecl memcmp(const void *ptr1, const void *ptr2, size_t n)
+int __cdecl DECLSPEC_HOTPATCH memcmp(const void *ptr1, const void *ptr2, size_t n)
 {
     const unsigned char *p1, *p2;
 
@@ -2738,7 +2738,7 @@ int __cdecl memcmp(const void *ptr1, const void *ptr2, size_t n)
     __ASM_CFI(".cfi_adjust_cfa_offset -8\n\t")
 #endif
 
-void * __cdecl sse2_memmove(void *dst, const void *src, size_t n);
+void * __cdecl DECLSPEC_HOTPATCH sse2_memmove(void *dst, const void *src, size_t n);
 __ASM_GLOBAL_FUNC( sse2_memmove,
         MEMMOVE_INIT
         "mov " DEST_REG ", " TMP_REG "\n\t" /* check copying direction */
@@ -2951,7 +2951,7 @@ __ASM_GLOBAL_FUNC( sse2_memmove,
 #else
 # define MERGE(w1, sh1, w2, sh2) ((w1 >> sh1) | (w2 << sh2))
 #endif
-void * __cdecl memmove(void *dst, const void *src, size_t n)
+void * __cdecl DECLSPEC_HOTPATCH memmove(void *dst, const void *src, size_t n)
 {
 #ifdef __x86_64__
     return sse2_memmove(dst, src, n);
@@ -3059,7 +3059,7 @@ void * __cdecl memmove(void *dst, const void *src, size_t n)
 /*********************************************************************
  *                  memcpy   (MSVCRT.@)
  */
-void * __cdecl memcpy(void *dst, const void *src, size_t n)
+void * __cdecl DECLSPEC_HOTPATCH memcpy(void *dst, const void *src, size_t n)
 {
     return memmove(dst, src, n);
 }
@@ -3092,7 +3092,7 @@ static inline void memset_aligned_32(unsigned char *d, uint64_t v, size_t n)
 /*********************************************************************
  *		    memset (MSVCRT.@)
  */
-void *__cdecl memset(void *dst, int c, size_t n)
+void* __cdecl DECLSPEC_HOTPATCH memset(void *dst, int c, size_t n)
 {
     typedef uint64_t DECLSPEC_ALIGN(1) unaligned_ui64;
     typedef uint32_t DECLSPEC_ALIGN(1) unaligned_ui32;
@@ -3148,7 +3148,7 @@ void *__cdecl memset(void *dst, int c, size_t n)
 /*********************************************************************
  *		    strchr (MSVCRT.@)
  */
-char* __cdecl strchr(const char *str, int c)
+char* __cdecl DECLSPEC_HOTPATCH strchr(const char *str, int c)
 {
     do
     {
@@ -3160,7 +3160,7 @@ char* __cdecl strchr(const char *str, int c)
 /*********************************************************************
  *                  strrchr (MSVCRT.@)
  */
-char* __cdecl strrchr(const char *str, int c)
+char* __cdecl DECLSPEC_HOTPATCH strrchr(const char *str, int c)
 {
     char *ret = NULL;
     do { if (*str == (char)c) ret = (char*)str; } while (*str++);
@@ -3170,7 +3170,7 @@ char* __cdecl strrchr(const char *str, int c)
 /*********************************************************************
  *                  memchr   (MSVCRT.@)
  */
-void* __cdecl memchr(const void *ptr, int c, size_t n)
+void* __cdecl DECLSPEC_HOTPATCH memchr(const void *ptr, int c, size_t n)
 {
     const unsigned char *p = ptr;
 
@@ -3181,7 +3181,7 @@ void* __cdecl memchr(const void *ptr, int c, size_t n)
 /*********************************************************************
  *                  strcmp (MSVCRT.@)
  */
-int __cdecl strcmp(const char *str1, const char *str2)
+int __cdecl DECLSPEC_HOTPATCH strcmp(const char *str1, const char *str2)
 {
     while (*str1 && *str1 == *str2) { str1++; str2++; }
     if ((unsigned char)*str1 > (unsigned char)*str2) return 1;
@@ -3192,7 +3192,7 @@ int __cdecl strcmp(const char *str1, const char *str2)
 /*********************************************************************
  *                  strncmp   (MSVCRT.@)
  */
-int __cdecl strncmp(const char *str1, const char *str2, size_t len)
+int __cdecl DECLSPEC_HOTPATCH strncmp(const char *str1, const char *str2, size_t len)
 {
     if (!len) return 0;
     while (--len && *str1 && *str1 == *str2) { str1++; str2++; }
@@ -3202,7 +3202,7 @@ int __cdecl strncmp(const char *str1, const char *str2, size_t len)
 /*********************************************************************
  *                  _strnicmp_l   (MSVCRT.@)
  */
-int __cdecl _strnicmp_l(const char *s1, const char *s2,
+int __cdecl DECLSPEC_HOTPATCH _strnicmp_l(const char *s1, const char *s2,
         size_t count, _locale_t locale)
 {
     pthreadlocinfo locinfo;
@@ -3242,7 +3242,7 @@ int __cdecl _strnicmp_l(const char *s1, const char *s2,
 /*********************************************************************
  *                  _stricmp_l   (MSVCRT.@)
  */
-int __cdecl _stricmp_l(const char *s1, const char *s2, _locale_t locale)
+int __cdecl DECLSPEC_HOTPATCH _stricmp_l(const char *s1, const char *s2, _locale_t locale)
 {
     return _strnicmp_l(s1, s2, -1, locale);
 }
@@ -3250,7 +3250,7 @@ int __cdecl _stricmp_l(const char *s1, const char *s2, _locale_t locale)
 /*********************************************************************
  *                  _strnicmp   (MSVCRT.@)
  */
-int __cdecl _strnicmp(const char *s1, const char *s2, size_t count)
+int __cdecl DECLSPEC_HOTPATCH _strnicmp(const char *s1, const char *s2, size_t count)
 {
     return _strnicmp_l(s1, s2, count, NULL);
 }
@@ -3258,7 +3258,7 @@ int __cdecl _strnicmp(const char *s1, const char *s2, size_t count)
 /*********************************************************************
  *                  _stricmp   (MSVCRT.@)
  */
-int __cdecl _stricmp(const char *s1, const char *s2)
+int __cdecl DECLSPEC_HOTPATCH _stricmp(const char *s1, const char *s2)
 {
     return _strnicmp_l(s1, s2, -1, NULL);
 }
@@ -3266,7 +3266,7 @@ int __cdecl _stricmp(const char *s1, const char *s2)
 /*********************************************************************
  *                  strstr   (MSVCRT.@)
  */
-char* __cdecl strstr(const char *haystack, const char *needle)
+char* __cdecl DECLSPEC_HOTPATCH strstr(const char *haystack, const char *needle)
 {
     size_t i, j, len, needle_len, lps_len;
     BYTE lps[256];
@@ -3309,7 +3309,7 @@ char* __cdecl strstr(const char *haystack, const char *needle)
 /*********************************************************************
  *                  _memicmp_l   (MSVCRT.@)
  */
-int __cdecl _memicmp_l(const void *v1, const void *v2, size_t len, _locale_t locale)
+int __cdecl DECLSPEC_HOTPATCH _memicmp_l(const void *v1, const void *v2, size_t len, _locale_t locale)
 {
     const char *s1 = v1, *s2 = v2;
     int ret = 0;
@@ -3336,7 +3336,7 @@ int __cdecl _memicmp_l(const void *v1, const void *v2, size_t len, _locale_t loc
 /*********************************************************************
  *                  _memicmp   (MSVCRT.@)
  */
-int __cdecl _memicmp(const void *s1, const void *s2, size_t len)
+int __cdecl DECLSPEC_HOTPATCH _memicmp(const void *s1, const void *s2, size_t len)
 {
     return _memicmp_l(s1, s2, len, NULL);
 }
@@ -3344,7 +3344,7 @@ int __cdecl _memicmp(const void *s1, const void *s2, size_t len)
 /*********************************************************************
  *                  strcspn   (MSVCRT.@)
  */
-size_t __cdecl strcspn(const char *str, const char *reject)
+size_t __cdecl DECLSPEC_HOTPATCH strcspn(const char *str, const char *reject)
 {
     BOOL rejects[256];
     const char *p;
@@ -3376,7 +3376,7 @@ size_t __cdecl strspn(const char *str, const char *accept)
 /*********************************************************************
  *                  strpbrk   (MSVCRT.@)
  */
-char* __cdecl strpbrk(const char *str, const char *accept)
+char* __cdecl DECLSPEC_HOTPATCH strpbrk(const char *str, const char *accept)
 {
     for (; *str; str++) if (strchr( accept, *str )) return (char*)str;
     return NULL;
@@ -3385,7 +3385,7 @@ char* __cdecl strpbrk(const char *str, const char *accept)
 /*********************************************************************
  *                  __strncnt   (MSVCRT.@)
  */
-size_t __cdecl __strncnt(const char *str, size_t size)
+size_t __cdecl DECLSPEC_HOTPATCH __strncnt(const char *str, size_t size)
 {
     size_t ret = 0;
 
@@ -3406,7 +3406,7 @@ size_t __cdecl __strncnt(const char *str, size_t size)
 /*********************************************************************
  *		_strdec (CRTDLL.@)
  */
-char * CDECL _strdec(const char *str1, const char *str2)
+char * CDECL DECLSPEC_HOTPATCH _strdec(const char *str1, const char *str2)
 {
     return (char *)(str2 - 1);
 }
@@ -3414,7 +3414,7 @@ char * CDECL _strdec(const char *str1, const char *str2)
 /*********************************************************************
  *		_strinc (CRTDLL.@)
  */
-char * CDECL _strinc(const char *str)
+char * CDECL DECLSPEC_HOTPATCH _strinc(const char *str)
 {
     return (char *)(str + 1);
 }
@@ -3422,7 +3422,7 @@ char * CDECL _strinc(const char *str)
 /*********************************************************************
  *		_strnextc (CRTDLL.@)
  */
-unsigned int CDECL _strnextc(const char *str)
+unsigned int CDECL DECLSPEC_HOTPATCH _strnextc(const char *str)
 {
     return (unsigned char)str[0];
 }
@@ -3430,7 +3430,7 @@ unsigned int CDECL _strnextc(const char *str)
 /*********************************************************************
  *		_strninc (CRTDLL.@)
  */
-char * CDECL _strninc(const char *str, size_t len)
+char * CDECL DECLSPEC_HOTPATCH _strninc(const char *str, size_t len)
 {
     return (char *)(str + len);
 }
@@ -3438,7 +3438,7 @@ char * CDECL _strninc(const char *str, size_t len)
 /*********************************************************************
  *		_strspnp (CRTDLL.@)
  */
-char * CDECL _strspnp( const char *str1, const char *str2)
+char * CDECL DECLSPEC_HOTPATCH _strspnp( const char *str1, const char *str2)
 {
     str1 += strspn( str1, str2 );
     return *str1 ? (char*)str1 : NULL;
-- 
2.30.2




More information about the wine-devel mailing list