bug-gnu-utils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

BFD assumes ELF phdrs in core files are just after ELF header


From: Miloslav Trmac
Subject: BFD assumes ELF phdrs in core files are just after ELF header
Date: Fri, 15 Dec 2000 14:59:36 +0100
User-agent: Mutt/1.2.5i

Hi,
BFD in binutils 2.10.1 (affects gdb 5.0 as well) assumes that program headers
in ELF core files immediatelly follow the ELF header. To reproduce, look at
the attached core file:
        'readelf -a core' says:
Elf file type is CORE (Core file)
Entry point 0x0
There are 13 program headers, starting at offset 284

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  NOTE           0x000034 0x00000000 0x00000000 0x000e8 0x00000     0
  LOAD           0x001000 0x00000000 0x00000000 0x00000 0x8048000     0
  LOAD           0x001000 0x08048000 0x00000000 0x00000 0x05000 R E 0
  LOAD           0x001000 0x0804d000 0x00000000 0x01000 0x01000 R E 0
  LOAD           0x002000 0x0804e000 0x00000000 0x01000 0x01000 RWE 0
  LOAD           0x003000 0xbf7c2000 0x00000000 0x00000 0x01000 R E 0
  LOAD           0x003000 0xbf7c4000 0x00000000 0x00000 0x01000 R E 0
  LOAD           0x003000 0xbf7c5000 0x00000000 0x400000 0x400000 RWE 0
  LOAD           0x403000 0xbfbc5000 0x00000000 0x01000 0x01000 RWE 0
  LOAD           0x404000 0xbfbc6000 0x00000000 0x400000 0x400000 RWE 0
  LOAD           0x804000 0xbffc6000 0x00000000 0x00000 0x37000 R E 0
  LOAD           0x804000 0xbfffd000 0x00000000 0x01000 0x01000 R E 0
  LOAD           0x805000 0xbfffe000 0x00000000 0x02000 0x02000 RWE 0
        but 'objdump -p core' says:

core:     file format elf32-i386

Program Header:
   SHLIB off    0x00000060 vaddr 0x00000001 paddr 0x45524f43 align 2**31
         filesz 0x00000000 memsz 0x0000000e flags ---
    LOAD off    0x00000000 vaddr 0x0000001b paddr 0x0000000e align 2**31
         filesz 0x0000002c memsz 0xfffffff3 flags --- bf7c68c8
    NULL off    0x00001000 vaddr 0xbf7c68c8 paddr 0x00000000 align 2**0
         filesz 0xbffc5d44 memsz 0x0804c3a7 flags rw- 200
    NULL off    0x0000002c vaddr 0x0000002a paddr 0x0000002a align 2**1
         filesz 0x00000001 memsz 0x00000005 flags --- 60
0x45524f43 off    0x00000000 vaddr 0x00746163 paddr 0x00000000 align 2**0
         filesz 0x00000000 memsz 0x00000000 flags -wx 20746160
    NULL off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**0
         filesz 0x00000000 memsz 0x00000000 flags ---
    NULL off    0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**0
         filesz 0x00000000 memsz 0x00000000 flags ---
    NULL off    0x00000000 vaddr 0x00000004 paddr 0x00000034 align 2**0
         filesz 0x00000000 memsz 0x00000000 flags --- e8
    NULL off    0x00000000 vaddr 0x00000001 paddr 0x00001000 align 2**27
         filesz 0x00000000 memsz 0x00000000 flags ---
    NULL off    0x00000000 vaddr 0x00000001 paddr 0x00001000 align 2**14
         filesz 0x08048000 memsz 0x00000000 flags ---
   SHLIB off    0x00000000 vaddr 0x00000001 paddr 0x00001000 align 2**12
         filesz 0x0804d000 memsz 0x00000000 flags --- 1000
   SHLIB off    0x00000000 vaddr 0x00000001 paddr 0x00002000 align 2**12
         filesz 0x0804e000 memsz 0x00000000 flags --- 1000
     0x7 off    0x00000000 vaddr 0x00000001 paddr 0x00003000 align 2**12
         filesz 0xbf7c2000 memsz 0x00000000 flags ---
This is completely bogus, and is made from the data directly following the
ELF header, which is in fact occupied by the note segment.

Possible fix (completely untested! - not even that it compiles):
----------------------------------------------------------------
--- elfcore.h.orig      Fri Dec 15 14:54:50 2000
+++ elfcore.h   Fri Dec 15 14:56:32 2000
@@ -193,6 +193,8 @@

   elf_tdata (abfd)->phdr = i_phdrp;

+  if (bfd_seek (abfd, i_ehdrp->e_phoff, SEEK_SET) != 0)
+    return NULL;
   /* Read and convert to internal form. */
   for (phindex = 0; phindex < i_ehdrp->e_phnum; ++phindex)
     {
----------------------------------------------------------------
Thanks.
        Mirek

Attachment: core.bz2
Description: core.bz2


reply via email to

[Prev in Thread] Current Thread [Next in Thread]