[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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.