gdb/elf-symtab-read.diff

28 lines
838 B
Diff

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;
}