From 088572dad9b2e7dbdeb67d44c00cc954f153aff4 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 20 Jan 2021 16:00:58 +1030 Subject: [PATCH] PowerPC64 synthetic symbols 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. (cherry picked from commit 8bd10d6b16de92570336e6026d466ef90e077e6e) --- bfd/ChangeLog | 5 +++++ bfd/elf64-ppc.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index eeb5fb4632f..75ad21752ae 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2021-01-20 Alan Modra + + * elf64-ppc.c (ppc64_elf_get_synthetic_symtab): Don't assume + section symbols are present. + 2021-01-18 H.J. Lu PR ld/27193 diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c index a118c32c797..3119aaca84c 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; -- 2.47.2