diff options
author | Christophe Lyon | 2018-04-30 10:03:42 +0200 |
---|---|---|
committer | Laurent Vivier | 2018-05-03 18:25:29 +0200 |
commit | cf58affecc67e1b22bdbd3dc90e19ad2d4b1ce3d (patch) | |
tree | 1488cc7fdd82725dda410598bd1c2ea923ef57d8 | |
parent | Remove CONFIG_USE_FDPIC. (diff) | |
download | qemu-cf58affecc67e1b22bdbd3dc90e19ad2d4b1ce3d.tar.gz qemu-cf58affecc67e1b22bdbd3dc90e19ad2d4b1ce3d.tar.xz qemu-cf58affecc67e1b22bdbd3dc90e19ad2d4b1ce3d.zip |
linux-user: ARM-FDPIC: Identify ARM FDPIC binaries
Define an ARM-specific version of elf_is_fdpic:
FDPIC ELF objects are identified with e_ident[EI_OSABI] ==
ELFOSABI_ARM_FDPIC.
Co-Authored-By: Mickaël Guêné <mickael.guene@st.com>
Signed-off-by: Christophe Lyon <christophe.lyon@st.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20180430080404.7323-3-christophe.lyon@st.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
-rw-r--r-- | include/elf.h | 1 | ||||
-rw-r--r-- | linux-user/elfload.c | 7 |
2 files changed, 8 insertions, 0 deletions
diff --git a/include/elf.h b/include/elf.h index c0dc9bb5fd..934dbbd6b3 100644 --- a/include/elf.h +++ b/include/elf.h @@ -1483,6 +1483,7 @@ typedef struct elf64_shdr { #define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX. */ #define ELFOSABI_MODESTO 11 /* Novell Modesto. */ #define ELFOSABI_OPENBSD 12 /* OpenBSD. */ +#define ELFOSABI_ARM_FDPIC 65 /* ARM FDPIC */ #define ELFOSABI_ARM 97 /* ARM */ #define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */ diff --git a/linux-user/elfload.c b/linux-user/elfload.c index bbe93b03b6..76d7718b3d 100644 --- a/linux-user/elfload.c +++ b/linux-user/elfload.c @@ -1681,11 +1681,18 @@ static void zero_bss(abi_ulong elf_bss, abi_ulong last_bss, int prot) } } +#ifdef TARGET_ARM +static int elf_is_fdpic(struct elfhdr *exec) +{ + return exec->e_ident[EI_OSABI] == ELFOSABI_ARM_FDPIC; +} +#else /* Default implementation, always false. */ static int elf_is_fdpic(struct elfhdr *exec) { return 0; } +#endif static abi_ulong loader_build_fdpic_loadmap(struct image_info *info, abi_ulong sp) { |