From 3951afd2fa6140f85a94c9636ac2d9e9d3a1c764 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 2 Jun 2010 12:58:00 -0500 Subject: ARM: Detect thumb mode elf images. --- src/base/loader/elf_object.cc | 7 ++++++- src/base/loader/object_file.hh | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src/base/loader') diff --git a/src/base/loader/elf_object.cc b/src/base/loader/elf_object.cc index 60f0f99b4..6096cb2e3 100644 --- a/src/base/loader/elf_object.cc +++ b/src/base/loader/elf_object.cc @@ -34,6 +34,7 @@ #include "gelf.h" +#include "base/bitfield.hh" #include "base/loader/elf_object.hh" #include "base/loader/symtab.hh" #include "base/misc.hh" @@ -96,7 +97,11 @@ ElfObject::tryFile(const string &fname, int fd, size_t len, uint8_t *data) } else if (ehdr.e_ident[EI_CLASS] == ELFCLASS64) { arch = ObjectFile::Alpha; } else if (ehdr.e_machine == EM_ARM) { - arch = ObjectFile::Arm; + if (bits(ehdr.e_entry, 0)) { + arch = ObjectFile::Thumb; + } else { + arch = ObjectFile::Arm; + } } else if (ehdr.e_machine == EM_PPC && ehdr.e_ident[EI_CLASS] == ELFCLASS32) { if (ehdr.e_ident[EI_DATA] == ELFDATA2MSB) { diff --git a/src/base/loader/object_file.hh b/src/base/loader/object_file.hh index b08f1c633..bffab0cc5 100644 --- a/src/base/loader/object_file.hh +++ b/src/base/loader/object_file.hh @@ -53,6 +53,7 @@ class ObjectFile X86_64, I386, Arm, + Thumb, Power }; -- cgit v1.2.3