This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PR16690, objcopy/strip ELF program header p_vaddr confusion
- From: Alan Modra <amodra at gmail dot com>
- To: binutils at sourceware dot org
- Date: Wed, 12 Mar 2014 10:52:51 +1030
- Subject: PR16690, objcopy/strip ELF program header p_vaddr confusion
- Authentication-results: sourceware.org; auth=none
copy_elf_program_header has logic to reject non-alloc sections when
calculating p_vaddr offset for padding, but blithely assumed the
first section in a segment was allocated.
PR 16690
* elf.c (copy_elf_program_header): Ignore first section lma if
non-alloc.
diff --git a/bfd/elf.c b/bfd/elf.c
index ce7878c..3ded683 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -6259,7 +6259,7 @@ copy_elf_program_header (bfd *ibfd, bfd *obfd)
phdr_included = TRUE;
}
- lowest_section = first_section;
+ lowest_section = NULL;
if (section_count != 0)
{
unsigned int isec = 0;
@@ -6276,7 +6276,8 @@ copy_elf_program_header (bfd *ibfd, bfd *obfd)
{
bfd_vma seg_off;
- if (section->lma < lowest_section->lma)
+ if (lowest_section == NULL
+ || section->lma < lowest_section->lma)
lowest_section = section;
/* Section lmas are set up from PT_LOAD header
--
Alan Modra
Australia Development Lab, IBM