aboutsummaryrefslogtreecommitdiff
path: root/gdb/elfread.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/elfread.c')
-rw-r--r--gdb/elfread.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/gdb/elfread.c b/gdb/elfread.c
index 1a0eee5..11a8c0e 100644
--- a/gdb/elfread.c
+++ b/gdb/elfread.c
@@ -45,6 +45,7 @@ struct elfinfo {
unsigned int lnsize; /* Size of dwarf line number section */
asection *stabsect; /* Section pointer for .stab section */
asection *stabindexsect; /* Section pointer for .stab.index section */
+ asection *mdebugsect; /* Section pointer for .mdebug section */
};
/* Various things we might complain about... */
@@ -136,6 +137,10 @@ elf_locate_sections (ignore_abfd, sectp, eip)
{
ei -> stabindexsect = sectp;
}
+ else if (STREQ (sectp -> name, ".mdebug"))
+ {
+ ei -> mdebugsect = sectp;
+ }
}
#if 0 /* Currently unused */
@@ -447,7 +452,8 @@ elf_symtab_read (abfd, addr, objfile)
format to look for: FIXME!!!
dwarf_build_psymtabs() builds psymtabs for DWARF symbols;
- elfstab_build_psymtabs() handles STABS symbols.
+ elfstab_build_psymtabs() handles STABS symbols;
+ mdebug_build_psymtabs() handles ECOFF debugging information.
Note that ELF files have a "minimal" symbol table, which looks a lot
like a COFF symbol table, but has only the minimal information necessary
@@ -519,6 +525,17 @@ elf_symfile_read (objfile, section_offsets, mainline)
(file_ptr) elf_sect->sh_offset, /* .stabstr offset */
elf_sect->sh_size); /* .stabstr size */
}
+ if (ei.mdebugsect)
+ {
+ const struct ecoff_debug_swap *swap;
+
+ /* .mdebug section, presumably holding ECOFF debugging
+ information. */
+ swap = get_elf_backend_data (abfd)->elf_backend_ecoff_debug_swap;
+ if (swap)
+ elfmdebug_build_psymtabs (objfile, swap, ei.mdebugsect,
+ section_offsets);
+ }
if (!have_partial_symbols ())
{