The PT_DYNAMIC segment was being hard coded to have read, write, and
execute permission regardless of the underlying PT_LOAD segment permissions. Deleting this code allows the default linker behavior which is to set the dynamic segment to the same permissions as the sections that make it up. This change alters one existing test case to check the segment flags for PT_DYNAMIC. bfd/ChangeLog * elfxx-mips.c(_bfd_mips_elf_modify_segment_map): Deleted hard coding of PT_DYNAMIC segment flags. ld/testsuite/ChangeLog * ld-mips-elf/pic-and-nonpic-3a.sd: Check DYNAMIC segment flags.
This commit is contained in:
parent
c17ef0d5d2
commit
5db3e65d39
4 changed files with 10 additions and 13 deletions
|
@ -1,3 +1,8 @@
|
|||
2014-02-18 Jack Carter <jack.carter@imgtec.com>
|
||||
|
||||
* elfxx-mips.c(_bfd_mips_elf_modify_segment_map): Deleted hard coding of
|
||||
PT_DYNAMIC segment flags.
|
||||
|
||||
2014-02-17 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
PR binutils/16595
|
||||
|
|
|
@ -11919,18 +11919,6 @@ _bfd_mips_elf_modify_segment_map (bfd *abfd,
|
|||
if ((*pm)->p_type == PT_DYNAMIC)
|
||||
break;
|
||||
m = *pm;
|
||||
if (m != NULL && IRIX_COMPAT (abfd) == ict_none)
|
||||
{
|
||||
/* For a normal mips executable the permissions for the PT_DYNAMIC
|
||||
segment are read, write and execute. We do that here since
|
||||
the code in elf.c sets only the read permission. This matters
|
||||
sometimes for the dynamic linker. */
|
||||
if (bfd_get_section_by_name (abfd, ".dynamic") != NULL)
|
||||
{
|
||||
m->p_flags = PF_R | PF_W | PF_X;
|
||||
m->p_flags_valid = 1;
|
||||
}
|
||||
}
|
||||
/* GNU/Linux binaries do not need the extended PT_DYNAMIC section.
|
||||
glibc's dynamic linker has traditionally derived the number of
|
||||
tags from the p_filesz field, and sometimes allocates stack
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2014-02-18 Jack Carter <jack.carter@imgtec.com>
|
||||
|
||||
* ld-mips-elf/pic-and-nonpic-3a.sd: Check DYNAMIC segment flags.
|
||||
|
||||
2014-02-16 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
* ld-elfweak/elfweak.exp (setup_xfail_gnu_hurd): Remove function
|
||||
|
|
|
@ -8,7 +8,7 @@ Program Headers:
|
|||
* REGINFO * [^ ]+ * 0x0+00000 * 0x0+00000 [^ ]+ * [^ ]+ * R * 0x.*
|
||||
* LOAD * [^ ]+ * 0x0+00000 * 0x0+00000 [^ ]+ * [^ ]+ * R E * 0x.*
|
||||
* LOAD * [^ ]+ * 0x0+10000 * 0x0+10000 [^ ]+ * [^ ]+ * RW * 0x.*
|
||||
* DYNAMIC * [^ ]+ * 0x0+00400 * 0x0+00400 .*
|
||||
* DYNAMIC * [^ ]+ * 0x0+00400 * 0x0+00400 [^ ]+ * [^ ]+ * R * 0x.*
|
||||
* NULL * .*
|
||||
|
||||
*Section to Segment mapping:
|
||||
|
|
Loading…
Reference in a new issue