This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] MIPS16 TLS binutils support


Hi Richard,
as aforementioned on gcc-patches, we have MIPS16 TLS implemented, and
here are the binutils parts.

It's mostly straightforward, adding the analogous TLS relocations and
cases for MIPS16. I have also added a .tprel[d]word directive, together
re-arranging the similar code for .dtprel[d]word, which are now used for
laying out offset values in text for MIPS16 pc-relative loading.

I'll be posting the GCC parts later on gcc-patches.

Thanks,
Chung-Lin

2011-12-10  Chung-Lin Tang  <cltang@codesourcery.com>

        gas/
        * config/tc-mips.c (mips_pseudo_table): Add tprelword/tpreldword
        entries.
        (mips16_percent_op): Add MIPS16 TLS relocation ops.
        (md_apply_fix): Add BFD_RELOC_MIPS16_TLS_* switch cases.
        (s_tls_rel_directive): Rename from s_dtprel_internal(). Abstract out
        directive string and reloc type as function parameters. Update
        comments.
        (s_dtprelword,s_dtpreldword): Change to use s_tls_rel_directive().
        (s_tprelword,s_tpreldword): New functions.

        include/
        * elf/mips.h (elf_mips_reloc_type): Add R_MIPS16_TLS_* entries.

        bfd/
        * reloc.c (BFD_RELOC_MIPS16_TLS_GD,BFD_RELOC_MIPS16_TLS_LDM,
        BFD_RELOC_MIPS16_TLS_DTPREL_HI16,BFD_RELOC_MIPS16_TLS_DTPREL_LO16,
        BFD_RELOC_MIPS16_TLS_GOTTPREL,BFD_RELOC_MIPS16_TLS_TPREL_HI16,
        BFD_RELOC_MIPS16_TLS_TPREL_LO16): New relocations for MIPS16 TLS.
        * bfd-in2.h (bfd_reloc_code_real): Regenerate.
        * libbfd.h (bfd_reloc_code_real_names): Regenerate.
        * elf32-mips.c (elf_mips16_howto_table_rel): Add R_MIPS16_TLS_*
        entries.
        (mips16_reloc_map): Add BFD_RELOC_MIPS16_TLS_* to R_MIPS16_TLS_*
        mappings.
        * elfn32-mips.c (elf_mips16_howto_table_rel,
        elf_mips16_howto_table_rela): Add R_MIPS16_TLS_* entries.
        (mips16_reloc_map): Add BFD_RELOC_MIPS16_TLS_* to R_MIPS16_TLS_*
        mappings.
        * elf64-mips.c (mips16_elf64_howto_table_rel,
        mips16_elf64_howto_table_rela): Add R_MIPS16_TLS_* entries.
        (mips16_reloc_map): Add BFD_RELOC_MIPS16_TLS_* to R_MIPS16_TLS_*
        mappings.
        * elfxx-mips.c (TLS_RELOC_P,mips16_reloc_p,
        _bfd_mips_elf_check_relocs): Add cases for R_MIPS16_TLS_*
relocations.
        (tls_gd_reloc_p): Add R_MIPS16_TLS_GD case.
        (tls_ldm_reloc_p): Add R_MIPS16_TLS_LDM case.
        (tls_gottprel_reloc_p): Add R_MIPS16_TLS_GOTTPREL case.
        (mips_elf_calculate_relocation): Add cases for R_MIPS16_TLS_*,
        R_MIPS_TLS_DTPREL32/64, and R_MIPS_TLS_TPREL32/64 relocations.

Attachment: mips16-tls.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]