diff options
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/console/vtxprintf.h | 12 | ||||
-rw-r--r-- | src/include/stdarg.h | 20 | ||||
-rw-r--r-- | src/include/stdio.h | 15 | ||||
-rw-r--r-- | src/include/string.h | 8 |
4 files changed, 39 insertions, 16 deletions
diff --git a/src/include/console/vtxprintf.h b/src/include/console/vtxprintf.h index f6e985c09d..9babd89322 100644 --- a/src/include/console/vtxprintf.h +++ b/src/include/console/vtxprintf.h @@ -15,19 +15,7 @@ #ifndef __CONSOLE_VTXPRINTF_H #define __CONSOLE_VTXPRINTF_H -/* With GCC we use -nostdinc -ffreestanding to keep out system includes. - * Unfortunately this also gets us rid of the _compiler_ includes, like - * stdarg.h. To work around the issue, we define varargs directly here. - * On LLVM we can still just include stdarg.h. - */ -#ifdef __GNUC__ -#define va_start(v, l) __builtin_va_start(v, l) -#define va_end(v) __builtin_va_end(v) -#define va_arg(v, l) __builtin_va_arg(v, l) -typedef __builtin_va_list va_list; -#else #include <stdarg.h> -#endif int vtxprintf(void (*tx_byte)(unsigned char byte, void *data), const char *fmt, va_list args, void *data); diff --git a/src/include/stdarg.h b/src/include/stdarg.h new file mode 100644 index 0000000000..c5a8cd8dbe --- /dev/null +++ b/src/include/stdarg.h @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +/** + * Note: This file is only for POSIX compatibility, and is meant to be + * chain-included via string.h. + */ + +#ifndef STDARG_H +#define STDARG_H + +#include <stddef.h> + +#define va_start(v, l) __builtin_va_start(v, l) +#define va_end(v) __builtin_va_end(v) +#define va_arg(v, l) __builtin_va_arg(v, l) +typedef __builtin_va_list va_list; + +int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); + +#endif /* STDARG_H */ diff --git a/src/include/stdio.h b/src/include/stdio.h new file mode 100644 index 0000000000..d59b9411ee --- /dev/null +++ b/src/include/stdio.h @@ -0,0 +1,15 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +/** + * Note: This file is only for POSIX compatibility, and is meant to be + * chain-included via string.h. + */ + +#ifndef STDIO_H +#define STDIO_H + +#include <stddef.h> + +int snprintf(char *buf, size_t size, const char *fmt, ...); + +#endif /* STDIO_H */ diff --git a/src/include/string.h b/src/include/string.h index b55ca5fba6..f923ca5c02 100644 --- a/src/include/string.h +++ b/src/include/string.h @@ -1,9 +1,11 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + #ifndef STRING_H #define STRING_H +#include <stdarg.h> #include <stddef.h> - -#include <console/vtxprintf.h> +#include <stdio.h> /* Stringify a token */ #ifndef STRINGIFY @@ -16,8 +18,6 @@ void *memmove(void *dest, const void *src, size_t n); void *memset(void *s, int c, size_t n); int memcmp(const void *s1, const void *s2, size_t n); void *memchr(const void *s, int c, size_t n); -int snprintf(char *buf, size_t size, const char *fmt, ...); -int vsnprintf(char *buf, size_t size, const char *fmt, va_list args); char *strdup(const char *s); char *strconcat(const char *s1, const char *s2); size_t strnlen(const char *src, size_t max); |