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 | |
parent | 4267f26cd12834761ab9e3002ec3be631a3557c6 (diff) | |
download | FreeBSD-src-707b0b13a68bb4f18608bc2b61b968b1d11f7f4f.zip FreeBSD-src-707b0b13a68bb4f18608bc2b61b968b1d11f7f4f.tar.gz |
Gcc 3.1 varargs support.
-rw-r--r-- | sys/alpha/include/ansi.h | 4 | ||||
-rw-r--r-- | sys/alpha/include/stdarg.h | 25 | ||||
-rw-r--r-- | sys/alpha/include/varargs.h | 23 | ||||
-rw-r--r-- | sys/amd64/include/varargs.h | 18 | ||||
-rw-r--r-- | sys/i386/include/ansi.h | 2 | ||||
-rw-r--r-- | sys/i386/include/stdarg.h | 23 | ||||
-rw-r--r-- | sys/i386/include/varargs.h | 18 | ||||
-rw-r--r-- | sys/sparc64/include/ansi.h | 2 | ||||
-rw-r--r-- | sys/sparc64/include/stdarg.h | 20 | ||||
-rw-r--r-- | sys/sparc64/include/varargs.h | 20 |
10 files changed, 133 insertions, 22 deletions
diff --git a/sys/alpha/include/ansi.h b/sys/alpha/include/ansi.h index 3c4b58a..87966c3 100644 --- a/sys/alpha/include/ansi.h +++ b/sys/alpha/include/ansi.h @@ -72,8 +72,8 @@ #define _BSD_OFF_T_ long /* file offset */ #define _BSD_PID_T_ int /* process [group] */ -#if defined(__GNUC__) && (__GNUC__ > 2 || __GNUC__ == 2 && __GNUC_MINOR__ > 95) -#define _BSD_VA_LIST_ __builtin_va_list /* internally known to gcc */ +#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3) +#define _BSD_VA_LIST_ __builtin_va_list /* internally known to gcc */ #else typedef struct { char *__base; diff --git a/sys/alpha/include/stdarg.h b/sys/alpha/include/stdarg.h index 2003b7b..1632add 100644 --- a/sys/alpha/include/stdarg.h +++ b/sys/alpha/include/stdarg.h @@ -1,7 +1,5 @@ -/* $FreeBSD$ */ -/* From: NetBSD: stdarg.h,v 1.7 1997/04/06 08:47:44 cgd Exp */ - /*- + * Copyright (c) 2002 David E. O'Brien. All rights reserved. * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * @@ -34,6 +32,8 @@ * SUCH DAMAGE. * * @(#)stdarg.h 8.1 (Berkeley) 6/10/93 + * $NetBSD: stdarg.h,v 1.7 1997/04/06 08:47:44 cgd Exp $ + * $FreeBSD$ */ #ifndef _ALPHA_STDARG_H_ @@ -41,13 +41,26 @@ #include <machine/ansi.h> +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 __builtin_saveregs() (0) #define __builtin_classify_type(t) (0) #endif -typedef _BSD_VA_LIST_ va_list; - #define __va_size(type) \ (((sizeof(type) + sizeof(long) - 1) / sizeof(long)) * sizeof(long)) @@ -65,4 +78,6 @@ typedef _BSD_VA_LIST_ va_list; #define va_end(ap) ((void)0) +#endif /* __GNUC__ post GCC 2.95 */ + #endif /* !_ALPHA_STDARG_H_ */ diff --git a/sys/alpha/include/varargs.h b/sys/alpha/include/varargs.h index d355ec8..bcf9ed3 100644 --- a/sys/alpha/include/varargs.h +++ b/sys/alpha/include/varargs.h @@ -1,7 +1,5 @@ -/* $FreeBSD$ */ -/* From: NetBSD: varargs.h,v 1.7 1997/04/06 08:47:46 cgd Exp */ - /*- + * Copyright (c) 2002 David E. O'Brien. All rights reserved. * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. @@ -39,11 +37,28 @@ * SUCH DAMAGE. * * @(#)varargs.h 8.2 (Berkeley) 3/22/94 + * $NetBSD: varargs.h,v 1.7 1997/04/06 08:47:46 cgd Exp $ + * $FreeBSD$ */ #ifndef _ALPHA_VARARGS_H_ #define _ALPHA_VARARGS_H_ +#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3) + +#include <machine/ansi.h> + +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 <machine/stdarg.h> #if __GNUC__ == 1 @@ -59,4 +74,6 @@ #define va_start(ap) \ ((ap) = *(va_list *)__builtin_saveregs(), (ap).__pad = 0) +#endif /* __GNUC__ post GCC 2.95 */ + #endif /* !_ALPHA_VARARGS_H_ */ diff --git a/sys/amd64/include/varargs.h b/sys/amd64/include/varargs.h index d1d4ed0..bcaf875 100644 --- a/sys/amd64/include/varargs.h +++ b/sys/amd64/include/varargs.h @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2002 David E. O'Brien. All rights reserved. * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. @@ -42,6 +43,21 @@ #ifndef _VARARGS_H_ #define _VARARGS_H_ +#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3) + +#include <machine/ansi.h> + +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 */ + typedef char *va_list; #define __va_size(type) \ @@ -64,4 +80,6 @@ typedef char *va_list; #define va_end(ap) +#endif /* __GNUC__ post GCC 2.95 */ + #endif /* !_VARARGS_H_ */ diff --git a/sys/i386/include/ansi.h b/sys/i386/include/ansi.h index 7f2bf3c..d81551d 100644 --- a/sys/i386/include/ansi.h +++ b/sys/i386/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 #define _BSD_VA_LIST_ char * /* va_list */ 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_ */ diff --git a/sys/i386/include/varargs.h b/sys/i386/include/varargs.h index d1d4ed0..bcaf875 100644 --- a/sys/i386/include/varargs.h +++ b/sys/i386/include/varargs.h @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2002 David E. O'Brien. All rights reserved. * Copyright (c) 1990, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. @@ -42,6 +43,21 @@ #ifndef _VARARGS_H_ #define _VARARGS_H_ +#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3) + +#include <machine/ansi.h> + +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 */ + typedef char *va_list; #define __va_size(type) \ @@ -64,4 +80,6 @@ typedef char *va_list; #define va_end(ap) +#endif /* __GNUC__ post GCC 2.95 */ + #endif /* !_VARARGS_H_ */ diff --git a/sys/sparc64/include/ansi.h b/sys/sparc64/include/ansi.h index 01a0cd9..8ff6361 100644 --- a/sys/sparc64/include/ansi.h +++ b/sys/sparc64/include/ansi.h @@ -72,7 +72,7 @@ #define _BSD_OFF_T_ long /* 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 #define _BSD_VA_LIST_ char * /* va_list */ diff --git a/sys/sparc64/include/stdarg.h b/sys/sparc64/include/stdarg.h index 2f0fd8c..c126af0 100644 --- a/sys/sparc64/include/stdarg.h +++ b/sys/sparc64/include/stdarg.h @@ -1,4 +1,5 @@ /* + * Copyright (c) 2002 David E. O'Brien. All rights reserved. * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * @@ -32,8 +33,8 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * from: @(#)stdarg.h 8.2 (Berkeley) 9/27/93 - * from: NetBSD: stdarg.h,v 1.11 2000/07/23 21:36:56 mycroft Exp + * @(#)stdarg.h 8.2 (Berkeley) 9/27/93 + * $NetBSD: stdarg.h,v 1.11 2000/07/23 21:36:56 mycroft Exp $ * $FreeBSD$ */ @@ -44,6 +45,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 */ + #define va_start(ap, last) \ (__builtin_next_arg(last), (ap) = (va_list)__builtin_saveregs()) @@ -69,4 +83,6 @@ typedef _BSD_VA_LIST_ va_list; (sizeof(type) <= 16 ? __va_arg16(ap, type) : \ *__va_arg8(ap, type *))))) +#endif /* __GNUC__ post GCC 2.95 */ + #endif /* !_MACHINE_STDARG_H_ */ diff --git a/sys/sparc64/include/varargs.h b/sys/sparc64/include/varargs.h index 5f8fb7d..dd7e3a3 100644 --- a/sys/sparc64/include/varargs.h +++ b/sys/sparc64/include/varargs.h @@ -1,4 +1,5 @@ /* + * Copyright (c) 2002 David E. O'Brien. All rights reserved. * Copyright (c) 1992, 1993 * The Regents of the University of California. All rights reserved. * (c) UNIX System Laboratories, Inc. @@ -44,10 +45,25 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * from: @(#)varargs.h 8.3 (Berkeley) 3/22/94 + * @(#)varargs.h 8.3 (Berkeley) 3/22/94 * $FreeBSD$ */ +#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3) + +#include <machine/ansi.h> + +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 */ + #ifndef _MACHINE_VARARGS_H_ #define _MACHINE_VARARGS_H_ @@ -66,4 +82,6 @@ #define va_start(ap) \ ((ap) = (va_list)__builtin_saveregs()) +#endif /* __GNUC__ post GCC 2.95 */ + #endif /* !_MACHINE_VARARGS_H_ */ |