mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-20 18:08:24 +08:00
Fix segfault in microblaze linker when garbage collection removes a symbol scheduled for a slot in the PLT.
PR ld/21180 * elf32-microblaze.c (microblaze_elf_finish_dynamic_symbol): Avoid generating a seg-fault when encountering a symbol that has been deleted by garbage collection.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2017-02-27 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
PR ld/21180
|
||||||
|
* elf32-microblaze.c (microblaze_elf_finish_dynamic_symbol): Avoid
|
||||||
|
generating a seg-fault when encountering a symbol that has been
|
||||||
|
deleted by garbage collection.
|
||||||
|
|
||||||
2017-02-25 Alan Modra <amodra@gmail.com>
|
2017-02-25 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* elf32-arc.c (struct dynamic_sections): Delete.
|
* elf32-arc.c (struct dynamic_sections): Delete.
|
||||||
|
@ -3234,13 +3234,20 @@ microblaze_elf_finish_dynamic_symbol (bfd *output_bfd,
|
|||||||
|| h->dynindx == -1))
|
|| h->dynindx == -1))
|
||||||
{
|
{
|
||||||
asection *sec = h->root.u.def.section;
|
asection *sec = h->root.u.def.section;
|
||||||
|
bfd_vma value;
|
||||||
|
|
||||||
|
value = h->root.u.def.value;
|
||||||
|
if (sec->output_section != NULL)
|
||||||
|
/* PR 21180: If the output section is NULL, then the symbol is no
|
||||||
|
longer needed, and in theory the GOT entry is redundant. But
|
||||||
|
it is too late to change our minds now... */
|
||||||
|
value += sec->output_section->vma + sec->output_offset;
|
||||||
|
|
||||||
microblaze_elf_output_dynamic_relocation (output_bfd,
|
microblaze_elf_output_dynamic_relocation (output_bfd,
|
||||||
srela, srela->reloc_count++,
|
srela, srela->reloc_count++,
|
||||||
/* symindex= */ 0,
|
/* symindex= */ 0,
|
||||||
R_MICROBLAZE_REL, offset,
|
R_MICROBLAZE_REL, offset,
|
||||||
h->root.u.def.value
|
value);
|
||||||
+ sec->output_section->vma
|
|
||||||
+ sec->output_offset);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user