[PATCH, AARCH64] Added R_AARCH64_GOT_LD_PREL19 reloc implementation

Chris Schlumberger-Socha chris.schlumberger-socha@arm.com
Tue Sep 11 14:11:00 GMT 2012


This patch adds support for R_AARCH64_GOT_LD_PREL19 relocation in binutils,
which is needed for tiny (PIC) code model.

This reloc set a load-literal immediate field to bits 00000000 001FFFFC of
G(S)-P (Address of the GOT for symbol S, minus address of the place being
relocated). This must be in the range of -2^20 <= G(S)-P < 2^20.

Test cases have been added to GAS and LD.

Thanks,
Chris Socha

ChangeLog:

2012-09-11  Chris Schlumberger-Socha  <chris.schlumberger-socha@arm.com>

	bfd/

	* bfd-in2.h: Regenerated.
	* elf64-aarch64.c
	(elf64_aarch64_howto_table): Add R_AARCH64_GOT_LD_PREL19 reloc to HOWTO.
	(elf64_aarch64_reloc_map): Add reloc entry.
	(aarch64_resolve_relocation): Likewise.
	(bfd_elf_aarch64_put_addend): Likewise.
	(aarch64_reloc_got_type): Likewise.
	(elf64_aarch64_final_link_relocate): Likewise.
	(lf64_aarch64_check_relocs): Likewise.
	(elf64_aarch64_check_relocs): New case for R_AARCH64_ADR_PREL_LO21
	reloc.
	* libbfd.h: Regenerated.
	* reloc.c (R_AARCH64_GOT_LD_PREL19): New reloc.

	gas/

	* config/tc-aarch64.c
	(reloc_table): Add reloc to table entry.
	(parse_address_main): Add support for #:<reloc_op>:<symbol>.
	(parse_operands): Check for unused reloc.
	(md_apply_fix): New case for reloc.
	(aarch64_force_relocation): Likewise.

	gas/testsuite

	* gas/aarch64/reloc-insn.d
	(BFD_RELOC_AARCH64_GOT_LD_PREL19): Add expected asm for new reloc test.
	* gas/aarch64/reloc-insn.s
	(BFD_RELOC_AARCH64_GOT_LD_PREL19): Add test for reloc.

	include/

	* elf/aarch64.h (R_AARCH64_GOT_LD_PREL19): New reloc.

	ld/testsuite

	* ld-aarch64/aarch64-elf.exp: New reloc tests.
	* ld-aarch64/emit-relocs-309-low-bad.d: New file. Expected asm for test
	failure (lower bound overflow).
	* ld-aarch64/emit-relocs-309-low.d: New file. Expected asm for test
	success (lower bound).
	* ld-aarch64/emit-relocs-309-up-bad.d: New file. Expected asm for test
	failure (upper bound overflow).
	* ld-aarch64/emit-relocs-309-up.d: New file. Expected asm for test
	success (upper bound).
	* ld-aarch64/emit-relocs-309.s: New file. Asm for new reloc tests.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Added-R_AARCH64_GOT_LD_PREL19-reloc-implementation.patch
Type: text/x-patch
Size: 18543 bytes
Desc: not available
URL: <https://sourceware.org/pipermail/binutils/attachments/20120911/eb314136/attachment.bin>


More information about the Binutils mailing list