bug-binutils
[Top][All Lists]
Advanced

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

[Bug binutils/18672] New: readelf does not show the last entries in .dyn


From: simon at atanasyan dot com
Subject: [Bug binutils/18672] New: readelf does not show the last entries in .dynamic section
Date: Tue, 14 Jul 2015 17:24:42 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=18672

            Bug ID: 18672
           Summary: readelf does not show the last entries in .dynamic
                    section
           Product: binutils
           Version: 2.25
            Status: NEW
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: simon at atanasyan dot com
  Target Milestone: ---

Created attachment 8438
  --> https://sourceware.org/bugzilla/attachment.cgi?id=8438&action=edit
Patch to fix the bug

readelf does not show the last entries in .dynamic section under the following
conditions:
 - readelf is built for a target with 64-bit pointers
 - readelf input is a binary built for a target with 32-bit pointer
 - .dynamic section size exactly equals to number of entries * 4-byte

The problem is in the following code from the get_32bit_dynamic_section
function. Suppose the last two entries in the .dynamic section is DT_PLTGOT and
DT_NULL. They both occupy 16 bytes. On 64-bit host the size of Elf_Internal_Dyn
is 16 bytes so the readelf stops iterating too early and misses the DT_PLTGOT
entry. Attached patch fixes the bug.

    Elf32_External_Dyn * edyn;
    Elf32_External_Dyn * ext;
    Elf_Internal_Dyn * entry;

    ...

    for (ext = edyn, dynamic_nent = 0;
         (char *) ext < (char *) edyn + dynamic_size - sizeof (* entry);
         ext++)
      {

-- 
You are receiving this mail because:
You are on the CC list for the bug.



reply via email to

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