--- gcc/ginclude/varargs.h 2018/04/24 18:23:46 1.1.1.1 +++ gcc/ginclude/varargs.h 2018/04/24 18:31:29 1.1.1.2 @@ -36,6 +36,9 @@ #if defined (__H8300__) || defined (__H8300H__) #include #else +#if defined (__PPC__) && defined (_CALL_SYSV) +#include +#else #ifdef __NeXT__ @@ -84,7 +87,7 @@ typedef void *__gnuc_va_list; #define va_start(AP) AP=(char *) &__builtin_va_alist -#define va_end(AP) +#define va_end(AP) ((void)0) #if defined(sysV68) #define __va_rounded_size(TYPE) \ @@ -103,11 +106,12 @@ typedef void *__gnuc_va_list; /* This is for big-endian machines; small args are padded downward. */ #define va_arg(AP, TYPE) \ (AP = (__gnuc_va_list) ((char *) (AP) + __va_rounded_size (TYPE)), \ - *((TYPE *) (void *) ((char *) (AP) - ((sizeof (TYPE) < 4 \ - ? sizeof (TYPE) \ - : __va_rounded_size (TYPE)))))) + *((TYPE *) (void *) ((char *) (AP) \ + - ((sizeof (TYPE) < __va_rounded_size (char) \ + ? sizeof (TYPE) : __va_rounded_size (TYPE)))))) #endif /* big-endian */ +#endif /* not powerpc with V.4 calling sequence */ #endif /* not h8300 */ #endif /* not alpha */ #endif /* not i960 */ @@ -151,19 +155,30 @@ typedef __gnuc_va_list va_list; /* Michael Eriksson at Thu Sep 30 11:00:57 1993: Sequent defines _VA_LIST_ in to be the type to use for va_list (``typedef _VA_LIST_ va_list'') */ -#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) +#if !defined (_VA_LIST_) || defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__) || defined(WINNT) +/* The macro _VA_LIST_DEFINED is used in Windows NT 3.5 */ +#ifndef _VA_LIST_DEFINED /* The macro _VA_LIST is used in SCO Unix 3.2. */ #ifndef _VA_LIST /* The macro _VA_LIST_T_H is used in the Bull dpx2 */ #ifndef _VA_LIST_T_H -#define _VA_LIST_T_H +typedef __gnuc_va_list va_list; +#endif /* not _VA_LIST_T_H */ +#endif /* not _VA_LIST */ +#endif /* not _VA_LIST_DEFINED */ #if !(defined (__BSD_NET2__) || defined (____386BSD____) || defined (__bsdi__) || defined (__sequent__) || defined (__FreeBSD__)) #define _VA_LIST_ #endif +#ifndef _VA_LIST #define _VA_LIST -typedef __gnuc_va_list va_list; -#endif /* not _VA_LIST_T_H */ -#endif /* not _VA_LIST */ +#endif +#ifndef _VA_LIST_DEFINED +#define _VA_LIST_DEFINED +#endif +#ifndef _VA_LIST_T_H +#define _VA_LIST_T_H +#endif + #endif /* not _VA_LIST_, except on certain systems */ #endif /* not __svr4__ */