Deleted Added
full compact
varargs.h (128019) varargs.h (143063)
1/*-
2 * Copyright (c) 2002 David E. O'Brien. All rights reserved.
3 * Copyright (c) 1990, 1993
4 * The Regents of the University of California. All rights reserved.
5 * (c) UNIX System Laboratories, Inc.
6 * All or some portions of this file are derived from material licensed
7 * to the University of California by American Telephone and Telegraph
8 * Co. or Unix System Laboratories, Inc. and are reproduced herein with

--- 19 unchanged lines hidden (view full) ---

28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
35 * @(#)varargs.h 8.2 (Berkeley) 3/22/94
1/*-
2 * Copyright (c) 2002 David E. O'Brien. All rights reserved.
3 * Copyright (c) 1990, 1993
4 * The Regents of the University of California. All rights reserved.
5 * (c) UNIX System Laboratories, Inc.
6 * All or some portions of this file are derived from material licensed
7 * to the University of California by American Telephone and Telegraph
8 * Co. or Unix System Laboratories, Inc. and are reproduced herein with

--- 19 unchanged lines hidden (view full) ---

28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 * SUCH DAMAGE.
34 *
35 * @(#)varargs.h 8.2 (Berkeley) 3/22/94
36 * $FreeBSD: head/sys/i386/include/varargs.h 128019 2004-04-07 20:46:16Z imp $
36 * $FreeBSD: head/sys/i386/include/varargs.h 143063 2005-03-02 21:33:29Z joerg $
37 */
38
39#ifndef _MACHINE_VARARGS_H_
40#define _MACHINE_VARARGS_H_
41
37 */
38
39#ifndef _MACHINE_VARARGS_H_
40#define _MACHINE_VARARGS_H_
41
42#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3)
42#ifndef _SYS_CDEFS_H_
43#error this file needs sys/cdefs.h as a prerequisite
44#endif
43
45
46#ifdef __GNUCLIKE_BUILTIN_VARARGS
47
44#include <sys/_types.h>
45
46#ifndef _VA_LIST_DECLARED
47#define _VA_LIST_DECLARED
48typedef __va_list va_list;
49#endif
50
51typedef int __builtin_va_alist_t __attribute__((__mode__(__word__)));
52
53#define va_alist __builtin_va_alist
54#define va_dcl __builtin_va_alist_t __builtin_va_alist; ...
55#define va_start(ap) __builtin_varargs_start(ap)
56#define va_arg(ap, type) __builtin_va_arg((ap), type)
57#define va_end(ap) __builtin_va_end(ap)
58
48#include <sys/_types.h>
49
50#ifndef _VA_LIST_DECLARED
51#define _VA_LIST_DECLARED
52typedef __va_list va_list;
53#endif
54
55typedef int __builtin_va_alist_t __attribute__((__mode__(__word__)));
56
57#define va_alist __builtin_va_alist
58#define va_dcl __builtin_va_alist_t __builtin_va_alist; ...
59#define va_start(ap) __builtin_varargs_start(ap)
60#define va_arg(ap, type) __builtin_va_arg((ap), type)
61#define va_end(ap) __builtin_va_end(ap)
62
59#else /* ! __GNUC__ post GCC 2.95 */
63#else /* !__GNUCLIKE_BUILTIN_VARARGS */
60
61typedef char *va_list;
62
63#define __va_size(type) \
64 (((sizeof(type) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
65
64
65typedef char *va_list;
66
67#define __va_size(type) \
68 (((sizeof(type) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
69
66#ifdef __GNUC__
70#if defined(__GNUCLIKE_BUILTIN_VAALIST)
67#define va_alist __builtin_va_alist
68#endif
71#define va_alist __builtin_va_alist
72#endif
69#if __GNUC__ > 1
73#ifdef __CC_SUPPORTS_VARADIC_XXX
70#define va_dcl int va_alist; ...
71#else
72#define va_dcl int va_alist;
73#endif
74
75#define va_start(ap) \
76 ((ap) = (va_list)&va_alist)
77
78#define va_arg(ap, type) \
79 (*(type *)((ap) += __va_size(type), (ap) - __va_size(type)))
80
81#define va_end(ap)
82
74#define va_dcl int va_alist; ...
75#else
76#define va_dcl int va_alist;
77#endif
78
79#define va_start(ap) \
80 ((ap) = (va_list)&va_alist)
81
82#define va_arg(ap, type) \
83 (*(type *)((ap) += __va_size(type), (ap) - __va_size(type)))
84
85#define va_end(ap)
86
83#endif /* __GNUC__ post GCC 2.95 */
87#endif /* __GNUCLIKE_BUILTIN_VARARGS */
84
85#endif /* !_MACHINE_VARARGS_H_ */
88
89#endif /* !_MACHINE_VARARGS_H_ */