[1/2] aarch64: Fix h->got union phase confusion for DT_RELR

Message ID 20261001151257.3242569-5-jremus@linux.ibm.com
State New
Headers
Series ld: Fix h->got union phase confusion for DT_RELR |

Checks

Context Check Description
linaro-tcwg-bot/tcwg_binutils_build--master-arm success Build passed
linaro-tcwg-bot/tcwg_binutils_build--master-aarch64 success Build passed
linaro-tcwg-bot/tcwg_binutils_check--master-aarch64 success Test passed
linaro-tcwg-bot/tcwg_binutils_check--master-arm success Test passed

Commit Message

Jens Remus Oct. 1, 2026, 3:12 p.m. UTC
  record_relr_dyn_got_relocs is called after allocate_dynrelocs has
repurposed h->got from refcount to offset semantics.  This goes
along with a change in indication for no GOT entry allocated from
h->got.refcount <= 0 to h->got.offset == (bfd_vma)-1.

bfd/
	* elfnn-aarch64.c (record_relr_dyn_got_relocs): Fix h->got
	union phase confusion.

Signed-off-by: Jens Remus <jremus@linux.ibm.com>
---
 bfd/elfnn-aarch64.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Patch

diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index ce060dd755b9..c89390e69493 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -9246,7 +9246,7 @@  record_relr_dyn_got_relocs (struct elf_link_hash_entry *h, void *inf)
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
   if (h->type == STT_GNU_IFUNC && h->def_regular)
     return true;
-  if (h->got.refcount <= 0)
+  if (h->got.offset == (bfd_vma) -1)
     return true;
   if (elf_aarch64_hash_entry (h)->got_type != GOT_NORMAL)
     return true;