]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
Fix elf_from_remote_memory for ELFCLASS64 case.
authorRoland McGrath <roland@hack.frob.com>
Fri, 2 Dec 2011 17:45:53 +0000 (09:45 -0800)
committerRoland McGrath <roland@hack.frob.com>
Fri, 2 Dec 2011 17:45:53 +0000 (09:45 -0800)
libdwfl/ChangeLog
libdwfl/elf-from-memory.c

index 0cfa462db1677ed47453ab5eec3aca7286fd595f..87a055506da82c9d66a4f01d473585306070fde4 100644 (file)
@@ -1,3 +1,9 @@
+2011-12-02  Roland McGrath  <roland@hack.frob.com>
+
+       * elf-from-memory.c (elf_from_remote_memory): Fix ELFCLASS64 case
+       to use elf64_xlatetom and PHDRS.p64.
+       Reported by Serge Pavlov <serge.pavlov.at.gnu@gmail.com>.
+
 2011-11-31  Mark Wielaard  <mjw@redhat.com>
 
        * dwfl_module_addrsym.c (dwfl_module_addrsym): First search all
index c0e7c46d7769c6f78ecad46a8e94f17071645696..0fb5f8a375d77e84b37d76938058b8762bfc9351 100644 (file)
@@ -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;