| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |  /*  * @(#) stdarg.h 1.2 91/11/30 21:10:39  *   * Sample stdarg.h file for use with the unproto filter.  *   * This file serves two purposes.  *   * 1 - As an include file for use with ANSI-style C source that implements  * variadic functions.  *   * 2 - To configure the unproto filter itself. If the _VA_ALIST_ macro is  * defined, its value will appear in the place of the "..." in argument  * lists of variadic function *definitions* (not declarations).  *   * Compilers that pass arguments via the stack can use the default code at the  * end of this file (this usually applies for the VAX, MC68k and 80*86  * architectures).  *   * RISC-based systems often need special tricks. An example of the latter is  * given for the SPARC architecture. Read your /usr/include/varargs.h for  * more information.  *   * You can use the varargs.c program provided with the unproto package to  * verify that the stdarg.h file has been set up correctly.  */#ifndef __STDARG_H#define __STDARG_H#ifdef sparc#  define _VA_ALIST_		"__builtin_va_alist"   typedef char *va_list;#  define va_start(ap, p)	(ap = (char *) &__builtin_va_alist)#  define va_arg(ap, type)	((type *) __builtin_va_arg_incr((type *) ap))[0]#  define va_end(ap)#else /* vax, mc68k, 80*86 */   typedef char *va_list;#  define va_start(ap, p)	(ap = (char *) (&(p)+1))#  define va_arg(ap, type)	((type *) (ap += sizeof(type)))[-1]#  define va_end(ap)#endif#endif /* __STDARG_H */#if __FIRST_ARG_IN_AX__#error First arg is in a register, stdarg.h cannot take its address#endif
 |