* gdb.texinfo (Continuing and Stepping): When talking about "step"
[deliverable/binutils-gdb.git] / gdb / elfread.c
index 1a0eee5c2a8eb41746e01ea0d87396e559d1584f..5e8292c67aedd3a5e77e38d347e72b7f937154c0 100644 (file)
@@ -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 */
@@ -185,6 +190,9 @@ record_minimal_symbol_and_info (name, address, ms_type, info, objfile)
     case mst_text:
     case mst_file_text:
       section = SECT_OFF_TEXT;
+#ifdef SMASH_TEXT_ADDRESS
+      SMASH_TEXT_ADDRESS (address);
+#endif
       break;
     case mst_data:
     case mst_file_data:
@@ -200,7 +208,8 @@ record_minimal_symbol_and_info (name, address, ms_type, info, objfile)
     }
 
   name = obsavestring (name, strlen (name), &objfile -> symbol_obstack);
-  prim_record_minimal_symbol_and_info (name, address, ms_type, info, section);
+  prim_record_minimal_symbol_and_info (name, address, ms_type, info, section,
+                                      objfile);
 }
 
 /*
@@ -447,7 +456,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 +529,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 ())
     {
This page took 0.023034 seconds and 4 git commands to generate.