diff options
author | Alan Modra <amodra@gmail.com> | 2019-10-07 13:21:02 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2019-10-07 13:21:02 +1030 |
commit | 7d04a20ae4af0f1f6e75ec642413c27de4c1e1b8 (patch) | |
tree | f17459048cae52e21ecff5f83390ce9971b901ae /bfd/ChangeLog | |
parent | 9737e8af48e257f24e860fbf36af8c314e73076a (diff) | |
download | gdb-7d04a20ae4af0f1f6e75ec642413c27de4c1e1b8.zip gdb-7d04a20ae4af0f1f6e75ec642413c27de4c1e1b8.tar.gz gdb-7d04a20ae4af0f1f6e75ec642413c27de4c1e1b8.tar.bz2 |
PowerPC TLS miscounting PLT for __tls_get_addr
ppc*_elf_tls_optimize decrements the PLT refcount for __tls_get_addr
when a GD or LD sequence can be optimized. Without tls marker relocs
this must be done when processing the argument setup relocations.
With marker relocs it's better done when processing the marker reloc.
But don't count them both ways.
Seen as "unresolvable R_PPC_REL24 relocation against symbol
`__tls_get_addr_opt'" (and other branch relocs).
* elf32-ppc.c (ppc_elf_tls_optimize): Don't process R_PPC_TLSLD
with non-local symbol. Don't double count __tls_get_addr calls
with marker relocs.
* elf64-ppc.c (ppc64_elf_tls_optimize): Likewise.
Diffstat (limited to 'bfd/ChangeLog')
-rw-r--r-- | bfd/ChangeLog | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 9f34899..b691d58 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,12 @@ 2019-10-07 Alan Modra <amodra@gmail.com> + * elf32-ppc.c (ppc_elf_tls_optimize): Don't process R_PPC_TLSLD + with non-local symbol. Don't double count __tls_get_addr calls + with marker relocs. + * elf64-ppc.c (ppc64_elf_tls_optimize): Likewise. + +2019-10-07 Alan Modra <amodra@gmail.com> + * elf32-ppc.c (nomark_tls_get_addr): Rename from has_tls_get_addr_call throughout. * elf64-ppc.c (nomark_tls_get_addr): Likewise. |