From d9b66c2f2f74b6a6ddf1e43aa4694a04f46a3b0c Mon Sep 17 00:00:00 2001 From: obrien Date: Fri, 10 May 2002 02:12:04 +0000 Subject: Gcc 3.1 varargs support. --- sys/powerpc/include/ansi.h | 2 +- sys/powerpc/include/stdarg.h | 16 ++++++++++++++++ sys/powerpc/include/varargs.h | 18 ++++++++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) (limited to 'sys/powerpc') diff --git a/sys/powerpc/include/ansi.h b/sys/powerpc/include/ansi.h index 7decfa5..e6d3298 100644 --- a/sys/powerpc/include/ansi.h +++ b/sys/powerpc/include/ansi.h @@ -71,7 +71,7 @@ #define _BSD_OFF_T_ __int64_t /* file offset */ #define _BSD_PID_T_ int /* process [group] */ -#if defined(__GNUC__) && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ > 95) +#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3) #define _BSD_VA_LIST_ __builtin_va_list /* internally known to gcc */ #else typedef struct { diff --git a/sys/powerpc/include/stdarg.h b/sys/powerpc/include/stdarg.h index 146567f..87b5965 100644 --- a/sys/powerpc/include/stdarg.h +++ b/sys/powerpc/include/stdarg.h @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2002 David E. O'Brien. All rights reserved. * Copyright (c) 2000 Tsubai Masanari. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,6 +35,19 @@ typedef _BSD_VA_LIST_ va_list; +#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3) + +#define va_start(ap, last) \ + __builtin_stdarg_start((ap), (last)) + +#define va_arg(ap, type) \ + __builtin_va_arg((ap), type) + +#define va_end(ap) \ + __builtin_va_end(ap) + +#else /* ! __GNUC__ post GCC 2.95 */ + #ifdef __lint__ #define va_start(ap, last) ((ap) = *(va_list *)0) @@ -117,4 +131,6 @@ typedef _BSD_VA_LIST_ va_list; ((dest) = (src)) #endif +#endif /* __GNUC__ post GCC 2.95 */ + #endif /* _POWERPC_STDARG_H_ */ diff --git a/sys/powerpc/include/varargs.h b/sys/powerpc/include/varargs.h index 3e1c0a9..6e0f346 100644 --- a/sys/powerpc/include/varargs.h +++ b/sys/powerpc/include/varargs.h @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2002 David E. O'Brien. All rights reserved. * Copyright (c) 2000 Tsubai Masanari. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -30,6 +31,21 @@ #ifndef _POWERPC_VARARGS_H_ #define _POWERPC_VARARGS_H_ +#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3) + +#include + +typedef _BSD_VA_LIST_ va_list; +typedef int __builtin_va_alist_t __attribute__((__mode__(__word__))); + +#define va_alist __builtin_va_alist +#define va_dcl __builtin_va_alist_t __builtin_va_alist; ... +#define va_start(ap) __builtin_varargs_start(ap) +#define va_arg(ap, type) __builtin_va_arg((ap), type) +#define va_end(ap) __builtin_va_end(ap) + +#else /* ! __GNUC__ post GCC 2.95 */ + #include #define va_alist __builtin_va_alist @@ -47,4 +63,6 @@ (ap).__fpr = __va_first_fpr) #endif +#endif /* __GNUC__ post GCC 2.95 */ + #endif /* _POWERPC_VARARGS_H_ */ -- cgit v1.1