aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-powerpc/tls32.s
AgeCommit message (Collapse)AuthorFilesLines
2019-02-21PowerPC __tls_get_addr arg parsingAlan Modra1-1/+2
The syntax we ended up with for -m32 -fPIC calls to __tls_get_addr is rather weird. bl __tls_get_addr+0x8000(gd0@tlsgd)@plt This came about by accident, probably due to requiring the arg reloc before the call reloc. Of course the @plt really belongs with __tls_get_addr since it affects the call rather than the call arg, and it isn't a great deal of trouble to ensure the relocs are emitted in the correct order. This patch supports a newer syntax, like so: bl __tls_get_addr+0x8000@plt(gd0@tlsgd) gas/ * config/tc-ppc.c (parse_tls_arg): New function, extracted.. (md_assembler): ..from here. Call it after parsing other suffix modifiers too. ld/ * testsuite/ld-powerpc/tls32.s: Test new @plt syntax.
2017-08-30PowerPC TPREL16_HA/LO reloc optimizationAlan Modra1-2/+32
In the TLS GD/LD to LE optimization, ld replaces a sequence like addi 3,2,x@got@tlsgd R_PPC64_GOT_TLSGD16 x bl __tls_get_addr(x@tlsgd) R_PPC64_TLSGD x R_PPC64_REL24 __tls_get_addr nop with addis 3,13,x@tprel@ha R_PPC64_TPREL16_HA x addi 3,3,x@tprel@l R_PPC64_TPREL16_LO x nop When the tprel offset is small, this can be further optimized to nop addi 3,13,x@tprel nop bfd/ * elf64-ppc.c (struct ppc_link_hash_table): Add do_tls_opt. (ppc64_elf_tls_optimize): Set it. (ppc64_elf_relocate_section): Nop addis on TPREL16_HA, and convert insn on TPREL16_LO and TPREL16_LO_DS relocs to use r13 when addis would add zero. * elf32-ppc.c (struct ppc_elf_link_hash_table): Add do_tls_opt. (ppc_elf_tls_optimize): Set it. (ppc_elf_relocate_section): Nop addis on TPREL16_HA, and convert insn on TPREL16_LO relocs to use r2 when addis would add zero. gold/ * powerpc.cc (Target_powerpc::Relocate::relocate): Nop addis on TPREL16_HA, and convert insn on TPREL16_LO and TPREL16_LO_DS relocs to use r2/r13 when addis would add zero. ld/ * testsuite/ld-powerpc/tls.s: Add calls with tls markers. * testsuite/ld-powerpc/tls32.s: Likewise. * testsuite/ld-powerpc/powerpc.exp: Run tls marker tests. * testsuite/ld-powerpc/tls.d: Adjust for TPREL16_HA/LO optimization. * testsuite/ld-powerpc/tlsexe.d: Likewise. * testsuite/ld-powerpc/tlsexetoc.d: Likewise. * testsuite/ld-powerpc/tlsld.d: Likewise. * testsuite/ld-powerpc/tlsmark.d: Likewise. * testsuite/ld-powerpc/tlsopt4.d: Likewise. * testsuite/ld-powerpc/tlstoc.d: Likewise.
2015-03-11Fix ppc32 synthetic symbols when __tls_get_addr_opt stub is generatedAlan Modra1-0/+9
Also update the 32-bit tls testcases to be secure plt. bfd/ * elf32-ppc.c (ppc_elf_get_synthetic_symtab): Examine stubs in reverse order. Account for larger size of __tls_get_addr_opt stub. ld/testsuite/ * ld-powerpc/tls32.s: Add GOT pointer setup. * ld-powerpc/tls32.d: Update. * ld-powerpc/tls32.g: Update. * ld-powerpc/tls32.t: Update. * ld-powerpc/tlsexe.d: Update. * ld-powerpc/tlsexe32.d: Update. * ld-powerpc/tlsexe32.g: Update. * ld-powerpc/tlsexe32.r: Update. * ld-powerpc/tlsexetoc.d: Update. * ld-powerpc/tlsso32.d: Update. * ld-powerpc/tlsso32.g: Update. * ld-powerpc/tlsso32.r: Update.
2006-03-17bfd/ChangeLog:Alexandre Oliva1-2/+2
* elf32-ppc.c (ppc_elf_relocate_section): Copy addend from first relocation to the second when relaxing TLS GD to LE; zero it out when relaxing to IE. ld/testsuite/ChangeLog: * ld-powerpc/tls32.s: Verify that +32768 @plt addend is discarded.
2004-10-012004-10-01 H.J. Lu <hongjiu.lu@intel.com>H.J. Lu1-3/+0
* ld-powerpc/tls.s: Don't set tls type for undefined syms. * ld-powerpc/tls32.s: Likewise. * ld-powerpc/tlstoc.s: Likewise. * ld-s390/tlsbin.s: Likewise. * ld-s390/tlsbin_64.s: Likewise. * ld-s390/tlsbinpic.s: Likewise. * ld-s390/tlsbinpic_64.s: Likewise. * ld-s390/tlspic1.s: Likewise. * ld-s390/tlspic1_64.s: Likewise. * ld-sparc/tlssunbin32.s: Likewise. * ld-sparc/tlssunbinpic32.s: Likewise. * ld-sparc/tlssunnopic32.s: Likewise. * ld-sparc/tlssunpic32.s: Likewise.
2004-10-01 * ld-powerpc/tls.s (gd, ld): Set tls type for undefined syms.Alan Modra1-0/+3
* ld-powerpc/tls32.s (gd, ld): Likewise. * ld-powerpc/tlstoc.s (gd, ld): Likewise. * ld-powerpc/tlsso.r: Update. * ld-powerpc/tlsso32.r: Update. * ld-powerpc/tlstocso.r: Update.
2003-02-18New tests.Alan Modra1-0/+80