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

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

31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * @(#)varargs.h 8.2 (Berkeley) 3/22/94
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
9 * the permission of UNIX System Laboratories, Inc.
10 *

--- 21 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
39 * $FreeBSD: head/sys/i386/include/varargs.h 50477 1999-08-28 01:08:13Z peter $
40 * $FreeBSD: head/sys/i386/include/varargs.h 96317 2002-05-10 02:02:54Z obrien $
40 */
41
42#ifndef _VARARGS_H_
43#define _VARARGS_H_
44
41 */
42
43#ifndef _VARARGS_H_
44#define _VARARGS_H_
45
46#if defined(__GNUC__) && (__GNUC__ == 2 && __GNUC_MINOR__ > 95 || __GNUC__ >= 3)
47
48#include <machine/ansi.h>
49
50typedef _BSD_VA_LIST_ va_list;
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
59#else /* ! __GNUC__ post GCC 2.95 */
60
45typedef char *va_list;
46
47#define __va_size(type) \
48 (((sizeof(type) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
49
50#ifdef __GNUC__
51#define va_alist __builtin_va_alist
52#endif

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

59#define va_start(ap) \
60 ((ap) = (va_list)&va_alist)
61
62#define va_arg(ap, type) \
63 (*(type *)((ap) += __va_size(type), (ap) - __va_size(type)))
64
65#define va_end(ap)
66
61typedef char *va_list;
62
63#define __va_size(type) \
64 (((sizeof(type) + sizeof(int) - 1) / sizeof(int)) * sizeof(int))
65
66#ifdef __GNUC__
67#define va_alist __builtin_va_alist
68#endif

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

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
83#endif /* __GNUC__ post GCC 2.95 */
84
67#endif /* !_VARARGS_H_ */
85#endif /* !_VARARGS_H_ */