binutils-gdb/include
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
..
aout Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
cgen Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
coff riscv64-pei uninitialised data writing relocs 2024-01-25 08:41:14 +10:30
elf x86-64: Add R_X86_64_CODE_6_GOTTPOFF 2024-02-08 03:45:43 -08:00
gdb Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
mach-o Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
opcode bpf: there is no ldinddw nor ldabsdw instructions 2024-01-29 19:22:41 +01:00
sim sim: Fix -Werror=shadow=local by changing mem to addr in sim_{read,write} 2024-01-22 14:22:30 +01:00
som Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
vms Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
alloca-conf.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ansidecl.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
bfdlink.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
binary-io.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
bout.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ChangeLog bpf: there is no ldinddw nor ldabsdw instructions 2024-01-29 19:22:41 +01:00
ChangeLog-0415 binutils ChangeLog rotation 2016-01-01 22:59:17 +10:30
ChangeLog-2016 ChangeLog rotation 2017-01-02 13:55:05 +10:30
ChangeLog-2017 ChangeLog rotation 2018-01-03 17:49:42 +10:30
ChangeLog-2018 ChangeLog rotation 2019-01-01 21:25:40 +10:30
ChangeLog-2019 ChangeLog rotation 2020-01-01 18:12:08 +10:30
ChangeLog-2020 ChangeLog rotation 2021-01-01 10:31:02 +10:30
ChangeLog-9103
collectorAPI.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
COPYING
COPYING3
ctf-api.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
ctf.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
demangle.h Import gcc commit 65388b28656d65595bdaf191df85af81c35ca63 which adds support for explicit object member function mangling. 2024-01-17 12:06:48 +00:00
diagnostics.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
dis-asm.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
dwarf2.def Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
dwarf2.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
dyn-string.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
environ.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
fibheap.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
filenames.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
floatformat.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
fnmatch.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
fopen-bin.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
fopen-same.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
fopen-vms.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
gcc-c-fe.def Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
gcc-c-interface.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
gcc-cp-fe.def Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
gcc-cp-interface.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
gcc-interface.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
getopt.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
hashtab.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
hp-symtab.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
leb128.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
libcollector.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
libfcollector.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
libiberty.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
longlong.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
lto-symtab.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
MAINTAINERS Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
md5.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
oasys.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
objalloc.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
obstack.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
os9k.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
partition.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
plugin-api.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
safe-ctype.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
sframe-api.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
sframe.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
sha1.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
simple-object.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
sort.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
splay-tree.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
symcat.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
timeval-utils.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
vtv-change-permission.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
xregex.h
xregex2.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
xtensa-config.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
xtensa-dynconfig.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
xtensa-isa-internal.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30
xtensa-isa.h Update year range in copyright notice of binutils files 2024-01-04 22:58:12 +10:30