binutils-gdb/ld/testsuite/ld-powerpc
Alan Modra b86ac8e3a5 Correct PowerPC64 local-dynamic TLS linker optimization
The linker hardcoded r3 into a local-dynamic to local-exec TLS
optimization sequence.  This is normally the case since r3 is required
as a parameter to (the optimized out) __tls_get_addr call.  However,
it is possible for a compiler, LLVM in this case, to set up the
parameter value in another register then copy it to r3 before the
call.

When fixing this problem, I noticed that ppc32 had another bug when
optimizing away one of the TLS insns to a nop.

The patch also tidies a mask used by global-dynamic to initial-exec
TLS optimization, to just select the fields needed.  Leaving the
offset in the instruction wasn't a bug since it will be overwritten
anyway.

bfd/
	* elf64-ppc.c (ppc64_elf_relocate_section): Correct GOT_TLSLD
	optimization.  Tidy mask for GOT_TLSGD optimization.
	* elf32-ppc.c (ppc_elf_relocate_section): Likewise.  Correct
	location of nop zapping high insn too.
ld/testsuite/
	* ld-powerpc/tlsld.d, * ld-powerpc/tlsld.s: New test.
	* ld-powerpc/tlsld32.d, * ld-powerpc/tlsld32.s: New test.
	* ld-powerpc/powerpc.exp: Run them.  Move tocvar and tocnovar.
2015-01-29 13:13:02 +10:30
..
aix52.exp ChangeLog rotatation and copyright year update 2015-01-02 00:53:45 +10:30
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-ref-1-32.od
aix-ref-1-64.od
aix-ref-1.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
ambiguousv1.d Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
ambiguousv1b.d Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
ambiguousv2.d Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
ambiguousv2b.d Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
apuinfo1.s
apuinfo2.s
apuinfo-nul1.s
apuinfo-nul.rd
apuinfo-nul.s
apuinfo-vle.rd Power/GAS: Don't set VLE annotation for non-VLE processors/instructions 2014-08-22 16:52:20 +01:00
apuinfo-vle.s Power/GAS: Don't set VLE annotation for non-VLE processors/instructions 2014-08-22 16:52:20 +01:00
apuinfo.rd Power/GAS: Don't set VLE annotation for non-VLE processors/instructions 2014-08-22 16:52:20 +01:00
attr-gnu-4-0.s
attr-gnu-4-1.s
attr-gnu-4-2.s
attr-gnu-4-3.s
attr-gnu-4-4.s
attr-gnu-4-00.d
attr-gnu-4-01.d
attr-gnu-4-02.d
attr-gnu-4-03.d
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
defsym.d Copy st_other for linker script symbol assignments 2014-07-08 19:42:03 +09:30
defsym.s Copy st_other for linker script symbol assignments 2014-07-08 19:42:03 +09:30
elfv2-2a.s
elfv2-2b.s
elfv2-2exe.d
elfv2-2so.d
elfv2.s
elfv2exe.d Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
elfv2so.d Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
export-class.exp ChangeLog rotatation and copyright year update 2015-01-02 00:53:45 +10:30
funref2.s Taking an undefined function's address in an executable 2014-07-02 18:16:14 +09:30
funref.s Referencing a function's address on PowerPC64 ELFv2 2014-03-27 00:49:38 +10:30
funv1.s Referencing a function's address on PowerPC64 ELFv2 2014-03-27 00:49:38 +10:30
funv2.s Referencing a function's address on PowerPC64 ELFv2 2014-03-27 00:49:38 +10:30
oldtlslib.s
plt1.d
plt1.s
powerpc-32-export-class.rd
powerpc-32-export-class.xd
powerpc-64-export-class.rd
powerpc-64-export-class.xd
powerpc.exp Correct PowerPC64 local-dynamic TLS linker optimization 2015-01-29 13:13:02 +10:30
relax.d
relax.s
relaxr.d
relbrlt.d
relbrlt.s
reloc.d
reloc.s
sdabase2.d Use a symbol flag bit to mark linker defined symbols 2014-12-23 23:36:50 +10:30
sdabase2.t Use a symbol flag bit to mark linker defined symbols 2014-12-23 23:36:50 +10:30
sdabase.d Use a symbol flag bit to mark linker defined symbols 2014-12-23 23:36:50 +10:30
sdabase.s Use a symbol flag bit to mark linker defined symbols 2014-12-23 23:36:50 +10:30
sdabase.t Use a symbol flag bit to mark linker defined symbols 2014-12-23 23:36:50 +10:30
sdadyn.d
sdadyn.s
sdalib.s
startv1.s Referencing a function's address on PowerPC64 ELFv2 2014-03-27 00:49:38 +10:30
startv2.s Referencing a function's address on PowerPC64 ELFv2 2014-03-27 00:49:38 +10:30
symtocbase-1.s
symtocbase-2.s
symtocbase.d
tls32.d
tls32.g
tls32.s
tls32.t
tls.d
tls.g
tls.s
tls.t
tlsexe32.d
tlsexe32.g
tlsexe32.r
tlsexe32.t
tlsexe.d
tlsexe.g
tlsexe.r Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
tlsexe.t
tlsexetoc.d
tlsexetoc.g
tlsexetoc.r Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
tlsexetoc.t
tlsld32.d Correct PowerPC64 local-dynamic TLS linker optimization 2015-01-29 13:13:02 +10:30
tlsld32.s Correct PowerPC64 local-dynamic TLS linker optimization 2015-01-29 13:13:02 +10:30
tlsld.d Correct PowerPC64 local-dynamic TLS linker optimization 2015-01-29 13:13:02 +10:30
tlsld.s Correct PowerPC64 local-dynamic TLS linker optimization 2015-01-29 13:13:02 +10:30
tlslib32.s
tlslib.s
tlsmark32.d
tlsmark32.s
tlsmark.d
tlsmark.s
tlsopt1_32.d
tlsopt1_32.s
tlsopt1.d
tlsopt1.s
tlsopt2_32.d
tlsopt2_32.s
tlsopt2.d
tlsopt2.s
tlsopt3_32.d
tlsopt3_32.s
tlsopt3.d
tlsopt3.s
tlsopt4_32.d
tlsopt4_32.s
tlsopt4.d
tlsopt4.s
tlsso32.d
tlsso32.g
tlsso32.r
tlsso32.t
tlsso.d
tlsso.g
tlsso.r Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
tlsso.t
tlstoc.d
tlstoc.g
tlstoc.s
tlstoc.t
tlstocso.d
tlstocso.g
tlstocso.r Reorder more powerpc64 sections for -z relro 2015-01-20 19:52:42 +10:30
tlstocso.t
tocnovar.d PowerPC64 changes for xlc 2015-01-28 18:30:54 +10:30
tocnovar.s PowerPC64 changes for xlc 2015-01-28 18:30:54 +10:30
tocopt2.d
tocopt2.out
tocopt2.s
tocopt3.d
tocopt3.s
tocopt4.d
tocopt4a.s
tocopt4b.s
tocopt5.d
tocopt5.s
tocopt.d
tocopt.out
tocopt.s
tocvar.d PowerPC64 changes for xlc 2015-01-28 18:30:54 +10:30
tocvar.s PowerPC64 changes for xlc 2015-01-28 18:30:54 +10:30
vle-multiseg-1.d
vle-multiseg-1.ld
vle-multiseg-2.d
vle-multiseg-2.ld
vle-multiseg-3.d
vle-multiseg-3.ld
vle-multiseg-4.d
vle-multiseg-4.ld
vle-multiseg-5.d
vle-multiseg-5.ld
vle-multiseg-6.d
vle-multiseg-6.ld
vle-multiseg-6a.s
vle-multiseg-6b.s
vle-multiseg-6c.s
vle-multiseg-6d.s
vle-multiseg.s
vle-reloc-1.d
vle-reloc-1.s
vle-reloc-2.d
vle-reloc-2.s
vle-reloc-3.d Correct ld-powerpc/vle-reloc-2 test 2014-03-15 00:12:56 +10:30
vle-reloc-3.s
vle-reloc-def-1.s
vle-reloc-def-2.s
vle-reloc-def-3.s
vle.ld Fix overflow handling of VLE_SDA21 2014-03-14 15:01:53 +10:30
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
vxworks-relax-2.rd Sort relocs output by ld -r 2014-12-04 17:37:58 +10:30
vxworks-relax-2.s
vxworks-relax.rd Sort relocs output by ld -r 2014-12-04 17:37:58 +10:30
vxworks-relax.s