[binutils-gdb] elf: Return false if output_section is NULL

H.J. Lu hjl@sourceware.org
Fri Jun 13 07:20:38 GMT 2025


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

commit 412164f0a99a827a04394c7731c25084e794bcf4
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri Jun 13 13:33:32 2025 +0800

    elf: Return false if output_section is NULL
    
    Return false if output_section is NULL so that on input
    
    https://sourceware.org/bugzilla/attachment.cgi?id=16131
    
    objcopy generates
    
    objcopy: /tmp/objcopy-poc(OrcError.cpp.o): invalid entry (0x22000000) in group [3]
    objcopy: /tmp/objcopy-poc(OrcError.cpp.o): invalid entry (0x21000000) in group [3]
    objcopy: /tmp/objcopy-poc(OrcError.cpp.o)(.text._ZNK12_GLOBAL__N_116OrcErrorCategory7messageB5cxx11Ei): relocation 29 has invalid symbol index 1160982879
    objcopy: /tmp/stv73zYw/OrcError.cpp.o[.text._ZN4llvm3orc8orcErrorENS0_12OrcErrorCodeE]: bad value
    
    instead of
    
    objcopy: /tmp/objcopy-poc(OrcError.cpp.o): invalid entry (0x22000000) in group [3]
    objcopy: /tmp/objcopy-poc(OrcError.cpp.o): invalid entry (0x21000000) in group [3]
    objcopy: /tmp/objcopy-poc(OrcError.cpp.o)(.text._ZNK12_GLOBAL__N_116OrcErrorCategory7messageB5cxx11Ei): relocation 29 has invalid symbol index 1160982879
    Segmentation fault (core dumped)
    
            PR binutils/33075
            * elf.c (elf_map_symbols): Return false if output_section is
            NULL.
    
    Signed-off-by: H.J. Lu <hjl.tools@gmail.com>

Diff:
---
 bfd/elf.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/bfd/elf.c b/bfd/elf.c
index 17492b97f74..14ce15c7254 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -4502,7 +4502,11 @@ elf_map_symbols (bfd *abfd, unsigned int *pnum_locals)
 	  asection *sec = sym->section;
 
 	  if (sec->owner != abfd)
-	    sec = sec->output_section;
+	    {
+	      sec = sec->output_section;
+	      if (sec == NULL)
+		return false;
+	    }
 
 	  sect_syms[sec->index] = syms[idx];
 	}


More information about the Binutils-cvs mailing list