diff options
author | obrien <obrien@FreeBSD.org> | 2002-05-10 02:02:54 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2002-05-10 02:02:54 +0000 |
commit | 707b0b13a68bb4f18608bc2b61b968b1d11f7f4f (patch) | |
tree | b2c2da53a08934116f97d9b8df58bf01fd5f8452 /sys/i386/include/stdarg.h | |
parent | 4267f26cd12834761ab9e3002ec3be631a3557c6 (diff) | |
download | FreeBSD-src-707b0b13a68bb4f18608bc2b61b968b1d11f7f4f.zip FreeBSD-src-707b0b13a68bb4f18608bc2b61b968b1d11f7f4f.tar.gz |
Gcc 3.1 varargs support.
Diffstat (limited to 'sys/i386/include/stdarg.h')
-rw-r--r-- | sys/i386/include/stdarg.h | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/sys/i386/include/stdarg.h b/sys/i386/include/stdarg.h index 3c7f17b..aa5cea8 100644 --- a/sys/i386/include/stdarg.h +++ b/sys/i386/include/stdarg.h @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2002 David E. O'Brien. All rights reserved. * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * @@ -37,21 +38,29 @@ #ifndef _STDARG_H_ #define _STDARG_H_ -#if defined __GNUC__ && ((__GNUC__ == 2 && __GNUC_MINOR__ >= 96) || __GNUC__ > 2) -#include <machine/gcc_stdarg.h> -#else /* __GNUC__ */ - #include <machine/ansi.h> typedef _BSD_VA_LIST_ va_list; -#define __va_size(type) \ - (((sizeof(type) + sizeof(int) - 1) / sizeof(int)) * sizeof(int)) +#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 __GNUC__ #define va_start(ap, last) \ ((ap) = (va_list)__builtin_next_arg(last)) #else +#define __va_size(type) \ + (((sizeof(type) + sizeof(int) - 1) / sizeof(int)) * sizeof(int)) #define va_start(ap, last) \ ((ap) = (va_list)&(last) + __va_size(last)) #endif @@ -61,6 +70,6 @@ typedef _BSD_VA_LIST_ va_list; #define va_end(ap) -#endif /* __GNUC__ */ +#endif /* __GNUC__ post GCC 2.95 */ #endif /* !_STDARG_H_ */ |