a7f2871e66
* ppc.h (DT_PPC_TLSOPT): Define. * ppc64.h (DT_PPC64_TLSOPT): Define. bfd/ * elf32-ppc.c (TLS_GET_ADDR_GLINK_SIZE): Define. (ADD_3_12_2, BEQLR, CMPWI_11_0, LWZ_11_3, LWZ_12_3): Define. (MR_0_3, MR_3_0): Define. (struct ppc_elf_link_hash_table): Add no_tls_get_addr_opt. (ppc_elf_select_plt_layout): Save emit_stub_syms param earlier. (ppc_elf_tls_setup): Add no_tls_get_addr_opt param and save to hash table. Check for presense of __tls_get_addr_opt (allocate_dynrelocs): Increase glink entry size for __tls_get_addr. (ppc_elf_size_dynamic_sections): Add DT_PPC_TLS_OPT tag. (write_glink_stub): Add param p. (ppc_elf_relocate_section): Adjust write_glink_stub call. (ppc_elf_finish_dynamic_symbol): Emit special glink call stub for __tls_get_addr. * elf32-ppc.h (ppc_elf_tls_setup): Update prototype. * elf64-ppc.c (struct ppc_link_hash_table): Add no_tls_get_addr_opt. (ppc64_elf_tls_setup): Add no_tls_get_addr_opt param and save to hash table. Check for presense of __tls_get_addr_opt. (ppc64_elf_size_dynamic_sections): Add DT_PPC64_TLS_OPT tag. (LD_R11_0R3, LD_R12_0R3, MR_R0_R3, CMPDI_R11_0, ADD_R3_R12_R13, BEQLR, MR_R3_R0, MFLR_R11, STD_R11_0R1, BCTRL, LD_R11_0R1, LD_R2_0R1, MTLR_R11): Define. (build_tls_get_addr_stub): New function. (ppc_build_one_stub): Call it. (ppc_size_one_stub): Add extra size for __tls_get_addr stub. (ppc64_elf_relocate_section): Don't change nop to ld 2,40(1) for __tls_get_addr plt call. * elf64-ppc.h (ppc64_elf_tls_setup): Update prototype. binutils/ * readelf.c (get_ppc_dynamic_type): Add TLSOPT. (get_ppc64_dynamic_type): Likewise. ld/ * emultempl/ppc32elf.em (no_tls_get_addr_opt): New var. (ppc_before_allocation): Pass to ppc_elf_tls_setup. (OPTION_NO_TLS_GET_ADDR_OPT): Define. Redefine other options in terms of previous option. (PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Add --no-tls-get-addr-optimize. (PARSE_AND_LIST_ARGS_CASES): Handle it. * emultempl/ppc64elf.em (no_tls_get_addr_opt): New var. (ppc_before_allocation): Pass to ppc64_elf_tls_setup. (OPTION_NO_TLS_GET_ADDR_OPT): Define. (PARSE_AND_LIST_LONGOPTS, PARSE_AND_LIST_OPTIONS): Add --no-tls-get-addr-optimize. (PARSE_AND_LIST_ARGS_CASES): Handle it. ld/testsuite/ * ld-powerpc/tlslib.s: Delete dot-symbol entry syms. Add __tls_get_addr_opt. * ld-powerpc/tlslib32.s: Add __tls_get_addr_opt. * ld-powerpc/oldtlslib.s: New file, old-abi version of tlslib.s. * ld-powerpc/powerpc.exp: Build old-abi library and use it in two new link tests. * ld-powerpc/tlsexe.d: Update for new __tls_get_addr stub. * ld-powerpc/tlsexe.g, * ld-powerpc/tlsexe.r, *ld-powerpc/tlsexe32.d, * ld-powerpc/tlsexe32.g, * ld-powerpc/tlsexe32.r, * ld-powerpc/tlsexetoc.d, * ld-powerpc/tlsexetoc.g, * ld-powerpc/tlsexetoc.r: Likewise. |
||
---|---|---|
.. | ||
aix-abs-branch-1.dd | ||
aix-abs-branch-1.ex | ||
aix-abs-branch-1.im | ||
aix-abs-branch-1.nd | ||
aix-abs-branch-1.s | ||
aix-abs-reloc-1.ex | ||
aix-abs-reloc-1.im | ||
aix-abs-reloc-1.nd | ||
aix-abs-reloc-1.od | ||
aix-abs-reloc-1.s | ||
aix-core-sec-1.ex | ||
aix-core-sec-1.hd | ||
aix-core-sec-1.s | ||
aix-core-sec-2.ex | ||
aix-core-sec-2.hd | ||
aix-core-sec-2.s | ||
aix-core-sec-3.ex | ||
aix-core-sec-3.hd | ||
aix-core-sec-3.s | ||
aix-export-1-all.dd | ||
aix-export-1-full.dd | ||
aix-export-1a.s | ||
aix-export-1b.s | ||
aix-export-2.nd | ||
aix-export-2.s | ||
aix-gc-1-32.dd | ||
aix-gc-1-64.dd | ||
aix-gc-1.ex | ||
aix-gc-1.nd | ||
aix-gc-1.s | ||
aix-glink-1-32.d | ||
aix-glink-1-32.dd | ||
aix-glink-1-64.d | ||
aix-glink-1-64.dd | ||
aix-glink-1.ex | ||
aix-glink-1.s | ||
aix-glink-2-32.dd | ||
aix-glink-2-64.dd | ||
aix-glink-2a.ex | ||
aix-glink-2a.s | ||
aix-glink-2b.s | ||
aix-glink-2c.ex | ||
aix-glink-2c.s | ||
aix-glink-2d.s | ||
aix-glink-3-32.d | ||
aix-glink-3-64.d | ||
aix-glink-3.dd | ||
aix-glink-3.s | ||
aix-glink-3a.s | ||
aix-glink-3b.s | ||
aix-lineno-1.s | ||
aix-lineno-1.txt | ||
aix-lineno-1a.dd | ||
aix-lineno-1a.nd | ||
aix-lineno-1b.dd | ||
aix-lineno-1b.nd | ||
aix-no-dup-syms-1-dso.dnd | ||
aix-no-dup-syms-1-dso.drd | ||
aix-no-dup-syms-1-dso.nd | ||
aix-no-dup-syms-1-dso.rd | ||
aix-no-dup-syms-1-rel.nd | ||
aix-no-dup-syms-1-rel.rd | ||
aix-no-dup-syms-1.ex | ||
aix-no-dup-syms-1.im | ||
aix-no-dup-syms-1a.s | ||
aix-no-dup-syms-1b.s | ||
aix-rel-1.od | ||
aix-rel-1.s | ||
aix-toc-1-32.dd | ||
aix-toc-1-64.dd | ||
aix-toc-1.ex | ||
aix-toc-1a.s | ||
aix-toc-1b.s | ||
aix-weak-1-dso.dnd | ||
aix-weak-1-dso.hd | ||
aix-weak-1-dso.nd | ||
aix-weak-1-gcdso.dnd | ||
aix-weak-1-gcdso.hd | ||
aix-weak-1-gcdso.nd | ||
aix-weak-1-rel.hd | ||
aix-weak-1-rel.nd | ||
aix-weak-1.ex | ||
aix-weak-1a.s | ||
aix-weak-1b.s | ||
aix-weak-2a.ex | ||
aix-weak-2a.nd | ||
aix-weak-2a.s | ||
aix-weak-2b.nd | ||
aix-weak-2b.s | ||
aix-weak-2c.ex | ||
aix-weak-2c.nd | ||
aix-weak-2c.od | ||
aix-weak-2c.s | ||
aix-weak-3-32.d | ||
aix-weak-3-32.dd | ||
aix-weak-3-64.d | ||
aix-weak-3-64.dd | ||
aix-weak-3a.ex | ||
aix-weak-3a.s | ||
aix-weak-3b.ex | ||
aix-weak-3b.s | ||
aix52.exp | ||
apuinfo.rd | ||
apuinfo1.s | ||
apuinfo2.s | ||
attr-gnu-4-00.d | ||
attr-gnu-4-0.s | ||
attr-gnu-4-01.d | ||
attr-gnu-4-1.s | ||
attr-gnu-4-02.d | ||
attr-gnu-4-2.s | ||
attr-gnu-4-03.d | ||
attr-gnu-4-3.s | ||
attr-gnu-4-4.s | ||
attr-gnu-4-10.d | ||
attr-gnu-4-11.d | ||
attr-gnu-4-12.d | ||
attr-gnu-4-13.d | ||
attr-gnu-4-14.d | ||
attr-gnu-4-20.d | ||
attr-gnu-4-21.d | ||
attr-gnu-4-22.d | ||
attr-gnu-4-23.d | ||
attr-gnu-4-24.d | ||
attr-gnu-4-31.d | ||
attr-gnu-4-32.d | ||
attr-gnu-4-33.d | ||
attr-gnu-4-34.d | ||
attr-gnu-4-41.d | ||
attr-gnu-8-1.s | ||
attr-gnu-8-2.s | ||
attr-gnu-8-3.s | ||
attr-gnu-8-11.d | ||
attr-gnu-8-23.d | ||
attr-gnu-8-31.d | ||
attr-gnu-12-1.s | ||
attr-gnu-12-2.s | ||
attr-gnu-12-11.d | ||
attr-gnu-12-21.d | ||
oldtlslib.s | ||
plt1.d | ||
plt1.s | ||
powerpc.exp | ||
relax.d | ||
relax.s | ||
relaxr.d | ||
relbrlt.d | ||
relbrlt.s | ||
reloc.d | ||
reloc.s | ||
sdadyn.d | ||
sdadyn.s | ||
sdalib.s | ||
symtocbase-1.s | ||
symtocbase-2.s | ||
symtocbase.d | ||
tls.d | ||
tls.g | ||
tls.s | ||
tls.t | ||
tls32.d | ||
tls32.g | ||
tls32.s | ||
tls32.t | ||
tlsexe.d | ||
tlsexe.g | ||
tlsexe.r | ||
tlsexe.t | ||
tlsexe32.d | ||
tlsexe32.g | ||
tlsexe32.r | ||
tlsexe32.t | ||
tlsexetoc.d | ||
tlsexetoc.g | ||
tlsexetoc.r | ||
tlsexetoc.t | ||
tlslib.s | ||
tlslib32.s | ||
tlsmark.d | ||
tlsmark.s | ||
tlsmark32.d | ||
tlsmark32.s | ||
tlsso.d | ||
tlsso.g | ||
tlsso.r | ||
tlsso.t | ||
tlsso32.d | ||
tlsso32.g | ||
tlsso32.r | ||
tlsso32.t | ||
tlstoc.d | ||
tlstoc.g | ||
tlstoc.s | ||
tlstoc.t | ||
tlstocso.d | ||
tlstocso.g | ||
tlstocso.r | ||
tlstocso.t | ||
vxworks-relax-2.rd | ||
vxworks-relax-2.s | ||
vxworks-relax.rd | ||
vxworks-relax.s | ||
vxworks1-lib.dd | ||
vxworks1-lib.nd | ||
vxworks1-lib.rd | ||
vxworks1-lib.s | ||
vxworks1-lib.sd | ||
vxworks1-lib.td | ||
vxworks1-static.d | ||
vxworks1.dd | ||
vxworks1.ld | ||
vxworks1.rd | ||
vxworks1.s | ||
vxworks2-static.sd | ||
vxworks2.s | ||
vxworks2.sd |