提交 d276a604 编写于 作者: P Peter Crosthwaite 提交者: Paolo Bonzini

linux-user: elfload: Provide default for elf_check_arch

For many arch's this macro is defined as the predicatable behaviour
of checking the argument for eqaulity against ELF_ARCH. Provide a
default define as such, so only archs with special handling (usually
allowing multiple EM values) need to provide a def.

Arches that do any of:

1: provide this def exactly the same way as the new default
        (alpha, x86_64)
2: check against ELF_MACHINE while defining ELF_ARCH == ELF_MACHINE
        (arm, aarch64)
3: check against EM_FOO directly while defining ELF_ARCH == EM_FOO
        (unicore32, sparc32, ppc32, mips, openrisc, sh4, cris, m86k)

have their elf_check_arch removed as the default will provide the
correct behaviour.
Reviewed-by: NRichard Henderson <rth@twiddle.net>
Acked-By: NRiku Voipio <riku.voipio@linaro.org>
Signed-off-by: NPeter Crosthwaite <crosthwaite.peter@gmail.com>
Signed-off-by: NPaolo Bonzini <pbonzini@redhat.com>
上级 75be901c
...@@ -145,7 +145,6 @@ static uint32_t get_elf_hwcap(void) ...@@ -145,7 +145,6 @@ static uint32_t get_elf_hwcap(void)
#ifdef TARGET_X86_64 #ifdef TARGET_X86_64
#define ELF_START_MMAP 0x2aaaaab000ULL #define ELF_START_MMAP 0x2aaaaab000ULL
#define elf_check_arch(x) ( ((x) == ELF_ARCH) )
#define ELF_CLASS ELFCLASS64 #define ELF_CLASS ELFCLASS64
#define ELF_ARCH EM_X86_64 #define ELF_ARCH EM_X86_64
...@@ -273,8 +272,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUX86State *en ...@@ -273,8 +272,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUX86State *en
#define ELF_START_MMAP 0x80000000 #define ELF_START_MMAP 0x80000000
#define elf_check_arch(x) ((x) == ELF_MACHINE)
#define ELF_ARCH ELF_MACHINE #define ELF_ARCH ELF_MACHINE
#define ELF_CLASS ELFCLASS32 #define ELF_CLASS ELFCLASS32
...@@ -481,8 +478,6 @@ static uint32_t get_elf_hwcap2(void) ...@@ -481,8 +478,6 @@ static uint32_t get_elf_hwcap2(void)
/* 64 bit ARM definitions */ /* 64 bit ARM definitions */
#define ELF_START_MMAP 0x80000000 #define ELF_START_MMAP 0x80000000
#define elf_check_arch(x) ((x) == ELF_MACHINE)
#define ELF_ARCH ELF_MACHINE #define ELF_ARCH ELF_MACHINE
#define ELF_CLASS ELFCLASS64 #define ELF_CLASS ELFCLASS64
#define ELF_PLATFORM "aarch64" #define ELF_PLATFORM "aarch64"
...@@ -556,8 +551,6 @@ static uint32_t get_elf_hwcap(void) ...@@ -556,8 +551,6 @@ static uint32_t get_elf_hwcap(void)
#define ELF_START_MMAP 0x80000000 #define ELF_START_MMAP 0x80000000
#define elf_check_arch(x) ((x) == EM_UNICORE32)
#define ELF_CLASS ELFCLASS32 #define ELF_CLASS ELFCLASS32
#define ELF_DATA ELFDATA2LSB #define ELF_DATA ELFDATA2LSB
#define ELF_ARCH EM_UNICORE32 #define ELF_ARCH EM_UNICORE32
...@@ -666,7 +659,6 @@ static inline void init_thread(struct target_pt_regs *regs, ...@@ -666,7 +659,6 @@ static inline void init_thread(struct target_pt_regs *regs,
#define ELF_START_MMAP 0x80000000 #define ELF_START_MMAP 0x80000000
#define ELF_HWCAP (HWCAP_SPARC_FLUSH | HWCAP_SPARC_STBAR | HWCAP_SPARC_SWAP \ #define ELF_HWCAP (HWCAP_SPARC_FLUSH | HWCAP_SPARC_STBAR | HWCAP_SPARC_SWAP \
| HWCAP_SPARC_MULDIV) | HWCAP_SPARC_MULDIV)
#define elf_check_arch(x) ( (x) == EM_SPARC )
#define ELF_CLASS ELFCLASS32 #define ELF_CLASS ELFCLASS32
#define ELF_ARCH EM_SPARC #define ELF_ARCH EM_SPARC
...@@ -696,8 +688,6 @@ static inline void init_thread(struct target_pt_regs *regs, ...@@ -696,8 +688,6 @@ static inline void init_thread(struct target_pt_regs *regs,
#else #else
#define elf_check_arch(x) ( (x) == EM_PPC )
#define ELF_CLASS ELFCLASS32 #define ELF_CLASS ELFCLASS32
#endif #endif
...@@ -875,8 +865,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUPPCState *en ...@@ -875,8 +865,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUPPCState *en
#define ELF_START_MMAP 0x80000000 #define ELF_START_MMAP 0x80000000
#define elf_check_arch(x) ( (x) == EM_MIPS )
#ifdef TARGET_MIPS64 #ifdef TARGET_MIPS64
#define ELF_CLASS ELFCLASS64 #define ELF_CLASS ELFCLASS64
#else #else
...@@ -985,8 +973,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUMBState *env ...@@ -985,8 +973,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUMBState *env
#define ELF_START_MMAP 0x08000000 #define ELF_START_MMAP 0x08000000
#define elf_check_arch(x) ((x) == EM_OPENRISC)
#define ELF_ARCH EM_OPENRISC #define ELF_ARCH EM_OPENRISC
#define ELF_CLASS ELFCLASS32 #define ELF_CLASS ELFCLASS32
#define ELF_DATA ELFDATA2MSB #define ELF_DATA ELFDATA2MSB
...@@ -1026,8 +1012,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, ...@@ -1026,8 +1012,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs,
#define ELF_START_MMAP 0x80000000 #define ELF_START_MMAP 0x80000000
#define elf_check_arch(x) ( (x) == EM_SH )
#define ELF_CLASS ELFCLASS32 #define ELF_CLASS ELFCLASS32
#define ELF_ARCH EM_SH #define ELF_ARCH EM_SH
...@@ -1110,8 +1094,6 @@ static uint32_t get_elf_hwcap(void) ...@@ -1110,8 +1094,6 @@ static uint32_t get_elf_hwcap(void)
#define ELF_START_MMAP 0x80000000 #define ELF_START_MMAP 0x80000000
#define elf_check_arch(x) ( (x) == EM_CRIS )
#define ELF_CLASS ELFCLASS32 #define ELF_CLASS ELFCLASS32
#define ELF_ARCH EM_CRIS #define ELF_ARCH EM_CRIS
...@@ -1129,8 +1111,6 @@ static inline void init_thread(struct target_pt_regs *regs, ...@@ -1129,8 +1111,6 @@ static inline void init_thread(struct target_pt_regs *regs,
#define ELF_START_MMAP 0x80000000 #define ELF_START_MMAP 0x80000000
#define elf_check_arch(x) ( (x) == EM_68K )
#define ELF_CLASS ELFCLASS32 #define ELF_CLASS ELFCLASS32
#define ELF_ARCH EM_68K #define ELF_ARCH EM_68K
...@@ -1182,8 +1162,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUM68KState *e ...@@ -1182,8 +1162,6 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs, const CPUM68KState *e
#define ELF_START_MMAP (0x30000000000ULL) #define ELF_START_MMAP (0x30000000000ULL)
#define elf_check_arch(x) ( (x) == ELF_ARCH )
#define ELF_CLASS ELFCLASS64 #define ELF_CLASS ELFCLASS64
#define ELF_ARCH EM_ALPHA #define ELF_ARCH EM_ALPHA
...@@ -1203,8 +1181,6 @@ static inline void init_thread(struct target_pt_regs *regs, ...@@ -1203,8 +1181,6 @@ static inline void init_thread(struct target_pt_regs *regs,
#define ELF_START_MMAP (0x20000000000ULL) #define ELF_START_MMAP (0x20000000000ULL)
#define elf_check_arch(x) ( (x) == ELF_ARCH )
#define ELF_CLASS ELFCLASS64 #define ELF_CLASS ELFCLASS64
#define ELF_DATA ELFDATA2MSB #define ELF_DATA ELFDATA2MSB
#define ELF_ARCH EM_S390 #define ELF_ARCH EM_S390
...@@ -1249,6 +1225,10 @@ static inline void init_thread(struct target_pt_regs *regs, ...@@ -1249,6 +1225,10 @@ static inline void init_thread(struct target_pt_regs *regs,
#define ELF_MACHINE ELF_ARCH #define ELF_MACHINE ELF_ARCH
#endif #endif
#ifndef elf_check_arch
#define elf_check_arch(x) ((x) == ELF_ARCH)
#endif
#ifndef ELF_HWCAP #ifndef ELF_HWCAP
#define ELF_HWCAP 0 #define ELF_HWCAP 0
#endif #endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册