RISC-V: Fix TLS copy relocs
The dynrelro introduction wasn't implemented quite right for RISC-V, as it didn't consider TLS copy relocs. bfd/ChangeLog 2017-06-29 Andrew Waterman <andrew@sifive.com> * elfnn-riscv.c (riscv_elf_adjust_dynamic_symbol): Fix TLS copy relocs.
This commit is contained in:
parent
eb17d4137d
commit
3df5cd1394
|
@ -1,3 +1,8 @@
|
||||||
|
2017-06-29 Andrew Waterman <andrew@sifive.com>
|
||||||
|
|
||||||
|
* elfnn-riscv.c (riscv_elf_adjust_dynamic_symbol): Fix TLS copy
|
||||||
|
relocs.
|
||||||
|
|
||||||
2017-06-29 Egeyar Bagcioglu <egeyar.bagcioglu@oracle.com>
|
2017-06-29 Egeyar Bagcioglu <egeyar.bagcioglu@oracle.com>
|
||||||
|
|
||||||
* elfxx-sparc.c (allocate_dynrelocs): Don't make a symbol dynamic
|
* elfxx-sparc.c (allocate_dynrelocs): Don't make a symbol dynamic
|
||||||
|
|
|
@ -965,7 +965,12 @@ riscv_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||||
to copy the initial value out of the dynamic object and into the
|
to copy the initial value out of the dynamic object and into the
|
||||||
runtime process image. We need to remember the offset into the
|
runtime process image. We need to remember the offset into the
|
||||||
.rel.bss section we are going to use. */
|
.rel.bss section we are going to use. */
|
||||||
if ((h->root.u.def.section->flags & SEC_READONLY) != 0)
|
if (eh->tls_type & ~GOT_NORMAL)
|
||||||
|
{
|
||||||
|
s = htab->sdyntdata;
|
||||||
|
srel = htab->elf.srelbss;
|
||||||
|
}
|
||||||
|
else if ((h->root.u.def.section->flags & SEC_READONLY) != 0)
|
||||||
{
|
{
|
||||||
s = htab->elf.sdynrelro;
|
s = htab->elf.sdynrelro;
|
||||||
srel = htab->elf.sreldynrelro;
|
srel = htab->elf.sreldynrelro;
|
||||||
|
@ -981,9 +986,6 @@ riscv_elf_adjust_dynamic_symbol (struct bfd_link_info *info,
|
||||||
h->needs_copy = 1;
|
h->needs_copy = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eh->tls_type & ~GOT_NORMAL)
|
|
||||||
return _bfd_elf_adjust_dynamic_copy (info, h, htab->sdyntdata);
|
|
||||||
|
|
||||||
return _bfd_elf_adjust_dynamic_copy (info, h, s);
|
return _bfd_elf_adjust_dynamic_copy (info, h, s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue