diff options
-rw-r--r-- | bfd/ChangeLog | 3 | ||||
-rw-r--r-- | bfd/elf.c | 9 |
2 files changed, 10 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a0d55eb..65d3a5c 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -5,6 +5,9 @@ Fri Jan 12 15:27:59 1996 Michael Meissner <meissner@tiktok.cygnus.com> Fri Jan 12 13:59:16 1996 Ian Lance Taylor <ian@cygnus.com> + * elf.c (assign_file_positions_for_segments): If a segment + contains no sections, don't mark it as readable. + * elf-bfd.h (_bfd_elf_section_from_bfd_section): Declare. * elfcode.h (_bfd_elf_section_from_bfd_section): Don't declare. @@ -1908,6 +1908,8 @@ assign_file_positions_for_segments (abfd) if (m->p_flags_valid) p->p_flags = m->p_flags; + else + p->p_flags = 0; if (p->p_type == PT_LOAD && m->count > 0) off += (m->sections[0]->vma - off) % bed->maxpagesize; @@ -1937,6 +1939,8 @@ assign_file_positions_for_segments (abfd) if (m->includes_filehdr) { + if (! m->p_flags_valid) + p->p_flags |= PF_R; p->p_offset = 0; p->p_filesz = bed->s->sizeof_ehdr; p->p_memsz = bed->s->sizeof_ehdr; @@ -1956,6 +1960,8 @@ assign_file_positions_for_segments (abfd) if (m->includes_phdrs) { + if (! m->p_flags_valid) + p->p_flags |= PF_R; if (m->includes_filehdr) { if (p->p_type == PT_LOAD) @@ -1998,8 +2004,6 @@ assign_file_positions_for_segments (abfd) } } - if (! m->p_flags_valid) - p->p_flags = PF_R; for (i = 0, secpp = m->sections; i < m->count; i++, secpp++) { asection *sec; @@ -2043,6 +2047,7 @@ assign_file_positions_for_segments (abfd) if (! m->p_flags_valid) { + p->p_flags |= PF_R; if ((flags & SEC_CODE) != 0) p->p_flags |= PF_X; if ((flags & SEC_READONLY) == 0) |