On 16/06/2025 13:10, John Paul Adrian Glaubitz wrote:
On Mon, 2025-06-16 at 13:05 +0200, Laurent Vivier wrote:I think an e_flags with a new value like EF_M68K_ABI2 would be more appropriate.How is it currently used on m68k and does QEMU use it? I think that would be certainly a way to go.
It's not used by m68k.
It's only used by MIPS.
In QEMU see linux-user/elfload.c:
#ifdef TARGET_ABI_MIPSN32
#define elf_check_abi(x) ((x) & EF_MIPS_ABI2)
#else
#define elf_check_abi(x) (!((x) & EF_MIPS_ABI2))
#endif
#ifndef elf_check_abi
#define elf_check_abi(x) (1)
#endif
/* Verify the portions of EHDR outside of E_IDENT for the target.
This has to wait until after bswapping the header. */
static bool elf_check_ehdr(struct elfhdr *ehdr)
{
return (elf_check_arch(ehdr->e_machine)
&& elf_check_abi(ehdr->e_flags)
&& ehdr->e_ehsize == sizeof(struct elfhdr)
&& ehdr->e_phentsize == sizeof(struct elf_phdr)
&& (ehdr->e_type == ET_EXEC || ehdr->e_type == ET_DYN));
}
...
static void load_elf_image(const char *image_name, const ImageSource *src,
struct image_info *info, struct elfhdr *ehdr,
char **pinterp_name)
...
if (!elf_check_ehdr(ehdr)) {
error_setg(&err, "Invalid ELF image for this architecture");
goto exit_errmsg;
}
...
Thanks,
Laurent