aboutsummaryrefslogtreecommitdiff
path: root/ld/testsuite/ld-powerpc/tlsdesc3.wf
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-01-22 12:24:56 +1030
committerAlan Modra <amodra@gmail.com>2020-01-22 17:14:08 +1030
commita804e4760a9f05aeb61071f8caad3579e6a197a2 (patch)
treec25f0e5d42c379e7d388df47f6f0fe698a0bdd3b /ld/testsuite/ld-powerpc/tlsdesc3.wf
parent9e7028aa1e788d666bad91fb20159da6c95bbab1 (diff)
downloadgdb-a804e4760a9f05aeb61071f8caad3579e6a197a2.zip
gdb-a804e4760a9f05aeb61071f8caad3579e6a197a2.tar.gz
gdb-a804e4760a9f05aeb61071f8caad3579e6a197a2.tar.bz2
PowerPC64 tls_get_addr_desc static support
This provides a linker generated __tls_get_addr_desc wrapper function preserving registers around a __tls_get_addr call. The idea being to support __tls_get_addr_desc without requiring a glibc update. bfd/ * elf64-ppc.c (struct ppc_link_hash_table): Add tga_group. (ppc64_elf_archive_symbol_lookup): Extract __tls_get_addr_opt for __tls_get_addr_desc. (ppc64_elf_size_stubs): Add section for linker generated __tls_get_addr_desc wrapper function. Loop at least once if generating this function. (emit_tga_desc, emit_tga_desc_eh_frame): New functions. (ppc64_elf_build_stubs): Generate __tls_get_addr_desc. ld/ * testsuite/ld-powerpc/tlsdesc3.d, * testsuite/ld-powerpc/tlsdesc3.wf, * testsuite/ld-powerpc/tlsdesc4.d, * testsuite/ld-powerpc/tlsdesc4.s, * testsuite/ld-powerpc/tlsdesc4.wf: New tests. * testsuite/ld-powerpc/powerpc.exp: Run them.
Diffstat (limited to 'ld/testsuite/ld-powerpc/tlsdesc3.wf')
-rw-r--r--ld/testsuite/ld-powerpc/tlsdesc3.wf43
1 files changed, 43 insertions, 0 deletions
diff --git a/ld/testsuite/ld-powerpc/tlsdesc3.wf b/ld/testsuite/ld-powerpc/tlsdesc3.wf
new file mode 100644
index 0000000..af5a6b4
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/tlsdesc3.wf
@@ -0,0 +1,43 @@
+Contents of the \.eh_frame section:
+
+0+ 0+10 0+ CIE
+ Version: 1
+ Augmentation: "zR"
+ Code alignment factor: 4
+ Data alignment factor: -8
+ Return address column: 65
+ Augmentation data: 1b
+ DW_CFA_def_cfa: r1 ofs 0
+
+0+14 0+34 0+18 FDE cie=0+ pc=0+10000100\.\.0+10000160
+ DW_CFA_advance_loc: 44 to 0+1000012c
+ DW_CFA_def_cfa_offset: 96
+ DW_CFA_offset_extended_sf: r65 at cfa\+16
+ DW_CFA_offset: r4 at cfa-64
+ DW_CFA_offset: r5 at cfa-56
+ DW_CFA_offset: r6 at cfa-48
+ DW_CFA_offset: r7 at cfa-40
+ DW_CFA_offset: r8 at cfa-32
+ DW_CFA_offset: r9 at cfa-24
+ DW_CFA_offset: r10 at cfa-16
+ DW_CFA_offset: r11 at cfa-8
+ DW_CFA_advance_loc: 40 to 0+10000154
+ DW_CFA_def_cfa_offset: 0
+ DW_CFA_restore: r4
+ DW_CFA_restore: r5
+ DW_CFA_restore: r6
+ DW_CFA_restore: r7
+ DW_CFA_restore: r8
+ DW_CFA_restore: r9
+ DW_CFA_restore: r10
+ DW_CFA_restore: r11
+ DW_CFA_advance_loc: 8 to 0+1000015c
+ DW_CFA_restore_extended: r65
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop
+
+0+4c 0+10 0+50 FDE cie=0+ pc=0+10000164\.\.0+10000170
+ DW_CFA_nop
+ DW_CFA_nop
+ DW_CFA_nop