diff --git a/include/msvcrt/corecrt.h b/include/msvcrt/corecrt.h index 4dc2ca53208..bec9c8911c2 100644 --- a/include/msvcrt/corecrt.h +++ b/include/msvcrt/corecrt.h @@ -122,18 +122,6 @@ # endif #endif -#if (defined(__x86_64__) || (defined(__aarch64__) && __has_attribute(ms_abi))) && defined (__GNUC__) -# include -# undef va_list -# undef va_start -# undef va_end -# undef va_copy -# define va_list __builtin_ms_va_list -# define va_start(list,arg) __builtin_ms_va_start(list,arg) -# define va_end(list) __builtin_ms_va_end(list) -# define va_copy(dest,src) __builtin_ms_va_copy(dest,src) -#endif - #ifndef WINAPIV # if defined(__arm__) && defined (__GNUC__) && !defined(__SOFTFP__) && !defined(__MINGW32__) && !defined(__CYGWIN__) # define WINAPIV __attribute__((pcs("aapcs"))) diff --git a/include/msvcrt/vadefs.h b/include/msvcrt/vadefs.h index 2a612fc055c..462c2d6815f 100644 --- a/include/msvcrt/vadefs.h +++ b/include/msvcrt/vadefs.h @@ -27,7 +27,15 @@ #define _ADDRESSOF(v) (&(v)) #endif -#if defined(__GNUC__) || defined(__clang__) +#if defined (__GNUC__) && (defined(__x86_64__) || (defined(__aarch64__) && __has_attribute(ms_abi))) + +typedef __builtin_ms_va_list va_list; +#define _crt_va_start(v,l) __builtin_ms_va_start(v,l) +#define _crt_va_arg(v,l) __builtin_va_arg(v,l) +#define _crt_va_end(v) __builtin_ms_va_end(v) +#define _crt_va_copy(d,s) __builtin_ms_va_copy(d,s) + +#elif defined(__GNUC__) || defined(__clang__) typedef __builtin_va_list va_list; #define _crt_va_start(v,l) __builtin_va_start(v,l)