PowerPC64 synthetic symbols

Alan Modra amodra@gmail.com
Wed Jan 20 12:14:57 GMT 2021


If an assembler trims off unused section symbols there may be no
section symbols.  This means that testing for the .opd section symbol
needs to test both the section name and symbol flags.

	* elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Don't assume
	section symbols are present.

diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index ed595074b94..f76830b6c42 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -2299,7 +2299,8 @@ ppc64_elf_get_synthetic_symtab (bfd *abfd,
 	 sym->section directly.  With separate debug info files, the
 	 symbols will be extracted from the debug file while abfd passed
 	 to this function is the real binary.  */
-      if (strcmp (syms[i]->section->name, ".opd") == 0)
+      if ((syms[i]->flags & BSF_SECTION_SYM) != 0
+	  && strcmp (syms[i]->section->name, ".opd") == 0)
 	++i;
       codesecsym = i;
 

-- 
Alan Modra
Australia Development Lab, IBM


More information about the Binutils mailing list