On Wed, 29 Dec 2010 02:30:37 +0100, Ted Unangst wrote:
> On Tue, Dec 28, 2010 at 6:59 PM, Tim van der Molen <[email protected]> wrote:
> > So, to conclude, what I would like to propose is the following:
> > * Hide from lint the va_copy() macro in <stdarg.h>.
> > * Add a lint-friendly va_copy() macro to
> > /usr/src/sys/arch/*/include/stdarg.h.
>
> Does adding a lint friendly __va_copy to arch/stdarg.h work?
It does indeed. In fact, some of the stdarg.h headers (e.g. powerpc)
take this approach. Here is a diff for the remaining headers.
Regards,
Tim
Index: sys/arch/alpha/include/stdarg.h
===================================================================
RCS file: /cvs/src/sys/arch/alpha/include/stdarg.h,v
retrieving revision 1.11
diff -u sys/arch/alpha/include/stdarg.h
--- sys/arch/alpha/include/stdarg.h 23 Oct 2008 21:25:07 -0000 1.11
+++ sys/arch/alpha/include/stdarg.h 29 Dec 2010 15:34:10 -0000
@@ -45,6 +45,7 @@
#ifdef lint
#define va_start(ap,lastarg) ((ap) = (ap))
+#define __va_copy(dst, src) ((dst) = (src))
#else
#define va_start(ap, last) \
(__builtin_next_arg(last), (ap) = *(va_list *)__builtin_saveregs(),
(ap).pad = 0)
Index: sys/arch/amd64/include/stdarg.h
===================================================================
RCS file: /cvs/src/sys/arch/amd64/include/stdarg.h,v
retrieving revision 1.6
diff -u sys/arch/amd64/include/stdarg.h
--- sys/arch/amd64/include/stdarg.h 23 Oct 2008 21:25:07 -0000 1.6
+++ sys/arch/amd64/include/stdarg.h 29 Dec 2010 15:34:10 -0000
@@ -49,6 +49,7 @@
#ifdef lint
#define va_start(ap,lastarg) ((ap) = (ap))
+#define __va_copy(dst, src) ((dst) = (src))
#else
#define va_start(ap, last) \
((ap) = (va_list)&(last) + __va_size(last))
Index: sys/arch/hppa/include/stdarg.h
===================================================================
RCS file: /cvs/src/sys/arch/hppa/include/stdarg.h,v
retrieving revision 1.9
diff -u sys/arch/hppa/include/stdarg.h
--- sys/arch/hppa/include/stdarg.h 23 Oct 2008 21:25:07 -0000 1.9
+++ sys/arch/hppa/include/stdarg.h 29 Dec 2010 15:34:10 -0000
@@ -41,6 +41,7 @@
#ifdef lint
#define va_start(ap,lastarg) ((ap) = (ap))
+#define __va_copy(dst, src) ((dst) = (src))
#else
#define va_start(ap,lastarg) ((ap) = (va_list)__builtin_saveregs())
#endif /* lint */
Index: sys/arch/hppa64/include/stdarg.h
===================================================================
RCS file: /cvs/src/sys/arch/hppa64/include/stdarg.h,v
retrieving revision 1.6
diff -u sys/arch/hppa64/include/stdarg.h
--- sys/arch/hppa64/include/stdarg.h 23 Oct 2008 21:25:07 -0000 1.6
+++ sys/arch/hppa64/include/stdarg.h 29 Dec 2010 15:34:10 -0000
@@ -41,6 +41,7 @@
#ifdef lint
#define va_start(ap,lastarg) ((ap) = (ap))
+#define __va_copy(dst, src) ((dst) = (src))
#else
#define va_start(ap,lastarg) ((ap) = (va_list)__builtin_saveregs())
#endif /* lint */
Index: sys/arch/i386/include/stdarg.h
===================================================================
RCS file: /cvs/src/sys/arch/i386/include/stdarg.h,v
retrieving revision 1.13
diff -u sys/arch/i386/include/stdarg.h
--- sys/arch/i386/include/stdarg.h 23 Oct 2008 21:25:07 -0000 1.13
+++ sys/arch/i386/include/stdarg.h 29 Dec 2010 15:34:10 -0000
@@ -45,6 +45,7 @@
#ifdef lint
#define va_start(ap,lastarg) ((ap) = (ap))
+#define __va_copy(dst, src) ((dst) = (src))
#else
#define va_start(ap, last) \
((ap) = (va_list)__builtin_next_arg(last))
Index: sys/arch/sparc64/include/stdarg.h
===================================================================
RCS file: /cvs/src/sys/arch/sparc64/include/stdarg.h,v
retrieving revision 1.7
diff -u sys/arch/sparc64/include/stdarg.h
--- sys/arch/sparc64/include/stdarg.h 23 Oct 2008 21:25:08 -0000 1.7
+++ sys/arch/sparc64/include/stdarg.h 29 Dec 2010 15:34:10 -0000
@@ -57,6 +57,7 @@
#ifdef lint
#define va_start(ap,lastarg) ((ap) = (ap))
+#define __va_copy(dst, src) ((dst) = (src))
#else
#define va_start(ap, last) \
(__builtin_next_arg(last), (ap) = (va_list)__builtin_saveregs())