binutils-gdb/ld/testsuite
H.J. Lu 5bc71c2a6b x86-64: Add R_X86_64_CODE_6_GOTTPOFF
For

	add	%reg1, name@gottpoff(%rip), %reg2

and

	add	name@gottpoff(%rip), %reg1, %reg2

add

 #define R_X86_64_CODE_6_GOTTPOFF		50

if the instruction starts at 6 bytes before the relocation offset.
They are similar to R_X86_64_GOTTPOFF.  Linker can covert GOTTPOFF to

	add	$name@tpoff, %reg1, %reg2

Rewrite fx_tcbit, fx_tcbit2 and fx_tcbit3 usage to generate
R_X86_64_GOTPCRELX, R_X86_64_REX_GOTPCRELX, R_X86_64_CODE_4_GOTPCRELX,
R_X86_64_CODE_4_GOTTPOFF, R_X86_64_CODE_4_GOTPC32_TLSDESC and
R_X86_64_CODE_6_GOTTPOFF.

NB: There is no need to check BFD_RELOC_X86_64_CODE_4_GOTTPOFF in
md_assemble since there is only BFD_RELOC_X86_64_GOTTPOFF at this
stage, which will be converted to BFD_RELOC_X86_64_CODE_4_GOTTPOFF
or BFD_RELOC_X86_64_CODE_6_GOTTPOFF in i386_validate_fix.

5 relocations:

 #define R_X86_64_CODE_5_GOTPCRELX		46
 #define R_X86_64_CODE_5_GOTTPOFF		47
 #define R_X86_64_CODE_5_GOTPC32_TLSDESC	48
 #define R_X86_64_CODE_6_GOTPCRELX		49
 #define R_X86_64_CODE_6_GOTPC32_TLSDESC	51

are added for completeness and they are unused.

bfd/

	* elf64-x86-64.c (x86_64_elf_howto_table): Add
	R_X86_64_CODE_5_GOTPCRELX, R_X86_64_CODE_5_GOTTPOFF,
	R_X86_64_CODE_5_GOTPC32_TLSDESC, R_X86_64_CODE_6_GOTPCRELX,
	R_X86_64_CODE_6_GOTTPOFF and R_X86_64_CODE_6_GOTPC32_TLSDESC.
	(R_X86_64_standard): Updated.
	(x86_64_reloc_map): Add R_X86_64_CODE_5_GOTPCRELX,
	R_X86_64_CODE_5_GOTTPOFF, R_X86_64_CODE_5_GOTPC32_TLSDESC,
	R_X86_64_CODE_6_GOTPCRELX, R_X86_64_CODE_6_GOTTPOFF and
	R_X86_64_CODE_6_GOTPC32_TLSDESC.
	(elf_x86_64_check_tls_transition): Handle
	R_X86_64_CODE_6_GOTTPOFF.
	(elf_x86_64_tls_transition): Likewise.
	(elf_x86_64_scan_relocs): Handle R_X86_64_CODE_6_GOTTPOFF.
	Issue an error for R_X86_64_CODE_5_GOTPCRELX,
	R_X86_64_CODE_5_GOTTPOFF, R_X86_64_CODE_5_GOTPC32_TLSDESC,
	R_X86_64_CODE_6_GOTPCRELX and R_X86_64_CODE_6_GOTPC32_TLSDESC.
	(elf_x86_64_relocate_section): Handle R_X86_64_CODE_6_GOTTPOFF.
	* reloc.c (bfd_reloc_code_real): Add
	BFD_RELOC_X86_64_CODE_5_GOTPCRELX,
	BFD_RELOC_X86_64_CODE_5_GOTTPOFF,
	BFD_RELOC_X86_64_CODE_5_GOTPC32_TLSDESC,
	BFD_RELOC_X86_64_CODE_6_GOTPCRELX,
	BFD_RELOC_X86_64_CODE_6_GOTTPOFF and
	BFD_RELOC_X86_64_CODE_6_GOTPC32_TLSDESC.
	* bfd-in2.h: Regenerated.
	* libbfd.h: Likewise.

elfcpp/

	* x86_64.h (R_X86_64_CODE_5_GOTPCRELX): New.
	(R_X86_64_CODE_5_GOTTPOFF): Likewise.
	(R_X86_64_CODE_5_GOTPC32_TLSDESC): Likewise.
	(R_X86_64_CODE_6_GOTPCRELX): Likewise.
	(R_X86_64_CODE_6_GOTTPOFF): Likewise.
	(R_X86_64_CODE_6_GOTPC32_TLSDESC): Likewise.

gas/

	* config/tc-i386.c (tc_i386_fix_adjustable): Handle
	BFD_RELOC_X86_64_CODE_6_GOTTPOFF.
	(md_assemble): Don't check BFD_RELOC_X86_64_CODE_4_GOTTPOFF.
	Allow "add %reg1, foo@gottpoff(%rip), %reg2".
	(output_disp): Handle BFD_RELOC_X86_64_CODE_6_GOTTPOFF.  Rewrite
	setting fx_tcbitX bits for BFD_RELOC_X86_64_GOTTPOFF,
	BFD_RELOC_X86_64_GOTPC32_TLSDESC and BFD_RELOC_32_PCREL.
	(md_apply_fix): Handle BFD_RELOC_X86_64_CODE_6_GOTTPOFF.
	(i386_validate_fix): Rewrite fx_tcbitX bit checking for
	BFD_RELOC_X86_64_GOTTPOFF, BFD_RELOC_X86_64_GOTPC32_TLSDESC and
	BFD_RELOC_32_PCREL.
	(tc_gen_reloc): Handle BFD_RELOC_X86_64_CODE_6_GOTTPOFF.
	* testsuite/gas/i386/x86-64-gottpoff.d: Updated.
	* testsuite/gas/i386/x86-64-gottpoff.s: Add tests for
	"add %reg1, foo@gottpoff(%rip), %reg2" and
	"add foo@gottpoff(%rip), %reg, %reg2".

gold/

	* x86_64.cc (Target_x86_64::optimize_tls_reloc): Handle
	R_X86_64_CODE_6_GOTTPOFF.
	(Target_x86_64::Scan::get_reference_flags): Likewise.
	(Target_x86_64::Scan::local): Likewise.
	(Target_x86_64::Scan::global): Likewise.
	(Target_x86_64::Relocate::relocate): Likewise.
	(Target_x86_64::Relocate::relocate_tls): Likewise.
	(Target_x86_64::Relocate::tls_ie_to_le): Handle.
	R_X86_64_CODE_6_GOTTPOFF.
	* testsuite/x86_64_ie_to_le.s: Add tests for
	"add %reg1, foo@gottpoff(%rip), %reg2" and
	"add foo@gottpoff(%rip), %reg, %reg2".
	* testsuite/x86_64_ie_to_le.sh: Updated.

include/

	* elf/x86-64.h (elf_x86_64_reloc_type): Add
	R_X86_64_CODE_5_GOTPCRELX, R_X86_64_CODE_5_GOTTPOFF,
	R_X86_64_CODE_5_GOTPC32_TLSDESC, R_X86_64_CODE_6_GOTPCRELX,
	R_X86_64_CODE_6_GOTTPOFF and R_X86_64_CODE_6_GOTPC32_TLSDESC.

ld/

	* testsuite/ld-x86-64/tlsbindesc.s: Add R_X86_64_CODE_6_GOTTPOFF
	tests.
	* testsuite/ld-x86-64/tlsbindesc.d: Updated.
	* testsuite/ld-x86-64/tlsbindesc.rd: Likewise.
2024-02-08 03:45:43 -08:00
..
config Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-aarch64 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-alpha Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-arc Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-arm Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-auto-import Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-avr Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-bootstrap Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-bpf Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-cdtest Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-checks Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-cris Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-crx Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-csky
ld-ctf Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-cygwin Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-d10v Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-discard Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-dynamic Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-elf elf: Rename is_standard_elf to uses_elf_em 2024-01-26 07:32:03 -08:00
ld-elfcomm Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-elfvers Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-elfweak Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-fastcall Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-frv Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-gc Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-h8300 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-i386 x86: Don't check R_386_NONE nor R_X86_64_NONE 2024-01-09 06:39:42 -08:00
ld-ia64 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-ifunc ld: Adjust x86 and x86-64 tests for -z mark-plt 2024-01-06 07:10:15 -08:00
ld-kvx Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-libs Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-linkonce Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-loongarch-elf LoongArch: ld: Add support for TLS LE symbol with addend 2024-01-26 16:49:09 +08:00
ld-m68hc11 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-m68k Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-mep Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-metag Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-mips-elf Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-misc Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-mmix Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-mn10300 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-msp430-elf Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-nds32 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-nios2
ld-or1k Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-pdp11 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-pe Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-pie Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-plugin Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-powerpc Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-pru
ld-riscv-elf Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-s12z Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-s390 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-scripts Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-selective Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-sframe Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-sh Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-shared Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-size Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-sparc Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-spu Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-srec Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-tic6x Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-tilegx Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-tilepro Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-undefined Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-unique Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-v850 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-vax-elf Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-visium Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-vsb Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-vxworks Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-x86-64 x86-64: Add R_X86_64_CODE_6_GOTTPOFF 2024-02-08 03:45:43 -08:00
ld-xstormy16 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-xtensa Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-z8k Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ld-z80 Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
lib Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +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