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:
parent
e1ef71de2b
commit
0fe0f2515b
@ -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*/
|
||||
|
@ -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_ */
|
||||
|
Loading…
x
Reference in New Issue
Block a user