From: Alan Modra Date: Wed, 12 Mar 2014 00:03:26 +0000 (+1030) Subject: objcopy/strip ELF program header p_vaddr confusion X-Git-Tag: gdb-7.8-release~856 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bbefd0a9264348d04783d3d374c2104ae468c799;p=platform%2Fupstream%2Fbinutils.git objcopy/strip ELF program header p_vaddr confusion 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/ChangeLog b/bfd/ChangeLog index fd3135a..c9887c3 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2014-03-12 Alan Modra + + PR 16690 + * elf.c (copy_elf_program_header): Ignore first section lma if + non-alloc. + 2014-03-11 Alan Modra PR 16686 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