aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-cris/tls-local-63.d
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2019-07-11 22:08:39 +0930
committerAlan Modra <amodra@gmail.com>2019-07-13 09:57:50 +0930
commitf26a32876ba49b2d5537beccea2a38bc544e9732 (patch)
treed336701d832c5984d9027a6b371e9acc7c6eb772 /ld/testsuite/ld-cris/tls-local-63.d
parent7b2438015ca87297b2796c662182f796bb5358c2 (diff)
downloadgdb-f26a32876ba49b2d5537beccea2a38bc544e9732.zip
gdb-f26a32876ba49b2d5537beccea2a38bc544e9732.tar.gz
gdb-f26a32876ba49b2d5537beccea2a38bc544e9732.tar.bz2
Dynamic TLS section symbols
It is possible to create shared libraries on PowerPC using -ftls-model=inital-exec or -ftls-model=local-exec. The first is half reasonable, getting you a shared library that can't be dlopen'd but otherwise is reasonable. The second is quite bad. Not only do you lose being able to dlopen, the library also has dynamic text relocations. Worse, the TPREL16_LO, TPREL16_HA and other TPREL16 dynamic relocs emitted were wrong, resulting in wrong values being applied by ld.so. Using the first TLS section symbol in dynamic relocations for local TLS symbols doesn't work. It's wrong because TLS symbols used by TLS relocs have values relative to the TLS segment, whereas the TLS section symbols are addresses. This patch instead uses a symbol index of zero which is used elsewhere by PowerPC on dynamic TLS relocs. It's not strictly ABI compliant to use a non-TLS symbol with TLS relocs but symbol index zero can be interpreted as "no symbol". Not using the first TLS section symbol means it doesn't need to be dynamic. The patch also fixes a further problem with PowerPC32 dynamic TPREL16* relocs, which shouldn't have the symbol value in the addend as we do for non-TLS symbols. bfd/ * elflink.c (_bfd_elf_omit_section_dynsym_default): Don't keep tls_sec. (_bfd_elf_init_1_index_section): Prefer not using TLS sections. (_bfd_elf_init_2_index_sections): Likewise. * elf64-ppc.c (ppc64_elf_relocate_section): When emitting dynamic relocations for local TLS symbols, use STN_UNDEF as the relocation symbol. * elf32-ppc.c (ppc_elf_relocate_section): Likewise, and don't leave TLS symbol value in the addend. ld/ * testsuite/ld-powerpc/tlsso.r: Update. * testsuite/ld-powerpc/tlsso32.g: Update. * testsuite/ld-powerpc/tlsso32.r: Update. * testsuite/ld-powerpc/tlstocso.r: Update. * testsuite/ld-cris/tls-dso-dtpoffd2.d: Update. * testsuite/ld-cris/tls-dso-dtpoffd4.d: Update. * testsuite/ld-cris/tls-dso-tpoffgotcomm1.d: Update. * testsuite/ld-cris/tls-gd-1.d: Update. * testsuite/ld-cris/tls-gd-1h.d: Update. * testsuite/ld-cris/tls-gd-2.d: Update. * testsuite/ld-cris/tls-gd-2h.d: Update. * testsuite/ld-cris/tls-ie-10.d: Update. * testsuite/ld-cris/tls-ie-11.d: Update. * testsuite/ld-cris/tls-ie-8.d: Update. * testsuite/ld-cris/tls-ie-9.d: Update. * testsuite/ld-cris/tls-js1.d: Update. * testsuite/ld-cris/tls-ld-4.d: Update. * testsuite/ld-cris/tls-ld-5.d: Update. * testsuite/ld-cris/tls-ld-6.d: Update. * testsuite/ld-cris/tls-ld-7.d: Update. * testsuite/ld-cris/tls-ldgd-14.d: Update. * testsuite/ld-cris/tls-ldgd-15.d: Update. * testsuite/ld-cris/tls-ldgdx-14.d: Update. * testsuite/ld-cris/tls-ldgdx-15.d: Update. * testsuite/ld-cris/tls-local-54.d: Update. * testsuite/ld-cris/tls-local-60.d: Update. * testsuite/ld-cris/tls-local-61.d: Update. * testsuite/ld-cris/tls-local-63.d: Update. * testsuite/ld-cris/tls-local-64.d: Update. * testsuite/ld-cris/tls-ok-30.d: Update. * testsuite/ld-cris/tls-ok-32.d: Update. * testsuite/ld-cris/tls-ok-34.d: Update. * testsuite/ld-mips-elf/tls-multi-got-1.got: Update. * testsuite/ld-mips-elf/tls-multi-got-1.r: Update. * testsuite/ld-mips-elf/tlsdyn-pie-o32.d: Update. * testsuite/ld-mips-elf/tlsdyn-pie-o32.got: Update. * testsuite/ld-mips-elf/tlslib-o32-hidden.got: Update. * testsuite/ld-mips-elf/tlslib-o32-ver.got: Update. * testsuite/ld-mips-elf/tlslib-o32.got: Update. * testsuite/ld-s390/tlspic.rd: Update. * testsuite/ld-s390/tlspic_64.rd: Update. * testsuite/ld-sparc/tlssunnopic32.rd: Update. * testsuite/ld-sparc/tlssunnopic64.rd: Update. * testsuite/ld-sparc/tlssunpic32.rd: Update. * testsuite/ld-sparc/tlssunpic64.rd: Update.
Diffstat (limited to 'ld/testsuite/ld-cris/tls-local-63.d')
-rw-r--r--ld/testsuite/ld-cris/tls-local-63.d10
1 files changed, 5 insertions, 5 deletions
diff --git a/ld/testsuite/ld-cris/tls-local-63.d b/ld/testsuite/ld-cris/tls-local-63.d
index 2c16747..7fde60a 100644
--- a/ld/testsuite/ld-cris/tls-local-63.d
+++ b/ld/testsuite/ld-cris/tls-local-63.d
@@ -10,11 +10,11 @@
#...
Relocation section '.rela.dyn' at offset 0x.* contains 1 entry:
Offset Info Type Sym.Value Sym. Name \+ Addend
-000021b4 0000001c R_CRIS_32_TPREL[ ]+0
+000021a0 0000001c R_CRIS_32_TPREL[ ]+0
The decoding of unwind sections for machine type Axis Communications 32-bit embedded processor is not currently supported.
-Symbol table '.dynsym' contains 4 entries:
+Symbol table '.dynsym' contains 3 entries:
Num: Value Size Type Bind Vis Ndx Name
#...
Symbol table '.symtab' contains 13 entries:
@@ -22,10 +22,10 @@ Symbol table '.symtab' contains 13 entries:
.: 00000000 +4 +TLS +LOCAL +DEFAULT +6 x
#...
Hex dump of section '.text':
- 0x00000128 5fae0c00 .*
+ 0x00000114 5fae0c00 .*
#...
Hex dump of section '.tdata':
- 0x0000212c 280+ .*
+ 0x00002118 280+ .*
#...
Hex dump of section '.got':
- 0x0+21a8 30210000 0+ 0+ 0+ .*
+ 0x0+2194 1c210000 0+ 0+ 0+ .*