aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog6
-rw-r--r--binutils/readelf.c11
2 files changed, 11 insertions, 6 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index f181bdf..b7d4ee0 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,9 @@
+2006-02-02 H.J. Lu <hongjiu.lu@intel.com>
+
+ * readelf.c (process_program_headers): Undo the change made on
+ 2004-09-22. Match PT_DYNAMIC segment only with SHT_DYNAMIC
+ sections.
+
2006-01-30 Nick Clifton <nickc@redhat.com>
* objcopy.c (copy_object): Catch the case where an attempt is made
diff --git a/binutils/readelf.c b/binutils/readelf.c
index f0385d0..04f64ad 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -3405,6 +3405,10 @@ process_program_headers (FILE *file)
for (j = 1; j < elf_header.e_shnum; j++, section++)
{
if (section->sh_size > 0
+ /* PT_DYNAMIC segment contains only SHT_DYNAMIC
+ sections. */
+ && (segment->p_type != PT_DYNAMIC
+ || section->sh_type == SHT_DYNAMIC)
/* Compare allocated sections by VMA, unallocated
sections by file offset. */
&& (section->sh_flags & SHF_ALLOC
@@ -3413,12 +3417,7 @@ process_program_headers (FILE *file)
<= segment->p_vaddr + segment->p_memsz)
: ((bfd_vma) section->sh_offset >= segment->p_offset
&& (section->sh_offset + section->sh_size
- <= segment->p_offset + segment->p_filesz)))
- /* .tbss is special. It doesn't contribute memory space
- to normal segments. */
- && (!((section->sh_flags & SHF_TLS) != 0
- && section->sh_type == SHT_NOBITS)
- || segment->p_type == PT_TLS))
+ <= segment->p_offset + segment->p_filesz))))
printf ("%s ", SECTION_NAME (section));
}