Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Feb 2018 14:48:05 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r329163 - in head/sys: mips/include powerpc/include riscv/include sparc64/include
Message-ID:  <201802121448.w1CEm50c082642@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Mon Feb 12 14:48:05 2018
New Revision: 329163
URL: https://svnweb.freebsd.org/changeset/base/329163

Log:
  Use standard pattern for stdargs.h
  
  We don't support older compilers. Most of the code in these files is
  for pre-3.0 gcc, which is at least 15 years obsolete. Move to using
  phk's sys/_stdargs.h for all these platforms.
  
  Sponsored by: Netflix
  Differential Revision: https://reviews.freebsd.org/D14323

Modified:
  head/sys/mips/include/stdarg.h
  head/sys/powerpc/include/stdarg.h
  head/sys/riscv/include/stdarg.h
  head/sys/sparc64/include/stdarg.h

Modified: head/sys/mips/include/stdarg.h
==============================================================================
--- head/sys/mips/include/stdarg.h	Mon Feb 12 14:45:27 2018	(r329162)
+++ head/sys/mips/include/stdarg.h	Mon Feb 12 14:48:05 2018	(r329163)
@@ -1,144 +1,39 @@
-/*
- *	JNPR: stdarg.h,v 1.3 2006/09/15 12:52:34 katta
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2017 Poul-Henning Kamp.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
  * $FreeBSD$
  */
 
 #ifndef _MACHINE_STDARG_H_
 #define	_MACHINE_STDARG_H_
-#include <sys/cdefs.h>
-#include <sys/_types.h>
 
+#include <sys/_stdarg.h>
 
-#if __GNUC__ >= 3
-
-#ifndef _VA_LIST_DECLARED
-#define	_VA_LIST_DECLARED
-typedef __va_list	va_list;
+#ifndef va_start
+  #error this file needs to be ported to your compiler
 #endif
-#define	va_start(v,l)	__builtin_va_start((v),l)
-#define	va_end		__builtin_va_end
-#define	va_arg		__builtin_va_arg
-#define	va_copy		__builtin_va_copy
 
-#else  /* __GNUC__ */
-
-
-/* ---------------------------------------- */
-/*	     VARARGS  for MIPS/GNU CC	    */
-/* ---------------------------------------- */
-
-#include <machine/endian.h>
-
-/* These macros implement varargs for GNU C--either traditional or ANSI.  */
-
-/* Define __gnuc_va_list.  */
-
-#ifndef __GNUC_VA_LIST
-#define	__GNUC_VA_LIST
-
-typedef char * __gnuc_va_list;
-typedef __gnuc_va_list va_list;
-
-#endif /* ! __GNUC_VA_LIST */
-
-/* If this is for internal libc use, don't define anything but
-   __gnuc_va_list.  */
-
-#ifndef _VA_MIPS_H_ENUM
-#define	_VA_MIPS_H_ENUM
-enum {
-	__no_type_class = -1,
-	__void_type_class,
-	__integer_type_class,
-	__char_type_class,
-	__enumeral_type_class,
-	__boolean_type_class,
-	__pointer_type_class,
-	__reference_type_class,
-	__offset_type_class,
-	__real_type_class,
-	__complex_type_class,
-	__function_type_class,
-	__method_type_class,
-	__record_type_class,
-	__union_type_class,
-	__array_type_class,
-	__string_type_class,
-	__set_type_class,
-	__file_type_class,
-	__lang_type_class
-};
-#endif
-
-/* In GCC version 2, we want an ellipsis at the end of the declaration
-   of the argument list.  GCC version 1 can't parse it.	 */
-
-#if __GNUC__ > 1
-#define	__va_ellipsis ...
-#else
-#define	__va_ellipsis
-#endif
-
-
-#define	va_start(__AP, __LASTARG) \
-	(__AP = (__gnuc_va_list) __builtin_next_arg (__LASTARG))
-
-#define	va_end(__AP)	((void)0)
-
-
-/* We cast to void * and then to TYPE * because this avoids
-   a warning about increasing the alignment requirement.  */
-/* The __mips64 cases are reversed from the 32 bit cases, because the standard
-   32 bit calling convention left-aligns all parameters smaller than a word,
-   whereas the __mips64 calling convention does not (and hence they are
-   right aligned).  */
-
-#ifdef __mips64
-
-#define	__va_rounded_size(__TYPE)	(((sizeof (__TYPE) + 8 - 1) / 8) * 8)
-
-#define	__va_reg_size			8
-
-#if defined(__MIPSEB__) || (BYTE_ORDER == BIG_ENDIAN)
-#define	va_arg(__AP, __type)						\
-	((__type *) (void *) (__AP = (char *)				\
-	    ((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8)			\
-	    + __va_rounded_size (__type))))[-1]
-#else	/* ! __MIPSEB__ && !BYTE_ORDER == BIG_ENDIAN */
-#define	va_arg(__AP, __type)						\
-	((__AP = (char *) ((((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8)	\
-	    + __va_rounded_size (__type))),				\
-	    *(__type *) (void *) (__AP - __va_rounded_size (__type)))
-#endif	/* ! __MIPSEB__ && !BYTE_ORDER == BIG_ENDIAN */
-
-#else	/* ! __mips64 */
-
-#define	__va_rounded_size(__TYPE)					\
-	(((sizeof (__TYPE) + sizeof (int) - 1) / sizeof (int)) * sizeof (int))
-
-#define	__va_reg_size 4
-
-#if defined(__MIPSEB__) || (BYTE_ORDER == BIG_ENDIAN)
-/* For big-endian machines.  */
-#define	va_arg(__AP, __type)					\
-	((__AP = (char *) ((__alignof__ (__type) > 4		\
-	    ? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8		\
-	    : ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4)		\
-	    + __va_rounded_size (__type))),			\
-	*(__type *) (void *) (__AP - __va_rounded_size (__type)))
-#else	/* ! __MIPSEB__ && !BYTE_ORDER == BIG_ENDIAN */
-/* For little-endian machines.	*/
-#define	va_arg(__AP, __type)						\
-	((__type *) (void *) (__AP = (char *) ((__alignof__(__type) > 4	\
-	    ? ((__PTRDIFF_TYPE__)__AP + 8 - 1) & -8			\
-	    : ((__PTRDIFF_TYPE__)__AP + 4 - 1) & -4)			\
-	    + __va_rounded_size(__type))))[-1]
-#endif	/* ! __MIPSEB__ && !BYTE_ORDER == BIG_ENDIAN */
-#endif	/* ! __mips64 */
-
-/* Copy __gnuc_va_list into another variable of this type.  */
-#define	__va_copy(dest, src)	(dest) = (src)
-#define	va_copy(dest, src)	(dest) = (src)
-
-#endif /* __GNUC__ */
-#endif /* _MACHINE_STDARG_H_ */
+#endif /* !_MACHINE_STDARG_H_ */

Modified: head/sys/powerpc/include/stdarg.h
==============================================================================
--- head/sys/powerpc/include/stdarg.h	Mon Feb 12 14:45:27 2018	(r329162)
+++ head/sys/powerpc/include/stdarg.h	Mon Feb 12 14:48:05 2018	(r329163)
@@ -1,8 +1,7 @@
 /*-
- * SPDX-License-Identifier: BSD-3-Clause
+ * SPDX-License-Identifier: BSD-2-Clause
  *
- * Copyright (c) 2002 David E. O'Brien.  All rights reserved.
- * Copyright (c) 2000 Tsubai Masanari.  All rights reserved.
+ * Copyright (c) 2017 Poul-Henning Kamp.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -12,141 +11,29 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. The name of the author may not be used to endorse or promote products
- *    derived from this software without specific prior written permission.
  *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  *
- *	$NetBSD: stdarg.h,v 1.5 2000/02/27 17:50:21 tsubai Exp $
  * $FreeBSD$
  */
 
 #ifndef _MACHINE_STDARG_H_
 #define	_MACHINE_STDARG_H_
 
-#include <sys/cdefs.h>
-#include <sys/_types.h>
+#include <sys/_stdarg.h>
 
-#ifndef _VA_LIST_DECLARED
-#define	_VA_LIST_DECLARED
-typedef	__va_list	va_list;
+#ifndef va_start
+  #error this file needs to be ported to your compiler
 #endif
 
-#if defined(__GNUCLIKE_BUILTIN_STDARG)
-
-#define	va_start(ap, last) \
-	__builtin_va_start((ap), (last))
-
-#define	va_arg(ap, type) \
-	__builtin_va_arg((ap), type)
-
-#if __ISO_C_VISIBLE >= 1999
-#define	va_copy(dest, src) \
-	__builtin_va_copy((dest), (src))
-
-#define	__va_copy(dest, src) \
-	va_copy((dest), (src))
-#endif
-
-#define	va_end(ap) \
-	__builtin_va_end(ap)
-
-#else	/* !__GNUCLIKE_BUILTIN_STDARG */
-
-#ifdef __lint__
-
-#define	va_start(ap, last)	((ap) = *(va_list *)0)
-#define	va_arg(ap, type)	(*(type *)(void *)&(ap))
-
-#else
-
-#if defined(__GNUC_VA_LIST_COMPATIBILITY)
-#define	va_start(ap, last)						\
-	(__builtin_next_arg(last),					\
-	 __builtin_memcpy((void *)&(ap), __builtin_saveregs (),		\
-	 sizeof(__gnuc_va_list)))
-#else
-#define	va_start(ap, last)						\
-	(__builtin_next_arg(last),					\
-	 (ap).__stack = __va_stack_args,				\
-	 (ap).__base = __va_reg_args,					\
-	 (ap).__gpr = __va_first_gpr,					\
-	 (ap).__fpr = __va_first_fpr)
-#endif
-
-#define	__va_first_gpr	(__builtin_args_info(0))
-#define	__va_first_fpr	(__builtin_args_info(1) - 32 - 1)
-#define	__va_stack_args							\
-	((char *)__builtin_saveregs() +					\
-	 (__va_first_gpr >= 8 ? __va_first_gpr - 8 : 0) * sizeof(int))
-#define	__va_reg_args							\
-	((char *)__builtin_frame_address(0) + __builtin_args_info(4))
-
-#define	__INTEGER_TYPE_CLASS	1
-#define	__REAL_TYPE_CLASS	8
-#define	__RECORD_TYPE_CLASS	12
-
-#define	__va_longlong(type)						\
-	(__builtin_classify_type(*(type *)0) == __INTEGER_TYPE_CLASS &&	\
-	 sizeof(type) == 8)
-
-#define	__va_double(type)						\
-	(__builtin_classify_type(*(type *)0) == __REAL_TYPE_CLASS)
-
-#define	__va_struct(type)						\
-	(__builtin_classify_type(*(type *)0) >= __RECORD_TYPE_CLASS)
-
-#define	__va_size(type)							\
-	((sizeof(type) + sizeof(int) - 1) / sizeof(int) * sizeof(int))
-
-#define	__va_savedgpr(ap, type)						\
-	((ap).__base + (ap).__gpr * sizeof(int) - sizeof(type))
-
-#define	__va_savedfpr(ap, type)						\
-	((ap).__base + 8 * sizeof(int) + (ap).__fpr * sizeof(double) -	\
-	 sizeof(type))
-
-#define	__va_stack(ap, type)						\
-	((ap).__stack += __va_size(type) +				\
-			(__va_longlong(type) ? (int)(ap).__stack & 4 : 0), \
-	 (ap).__stack - sizeof(type))
-
-#define	__va_gpr(ap, type)						\
-	((ap).__gpr += __va_size(type) / sizeof(int) +			\
-		      (__va_longlong(type) ? (ap).__gpr & 1 : 0),	\
-	 (ap).__gpr <= 8 ? __va_savedgpr(ap, type) : __va_stack(ap, type))
-
-#define	__va_fpr(ap, type)						\
-	((ap).__fpr++,							\
-	 (ap).__fpr <= 8 ? __va_savedfpr(ap, type) : __va_stack(ap, type))
-
-#define	va_arg(ap, type)						\
-	(*(type *)(__va_struct(type) ? (*(void **)__va_gpr(ap, void *)) : \
-		   __va_double(type) ? __va_fpr(ap, type) :		\
-		   __va_gpr(ap, type)))
-
-#endif /* __lint__ */
-
-#define	va_end(ap)	
-
-#if __ISO_C_VISIBLE >= 1999
-#if !defined(_ANSI_SOURCE) &&						\
-    (!defined(_POSIX_C_SOURCE) && !defined(_XOPEN_SOURCE) ||		\
-     defined(_ISOC99_SOURCE) || (__STDC_VERSION__ - 0) >= 199901L)
-#define	va_copy(dest, src)						\
-	((dest) = (src))
-#endif
-#endif
-
-#endif /* __GNUCLIKE_BUILTIN_STDARG */
-
-#endif /* _MACHINE_STDARG_H_ */
+#endif /* !_MACHINE_STDARG_H_ */

Modified: head/sys/riscv/include/stdarg.h
==============================================================================
--- head/sys/riscv/include/stdarg.h	Mon Feb 12 14:45:27 2018	(r329162)
+++ head/sys/riscv/include/stdarg.h	Mon Feb 12 14:48:05 2018	(r329163)
@@ -1,8 +1,8 @@
 /*-
- * Copyright (c) 2002 David E. O'Brien.  All rights reserved.
- * Copyright (c) 1991, 1993
- *	The Regents of the University of California.  All rights reserved.
+ * SPDX-License-Identifier: BSD-2-Clause
  *
+ * Copyright (c) 2017 Poul-Henning Kamp.  All rights reserved.
+ *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -11,14 +11,11 @@
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
  *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@@ -27,53 +24,16 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	@(#)stdarg.h	8.1 (Berkeley) 6/10/93
  * $FreeBSD$
  */
 
 #ifndef _MACHINE_STDARG_H_
 #define	_MACHINE_STDARG_H_
 
-#include <sys/cdefs.h>
-#include <sys/_types.h>
+#include <sys/_stdarg.h>
 
-#ifndef _VA_LIST_DECLARED
-#define	_VA_LIST_DECLARED
-typedef	__va_list	va_list;
+#ifndef va_start
+  #error this file needs to be ported to your compiler
 #endif
-
-#ifdef __GNUCLIKE_BUILTIN_STDARG
-
-#define	va_start(ap, last) \
-	__builtin_va_start((ap), (last))
-
-#define	va_arg(ap, type) \
-	__builtin_va_arg((ap), type)
-
-#if __ISO_C_VISIBLE >= 1999
-#define	va_copy(dest, src) \
-	__builtin_va_copy((dest), (src))
-#endif
-
-#define	va_end(ap) \
-	__builtin_va_end(ap)
-
-#elif defined(lint)
-/* Provide a fake implementation for lint's benefit */
-#define	__va_size(type) \
-	(((sizeof(type) + sizeof(long) - 1) / sizeof(long)) * sizeof(long))
-#define	va_start(ap, last) \
-	((ap) = (va_list)&(last) + __va_size(last))
-#define va_copy(dst, src) \
-	((dst) = (src))
-#define	va_arg(ap, type) \
-	(*(type *)((ap) += __va_size(type), (ap) - __va_size(type)))
-#define	va_end(ap)
-
-#else	/* !__GNUCLIKE_BUILTIN_STDARG */
-
-#error no support for your compiler
-
-#endif /* __GNUCLIKE_BUILTIN_STDARG */
 
 #endif /* !_MACHINE_STDARG_H_ */

Modified: head/sys/sparc64/include/stdarg.h
==============================================================================
--- head/sys/sparc64/include/stdarg.h	Mon Feb 12 14:45:27 2018	(r329162)
+++ head/sys/sparc64/include/stdarg.h	Mon Feb 12 14:48:05 2018	(r329163)
@@ -1,19 +1,8 @@
 /*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
+ * SPDX-License-Identifier: BSD-2-Clause
  *
- * Copyright (c) 2002 David E. O'Brien.  All rights reserved.
- * Copyright (c) 1992, 1993
- *	The Regents of the University of California.  All rights reserved.
+ * Copyright (c) 2017 Poul-Henning Kamp.  All rights reserved.
  *
- * This software was developed by the Computer Systems Engineering group
- * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
- * contributed to Berkeley.
- *
- * All advertising materials mentioning features or use of this software
- * must display the following acknowledgement:
- *	This product includes software developed by the University of
- *	California, Lawrence Berkeley Laboratory.
- *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
  * are met:
@@ -23,10 +12,10 @@
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
  *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
@@ -35,69 +24,16 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	@(#)stdarg.h	8.2 (Berkeley) 9/27/93
- *	$NetBSD: stdarg.h,v 1.11 2000/07/23 21:36:56 mycroft Exp $
  * $FreeBSD$
  */
 
 #ifndef _MACHINE_STDARG_H_
 #define	_MACHINE_STDARG_H_
 
-#include <sys/cdefs.h>
-#include <sys/_types.h>
+#include <sys/_stdarg.h>
 
-#ifndef _VA_LIST_DECLARED
-#define	_VA_LIST_DECLARED
-typedef	__va_list	va_list;
+#ifndef va_start
+  #error this file needs to be ported to your compiler
 #endif
-
-#ifdef __GNUCLIKE_BUILTIN_STDARG
-
-#define	va_start(ap, last) \
-	__builtin_va_start((ap), (last))
-
-#define	va_arg(ap, type) \
-	__builtin_va_arg((ap), type)
-
-#if __ISO_C_VISIBLE >= 1999
-#define	va_copy(dest, src) \
-	__builtin_va_copy((dest), (src))
-#endif
-
-#define	va_end(ap) \
-	__builtin_va_end(ap)
-
-#else	/* ! __GNUCLIKE_BUILTIN_STDARG */
-
-#if !defined(__GNUCLIKE_BUILTIN_NEXT_ARG) && !defined(lint)
-#error no support for your compiler
-#endif
-
-#define	va_start(ap, last) \
-	(__builtin_next_arg(last), (ap) = (va_list)__builtin_saveregs())
-
-#define va_end(ap)	
-
-#define	__va_arg8(ap, type) \
-	(*(type *)(void *)((ap) += 8, (ap) - 8))
-#define	__va_arg16(ap, type) \
-	(*(type *)(void *)((ap) = (va_list)(((unsigned long)(ap) + 31) & -16),\
-			   (ap) - 16))
-#define	__va_int(ap, type) \
-	(*(type *)(void *)((ap) += 8, (ap) - sizeof(type)))
-
-#define	__REAL_TYPE_CLASS	8
-#define	__RECORD_TYPE_CLASS	12
-#define va_arg(ap, type) \
-	(__builtin_classify_type(*(type *)0) == __REAL_TYPE_CLASS ?	\
-	 (__alignof__(type) == 16 ? __va_arg16(ap, type) :		\
-	  __va_arg8(ap, type)) :					\
-	 (__builtin_classify_type(*(type *)0) < __RECORD_TYPE_CLASS ?	\
-	  __va_int(ap, type) :						\
-	  (sizeof(type) <= 8 ? __va_arg8(ap, type) :			\
-	   (sizeof(type) <= 16 ? __va_arg16(ap, type) :			\
-	    *__va_arg8(ap, type *)))))
-
-#endif /* __GNUCLIKE_BUILTIN_STDARG */
 
 #endif /* !_MACHINE_STDARG_H_ */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201802121448.w1CEm50c082642>