From 33a1f4b23be8bdadc379c11cb20c520153b4a1bc Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Wed, 7 Mar 2012 17:51:56 +0000 Subject: [PATCH] * mn10300.h (elf_mn10300_reloc_type): Add R_MN10300_TLS_GD, R_MN10300_TLS_LD, R_MN10300_TLS_LDO, R_MN10300_TLS_GOTIE, R_MN10300_TLS_IE, R_MN10300_TLS_LE, R_MN10300_TLS_DPTMOD, R_MN10300_TLS_DTPOFF and R_MN10300_TLS_TPOFF. * elf-m10300.c (elf32_mn10300_link_hash_entry): Add tls_type field. (elf32_mn10300_link_hash_table): Add tls_ldm_got entry; (elf_mn10300_tdata): Define. (elf_mn10300_local_got_tls_type): Define. (elf_mn10300_howto_table): Add entries for R_MN10300_TLS_GD, R_MN10300_TLS_LD, R_MN10300_TLS_LDO, R_MN10300_TLS_GOTIE, R_MN10300_TLS_IE, R_MN10300_TLS_LE, R_MN10300_TLS_DPTMOD, R_MN10300_TLS_DTPOFF, R_MN10300_TLS_TPOFF relocs. (mn10300_reloc_map): Likewise. (elf_mn10300_tls_transition): New function. (dtpoff, tpoff, mn10300_do_tls_transition): New functions. (mn10300_elf_check_relocs): Add TLS support. (mn10300_elf_final_link_relocate): Likewise. (mn10300_elf_relocate_section): Likewise. (mn10300_elf_relax_section): Likewise. (elf32_mn10300_link_hash_newfunc): Initialise new field. (_bfd_mn10300_copy_indirect_symbol): New function. (elf32_mn10300_link_hash_table_create): Initialise new fields. (_bfd_mn10300_elf_size_dynamic_sections): Add TLS support. (_bfd_mn10300_elf_finish_dynamic_symbol): Likewise. (_bfd_mn10300_elf_reloc_type_class): Allocate an elf_mn10300_obj_tdata structure. (elf_backend_copy_indirect_symbol): Define. * reloc.c (BFD_MN10300_TLS_GD, BFD_MN10300_TLS_LD, BFD_MN10300_TLS_LDO, BFD_MN10300_TLS_GOTIE, BFD_MN10300_TLS_IE, BFD_MN10300_TLS_LE, BFD_MN10300_TLS_DPTMOD, BFD_MN10300_TLS_DTPOFF, BFD_MN10300_TLS_TPOFF): New relocations. (BFD_RELOC_MN10300_32_PCREL, BFD_RELOC_MN10300_16_PCREL): Move to alongside other MN10300 relocations. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * config/tc-mn10300.c (other_registers): Add SSP and USP. (md_assemble): Add support for TLS relocs. (mn10300_parse_name): Likewise. * readelf.c (is_16bit_abs_reloc): Add detection of R_MN10300_16. --- include/elf/ChangeLog | 7 +++++++ include/elf/mn10300.h | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index 1535dfb33..2d8264ea3 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,10 @@ +2012-03-07 Nick Clifton + + * mn10300.h (elf_mn10300_reloc_type): Add R_MN10300_TLS_GD, + R_MN10300_TLS_LD, R_MN10300_TLS_LDO, R_MN10300_TLS_GOTIE, + R_MN10300_TLS_IE, R_MN10300_TLS_LE, R_MN10300_TLS_DPTMOD, + R_MN10300_TLS_DTPOFF and R_MN10300_TLS_TPOFF. + 2012-02-25 Walter Lee * tilegx.h (R_TILEGX_IMM16_X0_HW1_GOT): Delete. diff --git a/include/elf/mn10300.h b/include/elf/mn10300.h index 444787b5f..529b3897b 100644 --- a/include/elf/mn10300.h +++ b/include/elf/mn10300.h @@ -51,6 +51,15 @@ START_RELOC_NUMBERS (elf_mn10300_reloc_type) RELOC_NUMBER (R_MN10300_GLOB_DAT, 21) RELOC_NUMBER (R_MN10300_JMP_SLOT, 22) RELOC_NUMBER (R_MN10300_RELATIVE, 23) + RELOC_NUMBER (R_MN10300_TLS_GD, 24) + RELOC_NUMBER (R_MN10300_TLS_LD, 25) + RELOC_NUMBER (R_MN10300_TLS_LDO, 26) + RELOC_NUMBER (R_MN10300_TLS_GOTIE, 27) + RELOC_NUMBER (R_MN10300_TLS_IE, 28) + RELOC_NUMBER (R_MN10300_TLS_LE, 29) + RELOC_NUMBER (R_MN10300_TLS_DTPMOD, 30) + RELOC_NUMBER (R_MN10300_TLS_DTPOFF, 31) + RELOC_NUMBER (R_MN10300_TLS_TPOFF, 32) RELOC_NUMBER (R_MN10300_SYM_DIFF, 33) RELOC_NUMBER (R_MN10300_ALIGN, 34) END_RELOC_NUMBERS (R_MN10300_MAX)