From: Alan Modra Date: Thu, 3 Oct 2024 22:17:05 +0000 (+0930) Subject: gdb segv in elfread.c:elf_rel_plt_read X-Git-Tag: gdb-16-branchpoint~734 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=753e2f771b1bba72426354aef364c8d986ed999c;p=thirdparty%2Fbinutils-gdb.git gdb segv in elfread.c:elf_rel_plt_read After commit 68bbe1183379, ELF symbols read via bfd_canonicalize_symtab and similar functions which have bad st_name fields will have NULL in the name rather than "(null)". gdb.base/bfd-errors.exp deliberately creates a faulty shared library with st_name pointing outside of .dynsym for some symbols, and thus now results in NULL symbol names. This triggers a segv on string_buffer.assign(name). Fix that. --- diff --git a/gdb/elfread.c b/gdb/elfread.c index e959d3a2f9d..2e68b0dba1a 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -612,6 +612,8 @@ elf_rel_plt_read (minimal_symbol_reader &reader, const size_t got_suffix_len = strlen (SYMBOL_GOT_PLT_SUFFIX); name = bfd_asymbol_name (*relplt->relocation[reloc].sym_ptr_ptr); + if (!name) + continue; address = relplt->relocation[reloc].address; asection *msym_section;