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.
This commit is contained in:
parent
8154f49cf4
commit
9737e8af48
@ -1,3 +1,9 @@
|
|||||||
|
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-04 Alan Modra <amodra@gmail.com>
|
2019-10-04 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* elf64-ppc.c (ppc64_elf_check_relocs): Move initialisation of vars.
|
* elf64-ppc.c (ppc64_elf_check_relocs): Move initialisation of vars.
|
||||||
|
@ -2222,8 +2222,9 @@ struct ppc_elf_link_hash_table
|
|||||||
/* Nonzero if this section has TLS related relocations. */
|
/* Nonzero if this section has TLS related relocations. */
|
||||||
#define has_tls_reloc sec_flg0
|
#define has_tls_reloc sec_flg0
|
||||||
|
|
||||||
/* Nonzero if this section has a call to __tls_get_addr. */
|
/* Nonzero if this section has a call to __tls_get_addr lacking marker
|
||||||
#define has_tls_get_addr_call sec_flg1
|
relocs. */
|
||||||
|
#define nomark_tls_get_addr sec_flg1
|
||||||
|
|
||||||
/* Flag set when PLTCALL relocs are detected. */
|
/* Flag set when PLTCALL relocs are detected. */
|
||||||
#define has_pltcall sec_flg2
|
#define has_pltcall sec_flg2
|
||||||
@ -3010,7 +3011,7 @@ ppc_elf_check_relocs (bfd *abfd,
|
|||||||
;
|
;
|
||||||
else
|
else
|
||||||
/* Mark this section as having an old-style call. */
|
/* 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)
|
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
|
setup insn. If we don't find matching arg setup
|
||||||
relocs, don't do any tls optimization. */
|
relocs, don't do any tls optimization. */
|
||||||
if (pass == 0
|
if (pass == 0
|
||||||
&& sec->has_tls_get_addr_call
|
&& sec->nomark_tls_get_addr
|
||||||
&& h != NULL
|
&& h != NULL
|
||||||
&& h == htab->tls_get_addr
|
&& h == htab->tls_get_addr
|
||||||
&& !expecting_tls_get_addr
|
&& !expecting_tls_get_addr
|
||||||
@ -4577,7 +4578,7 @@ ppc_elf_tls_optimize (bfd *obfd ATTRIBUTE_UNUSED,
|
|||||||
if (pass == 0)
|
if (pass == 0)
|
||||||
{
|
{
|
||||||
if (!expecting_tls_get_addr
|
if (!expecting_tls_get_addr
|
||||||
|| !sec->has_tls_get_addr_call)
|
|| !sec->nomark_tls_get_addr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (rel + 1 < relend
|
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.
|
indirect call to __tls_get_addr without a marker.
|
||||||
Disable optimization in this case. */
|
Disable optimization in this case. */
|
||||||
if ((tls_clear & (TLS_GD | TLS_LD)) != 0
|
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_mask & (TLS_TLS | TLS_MARK))
|
||||||
!= (TLS_TLS | TLS_MARK)))
|
!= (TLS_TLS | TLS_MARK)))
|
||||||
continue;
|
continue;
|
||||||
@ -7224,7 +7225,7 @@ ppc_elf_relocate_section (bfd *output_bfd,
|
|||||||
stays with its arg setup insns, ie. that the next
|
stays with its arg setup insns, ie. that the next
|
||||||
reloc is the __tls_get_addr call associated with
|
reloc is the __tls_get_addr call associated with
|
||||||
the current reloc. Edit both insns. */
|
the current reloc. Edit both insns. */
|
||||||
if (input_section->has_tls_get_addr_call
|
if (input_section->nomark_tls_get_addr
|
||||||
&& rel + 1 < relend
|
&& rel + 1 < relend
|
||||||
&& branch_reloc_hash_match (input_bfd, rel + 1,
|
&& branch_reloc_hash_match (input_bfd, rel + 1,
|
||||||
htab->tls_get_addr))
|
htab->tls_get_addr))
|
||||||
|
@ -3218,8 +3218,9 @@ struct ppc_link_hash_table
|
|||||||
/* Nonzero if this section has TLS related relocations. */
|
/* Nonzero if this section has TLS related relocations. */
|
||||||
#define has_tls_reloc sec_flg0
|
#define has_tls_reloc sec_flg0
|
||||||
|
|
||||||
/* Nonzero if this section has an old-style call to __tls_get_addr. */
|
/* Nonzero if this section has a call to __tls_get_addr lacking marker
|
||||||
#define has_tls_get_addr_call sec_flg1
|
relocations. */
|
||||||
|
#define nomark_tls_get_addr sec_flg1
|
||||||
|
|
||||||
/* Nonzero if this section has any toc or got relocs. */
|
/* Nonzero if this section has any toc or got relocs. */
|
||||||
#define has_toc_reloc sec_flg2
|
#define has_toc_reloc sec_flg2
|
||||||
@ -4925,7 +4926,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
|||||||
;
|
;
|
||||||
else
|
else
|
||||||
/* Mark this section as having an old-style call. */
|
/* 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;
|
plt_list = &h->plt.plist;
|
||||||
}
|
}
|
||||||
@ -7833,7 +7834,7 @@ ppc64_elf_tls_optimize (struct bfd_link_info *info)
|
|||||||
setup insn. If we don't find matching arg setup
|
setup insn. If we don't find matching arg setup
|
||||||
relocs, don't do any tls optimization. */
|
relocs, don't do any tls optimization. */
|
||||||
if (pass == 0
|
if (pass == 0
|
||||||
&& sec->has_tls_get_addr_call
|
&& sec->nomark_tls_get_addr
|
||||||
&& h != NULL
|
&& h != NULL
|
||||||
&& (h == &htab->tls_get_addr->elf
|
&& (h == &htab->tls_get_addr->elf
|
||||||
|| h == &htab->tls_get_addr_fd->elf)
|
|| h == &htab->tls_get_addr_fd->elf)
|
||||||
@ -8034,7 +8035,7 @@ ppc64_elf_tls_optimize (struct bfd_link_info *info)
|
|||||||
if (pass == 0)
|
if (pass == 0)
|
||||||
{
|
{
|
||||||
if (!expecting_tls_get_addr
|
if (!expecting_tls_get_addr
|
||||||
|| !sec->has_tls_get_addr_call)
|
|| !sec->nomark_tls_get_addr)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (rel + 1 < relend
|
if (rel + 1 < relend
|
||||||
@ -8086,7 +8087,7 @@ ppc64_elf_tls_optimize (struct bfd_link_info *info)
|
|||||||
Disable optimization in this case. */
|
Disable optimization in this case. */
|
||||||
if ((tls_clear & (TLS_GD | TLS_LD)) != 0
|
if ((tls_clear & (TLS_GD | TLS_LD)) != 0
|
||||||
&& (tls_set & TLS_EXPLICIT) == 0
|
&& (tls_set & TLS_EXPLICIT) == 0
|
||||||
&& !sec->has_tls_get_addr_call
|
&& !sec->nomark_tls_get_addr
|
||||||
&& ((*tls_mask & (TLS_TLS | TLS_MARK))
|
&& ((*tls_mask & (TLS_TLS | TLS_MARK))
|
||||||
!= (TLS_TLS | TLS_MARK)))
|
!= (TLS_TLS | TLS_MARK)))
|
||||||
continue;
|
continue;
|
||||||
@ -14726,7 +14727,7 @@ ppc64_elf_relocate_section (bfd *output_bfd,
|
|||||||
stays with its arg setup insns, ie. that the next
|
stays with its arg setup insns, ie. that the next
|
||||||
reloc is the __tls_get_addr call associated with
|
reloc is the __tls_get_addr call associated with
|
||||||
the current reloc. Edit both insns. */
|
the current reloc. Edit both insns. */
|
||||||
if (input_section->has_tls_get_addr_call
|
if (input_section->nomark_tls_get_addr
|
||||||
&& rel + 1 < relend
|
&& rel + 1 < relend
|
||||||
&& branch_reloc_hash_match (input_bfd, rel + 1,
|
&& branch_reloc_hash_match (input_bfd, rel + 1,
|
||||||
htab->tls_get_addr,
|
htab->tls_get_addr,
|
||||||
|
Loading…
Reference in New Issue
Block a user