]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commit
[ARM] Add TLS relocations for FDPIC.
authorChristophe Lyon <christophe.lyon@st.com>
Tue, 20 Mar 2018 09:55:29 +0000 (10:55 +0100)
committerChristophe Lyon <christophe.lyon@linaro.org>
Wed, 18 Apr 2018 12:20:25 +0000 (12:20 +0000)
commit96f718fda4f8c490c7a8077f8225bd1ddf01ac02
treeea051f3c9eddea86c768d2f758dc8b793ee0647e
parent81104800e5786a8b54aaa0d66a94d91bba365daa
[ARM] Add TLS relocations for FDPIC.

Define and handle TLS relocations for FDPIC in BFD and gas.

In gas, the new relocations are rejected if the --fdpic option was not
specified.

We also define the __tdata_start symbol to mark the start of the
.tdata section. This allows FDPIC static binaries to find the start of
.tdata section, since phdr->p_vaddr of TLS segment is not a valid
value for FDPIC.

2018-XX-XX  Christophe Lyon  <christophe.lyon@st.com>
Mickaël Guêné  <mickael.guene@st.com>

bfd/:
* bfd-in2.h (BFD_RELOC_ARM_TLS_GD32_FDPIC)
(BFD_RELOC_ARM_TLS_LDM32_FDPIC, BFD_RELOC_ARM_TLS_IE32_FDPIC): New
relocations.
* elf32-arm.c (elf32_arm_howto_table_2): Add R_ARM_TLS_GD32_FDPIC,
R_ARM_TLS_LDM32_FDPIC, R_ARM_TLS_IE32_FDPIC relocations.
(elf32_arm_reloc_map): Add R_ARM_TLS_GD32_FDPIC,
R_ARM_TLS_LDM32_FDPIC, R_ARM_TLS_IE32_FDPIC.
(struct elf32_arm_link_hash_table): Update comment.
(elf32_arm_final_link_relocate): Handle TLS FDPIC relocations.
(IS_ARM_TLS_RELOC): Likewise.
(elf32_arm_check_relocs): Likewise.
(allocate_dynrelocs_for_symbol): Likewise.
(elf32_arm_size_dynamic_sections): Update comment.
* reloc.c: Add BFD_RELOC_ARM_TLS_GD32_FDPIC,
BFD_RELOC_ARM_TLS_LDM32_FDPIC, BFD_RELOC_ARM_TLS_IE32_FDPIC.

gas/
* config/tc-arm.c (reloc_names): Add TLSGD_FDPIC, TLSLDM_FDPIC,
GOTTPOFF_FDIC relocations.
(md_apply_fix): Handle the new TLS FDPIC relocations.
(tc_gen_reloc): Likewise.
(arm_fix_adjustable): Likewise.

include/
* elf/arm.h: Add R_ARM_TLS_GD32_FDPIC, R_ARM_TLS_LDM32_FDPIC,
R_ARM_TLS_IE32_FDPIC.

ld/
* scripttempl/elf.sc: Define __tdata_start for .tdata section.

* Define __tdata_start symbol to mark start of .tdata section

 This allow fdpic static binaries to find start of .tdata section
since phdr->p_vaddr of TLS segment is not a valid value for fdpic.

* Add fdpic tls specific relocations
bfd/bfd-in2.h
bfd/elf32-arm.c
bfd/reloc.c
gas/config/tc-arm.c
include/elf/arm.h
ld/scripttempl/elf.sc