aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2011-02-08 09:40:05 +0000
committerNick Clifton <nickc@redhat.com>2011-02-08 09:40:05 +0000
commit82f2dbf73d32c8c82e62d2073a99da8b1ec03fa1 (patch)
tree3005705c64e9bb89aa75c953be12568983265bf9 /bfd/elf.c
parent84ced98a310603805f69d4d6616e02a196232438 (diff)
downloadbinutils-82f2dbf73d32c8c82e62d2073a99da8b1ec03fa1.zip
binutils-82f2dbf73d32c8c82e62d2073a99da8b1ec03fa1.tar.gz
binutils-82f2dbf73d32c8c82e62d2073a99da8b1ec03fa1.tar.bz2
PR binutils/12467
* readelf.c (process_program_headers): Issue a warning if there are no program headers but the file header has a non-zero program header offset. (process_section_headers): Issue a warning if there are no section headers but the file header has a non-zero section header offset. (process_section_groups): Reword the no section message so that it can be distinguished from the one issued by process_section_headers. * elf.c (assign_file_positions_for_load_sections): Set the program header offset and entry size to zero if there are no program headers.
Diffstat (limited to 'bfd/elf.c')
-rw-r--r--bfd/elf.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/bfd/elf.c b/bfd/elf.c
index 257cc8c..c77dced 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -4334,8 +4334,18 @@ assign_file_positions_for_load_sections (bfd *abfd,
header_pad = m->header_size;
}
- elf_elfheader (abfd)->e_phoff = bed->s->sizeof_ehdr;
- elf_elfheader (abfd)->e_phentsize = bed->s->sizeof_phdr;
+ if (alloc)
+ {
+ elf_elfheader (abfd)->e_phoff = bed->s->sizeof_ehdr;
+ elf_elfheader (abfd)->e_phentsize = bed->s->sizeof_phdr;
+ }
+ else
+ {
+ /* PR binutils/12467. */
+ elf_elfheader (abfd)->e_phoff = 0;
+ elf_elfheader (abfd)->e_phentsize = 0;
+ }
+
elf_elfheader (abfd)->e_phnum = alloc;
if (elf_tdata (abfd)->program_header_size == (bfd_size_type) -1)