[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 |