linux-user: Move arch_parse_elf_property to aarch64/elfload.c
Rename the controlling macro to HAVE_ELF_GNU_PROPERTY to match the other HAVE_* macros. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
dd1d0239a7
commit
8218eb6f52
4 changed files with 32 additions and 31 deletions
|
|
@ -1,10 +1,12 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qemu.h"
|
||||
#include "loader.h"
|
||||
#include "target/arm/cpu-features.h"
|
||||
#include "target_elf.h"
|
||||
#include "elf.h"
|
||||
|
||||
|
||||
const char *get_elf_cpu_model(uint32_t eflags)
|
||||
|
|
@ -349,6 +351,22 @@ const char *get_elf_platform(CPUState *cs)
|
|||
return TARGET_BIG_ENDIAN ? "aarch64_be" : "aarch64";
|
||||
}
|
||||
|
||||
bool arch_parse_elf_property(uint32_t pr_type, uint32_t pr_datasz,
|
||||
const uint32_t *data,
|
||||
struct image_info *info,
|
||||
Error **errp)
|
||||
{
|
||||
if (pr_type == GNU_PROPERTY_AARCH64_FEATURE_1_AND) {
|
||||
if (pr_datasz != sizeof(uint32_t)) {
|
||||
error_setg(errp, "Ill-formed GNU_PROPERTY_AARCH64_FEATURE_1_AND");
|
||||
return false;
|
||||
}
|
||||
/* We will extract GNU_PROPERTY_AARCH64_FEATURE_1_BTI later. */
|
||||
info->note_flags = *data;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void elf_core_copy_regs(target_elf_gregset_t *r, const CPUARMState *env)
|
||||
{
|
||||
for (int i = 0; i < 31; i++) {
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#define HAVE_ELF_HWCAP2 1
|
||||
#define HAVE_ELF_PLATFORM 1
|
||||
#define HAVE_ELF_CORE_DUMP 1
|
||||
#define HAVE_ELF_GNU_PROPERTY 1
|
||||
|
||||
/*
|
||||
* See linux kernel: arch/arm64/include/asm/elf.h, where
|
||||
|
|
|
|||
|
|
@ -166,41 +166,18 @@ const char *get_elf_platform(CPUState *cs) { return NULL; }
|
|||
const char *get_elf_base_platform(CPUState *cs) { return NULL; }
|
||||
#endif
|
||||
|
||||
#include "elf.h"
|
||||
|
||||
/* We must delay the following stanzas until after "elf.h". */
|
||||
#if defined(TARGET_AARCH64)
|
||||
|
||||
static bool arch_parse_elf_property(uint32_t pr_type, uint32_t pr_datasz,
|
||||
const uint32_t *data,
|
||||
struct image_info *info,
|
||||
Error **errp)
|
||||
{
|
||||
if (pr_type == GNU_PROPERTY_AARCH64_FEATURE_1_AND) {
|
||||
if (pr_datasz != sizeof(uint32_t)) {
|
||||
error_setg(errp, "Ill-formed GNU_PROPERTY_AARCH64_FEATURE_1_AND");
|
||||
return false;
|
||||
}
|
||||
/* We will extract GNU_PROPERTY_AARCH64_FEATURE_1_BTI later. */
|
||||
info->note_flags = *data;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#define ARCH_USE_GNU_PROPERTY 1
|
||||
|
||||
#else
|
||||
|
||||
static bool arch_parse_elf_property(uint32_t pr_type, uint32_t pr_datasz,
|
||||
const uint32_t *data,
|
||||
struct image_info *info,
|
||||
Error **errp)
|
||||
#ifndef HAVE_ELF_GNU_PROPERTY
|
||||
bool arch_parse_elf_property(uint32_t pr_type, uint32_t pr_datasz,
|
||||
const uint32_t *data, struct image_info *info,
|
||||
Error **errp)
|
||||
{
|
||||
g_assert_not_reached();
|
||||
}
|
||||
#define ARCH_USE_GNU_PROPERTY 0
|
||||
|
||||
#define HAVE_ELF_GNU_PROPERTY 0
|
||||
#endif
|
||||
|
||||
#include "elf.h"
|
||||
|
||||
struct exec
|
||||
{
|
||||
unsigned int a_info; /* Use macros N_MAGIC, etc for access */
|
||||
|
|
@ -1233,7 +1210,7 @@ static bool parse_elf_properties(const ImageSource *src,
|
|||
uint32_t prev_type;
|
||||
|
||||
/* Unless the arch requires properties, ignore them. */
|
||||
if (!ARCH_USE_GNU_PROPERTY) {
|
||||
if (!HAVE_ELF_GNU_PROPERTY) {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -122,4 +122,9 @@ typedef struct {
|
|||
/* Note that both Elf32_Word and Elf64_Word are uint32_t. */
|
||||
const VdsoImageInfo *get_vdso_image_info(uint32_t elf_flags);
|
||||
|
||||
bool arch_parse_elf_property(uint32_t pr_type, uint32_t pr_datasz,
|
||||
const uint32_t *data,
|
||||
struct image_info *info,
|
||||
Error **errp);
|
||||
|
||||
#endif /* LINUX_USER_LOADER_H */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue