aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2019-10-07 13:17:59 +1030
committerAlan Modra <amodra@gmail.com>2019-10-09 00:35:33 +1030
commit52b0b563f144da880d90c735912715b8e120706d (patch)
treef3d3b5d6c5ca22308692c6ec78171c8de09c6fe1
parentRe: PowerPC PIC vs. DLL TLS issues (diff)
downloadbinutils-gdb-52b0b563f144da880d90c735912715b8e120706d.tar.gz
binutils-gdb-52b0b563f144da880d90c735912715b8e120706d.tar.bz2
binutils-gdb-52b0b563f144da880d90c735912715b8e120706d.zip
PowerPC section flag tidy
has_tls_get_addr_call is no longer named correctly as the flag is only set on finding a __tls_get_addr call without tlsld/tlsgd marker relocations. * elf32-ppc.c (nomark_tls_get_addr): Rename from has_tls_get_addr_call throughout. * elf64-ppc.c (nomark_tls_get_addr): Likewise. (cherry picked from commit 9737e8af48e257f24e860fbf36af8c314e73076a)
-rw-r--r--bfd/ChangeLog5
-rw-r--r--bfd/elf32-ppc.c15
-rw-r--r--bfd/elf64-ppc.c15
3 files changed, 21 insertions, 14 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 3c0c42bdbe..5e9d22b2a5 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -2,6 +2,11 @@
Apply from master
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.
+
+ 2019-10-07 Alan Modra <amodra@gmail.com>
* elf64-ppc.c (ppc64_elf_size_dynamic_sections): Do allocate
space for local got non-tls relocs when PIE.
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 2de3366cc4..6fdc10558f 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -2222,8 +2222,9 @@ struct ppc_elf_link_hash_table
/* Nonzero if this section has TLS related relocations. */
#define has_tls_reloc sec_flg0
-/* Nonzero if this section has a call to __tls_get_addr. */
-#define has_tls_get_addr_call sec_flg1
+/* Nonzero if this section has a call to __tls_get_addr lacking marker
+ relocs. */
+#define nomark_tls_get_addr sec_flg1
/* Flag set when PLTCALL relocs are detected. */
#define has_pltcall sec_flg2
@@ -3010,7 +3011,7 @@ ppc_elf_check_relocs (bfd *abfd,
;
else
/* Mark this section as having an old-style call. */
- sec->has_tls_get_addr_call = 1;
+ sec->nomark_tls_get_addr = 1;
}
switch (r_type)
@@ -4464,7 +4465,7 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED,
setup insn. If we don't find matching arg setup
relocs, don't do any tls optimization. */
if (pass == 0
- && sec->has_tls_get_addr_call
+ && sec->nomark_tls_get_addr
&& h != NULL
&& h == htab->tls_get_addr
&& !expecting_tls_get_addr
@@ -4577,7 +4578,7 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED,
if (pass == 0)
{
if (!expecting_tls_get_addr
- || !sec->has_tls_get_addr_call)
+ || !sec->nomark_tls_get_addr)
continue;
if (rel + 1 < relend
@@ -4627,7 +4628,7 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED,
indirect call to __tls_get_addr without a marker.
Disable optimization in this case. */
if ((tls_clear & (TLS_GD | TLS_LD)) != 0
- && !sec->has_tls_get_addr_call
+ && !sec->nomark_tls_get_addr
&& ((*tls_mask & (TLS_TLS | TLS_MARK))
!= (TLS_TLS | TLS_MARK)))
continue;
@@ -7225,7 +7226,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
stays with its arg setup insns, ie. that the next
reloc is the __tls_get_addr call associated with
the current reloc. Edit both insns. */
- if (input_section->has_tls_get_addr_call
+ if (input_section->nomark_tls_get_addr
&& rel + 1 < relend
&& branch_reloc_hash_match (input_bfd, rel + 1,
htab->tls_get_addr))
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 5d6443eaea..da997c7ab5 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -3212,8 +3212,9 @@ struct ppc_link_hash_table
/* Nonzero if this section has TLS related relocations. */
#define has_tls_reloc sec_flg0
-/* Nonzero if this section has an old-style call to __tls_get_addr. */
-#define has_tls_get_addr_call sec_flg1
+/* Nonzero if this section has a call to __tls_get_addr lacking marker
+ relocations. */
+#define nomark_tls_get_addr sec_flg1
/* Nonzero if this section has any toc or got relocs. */
#define has_toc_reloc sec_flg2
@@ -4909,7 +4910,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
;
else
/* Mark this section as having an old-style call. */
- sec->has_tls_get_addr_call = 1;
+ sec->nomark_tls_get_addr = 1;
}
plt_list = &h->plt.plist;
}
@@ -7807,7 +7808,7 @@ ppc64_elf_tls_optimize (struct bfd_link_info *info)
setup insn. If we don't find matching arg setup
relocs, don't do any tls optimization. */
if (pass == 0
- && sec->has_tls_get_addr_call
+ && sec->nomark_tls_get_addr
&& h != NULL
&& (h == &htab->tls_get_addr->elf
|| h == &htab->tls_get_addr_fd->elf)
@@ -8008,7 +8009,7 @@ ppc64_elf_tls_optimize (struct bfd_link_info *info)
if (pass == 0)
{
if (!expecting_tls_get_addr
- || !sec->has_tls_get_addr_call)
+ || !sec->nomark_tls_get_addr)
continue;
if (rel + 1 < relend
@@ -8060,7 +8061,7 @@ ppc64_elf_tls_optimize (struct bfd_link_info *info)
Disable optimization in this case. */
if ((tls_clear & (TLS_GD | TLS_LD)) != 0
&& (tls_set & TLS_EXPLICIT) == 0
- && !sec->has_tls_get_addr_call
+ && !sec->nomark_tls_get_addr
&& ((*tls_mask & (TLS_TLS | TLS_MARK))
!= (TLS_TLS | TLS_MARK)))
continue;
@@ -14638,7 +14639,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
stays with its arg setup insns, ie. that the next
reloc is the __tls_get_addr call associated with
the current reloc. Edit both insns. */
- if (input_section->has_tls_get_addr_call
+ if (input_section->nomark_tls_get_addr
&& rel + 1 < relend
&& branch_reloc_hash_match (input_bfd, rel + 1,
htab->tls_get_addr,