diff options
author | Alan Modra <amodra@bigpond.net.au> | 2009-03-26 12:23:51 +0000 |
---|---|---|
committer | Alan Modra <amodra@bigpond.net.au> | 2009-03-26 12:23:51 +0000 |
commit | 4c62718461563febf1b8157450f2f91f26353a83 (patch) | |
tree | dc48e6e4f3c626af93be377fc3789338b278646a /bfd | |
parent | a7715162f759ef281588c9ddd4e54253db16305f (diff) | |
download | gdb-4c62718461563febf1b8157450f2f91f26353a83.tar.gz |
PR 6494
* elf.c (copy_elf_program_header): Do not check that PT_GNU_RELRO
p_filesz and p_memsz are equal. Use p_memsz as the segment size.
(assign_file_positions_for_non_load_sections): Zap PT_GNU_RELRO
if we don't find matching PT_LOAD when copying.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | bfd/elf.c | 9 |
2 files changed, 11 insertions, 6 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3103cfe9c24..11a0acbbf83 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2009-03-26 Alan Modra <amodra@bigpond.net.au> + + PR 6494 + * elf.c (copy_elf_program_header): Do not check that PT_GNU_RELRO + p_filesz and p_memsz are equal. Use p_memsz as the segment size. + (assign_file_positions_for_non_load_sections): Zap PT_GNU_RELRO + if we don't find matching PT_LOAD when copying. + 2009-03-25 M R Swami Reddy <MR.Swami.Reddy@nsc.com> * elf32-crx.c (crx_elf_howto_table): Zero the src_mask field of diff --git a/bfd/elf.c b/bfd/elf.c index 6aa6d1c6475..720c8a1687d 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -4683,13 +4683,11 @@ assign_file_positions_for_non_load_sections (bfd *abfd, p->p_align = 1; p->p_flags = (lp->p_flags & ~PF_W); } - else if (link_info != NULL) + else { memset (p, 0, sizeof *p); p->p_type = PT_NULL; } - else - abort (); } else if (m->count != 0) { @@ -5838,14 +5836,13 @@ copy_elf_program_header (bfd *ibfd, bfd *obfd) map->p_align_valid = 1; map->p_vaddr_offset = 0; - if (map->p_type == PT_GNU_RELRO - && segment->p_filesz == segment->p_memsz) + if (map->p_type == PT_GNU_RELRO) { /* The PT_GNU_RELRO segment may contain the first a few bytes in the .got.plt section even if the whole .got.plt section isn't in the PT_GNU_RELRO segment. We won't change the size of the PT_GNU_RELRO segment. */ - map->p_size = segment->p_filesz; + map->p_size = segment->p_memsz; map->p_size_valid = 1; } |