X-Git-Url: http://git.joshuawise.com/netwatch.git/blobdiff_plain/f1584bb056629473dd1208034fed761cbaea8e29..3c4e084de9ed00171748c20de1251d347fc33c1c:/include/raw/stdarg.h diff --git a/include/raw/stdarg.h b/include/raw/stdarg.h index 0de5da4..ba9add0 100644 --- a/include/raw/stdarg.h +++ b/include/raw/stdarg.h @@ -1,68 +1,18 @@ -/* - * stdarg.h - * Modified for use in 15-410 at CMU - * Zachary Anderson(zra) - */ - -/* - * Copyright (c) 1994 The University of Utah and the Flux Group. - * All rights reserved. - * - * This file is part of the Flux OSKit. The OSKit is free software, also known - * as "open source;" you can redistribute it and/or modify it under the terms - * of the GNU General Public License (GPL), version 2, as published by the Free - * Software Foundation (FSF). To explore alternate licensing terms, contact - * the University of Utah at csl-dist@cs.utah.edu or +1-801-585-3271. - * - * The OSKit is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GPL for more details. You should have - * received a copy of the GPL along with the OSKit; see the file COPYING. If - * not, write to the FSF, 59 Temple Place #330, Boston, MA 02111-1307, USA. - */ - -/* - * Mach Operating System - * Copyright (c) 1993 Carnegie Mellon University. - * All Rights Reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation is hereby granted, provided that both the copyright - * notice and this permission notice appear in all copies of the - * software, derivative works or modified versions, and any portions - * thereof, and that both notices appear in supporting documentation. - * - * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" - * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR - * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * - * Carnegie Mellon requests users of this software to return to - * - * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU - * School of Computer Science - * Carnegie Mellon University - * Pittsburgh PA 15213-3890 - * - * any improvements or extensions that they make and grant Carnegie Mellon - * the rights to redistribute these changes. - */ - - #ifndef _STDARG_H_ #define _STDARG_H_ -#define __va_size(type) ((sizeof(type)+3) & ~0x3) +/* This is awful, but really these are compiler intrinsics, so we use the + * GNU compiler intrinsics. + */ -#ifndef _VA_LIST_ -#define _VA_LIST_ -typedef char * va_list; +#ifdef __GNUC__ +typedef __builtin_va_list va_list; +#define va_start(v,l) __builtin_va_start(v,l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v,l) __builtin_va_arg(v,l) +#define va_copy(d,s) __builtin_va_copy(d,s) +#else +#error "Don't know how to use varargs not on GNUC, sorry." #endif -#define va_start(pvar, lastarg) \ - ((pvar) = (char*)(void*)&(lastarg) + __va_size(lastarg)) -#define va_end(pvar) -#define va_arg(pvar,type) \ - ((pvar) += __va_size(type), \ - *((type *)((pvar) - __va_size(type)))) - -#endif /* _STDARG_H_ */ +#endif