mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 15:18:37 +08:00
Set DF_STATIC_TLS for PIEs
If we can dlopen an object then DF_STATIC_TLS is relevant. * elf32-ppc.c (ppc_elf_check_relocs): Set DF_STATIC_TLS for PIEs too. * elf64-ppc.c (ppc64_elf_check_relocs): Likewise.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2014-07-02 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* elf32-ppc.c (ppc_elf_check_relocs): Set DF_STATIC_TLS for PIEs too.
|
||||||
|
* elf64-ppc.c (ppc64_elf_check_relocs): Likewise.
|
||||||
|
|
||||||
2014-07-01 Alan Modra <amodra@gmail.com>
|
2014-07-01 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* bfd.c (struct bfd): Reorganise for better packing. Delete
|
* bfd.c (struct bfd): Reorganise for better packing. Delete
|
||||||
|
@ -4017,7 +4017,7 @@ ppc_elf_check_relocs (bfd *abfd,
|
|||||||
case R_PPC_GOT_TPREL16_LO:
|
case R_PPC_GOT_TPREL16_LO:
|
||||||
case R_PPC_GOT_TPREL16_HI:
|
case R_PPC_GOT_TPREL16_HI:
|
||||||
case R_PPC_GOT_TPREL16_HA:
|
case R_PPC_GOT_TPREL16_HA:
|
||||||
if (!info->executable)
|
if (info->shared)
|
||||||
info->flags |= DF_STATIC_TLS;
|
info->flags |= DF_STATIC_TLS;
|
||||||
tls_type = TLS_TLS | TLS_TPREL;
|
tls_type = TLS_TLS | TLS_TPREL;
|
||||||
goto dogottls;
|
goto dogottls;
|
||||||
@ -4308,7 +4308,7 @@ ppc_elf_check_relocs (bfd *abfd,
|
|||||||
case R_PPC_TPREL16_LO:
|
case R_PPC_TPREL16_LO:
|
||||||
case R_PPC_TPREL16_HI:
|
case R_PPC_TPREL16_HI:
|
||||||
case R_PPC_TPREL16_HA:
|
case R_PPC_TPREL16_HA:
|
||||||
if (!info->executable)
|
if (info->shared)
|
||||||
info->flags |= DF_STATIC_TLS;
|
info->flags |= DF_STATIC_TLS;
|
||||||
goto dodyn;
|
goto dodyn;
|
||||||
|
|
||||||
|
@ -5328,7 +5328,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
|||||||
case R_PPC64_GOT_TPREL16_LO_DS:
|
case R_PPC64_GOT_TPREL16_LO_DS:
|
||||||
case R_PPC64_GOT_TPREL16_HI:
|
case R_PPC64_GOT_TPREL16_HI:
|
||||||
case R_PPC64_GOT_TPREL16_HA:
|
case R_PPC64_GOT_TPREL16_HA:
|
||||||
if (!info->executable)
|
if (info->shared)
|
||||||
info->flags |= DF_STATIC_TLS;
|
info->flags |= DF_STATIC_TLS;
|
||||||
tls_type = TLS_TLS | TLS_TPREL;
|
tls_type = TLS_TLS | TLS_TPREL;
|
||||||
goto dogottls;
|
goto dogottls;
|
||||||
@ -5558,7 +5558,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
|||||||
|
|
||||||
case R_PPC64_TPREL64:
|
case R_PPC64_TPREL64:
|
||||||
tls_type = TLS_EXPLICIT | TLS_TLS | TLS_TPREL;
|
tls_type = TLS_EXPLICIT | TLS_TLS | TLS_TPREL;
|
||||||
if (!info->executable)
|
if (info->shared)
|
||||||
info->flags |= DF_STATIC_TLS;
|
info->flags |= DF_STATIC_TLS;
|
||||||
goto dotlstoc;
|
goto dotlstoc;
|
||||||
|
|
||||||
@ -5636,8 +5636,7 @@ ppc64_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
|
|||||||
case R_PPC64_TPREL16_HIGHESTA:
|
case R_PPC64_TPREL16_HIGHESTA:
|
||||||
if (info->shared)
|
if (info->shared)
|
||||||
{
|
{
|
||||||
if (!info->executable)
|
info->flags |= DF_STATIC_TLS;
|
||||||
info->flags |= DF_STATIC_TLS;
|
|
||||||
goto dodyn;
|
goto dodyn;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user