public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: "Richard Earnshaw (lists)" <Richard.Earnshaw@arm.com>
To: Michael Matz <matz@suse.de>, binutils@sourceware.org
Subject: Re: [PATCH] PR30437 aarch64: make RELA relocs idempotent
Date: Wed, 24 May 2023 16:26:03 +0100	[thread overview]
Message-ID: <1ba7b2c7-b489-79af-3f2a-56450c86d955@arm.com> (raw)
In-Reply-To: <alpine.LSU.2.20.2305101400000.13548@wotan.suse.de>

On 10/05/2023 15:04, Michael Matz via Binutils wrote:
> normally RELA relocs in BFD should not consider the contents of the
> relocated place.  The aarch64 psABI is even stricter, it specifies
> (section 5.7.16) that all RELA relocs _must_ be idempotent.
> 
> Since the inception of the aarch64 BFD backend all the relocs have a
> non-zero src_mask, and hence break this invariant.  It's normally not
> a very visible problem as one can see it only when the relocated place
> already contains a non-zero value, which usually only happens sometimes
> when using 'ld -r' (or as in the testcase when jumping through hoops to
> generate the relocations).  Or with alternative toolchains that do encode
> stuff in the relocated places with the assumption that a relocation
> to that place ignores whatever is there (as they can according to
> the psABI).
> 
> Golang is such a toolchain and https://github.com/golang/go/issues/39927
> is ultimately caused by this problem: the testcase testGCData failing
> is caused by the garbage collection data-structure to describe a type
> containing pointers to be wrong.  It's wrong because a field that's
> supposed to contain a file-relative offset (to some gcbits) has a
> relocation applied and that relocation has an addend which also is
> already part of the go-produced object file (so the addend is
> implicitely applied twice).
> 
> bfd/
> 	PR ld/30437
> 	* elfnn-aarch64.c (elfNN_aarch64_howto_table): Clear src_mask
> 	if all relocation descriptors.
> 
> ld/
> 	* testsuite/ld-aarch64/rela-idempotent.s: New testcase.
> 	* testsuite/ld-aarch64/rela-idempotent.d: New.
> 	* testsuite/ld-aarch64/aarch64-elf.exp: Run it.
> ---
> 
> Tested for aarch64-elf and aarch64-linux (and the other ~150 targets,
> though those can't be affected).  Also tested natively on
> aarch64-suse-linux-gnu.  Okay for master?
> 

Isn't this what partial_inplace is supposed to describe?  Since that's 
false, I'd expect any value stored in the section contents to be ignored.

R.

> 
> Ciao,
> Michael.
> 
>   bfd/elfnn-aarch64.c                       | 208 +++++++++++-----------
>   ld/testsuite/ld-aarch64/aarch64-elf.exp   |   2 +
>   ld/testsuite/ld-aarch64/rela-idempotent.d |  19 ++
>   ld/testsuite/ld-aarch64/rela-idempotent.s |  14 ++
>   4 files changed, 139 insertions(+), 104 deletions(-)
>   create mode 100644 ld/testsuite/ld-aarch64/rela-idempotent.d
>   create mode 100644 ld/testsuite/ld-aarch64/rela-idempotent.s
> 
> diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
> index c23cbd3601a..32799b6b009 100644
> --- a/bfd/elfnn-aarch64.c
> +++ b/bfd/elfnn-aarch64.c
> @@ -478,7 +478,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (ABS64),	/* name */
>   	 false,			/* partial_inplace */
> -	 ALL_ONES,		/* src_mask */
> +	 0,			/* src_mask */
>   	 ALL_ONES,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -493,7 +493,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (ABS32),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffffffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffffffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -508,7 +508,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (ABS16),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -523,7 +523,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (PREL64),	/* name */
>   	 false,			/* partial_inplace */
> -	 ALL_ONES,		/* src_mask */
> +	 0,			/* src_mask */
>   	 ALL_ONES,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -538,7 +538,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (PREL32),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffffffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffffffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -553,7 +553,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (PREL16),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -571,7 +571,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_UABS_G0),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -586,7 +586,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_UABS_G0_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -601,7 +601,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_UABS_G1),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -616,7 +616,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_UABS_G1_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -631,7 +631,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_UABS_G2),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -646,7 +646,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_UABS_G2_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -661,7 +661,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_UABS_G3),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -680,7 +680,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_SABS_G0),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -695,7 +695,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_SABS_G1),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -710,7 +710,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_SABS_G2),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -728,7 +728,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_PREL_G0),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 true),		/* pcrel_offset */
>   
> @@ -743,7 +743,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_PREL_G0_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 true),		/* pcrel_offset */
>   
> @@ -758,7 +758,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_PREL_G1),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 true),		/* pcrel_offset */
>   
> @@ -773,7 +773,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_PREL_G1_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 true),		/* pcrel_offset */
>   
> @@ -788,7 +788,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_PREL_G2),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 true),		/* pcrel_offset */
>   
> @@ -803,7 +803,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_PREL_G2_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 true),		/* pcrel_offset */
>   
> @@ -818,7 +818,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_PREL_G3),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 true),		/* pcrel_offset */
>   
> @@ -836,7 +836,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LD_PREL_LO19),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x7ffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x7ffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -851,7 +851,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (ADR_PREL_LO21),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -866,7 +866,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (ADR_PREL_PG_HI21),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -881,7 +881,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (ADR_PREL_PG_HI21_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -896,7 +896,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (ADD_ABS_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -911,7 +911,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LDST8_ABS_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,				/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -928,7 +928,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TSTBR14),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3fff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3fff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -943,7 +943,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (CONDBR19),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x7ffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x7ffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -958,7 +958,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (JUMP26),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3ffffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3ffffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -973,7 +973,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (CALL26),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3ffffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3ffffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -988,7 +988,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LDST16_ABS_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffe,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffe,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1003,7 +1003,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LDST32_ABS_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffc,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffc,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1018,7 +1018,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LDST64_ABS_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xff8,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xff8,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1033,7 +1033,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LDST128_ABS_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xff0,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xff0,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1049,7 +1049,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,		/* special_function */
>   	 AARCH64_R_STR (GOT_LD_PREL19),	/* name */
>   	 false,				/* partial_inplace */
> -	 0xffffe0,			/* src_mask */
> +	 0,				/* src_mask */
>   	 0xffffe0,			/* dst_mask */
>   	 true),				/* pcrel_offset */
>   
> @@ -1065,7 +1065,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (ADR_GOT_PAGE),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -1080,7 +1080,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LD64_GOT_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xff8,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xff8,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1095,7 +1095,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LD32_GOT_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffc,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffc,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1110,7 +1110,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_GOTOFF_G0_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1125,7 +1125,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (MOVW_GOTOFF_G1),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1140,7 +1140,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LD64_GOTOFF_LO15),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x7ff8,			/* src_mask */
> +	 0,				/* src_mask */
>   	 0x7ff8,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1156,7 +1156,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LD32_GOTPAGE_LO14),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x5ffc,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x5ffc,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1172,7 +1172,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (LD64_GOTPAGE_LO15),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x7ff8,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x7ff8,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1188,7 +1188,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSGD_ADR_PAGE21),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -1202,7 +1202,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSGD_ADR_PREL21),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -1217,7 +1217,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSGD_ADD_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1232,7 +1232,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSGD_MOVW_G0_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1247,7 +1247,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSGD_MOVW_G1),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1261,7 +1261,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSIE_ADR_GOTTPREL_PAGE21),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1275,7 +1275,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSIE_LD64_GOTTPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xff8,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xff8,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1289,7 +1289,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSIE_LD32_GOTTPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffc,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffc,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1303,7 +1303,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSIE_LD_GOTTPREL_PREL19),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1ffffc,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1ffffc,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1317,7 +1317,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSIE_MOVW_GOTTPREL_G0_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1331,7 +1331,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSIE_MOVW_GOTTPREL_G1),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1346,7 +1346,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_ADD_DTPREL_HI12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1361,7 +1361,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_ADD_DTPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1376,7 +1376,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_ADD_DTPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1391,7 +1391,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_ADD_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1407,7 +1407,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_ADR_PAGE21),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -1421,7 +1421,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_ADR_PREL21),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -1436,7 +1436,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_LDST16_DTPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1451,7 +1451,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_LDST16_DTPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1466,7 +1466,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_LDST32_DTPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1481,7 +1481,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_LDST32_DTPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1496,7 +1496,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_LDST64_DTPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1511,7 +1511,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_LDST64_DTPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x7fc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x7fc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1526,7 +1526,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_LDST8_DTPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1541,7 +1541,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_LDST8_DTPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1556,7 +1556,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G0),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1571,7 +1571,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G0_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1586,7 +1586,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G1),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1601,7 +1601,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G1_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1616,7 +1616,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLD_MOVW_DTPREL_G2),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1630,7 +1630,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G2),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1644,7 +1644,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G1),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1658,7 +1658,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G1_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1672,7 +1672,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G0),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1686,7 +1686,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_MOVW_TPREL_G0_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1700,7 +1700,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_ADD_TPREL_HI12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1714,7 +1714,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_ADD_TPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1728,7 +1728,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_ADD_TPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1743,7 +1743,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_LDST16_TPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1758,7 +1758,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_LDST16_TPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1773,7 +1773,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_LDST32_TPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1788,7 +1788,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_LDST32_TPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1803,7 +1803,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_LDST64_TPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x7fc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x7fc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1818,7 +1818,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_LDST64_TPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x7fc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x7fc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1833,7 +1833,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_LDST8_TPREL_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1848,7 +1848,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSLE_LDST8_TPREL_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x3ffc00,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x3ffc00,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1862,7 +1862,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSDESC_LD_PREL19),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x0ffffe0,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x0ffffe0,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -1876,7 +1876,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSDESC_ADR_PREL21),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -1892,7 +1892,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSDESC_ADR_PAGE21),	/* name */
>   	 false,			/* partial_inplace */
> -	 0x1fffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0x1fffff,		/* dst_mask */
>   	 true),			/* pcrel_offset */
>   
> @@ -1907,7 +1907,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSDESC_LD64_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xff8,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xff8,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1922,7 +1922,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSDESC_LD32_LO12_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffc,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffc,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1937,7 +1937,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSDESC_ADD_LO12),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xfff,			/* src_mask */
> +	 0,			/* src_mask */
>   	 0xfff,			/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1951,7 +1951,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSDESC_OFF_G1),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -1965,7 +1965,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (TLSDESC_OFF_G0_NC),	/* name */
>   	 false,			/* partial_inplace */
> -	 0xffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -2021,7 +2021,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (COPY),	/* name */
>   	 true,			/* partial_inplace */
> -	 0xffffffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffffffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -2035,7 +2035,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (GLOB_DAT),	/* name */
>   	 true,			/* partial_inplace */
> -	 0xffffffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffffffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -2049,7 +2049,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (JUMP_SLOT),	/* name */
>   	 true,			/* partial_inplace */
> -	 0xffffffff,		/* src_mask */
> +	 0,			/* src_mask */
>   	 0xffffffff,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> @@ -2063,7 +2063,7 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
>   	 bfd_elf_generic_reloc,	/* special_function */
>   	 AARCH64_R_STR (RELATIVE),	/* name */
>   	 true,			/* partial_inplace */
> -	 ALL_ONES,		/* src_mask */
> +	 0,			/* src_mask */
>   	 ALL_ONES,		/* dst_mask */
>   	 false),		/* pcrel_offset */
>   
> diff --git a/ld/testsuite/ld-aarch64/aarch64-elf.exp b/ld/testsuite/ld-aarch64/aarch64-elf.exp
> index ec55bf49931..b025fcbd567 100644
> --- a/ld/testsuite/ld-aarch64/aarch64-elf.exp
> +++ b/ld/testsuite/ld-aarch64/aarch64-elf.exp
> @@ -401,6 +401,8 @@ run_dump_test_lp64 "rela-abs-relative"
>   run_dump_test_lp64 "rela-abs-relative-be"
>   run_dump_test_lp64 "rela-abs-relative-opt"
>   
> +run_dump_test_lp64 "rela-idempotent"
> +
>   run_dump_test_lp64 "pie-bind-locally"
>   
>   run_dump_test "property-bti-pac1"
> diff --git a/ld/testsuite/ld-aarch64/rela-idempotent.d b/ld/testsuite/ld-aarch64/rela-idempotent.d
> new file mode 100644
> index 00000000000..f3b5ffb988b
> --- /dev/null
> +++ b/ld/testsuite/ld-aarch64/rela-idempotent.d
> @@ -0,0 +1,19 @@
> +#name: rela-idempotent
> +#source: rela-idempotent.s
> +#target: [check_shared_lib_support]
> +#ld: -shared -Ttext-segment=0x100000 -Tdata=0x200000 -Trelocs.ld
> +#notarget: aarch64_be-*-*
> +#objdump: -dR -j .data
> +#...
> +
> +Disassembly of section .data:
> +
> +.* <l>:
> +  200000:	00200032.*
> +			200000: R_AARCH64_RELATIVE	\*ABS\*\+0x200032
> +  200004:	00000000.*
> +
> +.* <q>:
> +  200008:	00200054.*
> +			200008: R_AARCH64_RELATIVE	\*ABS\*\+0x200054
> +  20000c:	00000000.*
> diff --git a/ld/testsuite/ld-aarch64/rela-idempotent.s b/ld/testsuite/ld-aarch64/rela-idempotent.s
> new file mode 100644
> index 00000000000..7cb5dffb3bd
> --- /dev/null
> +++ b/ld/testsuite/ld-aarch64/rela-idempotent.s
> @@ -0,0 +1,14 @@
> +# this checks that aarch64 RELA relocs are ignoring existing section
> +# content of the relocated place
> +       .text
> +       .global _start
> +_start:
> +       ret
> +
> +       .data
> +       .p2align 4
> +l:     .long   0x11111111, 0x22222222
> +q:     .quad   0x4444444433333333
> +
> +       .reloc l, BFD_RELOC_64, q+42
> +       .reloc q, BFD_RELOC_64, l+84


  parent reply	other threads:[~2023-05-24 15:26 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-10 14:04 Michael Matz
2023-05-17 14:35 ` Nick Clifton
2023-05-24 15:26 ` Richard Earnshaw (lists) [this message]
2023-05-24 16:03   ` Michael Matz
2023-05-25  9:35     ` Richard Earnshaw (lists)
2023-05-25 12:29       ` Michael Matz
2023-05-25 13:22         ` Richard Earnshaw (lists)
2023-05-25 14:12           ` Michael Matz
2023-05-25 15:56             ` Richard Earnshaw (lists)
2023-05-25 16:01               ` Michael Matz
2023-05-24 22:54   ` Alan Modra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1ba7b2c7-b489-79af-3f2a-56450c86d955@arm.com \
    --to=richard.earnshaw@arm.com \
    --cc=binutils@sourceware.org \
    --cc=matz@suse.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).