summaryrefslogtreecommitdiff
path: root/include/system/stdarg.h
diff options
context:
space:
mode:
authorPeter Jones <pjones@redhat.com>2021-03-09 11:42:34 -0500
committerPeter Jones <pjones@redhat.com>2021-03-10 15:54:20 -0500
commitf033a1da9f4c3acf7e3dfef906d01e348b6fcf42 (patch)
tree1c325b0dd61cb1bd78b585ca870298fb74f857d4 /include/system/stdarg.h
parent758b795a86589994065099d0af02eb30626a3c21 (diff)
downloadefi-boot-shim-f033a1da9f4c3acf7e3dfef906d01e348b6fcf42.tar.gz
efi-boot-shim-f033a1da9f4c3acf7e3dfef906d01e348b6fcf42.zip
Restructure our includes.
This re-structures our includes so we can be sure everything is always including all the system headers in a uniform, predictable way. Temporarily it also adds a bunch of junk at all the places we use variadic functions to specifically pick either the MS (cdecl) or ELF ABIs. I'm not 100% sure that's all correct (see later patch) but it's enough to allow this to build. Signed-off-by: Peter Jones <pjones@redhat.com>
Diffstat (limited to 'include/system/stdarg.h')
-rw-r--r--include/system/stdarg.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/include/system/stdarg.h b/include/system/stdarg.h
new file mode 100644
index 00000000..346b760d
--- /dev/null
+++ b/include/system/stdarg.h
@@ -0,0 +1,31 @@
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+/*
+ * stdarg.h - try to make consistent va_* handling for EFI
+ */
+#ifdef SHIM_UNIT_TEST
+#include_next <stdarg.h>
+#else
+#ifndef _STDARG_H
+#define _STDARG_H
+
+#include <efistdarg.h>
+
+#endif /* !_STDARG_H */
+#endif
+#ifndef SHIM_STDARG_H_
+#define SHIM_STDARG_H_
+
+typedef __builtin_ms_va_list ms_va_list;
+#define ms_va_copy(dest, start) __builtin_ms_va_copy(dest, start)
+#define ms_va_start(marker, arg) __builtin_ms_va_start(marker, arg)
+#define ms_va_arg(marker, type) __builtin_va_arg(marker, type)
+#define ms_va_end(marker) __builtin_ms_va_end(marker)
+
+typedef __builtin_va_list elf_va_list;
+#define elf_va_copy(dest, start) __builtin_va_copy(dest, start)
+#define elf_va_start(marker, arg) __builtin_va_start(marker, arg)
+#define elf_va_arg(marker, type) __builtin_va_arg(marker, type)
+#define elf_va_end(marker) __builtin_va_end(marker)
+
+#endif /* !SHIM_STDARG_H_ */
+// vim:fenc=utf-8:tw=75:noet