Don't segfault on discarded section dynsyms

Alan Modra amodra@gmail.com
Wed Jul 29 08:13:14 GMT 2020
We get lots of errors before we get to this code, but let's not
segfault.

	* elflink.c (bfd_elf_final_link): Don't segfault on local dynsyms
	defined in excluded sections.

diff --git a/bfd/elflink.c b/bfd/elflink.c
index a3823e6322..5089616aee 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -12599,10 +12599,13 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info)
 		 the original st_name with the dynstr_index.  */
 	      sym = e->isym;
 	      sym.st_other &= ~ELF_ST_VISIBILITY (-1);
+	      sym.st_shndx = SHN_UNDEF;
 
 	      s = bfd_section_from_elf_index (e->input_bfd,
 					      e->isym.st_shndx);
-	      if (s != NULL)
+	      if (s != NULL
+		  && s->output_section != NULL
+		  && elf_section_data (s->output_section) != NULL)
 		{
 		  sym.st_shndx =
 		    elf_section_data (s->output_section)->this_idx;

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list