[PATCH] aarch64: Fix DT_RELR support with discarded sections

Szabolcs Nagy szabolcs.nagy@arm.com
Tue Jun 4 10:29:41 GMT 2024


In case of discarded sections, via /DISCARD/ or linkonce, relr
relocation accounting was wrong.  This broke building linux.
---
 bfd/elfnn-aarch64.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 81f1a646125..02873f2ceb2 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -9327,6 +9327,10 @@ record_relr_non_got_relocs (bfd *input_bfd, struct bfd_link_info *info,
     return true;
   if (sec->alignment_power == 0)
     return true;
+  if (!bfd_is_abs_section (sec)
+      && bfd_is_abs_section (sec->output_section))
+    /* Input section has been discarded.  */
+    return true;
   sreloc = elf_section_data (sec)->sreloc;
   if (sreloc == NULL)
     return true;
-- 
2.25.1



More information about the Binutils mailing list