Commit 8cf6e9da authored by Alistair Francis's avatar Alistair Francis Committed by Peter Maydell
Browse files

loader: Allow ELF loader to auto-detect the ELF arch



If the caller didn't specify an architecture for the ELF machine
the load_elf() function will auto detect it based on the ELF file.

Signed-off-by: default avatarAlistair Francis <alistair.francis@xilinx.com>
Reviewed-by: default avatarPeter Maydell <peter.maydell@linaro.org>
Message-id: f2d70b47fcad31445f947f8817a0e146d80a046b.1474331683.git.alistair.francis@xilinx.com
Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parent 1372fc0b
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -280,6 +280,11 @@ static int glue(load_elf, SZ)(const char *name, int fd,
        glue(bswap_ehdr, SZ)(&ehdr);
    }

    if (elf_machine <= EM_NONE) {
        /* The caller didn't specify an ARCH, we can figure it out */
        elf_machine = ehdr.e_machine;
    }

    switch (elf_machine) {
        case EM_PPC64:
            if (ehdr.e_machine != EM_PPC64) {
+2 −0
Original line number Diff line number Diff line
@@ -68,6 +68,8 @@ const char *load_elf_strerror(int error);
 * load will fail if the target ELF does not match. Some architectures
 * have some architecture-specific behaviours that come into effect when
 * their particular values for @elf_machine are set.
 * If @elf_machine is EM_NONE then the machine type will be read from the
 * ELF header and no checks will be carried out against the machine type.
 */

int load_elf(const char *filename, uint64_t (*translate_fn)(void *, uint64_t),