[binutils-gdb] Prevent an abort in the bfd linker when attempting to generate dynamic relocs for a corrupt input fi

Nick Clifton nickc@sourceware.org
Wed Feb 5 13:27:57 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=75086e9de1707281172cc77f178e7949a4414ed0

commit 75086e9de1707281172cc77f178e7949a4414ed0
Author: Nick Clifton <nickc@redhat.com>
Date:   Wed Feb 5 13:26:51 2025 +0000

    Prevent an abort in the bfd linker when attempting to generate dynamic relocs for a corrupt input file.
    
    PR 32638

Diff:
---
 bfd/elf64-x86-64.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index 61334c3ab04..32db254ba6c 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -5303,6 +5303,15 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd,
 
       if (generate_dynamic_reloc)
 	{
+	  /* If the relgot section has not been created, then
+	     generate an error instead of a reloc.  cf PR 32638.  */
+	  if (relgot == NULL || relgot->size == 0)
+	    {
+	      info->callbacks->einfo (_("%F%pB: Unable to generate dynamic relocs because a suitable section does not exist\n"),
+					output_bfd);
+	      return false;
+	    }
+	  
 	  if (relative_reloc_name != NULL
 	      && htab->params->report_relative_reloc)
 	    _bfd_x86_elf_link_report_relative_reloc


More information about the Binutils-cvs mailing list