[v1,2/5] explicitly state code assumptions on output section in AArch64 ld handlers

Message ID 20250918150606.1630916-3-matthieu.longo@arm.com
State New
Headers
Series ld: fix segfaults when non-contiguous memory support is enabled |

Commit Message

Matthieu Longo Sept. 18, 2025, 3:06 p.m. UTC
  When support for non-contiguous memory was added, some corner cases when
sections were removed from the output object, did not emit fatal error and
reached code paths that correctly assumed every input section had a valid
output section, and this led to crashes due to segfault.

This patch adds BFD_ASSERTs in the previously segfaulting code, to
explicitly state code assumptions.
---
 bfd/elfnn-aarch64.c | 2 ++
 1 file changed, 2 insertions(+)
  

Patch

diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
index 4517567a554..5b22d099646 100644
--- a/bfd/elfnn-aarch64.c
+++ b/bfd/elfnn-aarch64.c
@@ -3275,6 +3275,7 @@  aarch64_build_one_stub (struct bfd_hash_entry *gen_entry,
 			    stub_entry->target_section);
 
   stub_sec = stub_entry->stub_sec;
+  BFD_ASSERT (stub_sec->output_section != NULL);
 
   /* The layout must not change when a stub may be the target of another.  */
   if (htab->has_double_stub)
@@ -7013,6 +7014,7 @@  elfNN_aarch64_relocate_section (bfd *output_bfd,
 	  sym = local_syms + r_symndx;
 	  sym_type = ELFNN_ST_TYPE (sym->st_info);
 	  sec = local_sections[r_symndx];
+	  BFD_ASSERT (sec->output_section != NULL);
 
 	  /* An object file might have a reference to a local
 	     undefined symbol.  This is a daft object file, but we