mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-22 19:09:31 +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"))
|
||||
{
|
||||
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
|
||||
to copy relocs into the output file. */
|
||||
|
Reference in New Issue
Block a user