binutils-gdb/ld/testsuite/ld-powerpc/tlsdesc3.wf
Alan Modra a804e4760a 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.
2020-01-22 17:14:08 +10:30

44 lines
1.1 KiB
Plaintext

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