diff options
author | Daniel Jacobowitz <drow@false.org> | 2005-03-29 16:54:22 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2005-03-29 16:54:22 +0000 |
commit | ba93b8aced8f39a02c47731e89278fe6f217d929 (patch) | |
tree | 10d828c846f4224226a06d2d2bd4e31283b9d289 /include | |
parent | 71a976dd82f4a544374e4f40b9a1d6ec1f5525ad (diff) | |
download | binutils-ba93b8aced8f39a02c47731e89278fe6f217d929.zip binutils-ba93b8aced8f39a02c47731e89278fe6f217d929.tar.gz binutils-ba93b8aced8f39a02c47731e89278fe6f217d929.tar.bz2 |
bfd/
* bfd-in2.h, libbfd.h: Regenerated.
* reloc.c: Add ARM TLS relocations.
* elf32-arm.c (elf32_arm_howto_table): Add dynamic TLS
relocations.
(elf32_arm_tls_gd32_howto, elf32_arm_tls_ldo32_howto)
(elf32_arm_tls_ldm32_howto, elf32_arm_tls_le32_howto)
(elf32_arm_tls_ie32_howto): New.
(elf32_arm_howto_from_type): Support TLS relocations.
(elf32_arm_reloc_map): Likewise.
(elf32_arm_reloc_type_lookup): Likewise.
(TCB_SIZE): Define.
(struct elf32_arm_obj_tdata): New.
(elf32_arm_tdata, elf32_arm_local_got_tls_type): Define.
(elf32_arm_mkobject): New function.
(struct elf32_arm_relocs_copied): Add pc_count.
(elf32_arm_hash_entry, GOT_UNKNOWN, GOT_NORMAL, GOT_TLS_GD)
(GOT_TLS_IE): Define.
(struct elf32_arm_link_hash_table): Add tls_ldm_got.
(elf32_arm_link_hash_newfunc): Initialize tls_type.
(elf32_arm_copy_indirect_symbol): Copy pc_count and tls_type.
(elf32_arm_link_hash_table_create): Initialize tls_ldm_got.
(dtpoff_base, tpoff): New functions.
(elf32_arm_final_link_relocate): Handle TLS relocations.
(IS_ARM_TLS_RELOC): Define.
(elf32_arm_relocate_section): Warn about TLS mismatches.
(elf32_arm_gc_sweep_hook): Handle TLS relocations and pc_count.
(elf32_arm_check_relocs): Detect invalid symbol indexes. Handle
TLS relocations and pc_count.
(elf32_arm_adjust_dynamic_symbol): Check non_got_ref.
(allocate_dynrelocs): Handle TLS. Bind REL32 relocs to local
calls.
(elf32_arm_size_dynamic_sections): Handle TLS.
(elf32_arm_finish_dynamic_symbol): Likewise.
(bfd_elf32_mkobject): Define.
gas/
* config/tc-arm.c (arm_parse_reloc): Add TLS relocations.
(md_apply_fix3): Mark TLS symbols.
(tc_gen_reloc): Handle TLS relocations.
(arm_fix_adjustable): Ignore TLS relocations.
(s_arm_elf_cons): Support expressions after decorated symbols.
gas/testuite/
* gas/arm/tls.s, gas/arm/tls.d: New files.
* gas/arm/arm.exp: Run TLS test.
include/elf/
* arm.h: Add TLS relocations.
ld/testsuite/
* ld-arm/tls-lib.s, ld-arm/tls-lib.d, ld-arm/tls-lib.r,
ld-arm/tls-app.s, ld-arm/tls-app.d, ld-arm/tls-app.r: New files.
* ld-arm/arm-lib.ld, ld-arm/arm-dyn.ld: Increase data segment
alignment.
* ld-arm/arm-elf.exp: Run TLS tests.
Diffstat (limited to 'include')
-rw-r--r-- | include/elf/ChangeLog | 5 | ||||
-rw-r--r-- | include/elf/arm.h | 10 |
2 files changed, 14 insertions, 1 deletions
diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index b273adb..1d9aedb 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,8 @@ +2005-03-29 Daniel Jacobowitz <dan@codesourcery.com> + Phil Blundell <philb@gnu.org> + + * arm.h: Add TLS relocations. + 2005-03-23 Ben Elliston <bje@au.ibm.com> * dwarf.h: Merge with GCC's dwarf.h. diff --git a/include/elf/arm.h b/include/elf/arm.h index de3ed06..81a8de1 100644 --- a/include/elf/arm.h +++ b/include/elf/arm.h @@ -114,6 +114,9 @@ START_RELOC_NUMBERS (elf_arm_reloc_type) RELOC_NUMBER (R_ARM_THM_SWI8, 14) RELOC_NUMBER (R_ARM_XPC25, 15) RELOC_NUMBER (R_ARM_THM_XPC22, 16) + RELOC_NUMBER (R_ARM_TLS_DTPMOD32, 17) + RELOC_NUMBER (R_ARM_TLS_DTPOFF32, 18) + RELOC_NUMBER (R_ARM_TLS_TPOFF32, 19) #endif /* not OLD_ARM_ABI */ RELOC_NUMBER (R_ARM_COPY, 20) /* Copy symbol at runtime. */ RELOC_NUMBER (R_ARM_GLOB_DAT, 21) /* Create GOT entry. */ @@ -153,7 +156,12 @@ START_RELOC_NUMBERS (elf_arm_reloc_type) RELOC_NUMBER (R_ARM_GNU_VTINHERIT, 101) RELOC_NUMBER (R_ARM_THM_PC11, 102) /* Cygnus extension to abi: Thumb unconditional branch. */ RELOC_NUMBER (R_ARM_THM_PC9, 103) /* Cygnus extension to abi: Thumb conditional branch. */ - FAKE_RELOC (FIRST_INVALID_RELOC3, 104) + RELOC_NUMBER (R_ARM_TLS_GD32, 104) + RELOC_NUMBER (R_ARM_TLS_LDM32, 105) + RELOC_NUMBER (R_ARM_TLS_LDO32, 106) + RELOC_NUMBER (R_ARM_TLS_IE32, 107) + RELOC_NUMBER (R_ARM_TLS_LE32, 108) + FAKE_RELOC (FIRST_INVALID_RELOC3, 109) FAKE_RELOC (LAST_INVALID_RELOC3, 248) RELOC_NUMBER (R_ARM_RXPC25, 249) #endif /* not OLD_ARM_ABI */ |