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/amd64/include/varargs.h 50477 1999-08-28 01:08:13Z peter $ | 40 * $FreeBSD: head/sys/amd64/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_ */ |