aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaszlo Ersek <lersek@redhat.com>2014-05-20 13:39:45 +0200
committerLuiz Capitulino <lcapitulino@redhat.com>2014-06-11 10:10:28 -0400
commit24aeeace7a9f264688e9eda77b6c04db607cbdfd (patch)
treef85cb83725c609b8dd255dbfe48143540349bbff
parent2f859f80c2077e00237ea1dfae2523ebd8377f5f (diff)
dump: select header bitness based on ELF class, not ELF architecture
The specific ELF architecture (d_machine) carries Too Much Information (TM) for deciding between create_header32() and create_header64(), use "d_class" instead (ELFCLASS32 vs. ELFCLASS64). This change adapts write_dump_header() to write_elf_loads(), dump_begin() etc. that also rely on the ELF class of the target for bitness selection. Considering the current targets that support dumping, cpu_get_dump_info() works as follows: - target-s390x/arch_dump.c: (EM_S390, ELFCLASS64) only - target-ppc/arch_dump.c (EM_PPC64, ELFCLASS64) only - target-i386/arch_dump.c: sets (EM_X86_64, ELFCLASS64) vs. (EM_386, ELFCLASS32) keying off the same Long Mode Active flag. Hence no observable change. Approximately-suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
-rw-r--r--dump.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/dump.c b/dump.c
index e0a606fbbc..7e0982bb5a 100644
--- a/dump.c
+++ b/dump.c
@@ -1000,7 +1000,7 @@ out:
static int write_dump_header(DumpState *s)
{
- if (s->dump_info.d_machine == EM_386) {
+ if (s->dump_info.d_class == ELFCLASS32) {
return create_header32(s);
} else {
return create_header64(s);