From: Roland McGrath Date: Fri, 2 Dec 2011 17:45:53 +0000 (-0800) Subject: Fix elf_from_remote_memory for ELFCLASS64 case. X-Git-Tag: elfutils-0.153~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=01fef9d502eb1e21ac7b7e8ec9451dc96c72f7ed;p=thirdparty%2Felfutils.git Fix elf_from_remote_memory for ELFCLASS64 case. --- diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 0cfa462db..87a055506 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,9 @@ +2011-12-02 Roland McGrath + + * elf-from-memory.c (elf_from_remote_memory): Fix ELFCLASS64 case + to use elf64_xlatetom and PHDRS.p64. + Reported by Serge Pavlov . + 2011-11-31 Mark Wielaard * dwfl_module_addrsym.c (dwfl_module_addrsym): First search all diff --git a/libdwfl/elf-from-memory.c b/libdwfl/elf-from-memory.c index c0e7c46d7..0fb5f8a37 100644 --- a/libdwfl/elf-from-memory.c +++ b/libdwfl/elf-from-memory.c @@ -1,5 +1,5 @@ /* Reconstruct an ELF file by reading the segments out of remote memory. - Copyright (C) 2005, 2006, 2007 Red Hat, Inc. + Copyright (C) 2005-2011 Red Hat, Inc. This file is part of Red Hat elfutils. Red Hat elfutils is free software; you can redistribute it and/or modify @@ -244,11 +244,11 @@ elf_from_remote_memory (GElf_Addr ehdr_vma, break; case ELFCLASS64: - if (elf32_xlatetom (&xlateto, &xlatefrom, - ehdr.e32.e_ident[EI_DATA]) == NULL) + if (elf64_xlatetom (&xlateto, &xlatefrom, + ehdr.e64.e_ident[EI_DATA]) == NULL) goto libelf_error; for (uint_fast16_t i = 0; i < phnum; ++i) - if (phdrs.p32[i].p_type == PT_LOAD) + if (phdrs.p64[i].p_type == PT_LOAD) handle_segment (phdrs.p64[i].p_vaddr, phdrs.p64[i].p_offset, phdrs.p64[i].p_filesz, phdrs.p64[i].p_align); break;