Index: gdb/elfread.c ================================================================================ --- gdb/elfread.c +++ gdb/elfread.c @@ -182,7 +182,10 @@ offset = ANOFFSET (objfile->section_offsets, sym->section->index); if (dynamic - && sym->section == &bfd_und_section + && (sym->section == &bfd_und_section + /* On PowerPC64 we also want to add the function descriptor + symbols. */ + || strcmp (sym->section->name, ".opd") == 0) && (sym->flags & BSF_FUNCTION)) { struct minimal_symbol *msym; @@ -309,7 +312,9 @@ { if (sym->flags & (BSF_GLOBAL | BSF_WEAK)) { - if (sym->section->flags & SEC_LOAD) + if (sym->flags & BSF_FUNCTION) + ms_type = mst_solib_trampoline; + else if (sym->section->flags & SEC_LOAD) { ms_type = mst_data; }