+2009-11-12 Petr Machata <pmachata@redhat.com>
+
+ * core-file.c (dwfl_elf_phdr_memory_callback): Only load ahead if
+ the chunk is both offset-contiguous and vaddr-contiguous.
+
2009-11-05 Roland McGrath <roland@redhat.com>
* link_map.c (report_r_debug): Skip entries with l_ld==0.
|| ((phdr.p_vaddr + phdr.p_memsz + align - 1) & -align) <= vaddr);
GElf_Off start = vaddr - phdr.p_vaddr + phdr.p_offset;
- GElf_Off end = (phdr.p_offset + phdr.p_filesz + align - 1) & -align;
+ GElf_Off end;
+ GElf_Addr end_vaddr;
+
+ inline void update_end ()
+ {
+ end = (phdr.p_offset + phdr.p_filesz + align - 1) & -align;
+ end_vaddr = (phdr.p_vaddr + phdr.p_memsz + align - 1) & -align;
+ }
+
+ update_end ();
/* Use following contiguous segments to get towards SIZE. */
inline bool more (size_t size)
if (phdr.p_type == PT_LOAD)
{
- if (phdr.p_offset > end)
+ if (phdr.p_offset > end
+ || phdr.p_vaddr > end_vaddr)
/* It's discontiguous! */
return false;
- end = (phdr.p_offset + phdr.p_filesz + align - 1) & -align;
+ update_end ();
}
}
return true;