mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-23 03:29:47 +08:00
s390: Add DT_JMPREL pointing to .rela.[i]plt with static-pie
In static-pie case, there are IRELATIVE-relocs in .rela.iplt (htab->irelplt), which will later be grouped to .rela.plt. On s390, the IRELATIVE relocations are always located in .rela.iplt - even for non-static case. Ensure that DT_JMPREL, DT_PLTRELA, DT_PLTRELASZ is added to the dynamic section even if htab->srelplt->size == 0. See _bfd_elf_add_dynamic_tags in bfd/elflink.c. bfd/ elf64-s390.c (elf_s390_size_dynamic_sections): Enforce DT_JMPREL via htab->elf.dt_jmprel_required.
This commit is contained in:

committed by
Andreas Krebbel

parent
26b1426577
commit
d942d8db12
@ -1876,7 +1876,20 @@ elf_s390_size_dynamic_sections (bfd *output_bfd ATTRIBUTE_UNUSED,
|
|||||||
else if (startswith (bfd_section_name (s), ".rela"))
|
else if (startswith (bfd_section_name (s), ".rela"))
|
||||||
{
|
{
|
||||||
if (s->size != 0 && s != htab->elf.srelplt)
|
if (s->size != 0 && s != htab->elf.srelplt)
|
||||||
relocs = true;
|
{
|
||||||
|
relocs = true;
|
||||||
|
if (s == htab->elf.irelplt)
|
||||||
|
{
|
||||||
|
/* In static-pie case, there are IRELATIVE-relocs in
|
||||||
|
.rela.iplt (htab->irelplt), which will later be grouped
|
||||||
|
to .rela.plt. On s390, the IRELATIVE relocations are
|
||||||
|
always located in .rela.iplt - even for non-static case.
|
||||||
|
Ensure that DT_JMPREL, DT_PLTRELA, DT_PLTRELASZ is added
|
||||||
|
to the dynamic section even if htab->srelplt->size == 0.
|
||||||
|
See _bfd_elf_add_dynamic_tags in bfd/elflink.c. */
|
||||||
|
htab->elf.dt_jmprel_required = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* We use the reloc_count field as a counter if we need
|
/* We use the reloc_count field as a counter if we need
|
||||||
to copy relocs into the output file. */
|
to copy relocs into the output file. */
|
||||||
|
Reference in New Issue
Block a user