summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/console.h2
-rw-r--r--include/hexdump.h10
-rw-r--r--include/system/efistdarg.h15
-rw-r--r--include/system/stdarg.h41
4 files changed, 46 insertions, 22 deletions
diff --git a/include/console.h b/include/console.h
index d8af3cd3..00982744 100644
--- a/include/console.h
+++ b/include/console.h
@@ -102,7 +102,7 @@ extern UINT32 verbose;
dprint_(L"%a:%d:%a() " fmt, __FILE__, __LINE__ - 1, __func__, \
##__VA_ARGS__)
extern EFI_STATUS EFIAPI vdprint_(const CHAR16 *fmt, const char *file, int line,
- const char *func, elf_va_list args);
+ const char *func, va_list args);
#define vdprint(fmt, ...) \
vdprint_(fmt, __FILE__, __LINE__ - 1, __func__, ##__VA_ARGS__)
diff --git a/include/hexdump.h b/include/hexdump.h
index a6aa2bfa..f778de9a 100644
--- a/include/hexdump.h
+++ b/include/hexdump.h
@@ -81,7 +81,7 @@ prepare_text(const void *data, size_t size, char *buf, unsigned int position)
*/
static inline void UNUSED EFIAPI
vhexdumpf(const char *file, int line, const char *func, const CHAR16 *const fmt,
- const void *data, unsigned long size, size_t at, elf_va_list ap)
+ const void *data, unsigned long size, size_t at, va_list ap)
{
unsigned long display_offset = at;
unsigned long offset = 0;
@@ -114,15 +114,15 @@ vhexdumpf(const char *file, int line, const char *func, const CHAR16 *const fmt,
* hexdump formatted
* think of it as: printf("%s%s", format(fmt, ...), hexdump(data,size)[lineN]);
*/
-static inline void UNUSED
+static inline void UNUSED EFIAPI
hexdumpf(const char *file, int line, const char *func, const CHAR16 *const fmt,
const void *data, unsigned long size, size_t at, ...)
{
- elf_va_list ap;
+ va_list ap;
- elf_va_start(ap, at);
+ va_start(ap, at);
vhexdumpf(file, line, func, fmt, data, size, at, ap);
- elf_va_end(ap);
+ va_end(ap);
}
static inline void UNUSED
diff --git a/include/system/efistdarg.h b/include/system/efistdarg.h
new file mode 100644
index 00000000..837c4f23
--- /dev/null
+++ b/include/system/efistdarg.h
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: BSD-2-Clause-Patent
+/*
+ * efistdarg.h - AAAARGGGG
+ * Copyright Peter Jones <pjones@redhat.com>
+ */
+
+#ifndef SHIM_UNIT_TEST
+#ifndef _EFISTDARG_H_
+#define _EFISTDARG_H_
+
+#include <stdarg.h>
+
+#endif /* !_EFISTDARG_H_ */
+#endif
+// vim:fenc=utf-8:tw=75:noet
diff --git a/include/system/stdarg.h b/include/system/stdarg.h
index 346b760d..af1ac59b 100644
--- a/include/system/stdarg.h
+++ b/include/system/stdarg.h
@@ -8,24 +8,33 @@
#ifndef _STDARG_H
#define _STDARG_H
-#include <efistdarg.h>
-
-#endif /* !_STDARG_H */
+#ifndef GNU_EFI_USE_EXTERNAL_STDARG
+#define GNU_EFI_USE_EXTERNAL_STDARG
#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)
+#if defined(__aarch64__) || defined(__arm__) || defined(__i386__) || \
+ defined(__i486__) || defined(__i686__) || defined(SHIM_UNIT_TEST)
+typedef __builtin_va_list va_list;
+#define va_copy(dest, start) __builtin_va_copy(dest, start)
+#define va_start(marker, arg) __builtin_va_start(marker, arg)
+#define va_arg(marker, type) __builtin_va_arg(marker, type)
+#define va_end(marker) __builtin_va_end(marker)
+#elif defined(__x86_64__)
+typedef __builtin_ms_va_list va_list;
+#define va_copy(dest, start) __builtin_ms_va_copy(dest, start)
+#define va_start(marker, arg) __builtin_ms_va_start(marker, arg)
+#define va_arg(marker, type) __builtin_va_arg(marker, type)
+#define va_end(marker) __builtin_ms_va_end(marker)
+#else
+#error what arch is this
+#endif
-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)
+typedef va_list VA_LIST;
+#define VA_COPY(dest, start) va_copy(dest, start)
+#define VA_START(marker, arg) va_start(marker, arg)
+#define VA_END(marker) va_end(marker)
+#define VA_ARG(marker, type) va_arg(marker, type)
-#endif /* !SHIM_STDARG_H_ */
+#endif /* !_STDARG_H */
+#endif /* !SHIM_UNIT_TEST */
// vim:fenc=utf-8:tw=75:noet