[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v9 1/8] loader: Allow ELF loader to auto-detect the
From: |
Alistair Francis |
Subject: |
[Qemu-devel] [PATCH v9 1/8] loader: Allow ELF loader to auto-detect the ELF arch |
Date: |
Wed, 13 Jul 2016 17:03:24 -0700 |
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: Alistair Francis <address@hidden>
---
V9:
- Update documentation
V8:
- Move into load_elf64/load_elf32
V7:
- Fix typo
include/hw/elf_ops.h | 5 +++++
include/hw/loader.h | 3 +++
2 files changed, 8 insertions(+)
diff --git a/include/hw/elf_ops.h b/include/hw/elf_ops.h
index f510e7e..db70c11 100644
--- a/include/hw/elf_ops.h
+++ b/include/hw/elf_ops.h
@@ -280,6 +280,11 @@ static int glue(load_elf, SZ)(const char *name, int fd,
glue(bswap_ehdr, SZ)(&ehdr);
}
+ if (elf_machine < 1) {
+ /* 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) {
diff --git a/include/hw/loader.h b/include/hw/loader.h
index 4879b63..fd540fc 100644
--- a/include/hw/loader.h
+++ b/include/hw/loader.h
@@ -68,6 +68,9 @@ 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 no @elf_machine is provided the machine will default to the value
+ * in the ELFs 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),
--
2.7.4
- [Qemu-devel] [PATCH v9 0/8] Add a generic loader, Alistair Francis, 2016/07/13
- [Qemu-devel] [PATCH v9 1/8] loader: Allow ELF loader to auto-detect the ELF arch,
Alistair Francis <=
- [Qemu-devel] [PATCH v9 2/8] loader: Use the specified MemoryRegion, Alistair Francis, 2016/07/13
- [Qemu-devel] [PATCH v9 3/8] loader: Allow a custom AddressSpace when loading ROMs, Alistair Francis, 2016/07/13
- [Qemu-devel] [PATCH v9 4/8] loader: Add AddressSpace loading support to ELFs, Alistair Francis, 2016/07/13
- [Qemu-devel] [PATCH v9 5/8] loader: Add AddressSpace loading support to uImages, Alistair Francis, 2016/07/13
- [Qemu-devel] [PATCH v9 6/8] loader: Add AddressSpace loading support to targphys, Alistair Francis, 2016/07/13