| /* Copyright (C) 1989, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. | |
| This file is part of GCC. | |
| GCC is free software; you can redistribute it and/or modify | |
| it under the terms of the GNU General Public License as published by | |
| the Free Software Foundation; either version 2, or (at your option) | |
| any later version. | |
| GCC is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public License | |
| along with GCC; see the file COPYING. If not, write to | |
| the Free Software Foundation, 51 Franklin Street, Fifth Floor, | |
| Boston, MA 02110-1301, USA. */ | |
| /* As a special exception, if you include this header file into source | |
| files compiled by GCC, this header file does not by itself cause | |
| the resulting executable to be covered by the GNU General Public | |
| License. This exception does not however invalidate any other | |
| reasons why the executable file might be covered by the GNU General | |
| Public License. */ | |
| /* | |
| * ISO C Standard: 7.15 Variable arguments <stdarg.h> | |
| */ | |
| #if defined(__GNUC__) | |
| #ifndef _STDARG_H | |
| #ifndef _ANSI_STDARG_H_ | |
| #ifndef __need___va_list | |
| #define _STDARG_H | |
| #define _ANSI_STDARG_H_ | |
| #endif /* not __need___va_list */ | |
| #undef __need___va_list | |
| /* Define __gnuc_va_list. */ | |
| #ifndef __GNUC_VA_LIST | |
| #define __GNUC_VA_LIST | |
| typedef __builtin_va_list __gnuc_va_list; | |
| #endif | |
| /* Define the standard macros for the user, | |
| if this invocation was from the user program. */ | |
| #ifdef _STDARG_H | |
| #define va_start(v,l) __builtin_va_start(v,l) | |
| #define va_end(v) __builtin_va_end(v) | |
| #define va_arg(v,l) __builtin_va_arg(v,l) | |
| #if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L || defined(__GXX_EXPERIMENTAL_CXX0X__) | |
| #define va_copy(d,s) __builtin_va_copy(d,s) | |
| #endif | |
| #define __va_copy(d,s) __builtin_va_copy(d,s) | |
| /* Define va_list, if desired, from __gnuc_va_list. */ | |
| /* We deliberately do not define va_list when called from | |
| stdio.h, because ANSI C says that stdio.h is not supposed to define | |
| va_list. stdio.h needs to have access to that data type, | |
| but must not use that name. It should use the name __gnuc_va_list, | |
| which is safe because it is reserved for the implementation. */ | |
| #ifdef _HIDDEN_VA_LIST /* On OSF1, this means varargs.h is "half-loaded". */ | |
| #undef _VA_LIST | |
| #endif | |
| #ifdef _BSD_VA_LIST | |
| #undef _BSD_VA_LIST | |
| #endif | |
| #if defined(__svr4__) || (defined(_SCO_DS) && !defined(__VA_LIST)) | |
| /* SVR4.2 uses _VA_LIST for an internal alias for va_list, | |
| so we must avoid testing it and setting it here. | |
| SVR4 uses _VA_LIST as a flag in stdarg.h, but we should | |
| have no conflict with that. */ | |
| #ifndef _VA_LIST_ | |
| #define _VA_LIST_ | |
| #ifdef __i860__ | |
| #ifndef _VA_LIST | |
| #define _VA_LIST va_list | |
| #endif | |
| #endif /* __i860__ */ | |
| typedef __gnuc_va_list va_list; | |
| #ifdef _SCO_DS | |
| #define __VA_LIST | |
| #endif | |
| #endif /* _VA_LIST_ */ | |
| #else /* not __svr4__ || _SCO_DS */ | |
| /* The macro _VA_LIST_ is the same thing used by this file in Ultrix. | |
| But on BSD NET2 we must not test or define or undef it. | |
| (Note that the comments in NET 2's ansi.h | |
| are incorrect for _VA_LIST_--see stdio.h!) */ | |
| #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 | |
| /* The macro __va_list__ is used by BeOS. */ | |
| #ifndef __va_list__ | |
| typedef __gnuc_va_list va_list; | |
| #endif /* not __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 | |
| #endif | |
| #ifndef _VA_LIST_DEFINED | |
| #define _VA_LIST_DEFINED | |
| #endif | |
| #ifndef _VA_LIST_T_H | |
| #define _VA_LIST_T_H | |
| #endif | |
| #ifndef __va_list__ | |
| #define __va_list__ | |
| #endif | |
| #endif /* not _VA_LIST_, except on certain systems */ | |
| #endif /* not __svr4__ */ | |
| #endif /* _STDARG_H */ | |
| #endif /* not _ANSI_STDARG_H_ */ | |
| #endif /* not _STDARG_H */ | |
| #endif /*__GNUC__ */ | |
| /* include mingw stuff */ | |
| #include <_mingw_stdarg.h> | |