diff options
author | Alan Modra <amodra@gmail.com> | 2020-01-22 12:24:56 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-01-22 17:14:08 +1030 |
commit | a804e4760a9f05aeb61071f8caad3579e6a197a2 (patch) | |
tree | c25f0e5d42c379e7d388df47f6f0fe698a0bdd3b /ld/testsuite/ld-powerpc/tlsdesc3.wf | |
parent | 9e7028aa1e788d666bad91fb20159da6c95bbab1 (diff) | |
download | gdb-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.wf | 43 |
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 |