2021-10-11 19:38:01 -03:00

60 lines
1.7 KiB
C
Executable File

/* Copyright (c) 1988 AT&T */
/* All Rights Reserved */
/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */
/* The copyright notice above does not evidence any */
/* actual or intended publication of such source code. */
#ifndef _VARARGS_H
#define _VARARGS_H
#pragma ident "@(#)varargs.h 1.18 94/01/27 SMI" /* SVr4.0 1.4.1.5 */
#ifdef __cplusplus
extern "C" {
#endif
/*
* Many compilation systems depend upon the use of special functions
* built into the the compilation system to handle variable argument
* lists and stack allocations. The method to obtain this in SunOS
* is to define the feature test macro "__BUILTIN_VA_ARG_INCR" which
* enables the following special built-in functions:
* __builtin_alloca
* __builtin_va_alist
* __builtin_va_arg_incr
* It is intended that the compilation system define this feature test
* macro, not the user of the system.
*
* The tests on the processor type are to provide a transitional period
* for existing compilation systems, and may be removed in a future
* release.
*/
#ifndef _VA_LIST
#define _VA_LIST
typedef char *va_list;
#endif
#if (defined(__BUILTIN_VA_ARG_INCR) || defined(sparc) || defined(__sparc) || \
defined(i386) || defined(__i386))
#define va_alist __builtin_va_alist
#endif
#define va_dcl int va_alist;
#define va_start(list) list = (char *) &va_alist
#define va_end(list)
#if (defined(__BUILTIN_VA_ARG_INCR) || defined(sparc) || defined(__sparc) || \
defined(i386) || defined(__i386)) && !(defined(lint) || defined(__lint))
#define va_arg(list, mode) ((mode*)__builtin_va_arg_incr((mode *)list))[0]
#else
#define va_arg(list, mode) ((mode *)(list += sizeof (mode)))[-1]
#endif
#ifdef __cplusplus
}
#endif
#endif /* _VARARGS_H */