summaryrefslogtreecommitdiffstats
path: root/newlib/libc/include/stdio.h
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/include/stdio.h')
-rw-r--r--newlib/libc/include/stdio.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/newlib/libc/include/stdio.h b/newlib/libc/include/stdio.h
index 866d8167d..097b0f665 100644
--- a/newlib/libc/include/stdio.h
+++ b/newlib/libc/include/stdio.h
@@ -35,9 +35,22 @@
#include <sys/cdefs.h>
#include <stddef.h>
+/* typedef only __gnuc_va_list, used throughout the header */
#define __need___va_list
#include <stdarg.h>
+/* typedef va_list only when required */
+#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE
+#ifdef __GNUC__
+#ifndef _VA_LIST_DEFINED
+typedef __gnuc_va_list va_list;
+#define _VA_LIST_DEFINED
+#endif
+#else /* !__GNUC__ */
+#include <stdarg.h>
+#endif
+#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */
+
/*
* <sys/reent.h> defines __FILE, _fpos_t.
* They must be defined there because struct _reent needs them (and we don't