|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT/LIBELF PATCH 4/7] Add `__Unikraft__` configuration
Add `__Unikraft__` as a target to the library configuration:
`_libelf_config.h`
Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
---
_elftc.h | 35 +++++++++++++++++++++++++++++++++++
_libelf_config.h | 45 +++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 80 insertions(+)
diff --git a/_elftc.h b/_elftc.h
index f0fa046..19340cf 100644
--- a/_elftc.h
+++ b/_elftc.h
@@ -378,6 +378,14 @@ struct name {
\
#endif /* __GNUC__ */
#endif
+#if defined(__Unikraft__)
+#if defined(__GNUC__)
+#define ELFTC_VCSID(ID) __asm__(".ident\t\"" ID "\"")
+#else
+#define ELFTC_VCSID(ID) /**/
+#endif /* __GNUC__ */
+#endif
+
#endif /* ELFTC_VCSID */
/*
@@ -418,6 +426,15 @@ extern const char *__progname;
#endif /* __OpenBSD__ */
+
+#if defined(__Unikraft__)
+
+#include <uk/config.h>
+
+#define ELFTC_GETPROGNAME() UK_IMAGE_NAME
+
+#endif /* __Unikraft__ */
+
#endif /* ELFTC_GETPROGNAME */
@@ -536,4 +553,22 @@ extern const char *__progname;
#endif /* __OpenBSD__ */
+#if defined(__Unikraft__)
+
+#include <uk/essentials.h>
+
+#define ELFTC_BYTE_ORDER __BYTE_ORDER
+#define ELFTC_BYTE_ORDER_LITTLE_ENDIAN __LITTLE_ENDIAN
+#define ELFTC_BYTE_ORDER_BIG_ENDIAN __BIG_ENDIAN
+
+#define ELFTC_HAVE_MMAP 0
+#define ELFTC_HAVE_STRMODE 0
+
+/* Whether we need to supply {be,le}32dec. */
+#define ELFTC_NEED_BYTEORDER_EXTENSIONS 0
+
+#define roundup2 ALIGN_UP
+
+#endif /* __Unikraft__ */
+
#endif /* _ELFTC_H */
diff --git a/_libelf_config.h b/_libelf_config.h
index 1b8f35b..57e6b1d 100644
--- a/_libelf_config.h
+++ b/_libelf_config.h
@@ -181,3 +181,48 @@
#endif
#endif /* defined(__linux__) || defined(__GNU__) || defined(__GLIBC__) */
+
+/*
+ * Definitions for Unikraft.
+ */
+#if defined (__Unikraft__)
+
+#include <uk/config.h>
+
+/*
+ * Define LIBELF_{ARCH,BYTEORDER,CLASS} based on the machine architecture.
+ */
+#if (defined CONFIG_ARCH_X86_32)
+#define LIBELF_CLASS ELFCLASS32
+#define LIBELF_ARCH EM_386
+#define LIBELF_BYTEORDER ELFDATA2LSB
+
+#elif (defined CONFIG_ARCH_X86_64)
+#define LIBELF_CLASS ELFCLASS64
+#define LIBELF_ARCH EM_X86_64
+#define LIBELF_BYTEORDER ELFDATA2LSB
+
+#elif (defined CONFIG_ARCH_ARM_32)
+/* Little-Endian Arm */
+#define LIBELF_CLASS ELFCLASS32
+#define LIBELF_ARCH EM_ARM
+#define LIBELF_BYTEORDER ELFDATA2LSB
+
+#elif (defined CONFIG_ARCH_ARM_64)
+#define LIBELF_CLASS ELFCLASS64
+#define LIBELF_ARCH EM_AARCH64
+#define LIBELF_BYTEORDER ELFDATA2LSB
+
+#else
+#error Missing elf-format definition for target architecture
+#endif
+
+#if LIBELF_CLASS == ELFCLASS32
+#define Elf_Note Elf32_Nhdr
+#elif LIBELF_CLASS == ELFCLASS64
+#define Elf_Note Elf64_Nhdr
+#else
+#error LIBELF_CLASS needs to be one of ELFCLASS32 or ELFCLASS64
+#endif
+
+#endif /* defined(__Unikraft__) */
--
2.20.1
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |