8sa1-binutils-gdb/ld/testsuite
Clément Chigot 1b2cb8e2ee aix: implement TLS relocation for gas and ld
Add support for TLS in XCOFF. Amongst the things done by this commit:
 - Update XCOFF auxialiary header to match new version and allow TLS
   sections.
 - Add TLS sections (.tdata and .tbss) support in gas and ld.
 - Add support for the TLS relocations in gas and ld.
   Two different types BFD_RELOC are created for PPC and PPC64 as
   the size is a pointer, thus distinct in 32 or 64bit.

The addresses given by ld to .tdata and .tbss is a bit special. In
XCOFF, these addresses are actually offsets from the TLS pointer
computed at runtime. AIX assembly and linker does the same. In
top of that, the .tdata must be before .data (this is mandatory for AIX
loader). Thus, the aix ld script is recomputing "." before .data to restore
its original value. There might be a simpler way, but this one is working.

Optimisation linked to TLS relocations aren't yet implemented.

bfd/
	* reloc.c (BFD_RELOC_PPC_TLS_LE, BFD_RELOC_PPC_TLS_IE,
	BFD_RELOC_PPC_TLS_M, BFD_RELOC_PPC_TLS_ML, BFD_RELOC_PPC64_TLS_GD,
	BFD_RELOC_PPC64_TLS_LD, BFD_RELOC_PPC64_TLS_LE,
	BFD_RELOC_PPC64_TLS_IE, BFD_RELOC_PPC64_TLS_M,
	BFD_RELOC_PPC64_TLS_ML): New relocations.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Regenerate.
	* coff-rs6000.c (xcoff_calculate_relocation): Call
	xcoff_reloc_type_tls for TLS relocations.
	(xcoff_howto_table): Implement TLS relocations.
	(_bfd_xcoff_reloc_type_lookup): Add cases TLS relocations.
	(xcoff_reloc_type_tls): New function.
	* coff64-rs6000.c (xcoff_calculate_relocation): Likewise.
	(xcoff_howto_table): Likewise.
	(_bfd_xcoff_reloc_type_lookup): Likewise.
	* coffcode.h (sec_to_styp_flags): Handle TLS sections.
	(styp_to_sec_flags): Likewise.
	(coff_compute_section_file_positions): Avoid file offset
	optimisation for .data when the previous section is .tdata.
	(coff_write_object_contents): Handle TLS sections.
	* coffswap.h (coff_swap_aouthdr_out): Add support for
	new fields in aouthdr.
	* libxcoff.h (xcoff_reloc_type_tls): Add prototype.
	* xcofflink.c (xcoff_link_add_symbols): Handle XMC_UL.
	(xcoff_need_ldrel_p): Add cases for TLS relocations.
	(xcoff_create_ldrel): Add l_symndx for TLS sections.
gas/
	* config/tc-ppc.c (ppc_xcoff_text_section, ppc_xcoff_data_section,
	(ppc_xcoff_bss_section, ppc_xcoff_tdata_section,
	(ppc_xcoff_tbss_section): New variables.
	(ppc_text_subsegment, ppc_text_csects, ppc_data_subgments,
	(ppc_data_csects): Removed.
	(ppc_xcoff_section_is_initialized, ppc_init_xcoff_section,
	ppc_xcoff_parse_cons): New functions.
	(md_being): Initialize XCOFF sections.
	(ppc_xcoff_suffix): Add support for TLS relocations
	(fixup_size, md_apply_fix): Add support for new BFD_RELOC.
	(ppc_change_csect): Handle XMC_TL, XMC_UL.  Correctly, add XMC_BS
	to .bss section.  Handle new XCOFF section variables.
	(ppc_comm): Likewise.
	(ppc_toc): Likewise.
	(ppc_symbol_new_hook): Likewise.
	(ppc_frob_symbol): Likewise.
	(ppc_fix_adjustable): Add tbss support.
	* config/tc-ppc.h (TC_PARSE_CONS_EXPRESSION): New define.
	(ppc_xcoff_parse_cons): Add prototype.
	(struct ppc_xcoff_section): New structure.
ld/
	* emultempl/aix.em: Ensure .tdata section is removed
	if empty, even with -r flag.
	* scripttempl/aix.sc: Handle TLS sections.
	* testsuite/ld-powerpc/aix52.exp: Add new tests.
	* testsuite/ld-powerpc/aix-tls-reloc-32.d: New test.
	* testsuite/ld-powerpc/aix-tls-reloc-64.d: New test.
	* testsuite/ld-powerpc/aix-tls-reloc.ex: New test.
	* testsuite/ld-powerpc/aix-tls-reloc.s: New test.
	* testsuite/ld-powerpc/aix-tls-section-32.d: New test.
	* testsuite/ld-powerpc/aix-tls-section-64.d: New test.
	* testsuite/ld-powerpc/aix-tls-section.ex: New test.
	* testsuite/ld-powerpc/aix-tls-section.s: New test.
include/
	* coff/internal.h (struct internal_aouthdr): Add new fields.
	* coff/rs6000.h (AOUTHDRÃ): Add new fields.
	* coff/rs6k64.h (struct external_filehdr): Likewise.
	* coff/xcoff.h (_TDATA), _TBSS): New defines
	(RS6K_AOUTHDR_TLS_LE, RS6K_AOUTHDR_RAS, RS6K_AOUTHDR_ALGNTDATA,
	RS6K_AOUTHDR_SHR_SYMTAB, RS6K_AOUTHDR_FORK_POLICY,
	RS6K_AOUTHDR_FORK_COR): New defines.
	(XMC_TU): Removed.
	(XMC_UL): New define.
2021-03-12 22:47:33 +10:30
..
config
ld-aarch64
ld-alpha
ld-arc
ld-arm Remove arm-symbianelf 2021-02-09 23:36:16 +10:30
ld-auto-import
ld-avr
ld-bootstrap
ld-bpf
ld-cdtest ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-checks ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-cris
ld-crx
ld-csky
ld-ctf
ld-cygwin
ld-d10v
ld-discard
ld-dynamic
ld-elf PR27128, nm -P portable output format regression 2021-03-01 14:26:39 +10:30
ld-elfcomm ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-elfvers ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-elfvsb ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-elfweak ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-fastcall
ld-frv
ld-gc PE image base fallout 2021-03-12 10:41:34 +10:30
ld-h8300
ld-i386 readelf: Replace procesor with processor 2021-02-20 05:55:42 -08:00
ld-ia64
ld-ifunc ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-libs
ld-linkonce
ld-m68hc11
ld-m68k
ld-mep
ld-metag
ld-mips-elf ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-misc ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-mmix
ld-mn10300 ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-msp430-elf
ld-nds32
ld-nios2
ld-or1k
ld-pdp11
ld-pe ld: adjust PE base relocations testcase 2021-03-09 12:40:13 +01:00
ld-pie
ld-plugin Add PR27441 testcase 2021-02-26 17:49:04 +10:30
ld-powerpc aix: implement TLS relocation for gas and ld 2021-03-12 22:47:33 +10:30
ld-pru
ld-riscv-elf RISC-V: Improve multiple relax passes problem. 2021-03-11 17:27:13 +08:00
ld-s12z
ld-s390
ld-scripts PE image base fallout 2021-03-12 10:41:34 +10:30
ld-selective ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-sh ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-shared ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-size
ld-sparc
ld-spu
ld-srec PE image base fallout 2021-03-12 10:41:34 +10:30
ld-tic6x ld testsuite: change unresolved to unsupported/fail 2021-02-14 22:34:27 +10:30
ld-tilegx
ld-tilepro
ld-undefined bfd: don't silently wrap or truncate PE image section RVAs 2021-03-09 08:52:32 +01:00
ld-unique
ld-v850
ld-vax-elf
ld-visium
ld-vxworks
ld-x86-64 elf/x86-64: Subtract __ImageBase for R_AMD64_IMAGEBASE 2021-03-05 18:25:06 -08:00
ld-xc16x
ld-xstormy16
ld-xtensa
ld-z8k
ld-z80
lib PE image base fallout 2021-03-12 10:41:34 +10:30
ChangeLog-2004
ChangeLog-2005
ChangeLog-2006
ChangeLog-2007
ChangeLog-2008
ChangeLog-2009
ChangeLog-2010
ChangeLog-2011
ChangeLog-2012
ChangeLog-2013
ChangeLog-2014
ChangeLog-2015
ChangeLog-9303