Deleted Added
full compact
varargs.h (119628) 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

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

32 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37 * SUCH DAMAGE.
38 *
39 * @(#)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

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

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