mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-15 04:31:49 +08:00
PR ld/14207
* elf.c (_bfd_elf_map_sections_to_segments): Disregard bss type sections at end of PT_LOAD segment when searching for segment that contains end of relro extent.
This commit is contained in:
parent
a6feecf744
commit
3832a4d892
@ -1,3 +1,10 @@
|
|||||||
|
2012-06-12 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
PR ld/14207
|
||||||
|
* elf.c (_bfd_elf_map_sections_to_segments): Disregard bss type
|
||||||
|
sections at end of PT_LOAD segment when searching for segment
|
||||||
|
that contains end of relro extent.
|
||||||
|
|
||||||
2012-06-11 H.J. Lu <hongjiu.lu@intel.com>
|
2012-06-11 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* elf.c (assign_file_positions_for_non_load_sections): Reindent.
|
* elf.c (assign_file_positions_for_non_load_sections): Reindent.
|
||||||
|
21
bfd/elf.c
21
bfd/elf.c
@ -4152,15 +4152,22 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
|
|||||||
{
|
{
|
||||||
for (m = mfirst; m != NULL; m = m->next)
|
for (m = mfirst; m != NULL; m = m->next)
|
||||||
{
|
{
|
||||||
if (m->p_type == PT_LOAD)
|
if (m->p_type == PT_LOAD
|
||||||
|
&& m->count != 0
|
||||||
|
&& m->sections[0]->vma >= info->relro_start
|
||||||
|
&& m->sections[0]->vma < info->relro_end)
|
||||||
{
|
{
|
||||||
asection *last = m->sections[m->count - 1];
|
i = m->count;
|
||||||
bfd_vma vaddr = m->sections[0]->vma;
|
while (--i != (unsigned) -1)
|
||||||
bfd_vma filesz = last->vma - vaddr + last->size;
|
if ((m->sections[i]->flags & (SEC_LOAD | SEC_HAS_CONTENTS))
|
||||||
|
== (SEC_LOAD | SEC_HAS_CONTENTS))
|
||||||
|
break;
|
||||||
|
|
||||||
if (vaddr < info->relro_end
|
if (i == (unsigned) -1)
|
||||||
&& vaddr >= info->relro_start
|
continue;
|
||||||
&& (vaddr + filesz) >= info->relro_end)
|
|
||||||
|
if (m->sections[i]->vma + m->sections[i]->size
|
||||||
|
>= info->relro_end)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user