Provide a fake varargs implementation for lint's benefit. This way

it can see the intent of the va_* macros, even though it cannot work.

Approved by:	re (blanket amd64/*)
This commit is contained in:
Peter Wemm 2003-05-10 00:55:15 +00:00
parent e1ef71de2b
commit 0fe0f2515b
2 changed files with 17 additions and 0 deletions

View File

@ -96,7 +96,11 @@ typedef __uint64_t __vm_size_t;
/*
* Unusual type definitions.
*/
#if defined(__GNUC__)
typedef __builtin_va_list __va_list; /* internally known to gcc */
#elif defined(lint)
typedef char * __va_list; /* pretend */
#endif
#if defined __GNUC__ && !defined(__GNUC_VA_LIST) && !defined(__NO_GNUC_VA_LIST)
#define __GNUC_VA_LIST
typedef __va_list __gnuc_va_list; /* compatibility w/GNU headers*/

View File

@ -39,6 +39,7 @@
typedef __va_list va_list;
#endif
#if defined(__GNUC__)
#define va_start(ap, last) \
__builtin_stdarg_start((ap), (last))
@ -53,4 +54,16 @@ typedef __va_list va_list;
#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_arg(ap, type) \
(*(type *)((ap) += __va_size(type), (ap) - __va_size(type)))
#define va_end(ap)
#endif
#endif /* !_MACHINE_STDARG_H_ */