diff options
author | Alan Modra <amodra@gmail.com> | 2014-03-12 10:33:26 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2014-03-12 10:33:26 +1030 |
commit | bbefd0a9264348d04783d3d374c2104ae468c799 (patch) | |
tree | b188f383d504038da256dea9a880f192f74a9928 /bfd/elf.c | |
parent | 32ed590d7eb359de7bf8da2e8fd3f43f1cfe0bcf (diff) | |
download | gdb-bbefd0a9264348d04783d3d374c2104ae468c799.zip gdb-bbefd0a9264348d04783d3d374c2104ae468c799.tar.gz gdb-bbefd0a9264348d04783d3d374c2104ae468c799.tar.bz2 |
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.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r-- | bfd/elf.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -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 |