This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH, AARCH64] Added R_AARCH64_GOT_LD_PREL19 reloc implementation
- From: Richard Earnshaw <rearnsha at arm dot com>
- To: Chris Schlumberger-Socha <chris dot schlumberger-socha at arm dot com>
- Cc: "binutils at sourceware dot org" <binutils at sourceware dot org>
- Date: Wed, 12 Sep 2012 09:59:40 +0100
- Subject: Re: [PATCH, AARCH64] Added R_AARCH64_GOT_LD_PREL19 reloc implementation
- References: <504F468C.70604@arm.com>
On 11/09/12 15:11, Chris Schlumberger-Socha wrote:
> 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.
>
>
OK.
R.