[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 4/7] Add `__Unikraft__` configuration



Reviewed-by: Razvan Deaconescu <razvan.deaconescu@xxxxxxxxx>

Simon Kuenzer <simon.kuenzer@xxxxxxxxx> writes:
> 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__) */

_______________________________________________
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®.