From: Ian Lance Taylor Date: Fri, 12 Jan 1996 22:47:04 +0000 (+0000) Subject: * elf.c (assign_file_positions_for_segments): If a segment X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=14899eb7f2e442c1b7f133a805ae9dfa39d3cc1a;p=binutils-gdb.git * elf.c (assign_file_positions_for_segments): If a segment contains no sections, don't mark it as readable. --- diff --git a/bfd/ChangeLog b/bfd/ChangeLog index a0d55eb024d..65d3a5ce819 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -5,6 +5,9 @@ Fri Jan 12 15:27:59 1996 Michael Meissner Fri Jan 12 13:59:16 1996 Ian Lance Taylor + * 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. diff --git a/bfd/elf.c b/bfd/elf.c index dab0c4d8921..3a7d2af7f9f 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -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)